文章内容:给YOLOv5-Lite系列轻量级模型换上YOLOX头部
环境:pytorch1.7+cuda11.0
注意:YOLOv5版本为5.0,可以匹配YOLOX的主干网络与neck部分

一、参考资料

参考资料1

YOLOv5-Lite
代码链接:https://github.com/ppogg/YOLOv5-Lite
文章链接:https://blog.csdn.net/weixin_45829462/article/details/119767896?spm=1001.2014.3001.5502

参考资料2
YOLOv5-YOLOX(yolov5代码风格复现版):
代码链接:https://gitee.com/SearchSource/yolov5_yolox
文章链接:https://www.yuque.com/yerunyuan/ar9831/tsm0id#Kfi4w

参考资料3
YOLOX原理解析(大白老师版):https://zhuanlan.zhihu.com/p/397993315

二、代码修改位置

运行代码:YOLOv5-YOLOX版本(把YOLOv5-Lite改进代码移过来更方便)
YOLOv5-Lite:(先让改进的Lite代码在YOLOv5-YOLOX版本上运行起来)
1、移动YOLOv5-Lite中模型结构改进代码(位于common.py中)
2、修改yolo.py代码,添加新的yaml模型文件读取模块(如:RepVGG等,位于300多行),可以参考YOLOv5代码修改。
YOLOv5-Lite各系列性能
(图来自https://github.com/ppogg/YOLOv5-Lite)

YOLOX_s-Lite
(在改进的Lite模型上更换YOLOX-s头部,包括c、e、g、s)
很简单,直接添加和简略修改,仔细观察yolox.yaml文件格式,对应修改,yoloxs的头部通道为128;其次保证yolox.py代码中通道为128(33行左右)。yaml文件修改如下图:

YOLOX_nano-Lite
(在改进的Lite模型上更换YOLOX-s头部,包括e、s)
修改位置同上,yaml文件的head通道均改成64;以及yolox.py代码(33行左右)head通道修改为64,如下图:

三、运行代码命令

# 命令:
# 一、v5系列改进
# v5Lite-c:(8.66M)
python train.py  --img-size 640  --data PCB.yaml --cfg models/v5Lite-c.yaml --hyp data/hyps/hyp.scratch.yaml --weights v5lite-c.pt --batch-size 8 --epochs 1 --device 0# v5Lite-e:(1.62M)
python train.py  --img-size 640  --data PCB.yaml --cfg models/v5Lite-e.yaml --hyp data/hyps/hyp.scratch.yaml --weights v5lite-e.pt --batch-size 8 --epochs 1 --device 0# v5Lite-g:(10.7M)
python train.py  --img-size 640  --data PCB.yaml --cfg models/v5Lite-g.yaml --hyp data/hyps/hyp.scratch.yaml --weights v5lite-g.pt --batch-size 8 --epochs 1 --device 0# v5Lite-s:(3.25M)
python train.py  --img-size 640  --data PCB.yaml --cfg models/v5Lite-s.yaml --hyp data/hyps/hyp.scratch.yaml --weights v5lite-s.pt --batch-size 8 --epochs 1 --device 0# 二、yolox及改进系列:# yoloxs-office(纯silu,数据增强、精度与官网接近)(17.2M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxs_official.yaml --hyp data/hyps/hyp.scratch.yolox.official.yaml --weights yolox-s.pt --batch-size 8 --epochs 1 --device 0# yoloxs_rslu(激活函数:relu+silu,且数据增强有所更改,权重不变,推理速度加快,由于激活函数改变,精度稍微降低)(17.2M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxs_rslu.yaml --hyp data/hyps/hyp.scratch.yolox.yaml --weights yolox-s.pt --batch-size 8 --epochs 1 --device 0# yoloxs(激活函数:纯silu,且数据增强有所更改,权重不变,修改后训练速度加快,精度与官网接近)(17.2M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxs.yaml --hyp data/hyps/hyp.scratch.yolox.yaml --weights yolox-s_rslu.pt --batch-size 8 --epochs 1 --device 0# 【改进1】:前面v5的改进换上了yoloxs(头部通道为128)的head,anchor_free锚框机制# yoloxs_Lite-c:(12.1M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxs_Lite_c.yaml --hyp data/hyps/hyp.scratch.yolox.yaml --weights v5lite-c.pt --batch-size 8 --epochs 1 --device 0# yoloxs_Lite-e:(5.04M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxs_Lite_e.yaml --hyp data/hyps/hyp.scratch.yolox.yaml --weights v5lite-e.pt --batch-size 8 --epochs 1 --device 0# yoloxs_Lite-g:(14.2M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxs_Lite_g.yaml --hyp data/hyps/hyp.scratch.yolox.yaml --weights v5lite-g.pt --batch-size 8 --epochs 1 --device 0# yoloxs_Lite-s:(6.70M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxs_Lite_s.yaml --hyp data/hyps/hyp.scratch.yolox.yaml --weights v5lite-s.pt --batch-size 8 --epochs 1 --device 0# 【改进2】:e和s系列换上了yolox-nano(头部通道为64)的head
# yoloxnano_Lite-e:(2.46M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxnano_Lite_e.yaml --hyp data/hyps/hyp.scratch.yolox.yaml --weights v5lite-e.pt --batch-size 8 --epochs 1 --device 0# yoloxnano_Lite-s:(4.10M)
python train.py --noautoanchor --img-size 640  --data PCB.yaml --cfg models/yoloxnano_Lite_s.yaml --hyp data/hyps/hyp.scratch.yolox.yaml --weights v5lite-s.pt --batch-size 8 --epochs 1 --device 0

注意】:预训练权重不是lite给的,也能进行训练,上面PCB.yaml就是自己的训练数据集内容。数据集制作与训练可以参考:https://blog.csdn.net/weixin_45679938/article/details/118803745
使用心得】:
1、在我的数据集上,yoloxs-lite-g精度与yolox齐平,高于yolov5有2个点,并且模型大小与yolov5差不多大,模型大小减少了3.2M,其他的没有进行测试,换头后应该都会有提升,毕竟YOLOX相对于v5的改进就在头部;
2、在这个上面添加另外一些trick,如注意力机制、CIOU等,精度有提升(200epoch以上),而相应改进用于官方代码没有提升(原因不明);
3、这边修改模型结构相比官方代码更为简便。

已修改的代码百度网盘链接:(包含v5-Lite系列权重)
链接:https://pan.baidu.com/s/1UfuJWdpkvSvTtjlsDgzLlA
提取码:b718

github链接:https://github.com/Bigtuo/YOLOX-Lite

写的比较急,不喜勿喷,有错误恳求批评指正!

YOLOX改进之模型轻量化(Lite)相关推荐

  1. 目标检测论文解读复现【NO.24】改进 YOLOv5s 的轨道障碍物检测模型轻量化研究

    前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...

  2. 深度学习模型轻量化(下)

    深度学习模型轻量化(下) 2.4 蒸馏 2.4.1 蒸馏流程 蒸馏本质是student对teacher的拟合,从teacher中汲取养分,学到知识,不仅仅可以用到模型压缩和加速中.蒸馏常见流程如下图所 ...

  3. 大模型轻量化技术调研

    笔记,仅供参考,未完 大模型轻量化技术调研 1. 调研论文 1.1 汇总 1.2 详细介绍 MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION LO ...

  4. bim 模型web页面展示_HTML5/WebGL技术BIM模型轻量化Web浏览解决方案

    原标题:HTML5/WebGL技术BIM模型轻量化Web浏览解决方案 互联网技术的兴起极大地改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化,大 ...

  5. 3D模型轻量化处理教程【Blender】

    在本文中,我们将介绍三种在 Blender 中网格轻量化的方法,并以一些提示和技巧作为结尾,供你在处理网格和对象时使用. 1.网格轻量化概述 无论你是想创建简单还是复杂的 3D 设计,Blender ...

  6. 深度学习模型轻量化(上)

    深度学习模型轻量化(上) 移动端模型必须满足模型尺寸小.计算复杂度低.电池耗电量低.下发更新部署灵活等条件. 模型压缩和加速是两个不同的话题,有时候压缩并不一定能带来加速的效果,有时候又是相辅相成的. ...

  7. Revit二次开发之技能篇(五)———模型轻量化.RVT到JSON实现的测试

    最近作者一直在研究Revit模型轻量化显示在网页中,通过查找大量的资料,找到了一条可行的方法进行分享: 在开文前明确告诉大读者,将.RVT文件转为JSON文件再由three.js读取到网页,并没有实现 ...

  8. BIM研究-基于HTML5/WebGL技术的BIM模型轻量化Web浏览解决方案

    内容来源:http://developer.51cto.com/art/201601/504553.htm 根据运维系统的特点,运维人员可能并不熟悉建筑建模软件的使用,同时让运维人员使用建模软件来做运 ...

  9. cad模型轻量化_保持外观的CAD模型轻量化技术

    保持外观的 CAD 模型轻量化技术 殷明强 * ,李世其 [摘 要] 摘要 : 随着 CAD/CAM 技术的发展,整个产品的设计.虚拟制造和数 字化样机都可在计算机中完成,使得包含大量数据的复杂装配体 ...

最新文章

  1. Myeclipse在启动tomcat的时候的模式改变
  2. 架构师升级之路,你掌握了吗?
  3. 为什么PUE只说明了数据中心能效的一部分?
  4. Redis的配置文件介绍
  5. ReviewForJob(1)数据结构与算法分析引论
  6. 博客教程中百度网盘地址
  7. 通过系统进程查找sql语句
  8. chrome下老是弹出网页显示 true
  9. Machine Learning and Data Science 教授大师
  10. 用Android模拟器也可以开发和测试NFC应用
  11. vue 地址区域选择组件
  12. 基于javaweb+springboot的学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)
  13. Win10优化大师Windows 10 Manager v3.4.6.0 官方安装绿色版
  14. 安卓手机上最好的3个小说阅读器
  15. USB总线-Linux内核USB3.0设备控制器之dwc3 gadget驱动初始化过程分析(五)
  16. python实现指数增长
  17. 考研英语阅读分析--03Text3
  18. 能锦上添花不能雪中送炭,公关救不了货车帮和作业帮
  19. MATLAB中FIR滤波器的时延溢出问题详解:线性相位对信号造成的时延溢出及其消除方法,以及fir1等函数的使用
  20. 企业为什么要绘制用户画像?谈谈用户画像的真正作用

热门文章

  1. 【NOIP2005 提高组】篝火晚会
  2. 天翎携手群晖助力电商行业文档管理
  3. Installing the Sulley fuzzer framework on Windows XP Professiona
  4. HTML二级下拉菜单常见样式以及常见问题
  5. 自定义view,仿微信、支付宝密码输入控件的源码实现
  6. 建模知识2: ROC、AUC、K-S曲线
  7. 符号_和平精英名字特殊符号怎么打?哪些特色符号可以用?
  8. Ubuntu 使用命令向QQ邮箱发送邮件
  9. ​​​​​​​墨画子卿第三章:初心第2节:回家
  10. html5 m4a,Audio Unit播放aac/m4a/mp3等文件