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

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

  1. 环境安装

     #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
    温馨提示:最好迅雷下载

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

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

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

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

    data文件夹:

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

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

  4. 运行指令

    训练:

     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
    
  5. 理解和应用
    正在不断尝试,更新中…
    实验记录存档:

     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.
    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
    

你可能感兴趣的:(目标检测,人工智能,深度学习,机器学习,python,pytorch)