基于yolov3的知识蒸馏+剪枝+剪植2:代码实现

tech2022-08-25  120

简单明了说下怎么复现吧 代码地址: SpursLipu / YOLOv3v4-ModelCompression-MultidatasetTraining-Multibackbone

环境安装

#1.conda create -n yolov3 python=3.8 Cython #2.pip install Cython numpy==1.17 #3.pip install numpy opencv-python #4.pip install opencv-python torch>=1.5.1 #5.conda install pytorch-1.6.0-py3.7_cuda10.2.89_cudnn7.6.5_0.tar.bz2 matplotlib #6.pip install matplotlib pillow #7.pip install pillow tensorboard #8.pip install tensorboard torchvision #9.pip install torchvision scipy #10.pip install scipy tqdm #11.pip install tqdm git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI #12.pip install "git+https://gitee.com/wsyin/cocoapi.git#subdirectory=PythonAPI" #13.pip install terminaltables

直接按照上面的步骤来就行,第五步的安装包链接: 点击直接下载pytorch-1.6.0 温馨提示:最好迅雷下载

数据集准备 数据集的制作这个我不赘述了,说下数据集的转换吧,代码如下 基于yolov3的知识蒸馏+剪枝+剪植1:coco数据集转yolo数据集 因为很多博客的数据集都是纯数字的,且长度固定,,没有特殊符号,所以自己改了下

更改部分配置文件 cfg文件夹:

框架配置文件,GitHub上面给出了下载链接

YOLOV3中Darknet中cfg文件说明和理解

data文件夹:

coco.data要参考coco2014的格式改成自己所需的 coco.names文件

coco.names最好只改动自己所用的前几项类别,不然还得改train.py代码原因不多说了,数据加载部分代码的类别不是超参数

运行指令

训练:

python3 train.py --data data/coco2014.data --batch-size 1 --weights weights/yolov3-608.weights -pt --cfg cfg/yolov3/yolov3.cfg --img-size 640 --epochs 1

推理(默认图片在 data/sample 下面)

python3 detect.py --weights weights/yolov3-608.weights --cfg cfg/yolov3/yolov3.cfg

剪枝

python3 train.py --data data/coco2014.data -pt --batch-size 1 --weights weights/yolov3-608.weights --cfg cfg/yolov3/yolov3.cfg -sr --s 0.001 --prune 0

蒸馏

python3 test.py --data data/coco2014.data --weights weights/yolov3-tiny.weights --cfg cfg/yolov3tiny/yolov3-tiny.cfg

理解和应用 正在不断尝试,更新中… 实验记录存档:

1.python3 train.py --data data/coco2014.data --batch-size 1 --weights weights/yolov3-608.weights -pt --cfg cfg/yolov3/yolov3.cfg --img-size 640 --epochs 1 结果是yolov3训练结果第一个步骤 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.198 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.408 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.164 2.<pre>python3 test.py --data data/coco2014.data --weights weights/yolov3-608.weights --cfg cfg/yolov3/yolov3.cfg python3 test.py --data data/coco2014.data --weights weights/yolov3-tiny.weights --cfg cfg/yolov3/yolov3-tiny.cfg python3 test.py --data data/coco2014.data --weights weights/yolov3-608.weights --cfg cfg/yolov3/yolov3.cfg 结果是yolov3训练结果 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.333 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.574 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.351 3.python3 detect.py --weights weights/yolov3-608.weights --cfg cfg/yolov3/yolov3.cfg 做图片推理 python3 detect.py --weights weights/best.pt --cfg cfg/yolov3/yolov3-tiny.cfg 4.python3 train.py --data data/coco2014.data -pt --batch-size 1 --weights weights/yolov3-608.weights --cfg cfg/yolov3/yolov3.cfg -sr --s 0.001 --prune 0 结果时间太长了,等不过来,两天才5/300个epoch 5. python train.py --data data/coco2014.data --batch-size 1 --weights weights/yolov3-tiny.weights --cfg cfg/yolov3tiny/yolov3-tiny.cfg --img-size 640 --epochs 1 --t_cfg cfg/yolov3/yolov3.cfg --t_weights weights/yolov3-608.weights --KDstr 3 结果在那个三步骤里面 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.093 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.232 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.056 6. python3 test.py --data data/coco2014.data --weights weights/yolov3-tiny.weights --cfg cfg/yolov3tiny/yolov3-tiny.cfg 评价一下yolov3-tiny的map DONE (t=23.35s). Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.117 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.277 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.077 7. python3 test.py --data data/coco2014.data --weights weights/last.pt --cfg cfg/yolov3tiny/yolov3-tiny.cfg 用蒸馏后的网络做推理 8. python3 train.py --data data/coco.data --batch-size 1 --weights weights/yolov3-608.weights -pt --cfg cfg/yolov3/yolov3.cfg --img-size 320 --epochs 1
最新回复(0)