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

2022-02-04 10:06:03 字數 4316 閱讀 6922

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

yolo:real-time object detection

你只看一次(yolo)是乙個最先進的實時物體檢測系統。在帕斯卡泰坦x上,它以每秒30幀的速度處理影象,在coco test-dev上有57.9%的map。

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

coco資料集的效能

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

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

與基於分類器的系統相比,我們的模型有幾個優點。它在測試時檢視整個影象,因此它的**由影象中的全域性上下文通知。與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

cd darknet

make

容易的!

wget

then run the detector!

可以看到下面的輸出資訊:

darknet列印出它檢測到的物體,它的可信度,以及找到它們所花的時間。我們沒有用opencv編譯darknet,因此它不能直接顯示檢測結果。相反,它將它們儲存在predictions.png中。您可以開啟它來檢視檢測到的物件。因為我們在cpu上使用darknet,所以每張影象大約需要6-12秒。如果我們使用gpu版本,速度會快得多。

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

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

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

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:

產生:![all]            

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

wget

然後使用微型配置檔案和權重執行檢測:

網路攝像頭的實時檢測

如果看不到結果,在測試資料上執行yolo就不是很有趣了。與其在一堆上執行,不如在網路攝像頭的輸入上執行!

要執行這個演示,您需要使用cuda和opencv編譯darknet。然後執行命令:

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

yolo將顯示當前fps和**類,以及在其上繪製邊界框的影象。

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

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

訓練yolo學習voc             

如果你想使用不同的訓練模式、超引數或資料集,你可以從頭開始訓練yolo。下面是如何讓它在pascal voc資料集上工作。

獲取pascal voc資料

要訓練yolo,您需要2023年至2023年的所有voc資料。你可以在這裡找到資料的鏈結。要獲取所有資料,請建立乙個目錄來儲存所有資料,然後從該目錄執行:

wget

wget

wget

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檔案,並為影象中的每個地面真實物件建立一條線,如下所示:

wget

python voc_label.py

Yolo 實時目標檢測實戰(下)

yolo 實時目標檢測實戰 下 yolo real time object detection after a few minutes,this script will generate all of the requisite files.mostly it generates a lot of ...

Yolo 實時目標檢測實戰(下)

yolo 實時目標檢測實戰 下 yolo real time object detection after a few minutes,this script will generate all of the requisite files.mostly it generates a lot of ...

目標檢測 YOLO演算法

r cnn系列目標檢測方法 r cnn,fast r cnn,faster r cnn 看做目標檢測,都是需要 看兩眼 的。即,第一眼做 region proposals 獲得所有候選目標框,第二眼對所有候選框做 box classifier候選框分類 才能完成目標檢測 事實上 第一眼 是挺費時間的...