简单粗暴提升yolov5小目标检测能力

论文地址:https://arxiv.org/abs/2208.03641

代码地址:GitHub – LabSAINT/SPD-Conv: Code for ECML PKDD 2022 paper. No More Strided Convolutions or Pooling: A Novel CNN Architecture for Low-Resolution Images and Small Objects.

        作者提出一种SPD组件,提升了yolov5各个模型在小目标上的检测能力,先看一下结论:

简单粗暴提升yolov5小目标检测能力

        该组件作者给出了数学上的解释:

简单粗暴提升yolov5小目标检测能力

        其实解释起来很简单,结合下图:

简单粗暴提升yolov5小目标检测能力

        和yolov5最开始做的focus是类似的,对于输入的特征图(长宽为S),从左到右以及从上到下每scale个像素采样一次,假设scale=2,采样方式就和上图一样,经过这样采样的输出长宽就是S/2,最后将采样后的输出进行concatenate,通道数就是scale的平方,即4。

        具体的应用,首先对比下网络架构的配置文件

简单粗暴提升yolov5小目标检测能力

        左侧是yolov5原始模型的网络架构,右图则是增加SPD结构的yolov5网络架构,其中红框部分就是两网络的区别之处 。

代码的实现也比较简单:

class space_to_depth(nn.Module):
    # Changing the dimension of the Tensor
    def __init__(self, dimension=1):
        super().__init__()
        self.d = dimension

    def forward(self, x):
         return torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1)
#         size_tensor = x.size()
#         return torch.cat([x[...,0:size_tensor[2]//2,0:size_tensor[3]//2],
#                          x[...,0:size_tensor[2]//2,size_tensor[3]//2:],
#                          x[...,size_tensor[2]//2:,0:size_tensor[3]//2],
#                          x[...,size_tensor[2]//2:,size_tensor[3]//2:]  ],1)

在coco val2017上的效果:

简单粗暴提升yolov5小目标检测能力

        其中红色箭头就是两者的区别。

        在原文中作者还将该结构应用在分类模型上,分类性能上也有一定的提升,感兴趣的可以看看原文。

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年2月25日 下午5:50
下一篇 2023年2月25日 下午5:51

相关推荐