# 代码地址:
https://github.com/Sharpiless/Yolov5-distillation-train-inference
# 最新版本:
请移步:https://github.com/Sharpiless/yolov5-distillation-5.0
<a align="left" href="https://apps.apple.com/app/id1452689527" target="_blank">
<img width="800" src="https://user-images.githubusercontent.com/26833433/98699617-a1595a00-2377-11eb-8145-fc674eb9b1a7.jpg"></a>
![](https://github.com/Sharpiless/Yolov5-distillation-train-inference/blob/main/data/images/YOLOv5%E8%92%B8%E9%A6%8F.png)
# 教师模型权重:
链接:[https://pan.baidu.com/s/13gq5QwCrRNdRXWzSYUeJIw ](https://pan.baidu.com/s/13gq5QwCrRNdRXWzSYUeJIw )
提取码:4ppv
# 蒸馏训练:
```bash
python train_distill.py --weights yolov5s.pt \
--teacher weights/yolov5l_voc.pt --distill_ratio 0.001 \
--teacher-cfg model/yolov5l.yaml --data data/voc.yaml \
--epochs 30 --batch-size 16
```
# 训练参数:
> --weights:预训练模型
> --teacher:教师模型权重
> --distill-ratio:蒸馏损失权重
> --with-gt-loss:是否同时使用ground truth
> --soft-loss:是否使用KL散度作为蒸馏的类别损失(缺省使用L2-logits损失)
> --full-output-loss:是否使用[《Object detection at 200 Frames Per Second》](https://arxiv.org/pdf/1805.06361.pdf)中的损失
这篇文章分别对这几个损失函数做出改进,具体思路为只有当teacher network的objectness value高时,才学习bounding box坐标和class probabilities。
![](https://github.com/Sharpiless/Yolov5-distillation-train-inference/blob/main/data/images/full_loss.png)
# 准备数据集:
默认会启用 data/voc.yaml 自动下载VOC数据集进行训练
或者手动运行 data/scripts/get_voc2007.sh 下载
如需修改成自己的数据集,则只需要修改yaml路径即可
# 实验结果:
数据集:
VOC2007(补充的无标签数据使用VOC2012)
GPU:2080Ti*1
Batch Size:16
Epoches:30
Baseline:Yolov5s
Teacher model:Yolov5l(mAP 0.5:0.95 = 0.541)
这里假设VOC2012中新增加的数据为无标签数据(2k张)。
|教师模型|训练方法|蒸馏损失|P|R|mAP50|
|:----|:----|:----|:----|:----|:----|
|无|正常训练|不使用|0.7756|0.7115|0.7609|
|Yolov5l|output based|l2|0.7585|0.7198|0.7644|
|Yolov5l|output based|KL|0.7417|0.7207|0.7536|
|Yolov5m|output based|l2|0.7682|0.7436|0.7976|
|Yolov5m|output based|KL|0.7731|0.7313|0.7931|
![训练结果](https://github.com/Sharpiless/yolov5-distillation-5.0/blob/main/images/line.png)
参数和细节正在完善,支持KL散度、L2 logits损失和Sigmoid蒸馏损失等
# 待做事项:
- [√] 修改logist输出作为蒸馏损失输入
- [√] 完善代码结构和相关参数设定
- [×] 查找为何蒸馏损失不起作用(或者收敛慢)的原因
- [×] 完善相关实验并测试精度
- [√] 修改dataloader加快训练速度
- [√] 修改teacher model的批量推理加快训练速度
# 可能存在的问题:
- 1.训练轮数太少没收敛,可能蒸馏训练收敛满最终结果高
- 2.教师模型是Yolov5l在VOC训练30轮得到的(mAP 0.5:0.95 = 0.541),质量比标注较差影响蒸馏训练的结果
- 3.可调整的参数还有很多(教师模型的检测、IOU阈值,蒸馏损失种类,蒸馏损失比率等)
# 我的公众号:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210310070958646.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkzNjg4OQ==,size_16,color_FFFFFF,t_70)
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
<项目介绍> 基于Yolov5的知识蒸馏训练,支持训练自己的数据python源码+文档说明+模型+数据集 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
Yolov5-distillation-train-inference-main.zip (78个子文件)
Yolov5-distillation-train-inference-main
teacher.py 3KB
yolov5-master.zip 1.18MB
weights
download_weights.sh 277B
data
hyp.finetune_objects365.yaml 397B
coco128.yaml 2KB
VisDrone.yaml 3KB
argoverse_hd.yaml 848B
hyp_distill.scratch.yaml 2KB
hyp.finetune.yaml 846B
coco.yaml 2KB
images
full_loss.png 45KB
YOLOv5蒸馏.png 255KB
voc.yaml 737B
GlobalWheat2020.yaml 2KB
hyp.scratch.yaml 2KB
objects365.yaml 7KB
scripts
get_argoverse_hd.sh 2KB
get_voc.sh 4KB
get_coco.sh 962B
get_voc2007.sh 4KB
LICENSE 34KB
hubconf.py 5KB
train_distill.py 33KB
detector.py 5KB
utils
__init__.py 0B
google_utils.py 5KB
loss.py 19KB
flask_rest_api
example_request.py 299B
restapi.py 1KB
README.md 1KB
metrics.py 9KB
aws
__init__.py 0B
userdata.sh 1KB
mime.sh 780B
resume.py 1KB
autoanchor.py 7KB
general.py 28KB
wandb_logging
__init__.py 0B
log_dataset.py 800B
wandb_utils.py 16KB
activations.py 4KB
google_app_engine
Dockerfile 821B
app.yaml 173B
additional_requirements.txt 105B
plots.py 18KB
datasets.py 39KB
datasets_still.py 35KB
torch_utils.py 12KB
Dockerfile 2KB
example.ipynb 16KB
requirements.txt 599B
models
hub
yolov5x6.yaml 2KB
anchors.yaml 3KB
yolov5-p2.yaml 2KB
yolov5-panet.yaml 1KB
yolov5s6.yaml 2KB
yolov3.yaml 1KB
yolov5-p6.yaml 2KB
yolov5-p7.yaml 2KB
yolov5l6.yaml 2KB
yolov5m6.yaml 2KB
yolov3-spp.yaml 1KB
yolov3-tiny.yaml 1KB
yolov5-fpn.yaml 1KB
yolov5s-transformer.yaml 1KB
__init__.py 0B
export.py 6KB
yolov5m.yaml 1KB
yolov5s.yaml 1KB
yolov5l.yaml 1KB
common.py 16KB
experimental.py 5KB
yolov5x.yaml 1KB
yolo.py 13KB
detect.py 9KB
train.py 31KB
test.py 17KB
README.md 3KB
共 78 条
- 1
资源评论
.Android安卓科研室.
- 粉丝: 4637
- 资源: 2238
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 员工培训需求调查问卷.doc
- 如何确定针对性的培训需求.doc
- 素质能力培训需求分析模型.doc
- 怎样进行有效的培训需求分析(doc 9).doc
- 制造业各工位培训需求.doc
- 做好培训需求分析,奠定企业员工培训的基础(DOC 8页).doc
- SQLSERVER2005卸载方法word文档doc格式最新版本
- MicrosoftSQLServer2008安装和数据库实例创建操作手册doc版冯冰最新版本
- 西电微机原理实验PDF
- P6ProfessionalSetup R24.12 安装包
- MicrosoftSQLServer2008数据库安装图解集合[特别整理版]最新版本
- 含光伏的储能选址定容模型 14节点 程序采用改进粒子群算法,对分析14节点配网系统中的储能选址定容方案,并得到储能的出力情况,有相关参考资料 这段程序是一个粒子群算法(Particle Swarm O
- PROGPPCNEXUS读写烧录刷写软件 飞思卡尔MPC55xx 56xx 57xx 58xx 没有次数限制
- 01_python_基本语法_纯图版.pdf
- 考虑新能源消纳的火电机组深度调峰策略 摘要:本代码主要做的是考虑新能源消纳的火电机组深度调峰策略,以常规调峰、不投油深度调峰、投油深度调峰三个阶段,建立了火电机组深度调峰成本模型,并以风电全额消纳为前
- EV3100电梯专用变频器源代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功