YOLO: Real-Time Object Detection


- 常用模型結(jié)果對(duì)比

Model Train Test mAP FLOPS FPS Cfg Weights
Old YOLO VOC 2007+2012 2007 63.4 40.19 Bn 45 link
SSD300 VOC 2007+2012 2007 74.3 - 46 link
SSD500 VOC 2007+2012 2007 76.8 - 19 link
YOLOv2 VOC 2007+2012 2007 76.8 34.90 Bn 67 cfg weights
YOLOv2 544x544 VOC 2007+2012 2007 78.6 59.68 Bn 40 cfg weights
Tiny YOLO VOC 2007+2012 2007 57.1 6.97 Bn 207 cfg weights
---------------------
SSD300 COCO trainval test-dev 41.2 - 46 link
SSD500 COCO trainval test-dev 46.5 - 19 link
YOLOv2 608x608 COCO trainval test-dev 48.1 62.94 Bn 40 cfg weights
Tiny YOLO COCO trainval - - 7.07 Bn 200 cfg weights

從表中可以看出抢呆,在VOC2007+2010數(shù)據(jù)集上属瓣,從mAP的角度來(lái)衡量幾種方法,SSD和YOLO2的結(jié)果接近而優(yōu)于YOLO1的結(jié)果和Tiny YOLO的結(jié)果烘嘱,而從FPS速度的角度來(lái)衡量,SSD500最差茬缩,Tiny YOLO最優(yōu),YOLO2的速度要優(yōu)于YOLO1和SSD300.

- YOLO環(huán)境搭建

  • clone yolo包
git clone https://github.com/pjreddie/darknet
cd darknet
  • 配置makefile文件
GPU=1    #配置好cuda環(huán)境 這里將GPU=0改為GPU=1
CUDNN=0  #優(yōu)于作者使用的是V4版本的cudnn吼旧,如果系統(tǒng)內(nèi)安裝的cudnnV5以上版本的凰锡,此處最好不要開(kāi)啟cudnn加速,否則在make的時(shí)候會(huì)報(bào)錯(cuò)
OPENCV=1 #開(kāi)啟opencv環(huán)境
DEBUG=0

#ARCH處可以刪除compute_20這一行,build compute_20已經(jīng)被棄用了
ARCH= -gencode arch=compute_30,code=sm_30 \
      -gencode arch=compute_35,code=sm_35 \
      -gencode arch=compute_50,code=[sm_50,compute_50] \
      -gencode arch=compute_52,code=[sm_52,compute_52]

# This is what I use, uncomment if you know your arch and want to specify
# ARCH=  -gencode arch=compute_52,code=compute_52

VPATH=./src/
EXEC=darknet
OBJDIR=./obj/
NVCC=/usr/local/cuda-8.0/bin/nvcc  #此處自己添加NVCC的路徑,我用的是cuda8.0版本
  • 編譯
make -j8

產(chǎn)生一串如下所示的編譯log信息掂为,如果中間沒(méi)有提示error就編譯成功了

....
....
gcc  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ -Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU -c ./src/gemm.c -o obj/gemm.o
gcc  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ -Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU -c ./src/utils.c -o obj/utils.o
gcc  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ -Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU -c ./src/cuda.c -o obj/cuda.o
gcc  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ -Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU -c ./src/deconvolutional_layer.c -o obj/deconvolutional_layer.o
gcc  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ -Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU -c ./src/convolutional_layer.c -o obj/convolutional_layer.o
gcc  -DOPENCV `pkg-config --cflags opencv`  -DGPU -I/usr/local/cuda/include/ -Wall -Wfatal-errors  -Ofast -DOPENCV -DGPU -c ./src/list.c -o obj/list.o
....
....
  • 測(cè)試opencv
./darknet imtest data/eagle.jpg

生成一系列eagle的圖像

eagle1.png
eagle2.png
  • 可選項(xiàng)
    (1)change what card Darknet uses
./darknet -i 1 imagenet test cfg/alexnet.cfg alexnet.weights

(2)GPU模式改為CPU模式

./darknet -nogpu imagenet test cfg/alexnet.cfg alexnet.weights
  • 下載the pre-trained weight
wget http://pjreddie.com/media/files/yolo.weights
  • 分類(lèi)和檢測(cè)
./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg

檢測(cè)結(jié)果:

layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32
    1 max          2 x 2 / 2   416 x 416 x  32   ->   208 x 208 x  32
    2 conv     64  3 x 3 / 1   208 x 208 x  32   ->   208 x 208 x  64
    3 max          2 x 2 / 2   208 x 208 x  64   ->   104 x 104 x  64
    4 conv    128  3 x 3 / 1   104 x 104 x  64   ->   104 x 104 x 128
    5 conv     64  1 x 1 / 1   104 x 104 x 128   ->   104 x 104 x  64
    6 conv    128  3 x 3 / 1   104 x 104 x  64   ->   104 x 104 x 128
    7 max          2 x 2 / 2   104 x 104 x 128   ->    52 x  52 x 128
    8 conv    256  3 x 3 / 1    52 x  52 x 128   ->    52 x  52 x 256
    9 conv    128  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 128
   10 conv    256  3 x 3 / 1    52 x  52 x 128   ->    52 x  52 x 256
   11 max          2 x 2 / 2    52 x  52 x 256   ->    26 x  26 x 256
   12 conv    512  3 x 3 / 1    26 x  26 x 256   ->    26 x  26 x 512
   13 conv    256  1 x 1 / 1    26 x  26 x 512   ->    26 x  26 x 256
   14 conv    512  3 x 3 / 1    26 x  26 x 256   ->    26 x  26 x 512
   15 conv    256  1 x 1 / 1    26 x  26 x 512   ->    26 x  26 x 256
   16 conv    512  3 x 3 / 1    26 x  26 x 256   ->    26 x  26 x 512
   17 max          2 x 2 / 2    26 x  26 x 512   ->    13 x  13 x 512
   18 conv   1024  3 x 3 / 1    13 x  13 x 512   ->    13 x  13 x1024
   19 conv    512  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 512
   20 conv   1024  3 x 3 / 1    13 x  13 x 512   ->    13 x  13 x1024
   21 conv    512  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 512
   22 conv   1024  3 x 3 / 1    13 x  13 x 512   ->    13 x  13 x1024
   23 conv   1024  3 x 3 / 1    13 x  13 x1024   ->    13 x  13 x1024
   24 conv   1024  3 x 3 / 1    13 x  13 x1024   ->    13 x  13 x1024
   25 route  16
   26 conv     64  1 x 1 / 1    26 x  26 x 512   ->    26 x  26 x  64
   27 reorg              / 2    26 x  26 x  64   ->    13 x  13 x 256
   28 route  27 24
   29 conv   1024  3 x 3 / 1    13 x  13 x1280   ->    13 x  13 x1024
   30 conv    425  1 x 1 / 1    13 x  13 x1024   ->    13 x  13 x 425
   31 detection
Loading weights from yolo.weights...Done!
data/dog.jpg: Predicted in 0.213838 seconds.  #檢測(cè)所用的時(shí)間
pottedplant: 26%                              #此處以下幾項(xiàng)為檢測(cè)到的目標(biāo)的分類(lèi)以及其檢測(cè)精度
truck: 74%
bicycle: 25%
dog: 81%
bicycle: 83%
predictions1.jpg

當(dāng)檢測(cè)圖片中有大量的不同種類(lèi)的目標(biāo)時(shí)裕膀,檢測(cè)結(jié)果為:

Loading weights from yolo.weights...Done!
data/timg.jpg: Predicted in 0.210836 seconds.
person: 58%
person: 61%
person: 36%
person: 68%
person: 40%
person: 81%
horse: 60%
horse: 76%
horse: 84%
horse: 79%
horse: 72%
predictions2.jpg
Loading weights from yolo.weights...Done!
data/plane.jpg: Predicted in 0.213104 seconds.
aeroplane: 73%
aeroplane: 63%
aeroplane: 75%
aeroplane: 72%
aeroplane: 40%
aeroplane: 78%
aeroplane: 54%
aeroplane: 65%
predictions3.jpg

從這些單幅圖像的檢測(cè)結(jié)果可以看出,YOLO的檢測(cè)效果比SSD要好勇哗,特別是當(dāng)圖像類(lèi)目標(biāo)的種類(lèi)和個(gè)數(shù)增多時(shí)魂角,YOLO幾乎沒(méi)有漏檢的情況而根據(jù)以前SSD的檢測(cè)結(jié)果可以看出在圖像內(nèi)目標(biāo)個(gè)數(shù)和種類(lèi)增多時(shí)會(huì)有漏檢的情況出現(xiàn)。

  • Tiny YOLO(速度比YOLO要快但是精度有所下降)
wget http://pjreddie.com/media/files/tiny-yolo-voc.weights #下載預(yù)訓(xùn)練的tiny yolo的超參數(shù)文件

進(jìn)行檢測(cè):

./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc.weights data/dog.jpg

可以得到tiny_yolo下的檢測(cè)速度和結(jié)果:

Loading weights from tiny-yolo-voc.weights...Done!
data/person.jpg: Predicted in 0.187108 seconds.
dog: 53%
person: 73%
sheep: 60%                 #檢測(cè)錯(cuò)誤
predictions4.jpg

對(duì)比yolo2下的檢測(cè)速度和結(jié)果:

Loading weights from yolo.weights...Done!
data/person.jpg: Predicted in 0.252314 seconds.
dog: 85%
person: 85%
horse: 91%
predictions5.jpg

從對(duì)比結(jié)果可以看出tiny_yolo的檢測(cè)速度要快于yolo2而檢測(cè)的準(zhǔn)確度相對(duì)于yolo2要差很多智绸。從檢測(cè)過(guò)程中的信息也可以看出,tiny_yolo使用的模型的層數(shù)大概是yolo2的一半访忿,所以造成了兩者速度和精度的不同瞧栗。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市海铆,隨后出現(xiàn)的幾起案子迹恐,更是在濱河造成了極大的恐慌,老刑警劉巖卧斟,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殴边,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡珍语,警方通過(guò)查閱死者的電腦和手機(jī)锤岸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)板乙,“玉大人是偷,你說(shuō)我怎么就攤上這事∧汲眩” “怎么了蛋铆?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)放接。 經(jīng)常有香客問(wèn)我刺啦,道長(zhǎng),這世上最難降的妖魔是什么纠脾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任玛瘸,我火速辦了婚禮,結(jié)果婚禮上苟蹈,老公的妹妹穿的比我還像新娘捧韵。我一直安慰自己,他們只是感情好汉操,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布再来。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芒篷。 梳的紋絲不亂的頭發(fā)上搜变,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音针炉,去河邊找鬼挠他。 笑死,一個(gè)胖子當(dāng)著我的面吹牛篡帕,可吹牛的內(nèi)容都是我干的殖侵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼镰烧,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拢军!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起怔鳖,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤茉唉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后结执,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體度陆,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年献幔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了懂傀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜡感,死狀恐怖鸿竖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铸敏,我是刑警寧澤缚忧,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站杈笔,受9級(jí)特大地震影響闪水,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蒙具,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一球榆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧禁筏,春花似錦持钉、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)始腾。三九已至,卻和暖如春空执,著一層夾襖步出監(jiān)牢的瞬間浪箭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工辨绊, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奶栖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓门坷,卻偏偏與公主長(zhǎng)得像宣鄙,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子默蚌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容