目標檢測:YOLO-V3算法實驗

目標檢測:YOLO-V3算法實現

1. 引言

論文:You Only Look Once: Unified, Real-Time Object Detection

論文地址:https://arxiv.org/abs/1506.02640

DarkNet源碼下載地址:https://github.com/pjreddie/darknet

Tensorflow源碼下載地址:https://github.com/hizhangp/yolo_tensorflow

2.實現(基於darknet)

這篇文章將指導您使用預訓練的模型通過YOLO系統檢測物體。如果尚未安裝Darknet,則應先進行安裝。
環境:Ubuntu16.04

1.主目錄打開命令行,輸入命令:

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

簡單!
2.您已經在cfg/子目錄中擁有YOLO的配置文件。可以離線下載預訓練重量文件(237 MB)。或着只是運行此命令:
離線下載地址:
https://pjreddie.com/media/files/yolov3.weights
在線下載命令:

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

3.然後運行檢測器

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

您將看到以下輸出:

layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32  0.299 BFLOPs
    1 conv     64  3 x 3 / 2   416 x 416 x  32   ->   208 x 208 x  64  1.595 BFLOPs
    .......
  105 conv    255  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 255  0.353 BFLOPs
  106 detection
truth_thresh: Using default '1.000000'
Loading weights from yolov3.weights...Done!
data/dog.jpg: Predicted in 0.029329 seconds.
dog: 99%
truck: 93%
bicycle: 99%

在這裏插入圖片描述

Darknet會打印出它檢測到的對象,其置信度以及找到它們所花費的時間。我們沒有使用Darknet進行編譯,OpenCV因此它無法直接顯示檢測結果。而是將它們保存在中predictions.png。您可以打開它以查看檢測到的對象。由於我們在CPU上使用Darknet,因此每個圖像大約需要6-12秒。如果我們使用GPU版本,它將更快。

另外,作者提供了一些示例圖像,以備不時之需。嘗試data/eagle.jpg,data/dog.jpg,data/person.jpg,或data/horses.jpg!

該detect命令是該命令的更通用版本的簡寫。它等效於命令:

./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg

如果只想對一個圖像進行運行檢測,就不需要知道這一點,但是瞭解是否要進行其他操作(例如在網絡攝像頭上運行)將很有用。

多張圖片
您可以將其留爲空白,以連續嘗試多個圖像,而不必在命令行上提供圖像。相反,當配置和權重加載完成時,您將看到提示:

./darknet detect cfg/yolov3.cfg yolov3.weights
layer     filters    size              input                output
    0 conv     32  3 x 3 / 1   416 x 416 x   3   ->   416 x 416 x  32  0.299 BFLOPs
    1 conv     64  3 x 3 / 2   416 x 416 x  32   ->   208 x 208 x  64  1.595 BFLOPs
    .......
  104 conv    256  3 x 3 / 1    52 x  52 x 128   ->    52 x  52 x 256  1.595 BFLOPs
  105 conv    255  1 x 1 / 1    52 x  52 x 256   ->    52 x  52 x 255  0.353 BFLOPs
  106 detection
Loading weights from yolov3.weights...Done!
Enter Image Path:

輸入一個圖像路徑,data/horses.jpg以使其預測該圖像的框
在這裏插入圖片描述
完成後,它將提示您輸入更多嘗試不同圖像的路徑。完成後,使用Ctrl-C退出程序。

更改檢測閾值
默認情況下,YOLO僅顯示置信度爲.25或更高的對象。您可以通過將-thresh 標誌傳遞給yolo命令來更改此設置。例如,要顯示所有檢測,可以將閾值設置爲0:

./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg -thresh 0

會產生所有的檢測框。因此,這顯然不是超級有用,但是可以將其設置爲不同的值,以控制模型對閾值的限制。

4.微型的YOLOv3

對於受限環境,我們也有一個非常小的模型yolov3-tiny。要使用此模型,請首先下載權重:

wget https://pjreddie.com/media/files/yolov3-tiny.weights

5.網絡攝像頭上的實時檢測
如果看不到結果,對測試數據運行YOLO並不是很有趣。不用在一堆圖像上運行它,而是在網絡攝像頭的輸入上運行它!

要運行此演示,將需要使用CUDA和OpenCV編譯Darknet。然後運行命令:

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

YOLO將顯示當前的FPS和預測的類別,以及在其頂部繪製邊框的圖像。

需要將網絡攝像頭連接到OpenCV可以連接到的計算機,否則它將無法正常工作。如果連接了多個網絡攝像頭,並且想要選擇要-c 使用的網絡攝像頭0,則可以通過該標誌進行選擇(默認情況下,OpenCV使用網絡攝像頭)。

如果OpenCV可以讀取視頻,也可以在視頻文件上運行它:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>

未完待續,之後將會進行yolo在VOC數據上訓練,在自己的數據上訓練~

您的支持,是我不斷創作的最大動力~

歡迎點贊關注留言交流~

深度學習,樂此不疲~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章