Ubuntu1804下YOLOv4安裝運行並訓練螺栓螺母檢測模型


YOLOv4代碼下載:https://github.com/AlexeyAB/darknet或者終端輸入

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

 其實怎么訓練自己的模型在上面的網址中已經介紹的很清楚了,認真的一步步下來是肯定沒問題的,下面的內容是其中的一部分,還有很多相關工作我沒有去嘗試,可以按照作者的介紹去試一試。我使用的數據集,鏈接: https://pan.baidu.com/s/1t-W8xC8xF4hxdYlm4R_HKw 提取碼: hkty

 

運行YOLOv4需要安裝一些庫和工具,我裝了opencv3.4.10及對應的contirb,cuda10.1,cudnn7.6。

 

下載后是一個darknet文件夾,找到Makefile文件,打開后先將前四行都置1,即GPU=1,CUDNN=1,CUDNN_HALF=1,OPENCV=1,然后修改ARCH后的參數和你的GPU有關,修改后的結果:

 

還有第64行NVCC的路徑,需要根據實際路徑填寫,我改成NVCC=/usr/local/cuda-10.1/bin/nvcc ,不知道的直接ctrl+f查找nvcc,

然后修改第100行的cuda版本及位置,我修改為COMMON+= -DGPU -I/usr/local/cuda-10.1/include/

 

完成Makefile的修改后在終端輸入以下命令:

cd darknet  //進入目錄
make -j8 

然后在瀏覽器輸入網址https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights,下載的yolov4的預訓練權重,放在darknet目錄下,可以用這個權重來檢驗之前的操作是否成功。

在終端輸入:

./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights

然后輸入圖片路徑,比如說

data/dog.jpg

如果之前都正確的話會輸出檢測結果圖,按鍵盤上任意按鍵關閉圖片。

 

接下來開始訓練自己的模型,首先下載預訓練權重,地址:https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.conv.137

然后在cfg文件夾里找到yolov4-custom.cfg文件,將其復制到darknet目錄下,重命名為yolov4-obg.cfg,然后打開,開始修改參數,主要修改四個參數+2x3個參數。

分別是batch表示每訓練幾個樣本后修改權重,subdivisions將batch再細分,避免內存不夠大出現out of memory錯誤,max_batches權重改變的最大次數,一般是類別數乘2000(最少6000),step用於指定學習率調整時機,當max_batch等於step時調整學習率,filters輸出特征圖數量及classes類別數量。更詳細的配置文件說明可以看這個

由於我訓練的螺栓螺母,僅兩個類別,而且訓練集一共100張圖片,所以我的參數設置分別為batch=1,subdivisions=64,max_batches=6000,step=4800,5400。

filters和classes需要用ctrl+f搜索,直接搜yolo即可,總共要修改三個遍,filters=21,classes=2。filters的值等於(類別數+5)*3。

訓練集可以放在data文件下,如果自己標定的話推薦使用作者提供的yolo_mark,這里不再多說,訓練集的格式相當重要,一定要弄准確。需要注意,使用他的工具標定完后生成的train.txt文件路徑包含x64,在訓練的時候要注意其他文件的路徑,不想新建x64文件夾的可以在將Yolo_mark中的x64目錄下Release中的三個文件復制到Yolo_mark目錄下,然后修改linux_mark.sh,第二行改為./yolo_mark data/img data/train.txt data/obj.names。這樣訓練集相關數據的都在data目錄下,然后在終端輸入./linux_mark.sh開始標定。

標定結束后將data文件夾放到darknet目錄下,然后終端輸入:

./darknet detector train data/obj.data yolov4-obj.cfg yolov4.conv.137

訓練時的截圖:

基本上等loss降到0.5左右訓練就差不多結束了,也可以等訓練完6000次后自動結束。最終的權重保存在backup文件夾中,可以使用以下命令檢測:

./darknet detector test data/obj.data yolov4-obj.cfg backup/yolov4-obj_final.weights 圖片名.jpg//單張圖片
./darknet detector demo data/obj.data yolov4-obj.cfg backup/yolov4-obj_final.weights 視頻名.mp4 //檢測視頻

 

然后輸入相應圖片名稱即可,我的檢測結果如下,左上角的計數和標簽置信度是我自己加進去:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM