yolov--9--YOLO v3的稀疏化剪枝微調--優化細節流程

Yolov-1-TX2上用YOLOv3訓練自己數據集的流程(VOC2007-TX2-GPU)

Yolov--2--一文全面瞭解深度學習性能優化加速引擎---TensorRT

Yolov--3--TensorRT中yolov3性能優化加速(基於caffe)

yolov-5-目標檢測:YOLOv2算法原理詳解

yolov--8--Tensorflow實現YOLO v3

yolov--9--YOLO v3的剪枝優化

yolov--10--目標檢測模型的參數評估指標詳解、概念解析

yolov--11--YOLO v3的原版訓練記錄、mAP、AP、recall、precision、time等評價指標計算

yolov--12--YOLOv3的原理深度剖析和關鍵點講解


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

yolov3-network-slimming

LICENSE

Learning Efficient Convolutional Networks Through Network Slimming (ICCV 2017)應用在yolov3和yolov2上

環境

  • pytorch 0.41
  • Linux

如何使用

1.對原始weights文件進行稀疏化訓練

python sparsity_train.py -sr --s 0.0001 --image_folder coco.data --cfg yolov3.cfg --weights yolov3.weights

2.剪枝

python prune.py --cfg yolov3.cfg --weights checkpoints/yolov3_sparsity_100.weights --percent 0.3

3.對剪枝後的weights進行微調

python sparsity_train.py --image_folder coco.data --cfg prune_yolov3.cfg --weights prune_yolov3.weights

關於new_prune.py

new_prune更新了算法,現在可以確保不會有某一層被減爲0的情況發生,參考RETHINKING THE SMALLER-NORM-LESSINFORMATIVE ASSUMPTION IN CHANNEL PRUNING OF CONVOLUTION LAYERS(ICLR 2018)對剪枝後bn層β係數進行了保留

待完成

coco測試


1、配置:

 待定:

  • cuda 8.0.61,
  • cudnn7.0,
  • opencv2.4.8,
  • Linux系統版本:Ubuntu14.04,
  • Python:2.7.6
  • keras 2.1.1
  • numpy 1.14.2
  • tensorflow 1.0.0
  • pip19.0.3,
  • setuptools-36.6.0(更新後爲setuptools-40.8.0),
  • cmake 3.5.1
  • 硬盤:2T
  • 內存:128G,緩衝區:64G

 

$ pip show numpy
Name: numpy
Version: 1.14.2
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: NumPy Developers
Author-email: [email protected]
License: BSD
Location: /usr/local/lib/python2.7/dist-packages

conda list 的CPU配置如下:


2019-5-24:

 


 2019-5-25:


2019-5-25-2:內存不足

 

異常一:

IndentationError: expected an indented block
  • 把這段英文報錯翻譯過來就是: 縮進錯誤: 期望一個縮進的塊 

縮進問題:縮進2個tab鍵即可


2019-5-27:

1.對原始weights文件進行稀疏化訓練

CUDA_VISIBLE_DEVICES=7 python sparsity_train.py -sr --s 0.0001 --image_folder coco.data --cfg yolov3.cfg --weights yolov3.weights 2>1 | tee visualization/sparsity-tarin-yolov3.log 

2.剪枝

CUDA_VISIBLE_DEVICES=7 python prune.py --cfg yolov3.cfg --weights checkpoints/yolov3_sparsity_100.weights --percent 0.3

 


2019-5-28:

3.對剪枝後的weights進行微調

 

python sparsity_train.py --cfg prune_yolov3-80lei-111.cfg --weights checkpoints-4/prune_yolo  v3_sparsity_416_0.0001_final_1_111.weights


2019-5-29:

測試單張圖片:

CUDA_VISIBLE_DEVICES=7 ./darknet detect cfg/prune_yolov3-80lei-111.cfg yolov3_sparsity_416_0.0001_final_1_442.weights data/dog.jpg
CUDA_VISIBLE_DEVICES=7 ./darknet detect cfg/prune_yolov3-111-80-0.5.cfg yolov3-network-slimming/yolo/checkpoints-2/prune_yolov3_sparsity_416_0.0001_final_1_111-0.5.weights data/dog.jpg

 

分段錯誤:.cfg文件有誤,需要更改


多GPU訓練原版--yolov3

CUDA_VISIBLE_DEVICES=7 ./darknet detector train cfg/voc-1.data cfg/yolov3-1.cfg -gpus 8,9

CUDA_VISIBLE_DEVICES=7 ./darknet detector train cfg/voc-1.data cfg/prune_yolov3-111-80-0.5.cfg yolov3-network-slimming/yolo/checkpoints-2/prune_yolov3_sparsity_416_0.0001_final_1_111-0.5.weights

 


 修改.cfg的batch=32
subdivisions=16


2019-6-2:

稀疏化:

微調:


 

若加微信請備註下姓名_公司/學校,相遇即緣分,感謝您的支持,願真誠交流,共同進步,謝謝~ 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章