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候選框分類 才能完成目標檢測 事實上 第一眼 是挺費時間的...