Yolo:實時目標檢測實戰(上)

Yolo:實時目標檢測實戰(上)

YOLO:Real-Time Object
Detection

你只看一次(YOLO)是一個最先進的實時物體檢測系統。在帕斯卡泰坦X上,它以每秒30幀的速度處理圖像,在COCO test-dev上有57.9%的mAP。

與其他探測器的比較,YOLOv3非常快速和準確。在0.5 IOU處測得的mAP中,YOLOv3與焦距損失相當,但速度快了約4倍。此外,可以輕鬆地權衡速度和準確性之間的簡單改變模型的大小,無需再訓練!

在這裏插入圖片描述

COCO數據集的性能

在這裏插入圖片描述

How it works

先前的檢測系統重新利用分類器或定位器來執行檢測。他們將模型應用於多個位置和比例的圖像。圖像的高分區域被認爲是檢測。

我們使用完全不同的方法。我們將單一的神經網絡應用於完整的圖像。該網絡將圖像分爲多個區域,並預測每個區域的包圍盒和概率。這些邊界框由預測的概率加權。

與基於分類器的系統相比,我們的模型有幾個優點。它在測試時查看整個圖像,因此它的預測由圖像中的全局上下文通知。與R-CNN這樣的系統不同,R-CNN需要數千張圖片才能得到一張圖片。這使得它非常快,比R-CNN快1000倍,比R-CNN快100倍。有關完整系統的更多詳細信息,請參閱我們的論文。

What is New in Version 3?

YOLOv3使用了一些技巧來改進訓練和提高性能,包括:多尺度預測、更好的主幹分類器等等。

Detection Using A Pre-Trained Model

這篇文章將指導你通過使用一個預先訓練好的模型用YOLO系統檢測物體。如果你還沒有安裝Darknet,你應該先安裝。或者不去閱讀所有的東西:

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

cd darknet

make

容易的!

在cfg/子目錄中已經有YOLO的配置文件。你必須在這裏下載預先訓練的權重文件(237MB)。或者運行這個:

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

Then run the detector!

可以看到下面的輸出信息:

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打印出它檢測到的物體,它的可信度,以及找到它們所花的時間。我們沒有用OpenCV編譯Darknet,因此它不能直接顯示檢測結果。相反,它將它們保存在predictions.png中。您可以打開它來查看檢測到的對象。因爲我們在CPU上使用Darknet,所以每張圖像大約需要6-12秒。如果我們使用GPU版本,速度會快得多。

我已經包括了一些例子圖片,以防你遇到困難。嘗試

data/eagle.jpg, data/dog.jpg,
data/person.jpg, or data/horses.jpg!

detect命令是命令的更通用版本的簡寫。它相當於命令:

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

如果您只想在一個圖像上運行檢測,則不需要知道這一點,但知道是否要執行其他操作(如在網絡攝像頭上運行)(稍後將看到)會很有用。

Multiple Images

不要在命令行上提供圖像,您可以將其留空以嘗試一行中的多幀圖像。相反,當配置和權重完成加載時,您將看到一個提示:

./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

產生:

![][all]

所以這顯然不是非常有用,但是可以將其設置爲不同的值來控制模型設置的閾值。 yolov3 tiny

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

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

然後使用微型配置文件和權重運行檢測:

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

網絡攝像頭的實時檢測

如果看不到結果,在測試數據上運行YOLO就不是很有趣了。與其在一堆圖片上運行,不如在網絡攝像頭的輸入上運行!

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

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

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

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

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

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

這就是我們製作上述YouTube視頻的方式。

訓練YOLO學習VOC

如果你想使用不同的訓練模式、超參數或數據集,你可以從頭開始訓練YOLO。下面是如何讓它在Pascal VOC數據集上工作。

獲取Pascal VOC數據

要訓練YOLO,您需要2007年至2012年的所有VOC數據。你可以在這裏找到數據的鏈接。要獲取所有數據,請創建一個目錄來存儲所有數據,然後從該目錄運行:

wget
https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar

wget
https://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar

wget
https://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar

tar xf VOCtrainval_11-May-2012.tar

tar xf VOCtrainval_06-Nov-2007.tar

tar xf VOCtest_06-Nov-2007.tar

現在將有一個VOCdevkit/子目錄,其中包含所有VOC訓練數據。

爲VOC生成標籤

現在我們需要生成Darknet使用的標籤文件。Darknet希望爲每個圖像創建一個.txt文件,併爲圖像中的每個地面真實對象創建一條線,如下所示:


其中x、y、寬度和高度與圖像的寬度和高度相關。要生成這些文件,我們將在Darknet的script s/目錄中運行voc_label.py腳本。我們再下載一次吧,因爲我們很懶。

wget
https://pjreddie.com/media/files/voc_label.py

python voc_label.py

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