适用于Windows和Linux的Yolo-v3和Yolo-v2(上)
適用于Windows和Linux的Yolo-v3和Yolo-v2(上)
https://github.com/eric-erki/darknetAB
(用于對象檢測的神經網絡)-Tensor Cores可以在Linux和Windows上使用
更多詳細信息:http : //pjreddie.com/darknet/yolo/
要求(以及如何安裝依賴項)
預訓練模型
問題說明
Yolo v3在其框架(TensorRT,TensorFlow,PyTorch,OpenVINO,OpenCV-dnn,TVM等)中
數(shù)據(jù)集
-
此存儲庫中的改進
-
如何使用
-
如何在Linux上編譯
o 使用cmake
o 使用make
- 如何在Windows上編譯
o 使用CMake-GUI
o 使用vcpkg
o 傳統(tǒng)方式
-
如何訓練(Pascal VOC數(shù)據(jù))
-
如何使用多GPU進行訓練:
-
如何訓練(檢測自定義對象)
-
如何訓練tiny-yolo(檢測自定義對象)
-
什么時候應該停止訓練
-
如何在PascalVOC 2007上計算mAP
-
如何改善物體檢測
-
如何標記對象的有界框并創(chuàng)建注釋文件
-
如何將Yolo用作DLL和SO庫
mAP@0.5(AP50)-FPS(GeForce 1080 Ti)https://arxiv.org/abs/1911.11929 https://github.com/WongKinYiu/CrossStagePartialNetworks-更多型號
MS COCO上的Yolo v3:速度/準確度(mAP@0.5)圖表
MS COCO上的Yolo v3(Yolo v3與RetinaNet)-圖3:https 😕/arxiv.org/pdf/1804.02767v1.pdf
在Pascal VOC 2007上的Yolo v2:https : //hsto.org/files/a24/21e/068/a2421e0689fb43f08584de9d44c2215f.jpg
在Pascal VOC 2012(comp4)上的Yolo v2:https://hsto.org/files/3a6/fdf/b53/3a6fdfb533f34cee9b52bdd9bb0b19d9.jpg
預訓練模型
不同的cfg文件有權重文件(針對MS COCO數(shù)據(jù)集進行了訓練):
GeForce 1080Ti上的FPS:
csresnext50-panet-SPP-原始optimal.cfg - 65.4%mAP@0.5(43.2%AP
@ 0.5…0.95)
- 35 FPS -
100.5 BFlops - 217 MB:csresnext50-panet-SPP-原始optimal_final.weights
yolov3-spp.cfg - 60.6%mAP@0.5
- 30 FPS -
141.5 BFlops - 240 MB:yolov3-spp.weights
yolov3-tiny-prn.cfg - 33.1%mAP@0.5
- 400 FPS -
3.5 BFlops - 18.8 MB:yolov3纖巧,prn.weights
ENET-coco.cfg(EfficientNetB0-Yolov3) - 45.5%mAP@0.5
- 60 FPS -
3.7 BFlops - 18.3 MB:enetb0-coco_final.weights
yolov3-openimages.cfg -247
MB??-OpenImages數(shù)據(jù)集:yolov3-openimages.weights
單擊 -Yolo v3型號
單擊 -Yolo v2型號
放到附近編譯:darknet.exe
可以通過以下路徑獲取cfg文件: darknet/cfg/
要求
Windows或Linux
CMake> = 3.8對于現(xiàn)代CUDA支持:https : //cmake.org/download/
CUDA 10.0:https : //developer.nvidia.com/cuda-toolkit-archive(在Linux上執(zhí)行安裝后操作)
OpenCV> = 2.4:使用首選的軟件包管理器(棕色,apt),使用vcpkg從源代碼構建或從OpenCV官方網站下載(在Windows上,設置系統(tǒng)變量OpenCV_DIR= C:\opencv\build- include和x64文件夾圖像)
CUD 10.0的cuDNN>
= 7.0 https://developer.nvidia.com/rdp/cudnn-archive(在Linux副本上cudnn.h,libcudnn.so…如此處所述https://docs.nvidia.com/deeplearning/sdk/cudnn-install
/index.html#installlinux-tar上的Windows拷貝cudnn.h,cudnn64_7.dll,cudnn64_7.lib這里desribed https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installwindows)
CC> = 3.0的GPU:https : //en.wikipedia.org/wiki/CUDA#GPUs_supported
在Linux GCC或Clang上,在Windows MSVC 2015/2017/2019 https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community
在其框架中的Yolo v3
TensorFlow:轉換yolov3.weights/ cfg文件yolov3.ckpt/ pb/meta:使用mystic123或jinyu121項目,TensorFlow -精簡版
英特爾OpenVINO 2019 R1:(Myriad X / USB神經計算棒/ Arria FPGA):閱讀本手冊
OpenCV-dnn是CPU(x86 / ARM-Android)最快的實現(xiàn),OpenCV可以使用OpenVINO后端進行編譯以在(Myriad X / USB Neural
Compute Stick / Arria FPGA)上運行,與yolov3.weights/ cfg配合使用:C ++示例或Python示例
PyTorch> ONNX>
CoreML> iOS如何將cfg / weights-files轉換為pt-file:ultralytics / yolov3和iOS App
適用于YOLOv3的TensorRT(推理速度提高-70%):Deep Stream 4.0本身就支持Yolo
TVM -深度學習模型(Keras,MXNet,PyTorch,Tensorflow,CoreML,暗網)插入不同的硬件后端(的CPU,GPU,FPGA和專用加速器)最低部署模塊的編譯:https://tvm.ai/about
Netron-神經網絡可視化器:https : //github.com/lutzroeder/netron
數(shù)據(jù)集
MS COCO:用于./scripts/get_coco_dataset.sh獲取標記的MS COCO檢測數(shù)據(jù)集
OpenImages:python ./scripts/get_openimages_dataset.py用于標記訓練檢測數(shù)據(jù)集
Pascal VOC:python ./scripts/voc_label.py用于標記Train / Test / Val檢測數(shù)據(jù)集
ILSVRC2012(ImageNet分類):使用./scripts/get_imagenet_train.sh(也imagenet_label.sh用于標記有效集)
用于檢測的德語/比利時/俄羅斯/ LISA / MASTIF交通標志數(shù)據(jù)集-使用此解析器:https : //github.com/angeligareta/Datasets2Darknet#detection-task
其數(shù)據(jù)集列表:https : //github.com/AlexeyAB/darknet/tree/master/scripts#datasets
結果示例
Others: https://www.youtube.com/user/pjreddie/videos
此存儲庫中的改進
增加了對Windows的支持
添加了最新模型:CSP,PRN,EfficientNet
添加的層:[conv_lstm],[scale_channels] SE / ASFF / BiFPN,[local_avgpool],[sam],[Gaussian_yolo],[reorg3d](固定的[reorg]),固定的[batchnorm]
新增了訓練循環(huán)模型(具有conv-lstm [conv_lstm]/
conv-rnn層[crnn])以精確檢測視頻的功能
添加了數(shù)據(jù)擴充:[net] mixup=1 cutmix=1 mosaic=1 blur=1。添加的激活:SWISH,MISH,NORM_CHAN,NORM_CHAN_SOFTMAX
增加了使用CPU-RAM進行GPU處理訓練的能力,以增加mini_batch_size和準確性(而非批處理規(guī)范同步)
如果使用此XNOR-net模型訓練自己的權重(位1推斷),則在CPU和GPU上的二進制神經網絡性能將提高2到4倍的檢測速度:https : //github.com/AlexeyAB/darknet/blob/master
/cfg/yolov3-tiny_xnor.cfg
通過將2層融合到1個卷積+批量范數(shù)中,將神經網絡性能提高了約7%
改進的性能:如果在或中定義了Tensor Core,則在GPU Volta / Turing(Tesla V100,GeForce RTX等)上檢測2倍,CUDNN_HALFMakefiledarknet.sln
改進了FullHD的性能約1.2倍,4K的性能約2倍,使用darknet detector demo… 可以檢測視頻(文件/流)
性能提高了3.5倍的數(shù)據(jù)增強進行訓練(使用OpenCV SSE / AVX功能而不是手寫功能)-消除了在多GPU或GPU Volta上進行訓練的瓶頸
使用AVX在Intel CPU上提高了檢測和訓練的性能(Yolo v3?85 %)
在調整網絡大小時優(yōu)化內存分配 random=1
優(yōu)化的GPU初始化以進行檢測-最初使用batch = 1,而不是使用batch = 1重新初始化
使用命令添加了正確的mAP,F1,IoU,Precision-Recall計算darknet detector map…
-map在訓練過程中添加了平均損耗和精度mAP(標志)圖表
./darknet detector demo
… -json_port 8070 -mjpeg_port 8090作為JSON和MJPEG服務器運行,以使用軟件或Web瀏覽器通過網絡在線獲取結果
增加了訓練錨的計算
添加了檢測和跟蹤對象的示例:https : //github.com/AlexeyAB/darknet/blob/master/src/yolo_console_dll.cpp
如果使用了不正確的cfg文件或數(shù)據(jù)集,則為運行時提示和警告
許多其代碼修復…
并添加了手冊- 如何訓練Yolo v3 / v2(以檢測自定義對象)
另外,可能對使用簡化的存儲庫感興趣,該存儲庫中已實現(xiàn)INT8量化(+ 30%的加速和-1%的mAP降低): https://github.com/AlexeyAB/yolo2_light
如何在命令行上使用
在Linux上,請使用./darknet代替darknet.exe,例如:./darknet detector
test ./cfg/coco.data ./cfg/yolov3.cfg ./yolov3.weights
在Linux上./darknet,在根目錄中找到可執(zhí)行文件,而在Windows上,在目錄中找到可執(zhí)行文件。\build\darknet\x64
Yolo v3 COCO- 圖片:darknet.exe detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights
-thresh 0.25
輸出對象的坐標:darknet.exe detector test
cfg/coco.data yolov3.cfg yolov3.weights -ext_output dog.jpg
Yolo v3 COCO- 視頻:darknet.exe detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights
-ext_output test.mp4
Yolo v3 COCO- WebCam 0:darknet.exe detector demo
cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 0
用于網絡攝像機的 Yolo v3 COCO-智能網絡攝像頭:darknet.exe detector demo
cfg/coco.data cfg/yolov3.cfg yolov3.weights
http://192.168.0.80:8080/video?dummy=param.mjpg
Yolo v3-保存結果視頻文件res.avi:darknet.exe detector demo
cfg/coco.data cfg/yolov3.cfg yolov3.weights test.mp4 -out_filename res.avi
Yolo v3 Tiny COCO-視頻:darknet.exe detector demo
cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights test.mp4
允許來自軟件瀏覽器或Web瀏覽器ip-address:8070和8090的多個連接的JSON和MJPEG服務器:./darknet detector demo
./cfg/coco.data ./cfg/yolov3.cfg ./yolov3.weights test50.mp4 -json_port
8070 -mjpeg_port 8090 -ext_output
GPU#1上的 Yolo v3 Tiny :darknet.exe detector demo
cfg/coco.data cfg/yolov3-tiny.cfg yolov3-tiny.weights -i 1 test.mp4
替代方法Yolo v3 COCO-圖片: darknet.exe detect cfg/yolov3.cfg yolov3.weights
-i 0 -thresh 0.25
在Amazon
EC2上進行訓練,以使用URL來查看mAP和損失圖,例如:http://ec2-35-160-228-91.us-west-2.compute.amazonaws.com:8090在Chrome / Firefox中(Darknet應該使用OpenCV進行編譯): ./darknet detector train cfg/coco.data yolov3.cfg
darknet53.conv.74 -dont_show -mjpeg_port 8090 -map
186 MB Yolo9000-圖片: darknet.exe detector test cfg/combine9k.data cfg/yolo9000.cfg
yolo9000.weights
如果使用cpp api構建應用程序,請記住將data / 9k.tree和data / coco9k.map放在應用程序的同一文件夾下
要處理圖像列表data/train.txt并將檢測結果保存到result.json文件中,請使用: darknet.exe detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights
-ext_output -dont_show -out result.json < data/train.txt
處理圖像列表data/train.txt并保存檢測結果以result.txt供使用:
darknet.exe detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights -dont_show -ext_output < data/train.txt
> result.txt
偽標記-處理圖像列表data/new_train.txt并將檢測結果以Yolo訓練格式保存為每個圖像作為標簽<image_name>.txt(通過這種方式,可以增加訓練數(shù)據(jù)量)使用: darknet.exe detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights
-thresh 0.25 -dont_show -save_labels < data/new_train.txt
要計算錨點: darknet.exe detector calc_anchors data/obj.data -num_of_clusters 9
-width 416 -height 416
要檢查準確性mAP @ IoU = 50: darknet.exe detector map data/obj.data
yolo-obj.cfg backup\yolo-obj_7000.weights
要檢查準確性mAP @ IoU = 75: darknet.exe detector map data/obj.data
yolo-obj.cfg backup\yolo-obj_7000.weights -iou_thresh 0.75
用于在任何Android智能手機上使用網絡攝像機mjpeg-stream
- 下載Android手機mjpeg-stream
soft:IP網絡攝像頭/ Smart WebCam
o 智能網絡攝像頭-最好:https : //play.google.com/store/apps/details? id =com.acontech.android.SmartWebCam2
o IP網絡攝像頭:https : //play.google.com/store/apps/details?id=com.pas.webcam
-
通過WiFi(通過WiFi路由器)或USB將Android手機連接到計算機
-
在手機上啟動Smart WebCam
-
替換下面的地址,在電話應用程序(Smart WebCam)中顯示并啟動:
Yolo v3 COCO模型: darknet.exe detector demo data/coco.data yolov3.cfg yolov3.weights
http://192.168.0.80:8080/video?dummy=param.mjpg -i 0
如何在Linux上編譯(使用cmake)
該CMakeLists.txt將嘗試查找已安裝的可選依賴像CUDA,cudnn,ZED與編譯構建。還將創(chuàng)建一個共享對象庫文件以darknet用于代碼開發(fā)。
在克隆的存儲庫中執(zhí)行以下操作:
mkdir build-release
cd build-release
cmake …
make
make install
如何在Linux上編譯(使用make)
只需make在darknet目錄中進行即可。在制作之前,可以在Makefile:鏈接中設置此類選項
GPU=1使用CUDA進行構建以通過使用GPU加速(CUDA應該在中/usr/local/cuda)
CUDNN=1使用cuDNN v5-v7進行構建,以通過使用GPU加速訓練(cuDNN應該在中/usr/local/cudnn)
CUDNN_HALF=1 為Tensor Core構建(在Titan V / Tesla V100 /
DGX-2及更高版本上)加速檢測3倍,訓練2倍
OPENCV=1 使用OpenCV 4.x / 3.x / 2.4.x構建-允許檢測來自網絡攝像機或網絡攝像機的視頻文件和視頻流
DEBUG=1 調試Yolo版本
OPENMP=1 使用OpenMP支持進行構建以通過使用多核CPU來加速Yolo
LIBSO=1生成一個庫darknet.so和uselib使用該庫的二進制可運行文件。或者,可以嘗試運行,以便LD_LIBRARY_PATH=./:LDLIBRARYPATH./uselibtest.mp4如何使用自己的代碼使用此SO庫?可以查看C++示例:https://github.com/AlexeyAB/darknet/blob/master/src/yoloconsoledll.cpp或在這樣的方式:LDLIBRARYPATH=./:LD_LIBRARY_PATH ./uselib test.mp4如何使用自己的代碼使用此SO庫-可以查看C ++示例:https://github.com/AlexeyAB/darknet/blob/master/src/yolo_console_dll.cpp 或在這樣的方式:LD_LIBRARY_PATH=./:LDL?IBRARYP?ATH./uselibtest.mp4如何使用自己的代碼使用此SO庫?可以查看C++示例:https://github.com/AlexeyAB/darknet/blob/master/src/yoloc?onsoled?ll.cpp或在這樣的方式:LDL?IBRARYP?ATH=./:LD_LIBRARY_PATH
./uselib data/coco.names cfg/yolov3.cfg yolov3.weights test.mp4
ZED_CAMERA=1 構建具有ZED-3D攝像機支持的庫(應安裝ZED SDK),然后運行LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./uselib data/coco.names
cfg/yolov3.cfg yolov3.weights zed_camera
要在Linux上運行Darknet,請使用本文提供的示例,只需使用./darknet代替darknet.exe,即使用以下命令:./darknet detector
test ./cfg/coco.data ./cfg/yolov3.cfg ./yolov3.weights
如何在Windows上編譯(使用CMake-GUI)
如果已經安裝了Visual Studio
2015/2017/2019,CUDA> 10.0,cuDNN> 7.0和OpenCV> 2.4,則這是在Windows上構建Darknet的推薦方法。
使用CMake-GUI如下所示這個IMAGE:
-
配置
-
發(fā)電機的可選平臺(設置:x64)
-
完成
-
生成
-
打開工程
-
設置:x64和發(fā)行版
-
建立
-
建立解決方案
如何在Windows上編譯(使用vcpkg)
如果已經安裝了Visual Studio
2015/2017/2019,CUDA> 10.0,cuDNN> 7.0,OpenCV> 2.4,則要編譯Darknet,建議使用 CMake-GUI。
否則,請按照下列步驟操作:
-
將Visual Studio安裝或更新到至少2017版,并確保已對其進行完全修補(如果不確定是否自動更新到最新版本,請再次運行安裝程序)。如果需要從頭開始安裝,請從此處下載VS:Visual Studio社區(qū)
-
安裝CUDA和cuDNN
-
安裝git和cmake。確保至少在當前帳戶的路徑上
-
安裝vcpkg并嘗試安裝測試庫以確保一切正常,例如vcpkg install opengl
-
定義環(huán)境變量,VCPKG_ROOT指向的安裝路徑vcpkg
-
用名稱VCPKG_DEFAULT_TRIPLET和值定義另一個環(huán)境變量x64-windows
-
打開Powershell并鍵入以下命令:
-
PS > cd $env:VCPKG_ROOT9. PS Code\vcpkg> .\vcpkg install pthreads opencv[ffmpeg] #replace with opencv[cuda,ffmpeg] in case you want to use cuda-accelerated openCV
-
打開Powershell,轉到darknet文件夾并使用命令進行構建.\build.ps1。如果要使用Visual Studio,將在構建后找到CMake為創(chuàng)建的兩個自定義解決方案,一個在中build_win_debug,另一個在中build_win_release,其中包含適用于系統(tǒng)的所有配置標志。
如何在Windows上編譯(舊版方式)
- 如果具有CUDA 10.0,cuDNN 7.4和OpenCV 3.x(路徑:C:\opencv_3.0\opencv\build\include&C:\opencv_3.0\opencv\build\x64\vc14\lib),則打開build\darknet\darknet.sln,設置x64并釋放https://hsto.org/webt/uh/fk/-e/uhfk-eb0q-hwd9hsxhrikbokd6u。 jpeg并執(zhí)行以下操作:構建->構建Darknet。還要添加Windows系統(tǒng)變量CUDNN以及CUDNN的路徑:https 😕/user-images.githubusercontent.com/4096485/53249764-019ef880-36ca-11e9-8ffe-d9cf47e7e462.jpg
1.1. 查找文件opencv_world320.dll和opencv_ffmpeg320_64.dll(或opencv_world340.dll和opencv_ffmpeg340_64.dll)C:\opencv_3.0\opencv\build\x64\vc14\bin并放在附近darknet.exe
1.2. 檢查是否存在bin和include文件夾C:\Program
Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0,然后從安裝CUDA的路徑將復制到此文件夾
1.3. 要安裝CUDNN(加速神經網絡),請執(zhí)行以下操作:
o 下載并安裝CUD 10.0的cuDNN v7.4.1:https://developer.nvidia.com/rdp/cudnn-archive
o 添加CUDNN具有CUDNN路徑的Windows系統(tǒng)變量:https 😕/user-images.githubusercontent.com/4096485/53249764-019ef880-36ca-11e9-8ffe-d9cf47e7e462.jpg
o 將文件復制cudnn64_7.dll到\build\darknet\x64附近的文件夾darknet.exe
1.4. 如果要在沒有CUDNN的情況下進行構建,請:打開\darknet.sln->(右鍵單擊項目)->屬性-> C / C
+±>預處理程序->預處理程序定義,然后刪除:CUDNN;
-
如果有其版本的CUDA(不是10.0)build\darknet\darknet.vcxproj,請使用記事本打開,用“ CUDA 10.0”找到2個位置,并將其更改為CUDA版本。然后打開\darknet.sln->(右鍵單擊項目)->屬性-> CUDA C / C
+±>設備,然后將其刪除;compute_75,sm_75。然后執(zhí)行步驟1 -
如果沒有GPU,但是擁有OpenCV 3.0(路徑:C:\opencv_3.0\opencv\build\include&C:\opencv_3.0\opencv\build\x64\vc14\lib),則打開build\darknet\darknet_no_gpu.sln,設置x64和Release,然后執(zhí)行以下操作:Build-> Build darknet_no_gpu
-
如果使用的是OpenCV 2.4.13而不是3.0,則應在\darknet.sln打開后更改路徑
4.1(右鍵單擊項目)->屬性-> C / C +±>常規(guī)->其包含目錄: C:\opencv_2.4.13\opencv\build\include
4.2(右鍵單擊項目)->屬性->鏈接器->常規(guī)->其庫目錄: C:\opencv_2.4.13\opencv\build\x64\vc14\lib
- 如果帶有Tensor內核的GPU(nVidia Titan V / Tesla V100 / DGX-2及更高版本)加速檢測3倍,訓練2倍:\darknet.sln->(右鍵單擊項目)->屬性-> C / C
+±>預處理程序->預處理程序定義,并在此處添加:CUDNN_HALF;
注意:僅在安裝Visual Studio之后,才必須安裝CUDA。
如何編譯(自定義):
另外,可以為CUDA 9.1和OpenCV 3.0 創(chuàng)建自己的darknet.sln&darknet.vcxproj例子
然后添加到創(chuàng)建的項目中:
(右鍵單擊項目)->屬性-> C / C +±>常規(guī)->其包含目錄,放在這里:
C:\opencv_3.0\opencv\build\include;…\3rdparty\include;
%(AdditionalIncludeDirectories);
(CudaToolkitIncludeDir);(CudaToolkitIncludeDir);(CudaToolkitIncludeDir);(CUDNN)\include
(右鍵單擊項目)->構建依賴關系->構建自定義->設置CUDA 9.1或擁有的版本的設置-例如,如下所示:http : //devblogs.nvidia.com/parallelforall/wp-content/uploads/
2015/01 / VS2013-R-5.jpg
添加到項目:
所有.c文件
所有.cu文件
文件http_stream.cpp從\src目錄
文件darknet.h從\include目錄
(右鍵單擊項目)->屬性->鏈接器->常規(guī)->其庫目錄,放在這里:
C:\opencv_3.0\opencv\build\x64\vc14\lib;
$(CUDA_PATH)\lib$(PlatformName);
$(CUDNN)\lib\x64;%(AdditionalLibraryDirectories)
(右鍵單擊項目)->屬性->鏈接器->輸入->其依賴項,放在這里:
…\3rdparty\lib\x64\pthreadVC2.lib;cublas.lib;curand.lib;cudart.lib;cudnn.lib;%(AdditionalDependencies)
(右鍵單擊項目)->屬性-> C / C +±>預處理程序->預處理程序定義
OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;_CRT_RAND_S;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
編譯為.exe(X64和Release)并使用.exe將.dll-s放在附近:https : //hsto.org/webt/uh/fk/-e/uhfk-eb0q-hwd9hsxhrikbokd6u.jpeg
pthreadVC2.dll, pthreadGC2.dll 來自\ 3rdparty \ dll \ x64
cusolver64_91.dll, curand64_91.dll, cudart64_91.dll, cublas64_91.dll -91(對于CUDA 9.1或版本),來自C:\ Program Files \ NVIDIA GPU Computing Toolkit
CUDA \ v9.1 \ bin
對于OpenCV的3.2:opencv_world320.dll與opencv_ffmpeg320_64.dll從C:\opencv_3.0\opencv\build\x64\vc14\bin
對于OpenCV的2.4.13: opencv_core2413.dll,opencv_highgui2413.dll并opencv_ffmpeg2413_64.dll從C:\opencv_2.4.13\opencv\build\x64\vc14\bin
訓練方法(Pascal VOC資料):
-
下載卷積層的預訓練權重(154 MB):http : //pjreddie.com/media/files/darknet53.conv.74并放入目錄build\darknet\x64
-
下載Pascal VOC數(shù)據(jù)并將其解壓縮到目錄中,build\darknet\x64\data\voc將創(chuàng)建dir build\darknet\x64\data\voc\VOCdevkit\:
o http://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
o http://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar
o http://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar
2.1 將文件下載voc_label.py到dir build\darknet\x64\data\voc:
http : //pjreddie.com/media/files/voc_label.py
-
下載并安裝適用于Windows的Python:https://www.python.org/ftp/python/3.5.2/python-3.5.2-amd64.exe
-
運行命令:(python build\darknet\x64\data\voc\voc_label.py生成文件:2007_test.txt,2007_train.txt,2007_val.txt,2012_train.txt,2012_val.txt)
-
運行命令: type 2007_train.txt 2007_val.txt 2012_*.txt > train.txt
-
設置batch=64并subdivisions=8在文件中yolov3-voc.cfg:鏈接
-
使用train_voc.cmd或使用命令行開始訓練:
darknet.exe detector train cfg/voc.data cfg/yolov3-voc.cfg
darknet53.conv.74
(注意:要禁用Loss-Window use標志-dont_show。如果使用的是CPU,請嘗試使用darknet_no_gpu.exe代替darknet.exe。)
如果需要,請更改文件中的路徑 build\darknet\cfg\voc.data
有關鏈接的訓練的更多信息:http : //pjreddie.com/darknet/yolo/#train-voc
注意:如果在訓練過程中看到(損失)字段的nan值avg-則訓練有誤,但如果出現(xiàn)nan在其行中-則訓練進行得很好。
如何使用多GPU進行訓練:
-
首先在1個GPU上進行1000次迭代訓練: darknet.exe
detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74 -
然后停止并通過使用部分訓練的模型/backup/yolov3-voc_1000.weights運行訓練來進行multigpu(最多4個GPU):darknet.exe detector train cfg/voc.data cfg/yolov3-voc.cfg /backup/yolov3-voc_1000.weights
-gpus 0,1,2,3
僅對于小型數(shù)據(jù)集,有時對于4個GPU集learning_rate =
0.00025(例如,learning_rate = 0.001 / GPU)而言,降低學習率會更好。在這種情況下burn_in = and max_batches
=在cfg文件中增加4倍的時間。即使用burn_in = 4000代替1000。 Same
goes for steps= if policy=steps is set.。
https://groups.google.com/d/msg/darknet/NbJqonJBTSY/Te5PfIpuCAAJ
總結
以上是生活随笔為你收集整理的适用于Windows和Linux的Yolo-v3和Yolo-v2(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 黎曼曲面Riemann Surface
- 下一篇: 适用于Windows和Linux的Yol