天天看點

對YOLOv3訓練出的權重檔案做網絡裁剪後的fine-tuning操作記錄總結

1、使用darknet訓練處的YOLOv3權重檔案的大小一般在200M+左右,這對于在應用階段做模型加載的時候時間非常的長,是以我們項目組打算對訓練好的模型做裁剪,就是把一些不必要的卷積核及其參數删除掉,(删除的原則就是設定一門檻值,當小于某一個門檻值的時候踢出該卷積核和對應的參數),在此基礎對裁剪完成後的權重檔案重新fine-tuning,保持權重檔案中參數的平衡,在模型縮小的情況下保持檢測精度的基本不變性。

2、當同僚給我修改好的權重檔案後,我直接拿daknet對準備好資料修改的yolo.weight做fine-tuning後,發現每次都是一開始就結束了,并能夠儲存模型。原因是這些網絡都是在imagenet上訓練過,設定的疊代次數應該是遠大于cfg中的max_batch或者其他參數,是以剛開始訓練便達到了截止條件。不做fine-tuning,沒有好的初始化又很難訓練出好模型。是以需要重新提取基礎特征提取層

./darknet partial cfg/yolov3-coco.cfg yolov.weights darknet53.conv.74 74

74表示提取yolov3前74層,進而得到darknet53.conv.74作為網絡初始化的初始模型

3、2019年3月18日,用pruning對新訓練出來的剪裁之後的權重進行新的論的剪裁10%,之前那次是20%。剪裁完成後計劃用之前的partital完成提取網絡權重然後訓練。但現在對剪裁後的權重檔案直接訓練,設定學習率為初始學習率,0.001.設定最大疊代次數為10000200,居然能疊代起來,但是顯示的目前的疊代次數與batch有關,這次修改了batch-128,之前等于64.是以顯示了目前疊代次數為250100.對第一次裁剪後的網絡疊代到了500200次,設定的參數與之前的無異。

Github上的兩個對yolov3模型裁剪的開源代碼:

https://github.com/Lam1360/YOLOv3-model-pruning

https://github.com/talebolano/yolov3-network-slimming

https://github.com/violet17/yolov3-channel-pruning

繼續閱讀