查看原文
其他

Res2Net:新的深度学习多尺度结构,提升物体检测立竿见影

极市平台 2021-09-20

The following article is from AI公园 Author ronghuaiyang

加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流。关注 极市平台 公众号 ,回复 加群,立刻申请入群~

来源:AI公园

作者:Less Wright

编译:ronghuaiyang


只要把ResNet中的block块换成Res2Net的block块,其他什么都不用动,物体检测立刻提升2个点


正如谷歌Brain的EfficientNe论文所显示的,对于CNN架构的各个方面(宽度、深度、分辨率)的扩展,投资的回报正在迅速减少。


有一篇新的论文,来自Gao,Cheng,Zhao等人,Res2Net: a new multi-scale backbone architecture,展示了在一个给定块中做多尺度,而不是通常的一层一层的做多尺度,是一个未知的领域,可以对物体检测和分割带来额外的回报。


大多数架构都是在一层一层的基础上使用了多尺度。他们的创新之处是在一个给定的残差块中使用分层的、层叠的特征组(称为“scale”),取代了通用的单个3x3卷积核。

ResNet50中有和没有新的Res2Net块的Grad-CAM激活(或热图)比较。


为此,他们重建了普通的ResNet架构的bottleneck block,用“4scale-(3x3)”残差分层架构取代了标准的1-3-1的CNN布局。因此,这个更改构建了“Res2Net”。这样,中间的主卷积从单分支变为多分支。


用图来说明一下:

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


作者将Res2Net块内的特征组数量称为“scale dimension”。因此上面的代码块是scale为4的Res2Net代码块。


然后,可以将这些Res2Net模块插入标准ResNet或ResNeXt模块中,从而提高它们的粒度。


Res2Net着重于分割类型的任务,其中改进的物体识别能力发挥了作用。下面是图像语义分割的比较:

Res2Net块的粒度改进了分割

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


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


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


把ResNet更新为Res2Net = Res2NetPlus


然而,我发现Res2Net的官方实现在很多方面都是在一个较老的ResNet风格中实现的。因此,我从github@frgfm(基于github @gasvn)获取Res2Net实现,并将其修改为:


1、使用Mish而不是ReLU进行激活。


2 、将ResNet的主干更改为一个前沿的3@3x3堆叠的主干(stride 2,stride 1,stride 1),而不是旧的单一的7x7核。


3 、反转BN->激活的顺序,变成激活->BN。这是基于我们对FastAI研究的发现,并得到了论文:Rethinking the usage of Batchnorm…的支持:


“我们不应该把Batch Normalization放在ReLU之前,因为ReLU的非负响应会使权值层更新的方式不太理想……”。


PyTorch代码:https://github.com/lessw2020/res2net-plus


用法很简单:

在FastAI框架中使用Res2Net Plus(这里创建了一个4尺度、26宽度的Res2Net50)


Res2NetPlus的实际应用


在咨询工作中,我利用卫星图像构建了一个太阳能电池板探测器,我从零开始构建了一个Res2NetPlus50,然后将其与标准Imagenet预训练的进行了迁移学习的ResNet50进行了比较。我发现Res2Net50的准确率更高(+5%),训练也更稳定。


该模型最终于上周投入生产,验证数据的准确率为97.8%。

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

缺点:


虽然Res2Net的计算复杂度与等效的ResNet相似,但它的运行速度仍然比对应的ResNet慢(20%似乎是平均水平)。


此外,对于FastAI排行榜数据集之类的分类任务,Res2Net在验证和训练损失上创造了记录(即正确时更正确,错误时更少错误),但并不是最终的绝对准确性的记录。


这是一个我还没有弄明白如何改正的问题,只有先假设一些分类任务可能是不是非常依赖于完整的物体的区分。


因此,Res2Net的最佳用法似乎集中在物体识别和分割类型的任务上。


小技巧 - Res2Net喜欢高级数据增强,比如mix-up、CutMix等。你可以看到使用这些工具时验证损失会急剧下降,因此强烈建议使用Res2Net进行大量的数据增强。


链接:

官方的Res2Net仓库:https://github.com/gasvn/Res2Net

Res2NetPlus结构:https://github.com/lessw2020/res2net-plus



-End-


*延伸阅读



添加极市小助手微信(ID : cv-mart),备注:研究方向-姓名-学校/公司-城市(如:目标检测-小极-北大-深圳),即可申请加入目标检测、目标跟踪、人脸、工业检测、医学影像、三维&SLAM、图像分割等极市技术交流群,更有每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流,一起来让思想之光照的更远吧~


△长按添加极市小助手


△长按关注极市平台


觉得有用麻烦给个在看啦~  

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存