Mac上開源圖像物體識別工具YOLO(darknet)安裝使用指南

一、前言

YOLO是一名叫做Joseph Chet Redmon的大神與他的幾個小伙伴做的一個開源實時物體檢測系統(tǒng)。Joseph的幾個小伙伴來自于華盛頓大學以及伯克利大學等知名院校。

YOLO是基于他們開發(fā)的Darknet(基于c語言的神經(jīng)網(wǎng)絡開源框架)上的一個應用系統(tǒng),不同于前置檢測系統(tǒng)將一副圖像的不同位置以及維度分別進行分類預測,YOLO將整幅圖像輸入進單一的神經(jīng)網(wǎng)絡進行分類預測。這使得YOLO相對于其它的物體檢測網(wǎng)絡更加的快速。

其在 VOC 2007(Visual Object Class Challenge 2007)上的 mAP(Mean Average Precision)為78.6%,在 COCO test-dev 上為 48.1%

二、YOLO的前置組件介紹

YOLO是基于Darknet的應用,而Darknet還有幾個可選的依賴組件:

OpenCV:如果需要更多的圖像類型支持,需引進該組件。我在之前研究人臉識別開源框架OPENFACE時,已經(jīng)在電腦上安裝過OpenCV了。感興趣的同學可以移步Mac上開源人臉識別軟件OPENFACE安裝全流程教程查看

CUDA:如果要使用GPU進行計算,需引進該組件??上屹I不起GPU,所以pass

三、YOLO安裝步驟以及錯誤解決方案

1)Darknet下載與安裝

git clone https://github.com/pjreddie/darknet.git

cd darknet

make

2)Darknet 錯誤與解決

錯誤1: undeclared identifier 'CLOCK_REAKTIME'

./src/utils.c:16:19:fatal error:use of undeclared identifier 'CLOCK_REALTIME'

clock_gettime(CLOCK_REALTIME, &now);

根據(jù)報錯日志信息可以指導,在 src/utils.c 中的 CLOCK_REALTIME 這個標識符并沒有被定義。通過在網(wǎng)絡上搜索得知,clock_gettime這個函數(shù)在MAC電腦的操作系統(tǒng)中并沒有被實現(xiàn),所以我們要使用 MAC 系統(tǒng)上的類似函數(shù)來替代。通過對 src/utils.c 進行改寫,可以解決該問題,具體代碼如下:

3)Darknet 安裝成功驗證

在命令行輸入:

./darknet

當?shù)玫椒答伻缦聲r,說明安裝成功了:

usage: ./darknet

Darknet安裝成功后,其實就代表著yolo安裝好了!下邊我們來繼續(xù)配置一下環(huán)境,然后開始使用yolo吧

四、yolo的配置與使用

yolo是基于darknet的一個具體的實例,說是介紹yolo的使用,實際上是介紹darknet的配置與使用

1)darknet的使用與參數(shù)介紹

通過前邊的介紹,我們知道darknet是一款神經(jīng)網(wǎng)絡開源框架,那么使用darknet,我們需要確定下邊幾個參數(shù):

[1]神經(jīng)網(wǎng)絡模型:darknet使用一個 xx.cfg 的文件來定義神經(jīng)網(wǎng)絡模型,包括神經(jīng)網(wǎng)絡的迭代次數(shù)、層級網(wǎng)絡架構(gòu)等內(nèi)容

[2]神經(jīng)網(wǎng)絡權(quán)重:darknet可以直接使用訓練好的權(quán)重來進行測試/預測,我們也可以通過對訓練樣本進行訓練獲得網(wǎng)絡權(quán)重。比如可通過下邊的命令獲得yolo模型已訓練好的權(quán)重

wget https://pjreddie.com/media/files/yolo.weights

[3]訓練樣本(optional:訓練時需要):當我們需要訓練時,需要生成訓練樣本的標簽文件 label.txt。darknet使用了一個 xx.data 類型的文件來存儲訓練樣本參數(shù)

通過下邊的命令行來實現(xiàn)對訓練樣本的訓練:

./darknet detector train cfg/voc.data cfg/yolo-voc.cfg darknet19_448.conv.23

[4]測試樣本(optional:測試時需要)

測試樣本是圖像,我們可以選擇單張圖片處理形式、多張圖片處理形式,以及攝像頭方式來對圖像進行檢測。需注意的是如果要使用網(wǎng)絡攝像頭接入流來對物體進行圖像檢測,需要接入 OpenCV,而為了提高速度最好也接入 CUDA 來使用 GPU 進行運算。

通過下邊的三種命令行均可對圖像進行物體檢測,其分別代表了一種處理模式:

//單圖片模式

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

//多圖片模式,即不要輸入測試樣本,然后后邊再一張張輸入,這個模式可以避免反復load模型

./darknet detect cfg/yolo.cfg yolo.weights

//攝像頭模式(沒錢買不起GPU,所以未驗證)

./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights

2)yolo的使用樣例

[1]預訓練權(quán)重下載(250MB)

wget https://pjreddie.com/media/files/yolo.weights

[2]根據(jù)下載的權(quán)重來進行物體檢測

./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

輸出結(jié)果如下所示:

通過上邊的介紹,我相信大伙應該對yolo或者說darknet應該有了初步的理解了,通過閱讀源碼以及對該框架的繼續(xù)學習,我相信我們應該可以將這套開源框架應用到實際場景中進行應用!

Hope everyone will have fun playing around!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一瞥(You Only Look Once, YOLO),是檢測Pascal VOC2012數(shù)據(jù)集內(nèi)對象/目標的系...
    Aspirinrin閱讀 52,723評論 28 64
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 簡書 聲明:作者翻譯論文僅為學習,如有侵權(quán)請...
    SnailTyan閱讀 23,635評論 1 35
  • 韶山?jīng)_是湖南韶山市一個風景秀麗的地方,來這兒旅游的人來自四面八方,人們來這的原因更多是來參觀誕生一代偉人毛澤東之地...
    無憂無慮61閱讀 122評論 0 0
  • 七律 中秋 沈桂枝 風入空庭落葉飄, 情懷放縱向誰聊。 一輪皓月憑鴻去, 幾盞濃茶把友邀。 夜半夢長多濁醉, 人生...
    沈桂枝閱讀 313評論 0 1
  • 最近在項目中遇到了需要長按選中禮物碼的東西,需要把禮物碼旁邊的文本禁止掉,查了資料,發(fā)現(xiàn)了兩種方法可以禁止。 cs...
    hlemon閱讀 7,050評論 0 3

友情鏈接更多精彩內(nèi)容