丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給skura
發(fā)送

0

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

本文作者: skura 2020-02-11 13:44
導(dǎo)語:這是一篇教你動手實踐的教程,提供一種創(chuàng)建自定義目標(biāo)檢測模型的簡單方法,快速上手,檢測任何需要檢測的對象。

作為目前機器學(xué)習(xí)領(lǐng)域最火熱的研究方向之一,計算機視覺相關(guān)的技術(shù)一直備受關(guān)注。其中,目標(biāo)檢測是計算機視覺領(lǐng)域常見的問題之一,如何平衡檢測的質(zhì)量和算法的速度很重要。對于這個問題,計算機視覺工程師、VirtusLab 創(chuàng)始人 Piotr Skalski 發(fā)表了自己的心得,分享了關(guān)于他最喜歡的計算機視覺算法 YOLO 的實踐資料。以下便是他的全文。

前言            

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

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

基于 YouTube-8M 數(shù)據(jù)集的籃球場球員移動檢測              

這一次,我將向你展示如何快速地、以相對較低的代價和不那么強大的機器創(chuàng)建目標(biāo)檢測模型,這個模型能夠檢測任何你選擇的對象。如果你需要在工作中快速測試你的想法,或者只是有一小段時間建立在家構(gòu)建你的項目,這是一個很好的方法。去年,我有機會進行了幾個這樣的實驗,本文中出現(xiàn)的所有可視化結(jié)果都是出自這些項目。              

注意:這一次,我們將主要使用開源庫和工具,因此我們網(wǎng)站上的編碼量將是最小的。但是,為了鼓勵你使用 YOLO 并為你的項目提供一個起點,我還提供了腳本,允許你下載我的預(yù)訓(xùn)練模型以及所有配置文件和測試數(shù)據(jù)集。像往常一樣,你會在我的 GitHub 上找到所有的內(nèi)容:https://github.com/SkalskiP/ILearnDeepLearning.py/tree/master/02_data_science_toolkit/02_yolo_object_detection 。          

YOLO              

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

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

數(shù)據(jù)集              

和深度學(xué)習(xí)一樣,創(chuàng)建模型的第一步是準(zhǔn)備一個數(shù)據(jù)集。有監(jiān)督的學(xué)習(xí)是查看標(biāo)記的示例并在數(shù)據(jù)中發(fā)現(xiàn)不明顯的模式。我必須承認創(chuàng)建一個數(shù)據(jù)集是一個相當(dāng)乏味的任務(wù),因此我準(zhǔn)備了一個腳本,允許你下載我的象棋數(shù)據(jù)集,并查看 YOLO 如何在這個例子中工作。              

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

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

籃球數(shù)據(jù)集的圖像樣本              

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

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

標(biāo)記              

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

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

AI 支持使用 makesense.ai 進行標(biāo)記             

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

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

環(huán)境設(shè)置              

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

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

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

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

配置              

如前一段所述,我們現(xiàn)在需要做的就是創(chuàng)建幾個配置文件。它們定義了訓(xùn)練集和測試集的位置、對象類的名稱,并提供了所用神經(jīng)網(wǎng)絡(luò)的架構(gòu)指南。

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

國際象棋數(shù)據(jù)集標(biāo)注參考圖片              

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

./dataset/images/image_1.png
./dataset/images/image_2.png
./dataset/images/image_3.png
...

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

classes=12
train=./data/chess_train.txt
valid=./data/chess_test.txt
names=./data/chess.names

訓(xùn)練           

現(xiàn)在我們準(zhǔn)備開始訓(xùn)練。如前所述,我們使用的庫有一個高級 API,因此終端中的一個命令和幾個參數(shù)就足以啟動這個過程。然而,在下面還有幾件大大增加我們?nèi)〉米罱K成功的幾率的事情。

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

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

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

訓(xùn)練集數(shù)據(jù)增強的可視化              

檢測             

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

python3 detect.py
   --data ./data/project.data
   --cfg ./cfg/project.cfg
  --weights ./weights/best.py
   --source ./data/sample

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

基于 TinyYOLO 的象棋檢測              

結(jié)論              

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

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

雷鋒網(wǎng)雷鋒網(wǎng)雷鋒網(wǎng)

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

數(shù)據(jù)科學(xué)工具包:手把手用YOLO做目標(biāo)檢測

分享:
相關(guān)文章
當(dāng)月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說