目标检测新突破!来了解Res2Net深度多尺度目标检测架构

点击上方“蓝字”关注“AI开发者”

原标题 | Res2Net: New deep learning multi-scale architecture, for improved object detection with existing backbones

作者 | Less Wright

翻译 |  天字一号、Pita、sherry3255

审校 | McDonald’s、潘妮·奥尔科

* 注:文中相关链接敬请点击文末【阅读原文】访问,PC查看体验更佳。

正如谷歌大脑的论文EfficientNet中展示的那样,在CNN架构各个方面(宽度,深度,分辨率)的探索所带来的的回报正在急剧减少。

然而,Gao, Cheng, Zhao等人的一篇新论文(Res2Net:一个新的多尺度主干结构,https://arxiv.org/abs/1904.01169v2)表明给定块中的多尺度或尺度缩放(而不是通常意义上的逐层缩放)是一个未被探索的领域,尤其是在目标识别和分割方面将会有额外的收获。

大多数结构在层级基础上缩放尺度。而他们的创新之处在于在给定冗余块中使用了分层级联特征组(称为“缩放层”),取代了通常的单个3×3卷积核。

采用和未采用Res2Net块的ResNet50得到的Grad-CAM激活映射(或热图)对比。注意到使用Res2Net后目标覆盖程度有所提高。

为此,他们重建了常见的ResNet结构中的瓶颈块,并且用一个“4缩放层-(3 ×3)”的冗余、分层结构取代了标准的1-3-1CNN布局。这一个改变也因此创造出“Res2Net”。中间主要的卷积操作也因此从单分支转移到多分支。

图表说明:

图2:瓶颈块和提出的Res2Net模块比较(缩放维度s=4)

这里的概念是通过增加块内的感受野,而不是更细粒度级别的一层一层捕获图像不同尺度,来提高CNN检测和管理图像中目标的能力。

作者将Res2Net块内的特征组数量称为“缩放维度”。因此上面的块是一个缩放维度为4的Res2Net块。

这些Res2Net模块将被移植到标准ResNet或ResNeXt卷积神经网络中,从而提高网络的细粒度。

Res2Net改进的目标识别能力在不同类型分割任务中发挥了重要作用。下面是语义分割图像任务中的比较:

ResNet101和Res2Net101-Res2Net块的细粒度提高了分割的结果。(GT=真值)

正如你在上面所看到的,在瓶颈中引入scale维度可以帮助CNN更好地勾勒出图像中感兴趣的内容,从而提高整体的准确性。

对ImageNet的改进 — 唯一的变化是在特定的架构中切换到Res2Net块。

Res2Net的github在这里:https://github.com/gasvn/Res2Net

  为Res2Net = Res2NetPlus更新ResNet

然而,我发现Res2Net的官方实现在多个方面都属于较老的ResNet风格。因此,我从github @frgfm(https://github.com/frgfm/Holocron/blob/master/holocron/models/res2net.py,基于github @gasvn)获取Res2Net实现,并将其修改为以下内容:

1  –  使用Mish代替ReLU进行激活(有关原因,请查看我在Mish上的文章:https://medium.com/@lessw/meet-mish-new-state-of-the-art-ai-activation-function-the-successor-to-relu-846a6d93471f)

2  –  将ResNet的主干更改为最先进的 3 @ 3×3 堆栈主干 (stride 2, stride 1, stride 1),而不是较旧的单个7×7内核。

3  –  将“BN->激活”的顺序颠倒为“激活-> BN”的顺序。这基于我们对FastAI研究的发现(感谢 Ignacio Oguiza:https://medium.com/u/ce6cfceadfbb),并获得腾讯的论文“Rethinking the usage of Batchnorm…  (https://arxiv.org/abs/1905.05928)”的支持:

“我们不应该把批量归一化放在ReLU之前,因为ReLU的非负响应会使权重层以次优的方式更新……”

点击查看PyTorch的代码:https://github.com/lessw2020/res2net-plus

其使用方法非常简单:

在FastAI 框架中使用 Res2Net Plus(创建维度为4,宽度为26 的 Res2Net50)

  Res2NetPlus的效果:

在咨询工作中,我做了一个能够从卫星图像检测太阳能电池板的检测器,我建立了一个Res2NetPlus50模型,并从头开始训练,然后将其与标准Imagenet预先训练的ResNet50模型进行比较, ResNet50只训练头部 。我发现Res2Net50具有更高的精度(+5%),训练更加稳定。

最终,该模型于上周投入实际工作,验证数据准确率为97.8%。

初始生产结果与训练结果一致:

  缺点:

虽然Res2Net 具有与 ResNet 类似等效的计算复杂性,但仍比 ResNet 运行速度慢(似乎约为平均值的20%)。

此外,对于 FastAI 排行榜数据集等分类任务,Res2Net 会设置验证和训练损失记录(即准确时更加准确,错误时错误更少),但最终绝对精度较低。

这一个问题我没有想出如何纠正,除了假设一些分类任务可能不会严重依赖全目标区分。

因此,Res2Net 的最佳用法似乎侧重于目标识别和任务分割类型。

一个小建议  ——Res2Net更偏爱高级数据增强方法如MixUp,CutMix等。你可以看到当使用这些方法时,验证损失急剧下降,所以强烈建议使用Res2Net时加上大量的数据增强方法。

  相关链接:

Res2Net官方仓库:

https://github.com/gasvn/Res2Net

Res2NetPlus结构:

https://github.com/lessw2020/res2net-plus

* 作者:@Less Wright

* via:https://medium.com/@lessw/res2net-new-deep-learning-multi-scale-architecture-for-improved-object-detection-with-existing-de13095c9654

* 封面图来源:https://flic.kr/p/W4353r

— 资料推荐 —

点击

阅读原文

查看本文更多内容