39

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

 5 years ago
source link: https://www.tuicool.com/articles/6bAfYvI
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

2QjM3uJ.jpg!web

原标题 | 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卷积核。

IjYRnyr.jpg!webUfErUv6.jpg!web

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

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

图表说明:

AfyQrei.jpg!web

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

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

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

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

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

BbyEbaE.jpg!web

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

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

nIRFniy.jpg!web

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

vE7jEry.jpg!web

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 @ 3x3 堆栈主干 (stride 2, stride 1, stride 1),而不是较旧的单个7x7内核。

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

其使用方法非常简单:

363q2iU.jpg!web在FastAI 框架中使用 Res2Net Plus(创建维度为4,宽度为26 的 Res2Net50)

  Res2NetPlus的效果:

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

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

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

NnYvYrq.jpg!web

  缺点:

虽然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

--- 资料推荐 ---

Ijquuq3.jpg!web

nQZJjub.gif

点击

阅读原文

查看本文更多内容


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK