YOLO---多個版本的簡單認識
YOLOv3 有好幾個經典版本了:
一、YOLOv3 (Darknet)官網 @ https://github.com/pjreddie/darknet
二、YOLOv3(darknet優化了)@ https://github.com/AlexeyAB/darknet
三、YOLOv3 with OpenCV官網 @ https://github.com/JackKoLing/opencv_deeplearning_practice/tree/master/pracice3_opencv_yolov3
四、其他github上有tensorflow、caffe、keras、pytorch等版本,略。
引用:
windows版本:請參考 https://github.com/AlexeyAB/darknet
linux版本:請參考 https://pjreddie.com/darknet/yolo
簡介
一、YOLOv3 (Darknet)官網 @ https://github.com/pjreddie/darknet
一開始github上最熱的開源項目,在linux系統下做的,現在各個大神改版也有在windows下使用了。
下載並備齊:darknet、選配yolov3.weights + yolov3.cfg、...
依賴環境:C++、OpenCV、python、...
編譯情況:下載源文件,需要make進行編譯后,才能使用
支持:linux系統(最先支持) + windows + CPU + GPU(可適用於英偉達)
(1)源碼的常用執行命令:
u@u1604:~/darknet$ (1)測試一張圖片---detect ./darknet detect cfg/yolov3.cfg weights/yolov3.weights data/person.jpg ./darknet detector test cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights data/person.jpg (2)測試本地視頻---demo ./darknet detector demo cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights wp_video/person002.mp4 (3)測試usb視頻--- ./darknet detector demo cfg/coco.data cfg/yolov3.cfg weights/yolov3.weights (4)測試rstp視頻--- ./darknet detector demo ./cfg/coco.data ./cfg/yolov3.cfg weights/yolov3.weights rtsp://admin:admin12345@192.168.?.??/H.264/ch1/sub/av_stream -i 0 -thresh 0.25 ./darknet detector demo ./cfg/coco.data ./cfg/yolov3.cfg weights/yolov3.weights rtsp://admin:admin12345@192.168.?.??/H.264/ch1/sub/av_stream -i 0 -----------to test many pics------------------------ ./darknet detect cfg/yolov3.cfg weights/yolov3.weights -i 2 #CPU enter Enter Image Path: ./darknet detect cfg/yolov3.cfg weights/yolov3.weights -i 0 #GPU enter Enter Image Path:
(2)自寫python接口文件,執行:
python2 xx.py
python3 xx.py
二、YOLOv3(darknet優化了)@ https://github.com/AlexeyAB/darknet
一開始github在windows系統下做的,現在各個大神改版也有在linux下使用了。
下載並備齊:darknet、選配yolov3.weights + yolov3.cfg、...
依賴環境:C++、OpenCV、python、...
編譯情況:下載源文件,需要make進行編譯后,才能使用
支持:windows系統(最先支持) + linux + CPU + GPU(可適用於英偉達)
基本使用命令同《一、YOLOv3 (Darknet)官網》,但部分有少許差別
. AlexeyAB改進項 提供window支持 相較於原版pjreddie版本darknet提升了訓練速度 添加了二值化網絡,XNOR(bit) ,速度快,准確率稍低https://github.com/AlexeyAB/darknet/blob/master/cfg/yolov3-tiny_xnor.cfg 提升7%通過將卷積層和BN層合並為一個(*_*)不太懂。 多GPU訓練提升 修補了[reorg]層 添加了mAP, IOU,Precision-Recall計算 darknet detector map... 可以在訓練過程中畫loss圖像 添加了根據自己數據集的anchor生成 提升視頻檢測,網絡攝像頭,opencv相關問題 提出了一個INT8的網絡,提升了檢測速度,但是准確率稍有下降 https://github.com/AlexeyAB/yolo2_light @ https://www.cnblogs.com/pprp/p/10204480.html#alexeyab%E6%94%B9%E8%BF%9B%E9%A1%B9
三、YOLOv3 with OpenCV官網 @ https://github.com/JackKoLing/opencv_deeplearning_practice/tree/master/pracice3_opencv_yolov3
下載並備齊:yolov3.weights權重文件、yolov3.cfg網絡構建文件、coco.names、xxx.jpg、xxx.mp4文件、object_detection_yolo.cpp、object_detection_yolo.py等文件;
依賴環境:C++的編譯環境(如G++/VScode)、OpenCV3.4.2+(記住安裝目錄)
編譯情況:下載源文件,無需復雜的編譯,直接修改進行應用
支持:windows + linux + CPU + GPU(只適用於英特爾)
(1)在OpenCV中使用YOLOv3, 可以在windows下+ ubuntu下使用。
(2)windows下,之前做,object_detection_yolo.cpp是在Visual Studio(VS)下編譯的。
(3)ubuntu下,這次,object_detection_yolo.cpp是g++編譯的。
(3)OpenCV的DNN,GPU僅使用英特爾的GPU進行測試,因此如果沒有英特爾GPU,代碼會將您切換回CPU。
使用:
(1)object_detection_yolo.cpp,執行:
編譯,g++ `pkg-config opencv --cflags` object_detection_yolo.cpp -o object_detection_yolo `pkg-config opencv --libs` -std=c++11
測試,a single image:
./object_detection_yolo --image=./data/1.jpg
a video file:
./object_detection_yolo --video=./data/run.mp4
(2)object_detection_yolo.py,執行:
a single image:
python3 object_detection_yolo.py --image=bird.jpg
a video file:
python3 object_detection_yolo.py --video=run.mp4
最后,三者的區別,還沒太細細研究。pjreddie/darknet、AlexeyAB/darknet 、YOLOv3 with OpenCV三者的計算效率和准確率,還未做對比。這幾天,本來想對比一下運行時間,但沒太注意時間函數的放置位置,測試的時間貌似沒有可比性。整個工程的運行時間,可能對工程最具時間說服價值,太耗時,以后有機會有需要在細細研究。
從運行的直觀觀測上,GPU > CPU,C++ > Python,耗時的具體數值暫不做研究。附上:這幾天的測試時間,作對比可能不具有太大的價值;網上網友分享的資源。
測試環境:ubuntu16.04 + Intel® Core™ i7-8700K CPU @ 3.70GHz × 12 + NVIDIA GTX 2080 TI