论文地址: https://arxiv.org/abs/1811.11168
源码地址:https://github.com/msracver/Deformable-ConvNets
传统的卷积操作是将特征图分成一个个与卷积核大小相同的部分,然后进行卷积操作,每部分在特征图上的位置都是固定的。这样,对于形变比较复杂的物体,使用这种卷积的效果就可能不太好了。对于这种情况,传统做法有丰富数据集,引入更多复杂形变的样本、使用各种数据增强和trick,以及人工设计一些手工特征和算法。
基于数据集和数据增强的做法都有点“暴力”,通常收敛慢而且需要较复杂的网络结构来配合;而基于手工特征算法就实在是有点“太难了”。特变是物体形变可能千变万化,这种做法本身难度就很大,而且不灵活。这时候,Deformable Conv 出道了!他站上演讲台,说他是个性boy,他会变形,不像常规卷积那样死板,他更灵活,可以应对上述提到的物体复杂形变的场景。
1.增加 HorBlock.yaml文件
添加至/models/文件中
# parameters
nc: 80 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
# anchors
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, DCnv2, [128, 3, 2]], # 1-P2/4 [32,64,3,2]
[-1, 3, C3, [128]], #[64,64,1]
[-1, 1, DCnv2, [256, 3, 2]]<