專案需要用目標檢測模型,由於yolov3精度和效能突出,成為最後選擇的模型。但是因為在實際場景中會有誤檢測和漏檢測的情況,還需要採集實際場景的資料進行微調。思路是直接調整由imagenet+coco資料集訓練出來的權重yolov3.weights,凍結前面的層數,只微調後面n層。
系統:ubuntu 18.04
採集好,篩選,標註,轉換。
其中標註工具我們使用的是labelimg,可以搜尋安裝。但是一般標註的時候選的是pascalvoc格式,最後儲存的是xml檔案,而yolov3的模型需要讀取yolo格式的標籤檔案,因此需要手動轉換,可參考voc_label.py。
然後是各種配置檔案,參考:建立自己的yolo辨識模型 – 以柑橘辨識為例
包括根據種類調整網路結構等,注意因為是fine tune,需要將lr調整低一點,我是直接調為原來的1/2,後面如果不太好再繼續調整。
主要是為了凍結已經訓練好的網路中的前n層的權重,命令:
# 凍結前81層darknet partial cfg/yolov3.cfg yolov3.weights yolov3.conv.81
81
這個時候會在本路徑提取出名為yolov3.conv.81的預訓練模型。
命令:
# 使用多gpu進行訓練darknet detector train cfg/coco.data cfg/yolov3.cfg yolov3.conv.81 -gpus 0,1
訓練期間因為各種原因終止,需要接著訓練,則在原來的weights上繼續訓練:
darknet detector train cfg/coco.data cfg/yolov3.cfg weights/yolov3_500000.weights -gpus 0,1
weights/yolov3_500000.weights是上次訓練最後儲存的權重。
之前是因為官網放出來的訓練教程實在太簡陋了,才在網上找到一些零零散散的教程,拼湊在一起解決問題。
直到找到alexeyab 放在github的教程,基本上你想知道的細節都在裡面了,作者寫得實在詳細,包括如何修改配置,多gpu應該怎麼修改,map怎麼畫,等等。所以如果你看到這裡,還有其他疑問,應該直接進入這篇教程看看了:
建立自己的yolo辨識模型 – 以柑橘辨識為例
(完)
yolov3模型微調相關
這裡記錄一下關於yolov3做模型微調的相關命令.首次訓練都會載入預訓練模型darknet53.conv.74,假如首次訓練出了模型1,要在模型1的基礎上finetuning模型2,當然前提是模型2與模型1之間網路結構沒有發生變化,類別也沒有增加.類別增加的話我暫時還不太清楚 這個時候有兩種解決方法...
yolov3模型微調相關
這裡記錄一下關於yolov3做模型微調的相關命令.首次訓練都會載入預訓練模型darknet53.conv.74,假如首次訓練出了模型1,要在模型1的基礎上finetuning模型2,當然前提是模型2與模型1之間網路結構沒有發生變化,類別也沒有增加.類別增加的話我暫時還不太清楚 這個時候有兩種解決方法...
yolov3系列 零 yolov3詳解
目標檢測演算法與efficientdet講解 論 文 翻譯 yolov3主頁 yolo系列的目標檢測演算法可以說是目標檢測史上的巨集篇巨作,v3演算法是在v1 v2基礎上形成的,先看下 yolov1 yolov2 下圖為yolov3的網路結構 dbl darknetconv2d bn leaky 是...