文章目录
前言

作者提出了一种新方法GSConv来减轻模型复杂度,保持准确性。GSConv可以更好地平衡模型的准确性和速度。并且,提供了一种设计范式Slim-Neck,以实现检测器更高的计算成本效益。实验过程中,与原始网络相比,改进方法获得了最优秀的检测结果。
论文地址:https://arxiv.org/abs/2206.02424
Github:https://github.com/AlanLi1997/Slim-neck-by-GSConv
1. 简介
目标检测是计算机视觉中一项艰巨的下游任务。对于车载边缘计算平台,大模型很难达到实时检测的要求。而且,由大量深度可分离卷积层构建的轻量级模型无法达到足够的准确性。因此本文引入了一种新方法 GSConv 来减轻模型的复杂度并保持准确性。GSConv 可以更好地平衡模型的准确性和速度。并且,提供了一种设计范式,Slim-Neck,以实现检测器更高的计算成本效益。在实验中,与原始网络相比,本文方法获得了最先进的结果(例如,SODA10M 在 Tesla T4 上以 ~100FPS 的速度获得了 70.9% mAP0.5)
MobileNet、ShuffleNets这些轻量级模型都采用了DSC操作来提升检测器的速度。但是当这些模型应用于自动驾驶汽车的时候,准确性就不够了。
但是,DSC 的缺点也很明显:输入图像的通道信息在计算过程中是分离的。

对于自动驾驶,速度和准确性同样重要。通过 GSConv 引入了 Slim-Neck 方法,以减轻模型的复杂度同时可以保持精度。GSConv 更好地平衡了模型的准确性和速度。
如上图所示,作者在SODA10M无人驾驶数据集上比较了最先进了Slim Neck 检测器和原始检测器的速度和准确度,并证实了该方法的有效性。
2. GSConv

通过上图可以知道,GSConv首先输入进行一个普通卷积的下采样,然后使用DWConv深度卷积,并将两个conv的结果拼接起来(一个SC一个DSC);最后进行shuffle操作 ,让之前两个卷积的对应通道数挨在一起,通过上方图片也可以看出来。(表述的可能不太清楚,看图片我觉得要清晰一点哈哈哈)
搭配代码食用或许能更好理解一点:
class GSConv(nn.Module):
def __init__(self, c1, c2, k=1, s=1, g=1, act=True):
super().__init__()
c_ = c2 // 2
self.cv1 = Conv(c1, c_, k, s, None, g, act) # g:gract:分组卷积
self.cv2 = Conv(c_, c_, 5,

最低0.47元/天 解锁文章
8068





