YOLO (You Only Look Once)
Install YOLO
1. Download Darknet
$ git clone https://github.com/pjreddie/darknet.git $ cd darknet
2. Modify System Setting
$ vim Makefile GPU=1 OPENCV=1
3. Make & Test
$ make $ ./darknet imtest data/eagle.jpg
如果安裝成功應該可以看到如下的圖片
Detect Using a Pre-Trained Model
1. Download pre-trained model
下載YOLO模形預先訓練好的權重。
$ wget https://pjreddie.com/media/files/yolo.weights
2. Run YOLO with pre-trained model
執行darknet測試YOLO模形。$ ./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg其中detect為簡略的寫法,等同於以下寫法:
$ ./darknet detector test cfg/coco.data cfg/yolo.cfg yolo.weights data/dog.jpgyolo.cfg:定義yolo的模形。
yolo.weights:模形中訓練完成的權重
coco.data:分類完之後代表的labels
3. 執行結果如下
layer filters size input output 0 conv 32 3 x 3 / 1 608 x 608 x 3 -> 608 x 608 x 32 1 max 2 x 2 / 2 608 x 608 x 32 -> 304 x 304 x 32 2 conv 64 3 x 3 / 1 304 x 304 x 32 -> 304 x 304 x 64 ...... 27 reorg / 2 38 x 38 x 64 -> 19 x 19 x 256 28 route 27 24 29 conv 1024 3 x 3 / 1 19 x 19 x1280 -> 19 x 19 x1024 30 conv 425 1 x 1 / 1 19 x 19 x1024 -> 19 x 19 x 425 31 detection mask_scale: Using default '1.000000' Loading weights from yolo.weights...Done! data/dog.jpg: Predicted in 0.737670 seconds. dog: 82% truck: 65% bicycle: 85%
Real-Time Detection on a Webcam
將原本的test設定改為demo,YOLO便會改為以camera作為影像輸入。
$ ./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights
Tiny YOLO
雖然目前YOLO能夠取得不錯的辨識結果,但是對於TX2平台的運算能力,仍然是一件相當沉重的負擔。
因此也可以考慮改為使用Tiny YOLO,雖然辨識度會略為降低,但卻能大大提升運算速度。
由於Tiny YOLO改以VOC dataset作訓練(該dataset中僅有20種圖像data),需要改為使用voc.data。並且需要將原本YOLO模形改為tiny-yolo-voc.cfg模形。
參考資料:
因此也可以考慮改為使用Tiny YOLO,雖然辨識度會略為降低,但卻能大大提升運算速度。
1. Download tiny YOLO weights
下載Tiny YOLO模形預先訓練好的權重。
$ wget https://pjreddie.com/media/files/tiny-yolo-voc.weights
2. 執行Tiny YOLO測試
$ ./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg tiny-yolo-voc.weights data/dog.jpg其中,除了需要改為使用tiny-yolo-voc.weight權重外。
由於Tiny YOLO改以VOC dataset作訓練(該dataset中僅有20種圖像data),需要改為使用voc.data。並且需要將原本YOLO模形改為tiny-yolo-voc.cfg模形。
3. Tiny YOLO執行結果
layer filters size input output
0 conv 16 3 x 3 / 1 416 x 416 x 3 -> 416 x 416 x 16
1 max 2 x 2 / 2 416 x 416 x 16 -> 208 x 208 x 16
2 conv 32 3 x 3 / 1 208 x 208 x 16 -> 208 x 208 x 32
......
13 conv 1024 3 x 3 / 1 13 x 13 x1024 -> 13 x 13 x1024
14 conv 125 1 x 1 / 1 13 x 13 x1024 -> 13 x 13 x 125
15 detection
mask_scale: Using default '1.000000'
Loading weights from tiny-yolo-voc.weights...Done!
data/dog.jpg: Predicted in 0.196784 seconds.
car: 34%
car: 55%
dog: 78%
bicycle: 29%
參考資料:
2. YOLO官網 - demo