精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
訓練YOLO網絡
userphoto

2020.02.27

關注

以下便是他的全文。

前言

YOLO 是我最喜歡的計算機視覺算法之一,在很長一段時間里,我計劃著專為它寫一篇博文。然而,我不希望它成為另一篇詳細解釋 YOLO 背后工作原理的文章,網上有很多文章都很好地涵蓋了它理論方面的知識。除此之外,如果你想加深對這個架構的理解,直接從源代碼獲取信息并閱讀源文件(https://arxiv.org/abs/1506.02640)也是一個好主意。

基于 YouTube-8M 數據集的籃球場球員移動檢測

這一次,我將向你展示如何快速地、以相對較低的代價和不那么強大的機器創建目標檢測模型,這個模型能夠檢測任何你選擇的對象。如果你需要在工作中快速測試你的想法,或者只是有一小段時間建立在家構建你的項目,這是一個很好的方法。去年,我有機會進行了幾個這樣的實驗,本文中出現的所有可視化結果都是出自這些項目。注意:這一次,我們將主要使用開源庫和工具,因此我們網站上的編碼量將是最小的。但是,為了鼓勵你使用 YOLO 并為你的項目提供一個起點,我還提供了腳本,允許你下載我的預訓練模型以及所有配置文件和測試數據集。像往常一樣,你會在我的 GitHub 上找到所有的內容:https://github.com/SkalskiP/ILearnDeepLearning.py/tree/master/02_data_science_toolkit/02_yolo_object_detection。

YOLO

所有不知道 YOLO 是什么的人不要擔心,也不要去任何地方找資料!我現在簡要地解釋一下我說的是什么。

YOLO 是一種實時目標檢測算法,它是第一個平衡所提供檢測的質量和速度的算法。通常,這類最強大的模型,都是建立在卷積神經網絡的基礎上,這次也不例外。所謂「目標檢測模型」,我們的意思是,我們不僅可以用它來找出給定照片中存在的對象,還可以用它來指示它們的位置和數量。除其他外,這種模型在機器人和汽車工業中都有應用,因此檢測速度至關重要。自2015年以來,該算法已經進行了三次迭代,還有為 TinyYOLO 等移動設備設計的變體。移動版本的精度有限,但計算要求也較低,運行速度更快。

數據集

和深度學習一樣,創建模型的第一步是準備一個數據集。有監督的學習是查看標記的示例并在數據中發現不明顯的模式。我必須承認創建一個數據集是一個相當乏味的任務,因此我準備了一個腳本,允許你下載我的象棋數據集,并查看 YOLO 如何在這個例子中工作。

但那些想要建立自己的數據集的人面臨著挑戰。為了實現這個目標,我們需要收集一組圖像并創建匹配的標簽文件。圖片應該包含我們想識別的對象,并且,數據集中所有對象的類的分布應該類似。如你所見,在我的第一個項目——籃球探測器中,我使用了游戲視頻中的框架。

籃球數據集的圖像樣本

標簽文件應該與圖像具有相同的名稱,但顯然具有不同的擴展名,并且應該位于并行目錄中。最佳數據結構如下所示。除了 images 和 labels 目錄之外,我們還必須準備 class_names.txt 文件,該文件定義我們計劃檢測的對象類的名稱。這個文件的每一行代表一個類,應該包含一個或多個沒有空格的單詞。

最佳的數據結構

標記

不幸的是,YOLO 需要一個特定的標簽格式,這是大多數免費標簽工具不支持的。為了消除從 VOC XML、VGG JSON 或其他廣泛使用的格式解析標簽的需要,我們將利用 makesense.ai(https://www.makesense.ai/),這里是我在 GitHub 上開發的一個免費開源項目(https://github.com/SkalskiP/make-sense )。編輯器不僅支持直接導出到 YOLO 格式,而且直觀,不需要安裝,可以在瀏覽器中工作。此外,它還支持多種功能,旨在加快你的標簽工作。可以使用 MakeSense 查看人工智能支持的標記過程。

AI支持使用makesens.ai進行標記

工作完成后,我們可以下載一個 .zip 文件,其中包含 .txt 文件。每一個這樣的文件都對應于一個標記的圖像,并描述照片中可見的對象。如果我們打開其中一個文件,我們會發現,每一行都是 class_idx x_center y_center width height 式。其中 class_idx 表示 class_names.txt 文件中指定標簽的索引(從 0 開始計數)。其余參數描述圍繞單個對象的邊界框,它們可以取 0 到 1 之間的值。幸運的是,大多數時候我們不需要考慮這些細節,因為編輯器會為我們處理所有的事情。YOLO 格式的標簽示例如下所示。

標簽示例

環境設置

YOLO 最初是在一個叫做 Darknet 的深度學習的小框架中寫的。從那時起,許多其它實現已經創建,其中大多數使用兩個非常流行的 Python 平臺:Keras 和 PyTorch。在所有可用的解決方案中,有一個是我特別喜歡的(https://github.com/ultralytics/yolov3)。它提供了一個用于訓練和檢測的高級 API,但也具有很多有用的特性。在使用它時,我們的所有工作歸結為準備一個數據集和創建幾個配置文件,然后其余的工作就交給庫了。

環境設置文件目錄

環境設置也非常簡單——可以歸結為運行幾個命令,你可以在下面找到這些命令(假設你的計算機上已經安裝了 Python 和 Git)。最好從項目目錄中執行命令,以實現上面所示的結構。值得一提的是,環境也可以通過 Docker 創建(這對 Windows 用戶特別有用)。你可以在這里(https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart)找到更多關于這個主題的說明。

# Clone frameworkgit clone https://github.com/ultralytics/yolov3.git# Enter framework catalogue [Linux/MacOS]cd ./yolov3# Setup Python environmentpip install -U -r requirements.txt

配置

如前一段所述,我們現在需要做的就是創建幾個配置文件。它們定義了訓練集和測試集的位置、對象類的名稱,并提供了所用神經網絡的架構指南。

國際象棋數據集標準參考圖片

首先,我們需要將數據集分割成訓練集和測試集。我們使用兩個 .txt 文件來完成這項工作,它們中的每一個都包含指向數據集中特定圖像的路徑。為了加快工作速度,我準備了一個 Python 腳本,它將自動為我們創建這些文件。你只需指示數據集的位置并定義訓練集和測試集之間的分割百分比。train.txt/test.txt 文件的片段如下所示。

classes=12train=./data/chess_train.txtvalid=./data/chess_test.txtnames=./data/chess.names

.data 是我們需要提供的最終文件。讓我們用下一個項目的例子來討論它的內容——象棋檢測器。在本例中,我有 12 個惟一的對象類想要識別。接下來,我們給出定義哪些照片屬于訓練集,哪些照片屬于測試集的文件的位置,最后給出前面討論的帶有標簽名稱的文件的位置。為了使一切正常工作,chess.data、chess_train.txt、chess_test.txt 和 chess.names 文件應移動到 project/yolov3/data 目錄。

classes=12train=./data/chess_train.txtvalid=./data/chess_test.txtnames=./data/chess.names

訓練

現在我們準備開始訓練。如前所述,我們使用的庫有一個高級 API,因此終端中的一個命令和幾個參數就足以啟動這個過程。然而,在下面還有幾件大大增加我們取得最終成功的幾率的事情。

python3 train.py--data ./data/project.data --cfg ./cfg/project.cfg --weights ./weights/yolov3.pt

首先,我們可以應用遷移學習,我們不必從頭開始訓練。我們可以使用在不同數據集上訓練的模型的權重,從而縮短我們自己的網絡的學習時間。我們的模型可以使用基本的形狀知識,并專注于將這些信息鏈接到我們想要識別的新類型的對象。其次,庫執行數據增強,因此它根據我們提供的照片生成新的示例。因此,即使我們只有一個很小的數據集——幾百張圖片,我們也可以訓練我們的模型。我們使用的庫還為我們提供了一個由于增強而創建的圖像示例。下面你可以看到在我的籃球探測器的訓練過程中創建的示例。

訓練集數據增強的可視化

檢測

最后,快樂的時刻來了!我們致力于創建模型的工作得到了回報,現在可以用它來找到我們在任何照片中想要尋找的對象。同樣地,這是一個非常簡單的任務,我們可以用終端中的一個簡單命令來完成。執行之后,我們將在輸出目錄中找到預測的結果。值得一提的是,我們還可以對自己拍攝的視頻進行實時預測,這在項目演示中尤其有用。

python3 detect.py--data ./data/project.data --cfg ./cfg/project.cfg --weights ./weights/best.py --source ./data/sample
基于TinyYOLO的象棋檢測

結論

如果你完成了上面的所有內容,那么恭喜你!非常感謝你花時間閱讀這篇文章。我希望我能證明訓練你自己的定制 YOLO 模型并不困難,我的建議將對你未來的實驗有所幫助。

資料來源:

https://towardsdatascience.com/chess-rolls-or-basketball-lets-create-a-custom-object-detection-model-ef53028eac7d

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Colab訓練YOLO v5實現口罩檢測
如何用YOLO Tesseract實現定制OCR系統?
使用Python和YOLO檢測車牌
利用 Python 深度學習識別滑動驗證碼缺口
使用Yolov5進行端到端目標檢測
【目標檢測代碼實戰】從零開始動手實現yolov3:訓練篇(一)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 乌鲁木齐县| 霍州市| 宜良县| 商水县| 涟水县| 宜章县| 巨野县| 庄河市| 新晃| 瓮安县| 湟源县| 忻城县| 阳谷县| 锡林郭勒盟| 惠州市| 通辽市| 平乐县| 侯马市| 游戏| 鄢陵县| 祁连县| 乌鲁木齐县| 邢台县| 云安县| 噶尔县| 喀喇沁旗| 高青县| 黄冈市| 禄丰县| 拜城县| 太谷县| 都昌县| 河南省| 浦江县| 铜山县| 仁化县| 永善县| 泸水县| 九寨沟县| 石棉县| 黄梅县|