Yolov5更换上采样方式
文章目录
常用上采样方式介绍
1. 最近邻插值(Nearest neighbor interpolation)
2. 双线性插值(Bi-Linear interpolation)
3. 双立方插值(Bi-Cubic interpolation)
计算效果:最近邻插值算法 < 双线性插值 < 双三次插值
计算速度:最近邻插值算法 > 双线性插值 > 双三次插值
4.反池化
5.转置卷积
yolov5
默认采用的就是
最近邻插值
实验结果
这里我将原本的
最近邻插值
的上采样方式替换为
转置卷积
;有人通过实验证明了确实涨点,但是我在VOC数据集上测试并没有涨点,
mAP0.5
大概掉了不到1点
修改方式:
第一步;在
models/yolo.py
添加
nn.ConvTranspose2d
第二步;
models/yolo.py
添加如下代码
elif m is nn.ConvTranspose2d:iflen(args)>=7:
args[6]= make_divisible(args[6]* gw,8)
第三步;修改配置文件,以yolov5s.yaml为例
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters
nc:80# number of classes
depth_multiple:0.33# model depth multiple
width_multiple:0.50# layer channel multiple
anchors:-[10,13,16,30,33,23]# P3/8-[30,61,62,45,59,119]# P4/16-[116,90,156,198,373,326]# P5/32# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1,1, Conv,[64,6,2,2]],# 0-P1/2[-1,1, Conv,[128,3,2]],# 1-P2/4[-1,3, C3,[128]],[-1,1, Conv,[256,3,2]],# 3-P3/8[-1,6, C3,[256]],[-1,1, Conv,[512,3,2]],# 5-P4/16[-1,9, C3,[512]],[-1,1, Conv,[1024,3,2]],# 7-P5/32[-1,3, C3,[1024]],[-1,1, SPPF,[1024,5]],# 9]# YOLOv5 v6.0 head
head:[[-1,1, Conv,[512,1,1]],[-1,1, nn.ConvTranspose2d,[512,4,2,1,0,512]],[[-1,6],1, Concat,[1]],# cat backbone P4[-1,3, C3,[512,False]],# 13[-1,1, Conv,[256,1,1]],[-1,1, nn.ConvTranspose2d,[256,4,2,1,0,256]],[[-1,4],1, Concat,[1]],# cat backbone P3[-1,3, C3,[256,False]],# 17 (P3/8-small)[-1,1, Conv,[256,3,2]],[[-1,14],1, Concat,[1]],# cat head P4[-1,3, C3,[512,False]],# 20 (P4/16-medium)[-1,1, Conv,[512,3,2]],[[-1,10],1, Concat,[1]],# cat head P5[-1,3, C3,[1024,False]],# 23 (P5/32-large)[[17,20,23],1, Detect,[nc, anchors]],# Detect(P3, P4, P5)]
出现下面这样子就是运行成功啦
版权归原作者 迪菲赫尔曼 所有, 如有侵权,请联系我们删除。