YOLOX改进之模型轻量化(Lite)
文章内容:给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)相关推荐
- 目标检测论文解读复现【NO.24】改进 YOLOv5s 的轨道障碍物检测模型轻量化研究
前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文,帮 ...
- 深度学习模型轻量化(下)
深度学习模型轻量化(下) 2.4 蒸馏 2.4.1 蒸馏流程 蒸馏本质是student对teacher的拟合,从teacher中汲取养分,学到知识,不仅仅可以用到模型压缩和加速中.蒸馏常见流程如下图所 ...
- 大模型轻量化技术调研
笔记,仅供参考,未完 大模型轻量化技术调研 1. 调研论文 1.1 汇总 1.2 详细介绍 MODEL COMPRESSION VIA DISTILLATION AND QUANTIZATION LO ...
- bim 模型web页面展示_HTML5/WebGL技术BIM模型轻量化Web浏览解决方案
原标题:HTML5/WebGL技术BIM模型轻量化Web浏览解决方案 互联网技术的兴起极大地改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化,大 ...
- 3D模型轻量化处理教程【Blender】
在本文中,我们将介绍三种在 Blender 中网格轻量化的方法,并以一些提示和技巧作为结尾,供你在处理网格和对象时使用. 1.网格轻量化概述 无论你是想创建简单还是复杂的 3D 设计,Blender ...
- 深度学习模型轻量化(上)
深度学习模型轻量化(上) 移动端模型必须满足模型尺寸小.计算复杂度低.电池耗电量低.下发更新部署灵活等条件. 模型压缩和加速是两个不同的话题,有时候压缩并不一定能带来加速的效果,有时候又是相辅相成的. ...
- Revit二次开发之技能篇(五)———模型轻量化.RVT到JSON实现的测试
最近作者一直在研究Revit模型轻量化显示在网页中,通过查找大量的资料,找到了一条可行的方法进行分享: 在开文前明确告诉大读者,将.RVT文件转为JSON文件再由three.js读取到网页,并没有实现 ...
- BIM研究-基于HTML5/WebGL技术的BIM模型轻量化Web浏览解决方案
内容来源:http://developer.51cto.com/art/201601/504553.htm 根据运维系统的特点,运维人员可能并不熟悉建筑建模软件的使用,同时让运维人员使用建模软件来做运 ...
- cad模型轻量化_保持外观的CAD模型轻量化技术
保持外观的 CAD 模型轻量化技术 殷明强 * ,李世其 [摘 要] 摘要 : 随着 CAD/CAM 技术的发展,整个产品的设计.虚拟制造和数 字化样机都可在计算机中完成,使得包含大量数据的复杂装配体 ...
最新文章
- Myeclipse在启动tomcat的时候的模式改变
- 架构师升级之路,你掌握了吗?
- 为什么PUE只说明了数据中心能效的一部分?
- Redis的配置文件介绍
- ReviewForJob(1)数据结构与算法分析引论
- 博客教程中百度网盘地址
- 通过系统进程查找sql语句
- chrome下老是弹出网页显示 true
- Machine Learning and Data Science 教授大师
- 用Android模拟器也可以开发和测试NFC应用
- vue 地址区域选择组件
- 基于javaweb+springboot的学生学科竞赛管理管理系统设计和实现(java+springboot+ssm+maven)
- Win10优化大师Windows 10 Manager v3.4.6.0 官方安装绿色版
- 安卓手机上最好的3个小说阅读器
- USB总线-Linux内核USB3.0设备控制器之dwc3 gadget驱动初始化过程分析(五)
- python实现指数增长
- 考研英语阅读分析--03Text3
- 能锦上添花不能雪中送炭,公关救不了货车帮和作业帮
- MATLAB中FIR滤波器的时延溢出问题详解:线性相位对信号造成的时延溢出及其消除方法,以及fir1等函数的使用
- 企业为什么要绘制用户画像?谈谈用户画像的真正作用
热门文章
- 【NOIP2005 提高组】篝火晚会
- 天翎携手群晖助力电商行业文档管理
- Installing the Sulley fuzzer framework on Windows XP Professiona
- HTML二级下拉菜单常见样式以及常见问题
- 自定义view,仿微信、支付宝密码输入控件的源码实现
- 建模知识2: ROC、AUC、K-S曲线
- 符号_和平精英名字特殊符号怎么打?哪些特色符号可以用?
- Ubuntu 使用命令向QQ邮箱发送邮件
- ​​​​​​​墨画子卿第三章:初心第2节:回家
- html5 m4a,Audio Unit播放aac/m4a/mp3等文件