统计
  • 建站日期:2021-03-10
  • 文章总数:3772 篇
  • 评论总数:29 条
  • 分类总数:43 个
  • 最后更新:5月19日
文章 未分类

v60油箱多大 (v6.0 yolov5s模型剪枝详细环节)

小菜鸡
首页 未分类 正文

本文参考github上大神的开源剪枝名目启动学习与分享,详细链接放在文后,宿愿与大家多多交流!一、原模型训练在官网源码上训练yolov5模型,允许v6.0分支的n,s,m,l模型,我这里经常使用的是v5s,失掉后将名目clone到本机上gitclonehttps,github.com,midasklr,yolov5prune.gi...。

v60油箱多大(v6.0yolov5s模型剪枝详细环节)
-IT菜鸡教程网-IT技术博客
-第1
张图片

本文参考github上大神的开源剪枝名目启动学习与分享,详细链接放在文后,宿愿与大家多多交流!

一、原模型训练

在官网源码上训练yolov5模型,允许v6.0分支的n/s/m/l模型,我这里经常使用的是v5s,失掉后将名目clone到本机上

gitclonehttps://github.com/midasklr/yolov5prune.git

cd进入文件夹后,新建runs文件夹,将训练好的模型放入runs/your_train/weights/xxx.pt,我的原模型map0.5:0.95为0.84左右,模型与data.yaml设置好后可以启动稠密化训练了。

二、稠密化训练

pythontrain_sparity.py--st--sr0.0002--weightsyolov5s.pt--data>留意:1、若原模型训练时未经常使用adam,则这里也不要经常使用adam。2:data.yaml文件改老自己的数据集文件。3:这里sr参数为稠密化系数,详细值为多少依据不同的数据集和模型,普通设置不一样,须要自己多试试,比如我的是单类别目的检测,设置为0.0002时简直不变动(如下图)。<p class="quietlee_72b32_a1f75"></p><p class="quietlee_66f04_1e16a">这里咱们cd到runs文件夹门路,而后输入tensorboard实时监看训练环节,logdir也指向runs文件夹即可,而后关上网页输入你的ip,端口号普通为6006,比如192.168.xx.xx:6006就可以监看。</p>tensorboard--logdir=/home/user2/yinjiacheng/pytorch-ssd/pytorch-ssd/runs--host=0.0.0.0<p class="quietlee_072b0_30ba1"></p><p class="quietlee_7f39f_8317f">这个直方图的纵轴代表训练次数(从上往下训练次数参与),横轴的峰值应随着训练次数始终迫近0轴,代表着大少数bn曾经变得稠密,而产生下图这个状况或许稠密过慢(迫近0轴的环节缓慢)时,代表sr值应该过量增大。</p><p class="quietlee_fc490_ca45c">所以我调整了sr为0.02,但此时bn收敛过快,且mAP降低重大,如下图所示,示意sr值调的过大了,须要适当缩小,直至直方图迫近0轴的同时,mAP与原模型相差不大。</p><p class="quietlee_32bb9_0e897">而后我将sr值调整为0.01,此时的bn直方图与mAP0.5曲线如下图所示:</p><p class="quietlee_d1fe1_73d08">可以看出bn直方图往0轴迫近的速度不是太快也不是太慢(如同在说废话),而mAP只管有掉点但还是可以接受,最后可以finetune回来一些,所以可以选用这一稠密化模型启动下一步的剪枝。</p><p class="quietlee_f033a_b37c3"></p><h2>三、剪枝</h2>pythonprune.py--percent0.5--weightsruns/train/exp/weights/last.pt--data>这里percent参数是剪枝比例,weights选用刚刚训练好的稠密化模型,cfg选用你经常使用的yaml即可,剪枝成功后主文件夹下会产生pruned_model.pt文件,这就是剪枝后的模型,但会发现怎样模型大小降低的不多,由于它还是FP32精度的,而咱们yolov5训练成功后的模型为FP16精度,所以其实大小还是降低挺多的(最后我微调后失掉的是5.8M,而原模型为13.6M)。<p class="quietlee_9778d_5d219"></p><h2>四、微调</h2>pythonfinetune_pruned.py--weightspruned_model.pt--data>这里还是一样,若前面没有经常使用adam则这里也不要用,imgsz调老自己的输入尺寸,200个epoch还是finetune回来不少的。<p class="quietlee_c7e12_49ffc">最后我取得的模型为5.48M,参数量Param为2.74M,输入尺寸为320*320时FLOPs为2.17G,比原模型大小13.6M,FLOPs为3.9G清楚减小。</p><p class="quietlee_2a38a_4a931"></p><h2>五、detect</h2><p class="quietlee_76479_66b73">该名目中的detect.py和detectpruned.py代码有些疑问,大家可以把微调后的pt模型放到官网名目中去detect,但有几点须要改。</p><ol><li class="quietlee_2cfb7_60fe3"><p class="quietlee_54229_abfcf">如今咱们是两个名目,一个是剪枝的yolov5_prune,一个是官网的yolov5,将yolov5_prune/model/pruned_common.py文件复制到官网yolov5/model/中去。</p></li></ol><ol><li class="quietlee_92cc2_27532"><p class="quietlee_98dce_83da5">将pruned_common.py中第26行的</p></li></ol>fromutils.plotsimportAnnotator,colors,save_one_box<p class="quietlee_812b4_ba287">save_one_box删掉,再在25行最后加上,由于在官网文件中save_one_box这个def是在utils下的general中定义的。</p>fromutils.generalimport(LOGGER,check_requirements,check_suffix,check_version,colorstr,increment_path,make_divisible,non_max_suppression,scale_coords,xywh2xyxy,xyxy2xywh,save_one_box)<ol><li class="quietlee_e2ef5_24fbf"><p class="quietlee_ed3d2_c2199">关上官网yolov5/utils/general.py,在第43行后,也就是申明第一个class前加上以下代码</p></li></ol>defset_logging(name=None,verbose=True):#Setslevelandreturnsloggerforhinlogging.root.handlers:logging.root.removeHandler(h)#removeallhandlersassociatedwiththerootloggerobjectrank=int(os.getenv('RANK',-1))#rankinworldforMulti-GPUtrainingslogging.basicConfig(format="%(message)s",level=logging.INFOif(verboseandrankin(-1,0))elselogging.WARNING)returnlogging.getLogger(name)LOGGER=set_logging(__name__)#defineglobally(usedintrain.py,val.py,detect.py,etc.)<p class="quietlee_f8991_39df5"></p><ol><li class="quietlee_38b3e_ff8ba"><a class="view-image" data-fancybox="gallery" href="https://www.qcbk.cn/d/file/2022/07/15/aafd868adf60aea8a80b6ef39969af59.jpg" title="v60油箱多大 (v6.0 yolov5s模型剪枝详细环节)"><img alt="v60油箱多大 (v6.0 yolov5s模型剪枝详细环节)" class="ue-image" src="https://www.qcbk.cn/d/file/2022/07/15/aafd868adf60aea8a80b6ef39969af59.jpg"></img></a><p class="quietlee_ec895_6637a">最后依据设置运转detect.py即可,我在detect中加了将漏报和误报图片区分放在不同文件夹的性能,最后在5000张val集中区分多了几十张吧,还算可以接受。</p></li></ol>pythondetect.py--weightsruns/train/yolo5s_face_prune/weights/last.pt--conf0.5--img-size320--source>参考链接:midasklr/yolov5pruneatv6.0(github.com)<p class="quietlee_c9e10_74f5b"></p>

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
客服邮箱:kefu@itcaiji.cn
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!

-- 展开阅读全文 --
友链参与与收购的区别 (友链参与与收录要素 密度 优化SEO排名的秘诀)
« 上一篇
nested case control study (nested request; servlet Failed to java.io.IOException multipart is parse 文件上行意外的疑问如何处置 exception)
下一篇 »
为了防止灌水评论,登录后即可评论!

热门文章

1
2
什么是高防CDN
4
推特计划推出点对点支付功能
5
p5.js 3D图形-立方体

标签