yolo系列网络作为目标检测领域的佼佼者,在很多的目标检测方向都有很好的运用。本文的主要目的是为其添加小目标检测的预选框,增加其在对小目标的待检测物进行检测时的识别速度。
在原始的yolov5网络里,从配置文件中我们可以看见,作者在给定了三个预选框,如下所示:
我们要做的是在这三个的基础上增加一个更小的预选框,将其设置为:
这样就再添加进来了一个更小的预选框,有助于小目标的检测。需要注意的是,由于这里增加了新的预选框,所以最后的检测头也应该相应的增加,由原来的3个变成4个。由于原来的网络结构只适用于3个检测头,所以为了增加新的检测头,就需要增加网络的层数,以适应四格检测头。原来的head部分网络如下:
增加了新的层数后的head部分网络结构如下:
这样增加的小目标检测的预选框就增加好了。
所有的代码部分如下:
# parameters
nc: 2 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
# anchors
anchors:
- [5,6, 8,14, 15,11] #4
- [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 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 [32,64,3,2]
[-1, 3, C3, [128]], #[64,64,1]
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8 [64,128,3,2]
[-1, 6, C3, [256]], #[128,128,2]
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16 #[128,256,3,2]
[-1, 9, C3, [512]], #[256,256,3]
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 #[256,512,3,2]
[-1, 3, C3, [1024]], # 9
[-1, 1, SPPF, [1024, 5]],
]
# YOLOv5 head
head:
[ [-1, 1, Conv, [512, 1, 1]],
[ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
[ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
[ -1, 3, C3, [ 512, False ] ], # 13
[ -1, 1, Conv, [ 512, 1, 1 ] ],
[ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
[ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P4
[ -1, 3, C3, [ 512, False ] ], # 13
[-1, 1, Conv, [256, 1, 1]],
[ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
[ [ -1, 2 ], 1, Concat, [ 1 ] ], # cat backbone P3
[ -1, 3, C3, [ 256, False ] ], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[ [ -1, 18 ], 1, Concat, [ 1 ] ], # cat head P4
[ -1, 3, C3, [ 256, False ] ], # 20 (P4/16-medium)
[ -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)
[ [ 21, 24, 27, 30 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5)
]
ps:思念仿若夏蚊