当前位置:   article > 正文

YOLOv7改进:BoTNeT(Bottleneck Transformer)_yolov7使用botnet

yolov7使用botnet

 目录

1.简介

2.YOLOv7改进:BoTNeT

2.1增加以下yolov7_botnet.yaml文件

 2.2 common.py配置

2.3 yolo.py配置修改


1.简介

论文地址 

 Paper

 

 

本文提出的BoTNet是一种简单高效的网络,有效的将SA应用到多种视觉任务,如图像识别、目标检测、实例分割任务。通过将ResNet50中最后三个bottleneck模块的空间卷积替换为全局的SA操作,有效提升了基线模型在签署任务上的性能。

Section I
常用的CNN大多采用3x3的卷积核,鉴于卷积操作可以有效的不糊哦局部信息,但是对于一些视觉任务如目标检测、实例分割、关键点检测还需要建立长程依赖关系。比如实例分割中需要收集场景相关的信息才能学习物体之间的关系;那么为了吧局部信息聚合就需要堆叠多个卷积层。但基于non-local操作可以更有效,也不需要堆叠那么多层。
而建模长程依赖对NLP任务也十分重要,Self-Attention可以有效学习每一对实体之间的关联,基于SA组成的Transformer已经成为NLP的主流,如GPT和BERT。


 SA应用于视觉的一种简便方法及时将卷积层替换为MHSA层,参见Fig 1。按照这种思路有两种改进方向,一是将Resnet中的卷积层替换为各种SA操作,比如SASA,AACN,SANet;二是将图像切分成互补重叠的patch然后送入堆叠的Transformer模块。

虽然看起来是两种不同类型的体系结构,但是事实并非如此。本文提出ResNet 模块中使用MHSA层可以看做是一种带有瓶颈结构的Transformer模块,只不过有细微的变化比如残差连接、归一化层的选择上。因此本文将带有MHSA层的ResNet模块称之为BoT模块,具体结构参见Fig3.
将注意力应用到视觉领域有以下挑战:
(1)图像一般比用于分类的图像更大,分类一般(224,224)就够了,用于目标检测和实例分割的图像分辨率更高。

(2)SA的计算是输入分辨率的平方项,因此对内存和算力有要求

为了克服以上挑战本文进行以下设计:

(1)使用卷积来高效学习低分辨率、抽象的特征

(2)使用SA来处理、聚合卷积提取到的特征

这种混合设计可以有效利用卷积和SA的优点,同通过卷积进行下采样可以有效处理较高分辨率的输入图像。

因此本文的提出一种简单的设计方案:将ResNet最后三个block替换为BoT模块,其余不做任何改动。再说明白点,只将ResNet最后三个3x3卷积替换为MHSA层。


只做这一小小的改动,就将COCO上目标检测精度提升了1.2%;并且BoTNet在结构上并没什么新颖之处因此本文相信这种简洁性使其可以作为一个值得进一步研究的backbone。
使用BoTNet做实例分割,效果也有显著提升,尤其对小物体有显著提升。



最后本文还对BoTNet进行了放缩,发现BoTNet在更小数据集上没有什么实质性提升,但在ImageNet上达到了84.7%的top-1精度;在TPU-V3硬件测试上比目前流行的EfficientNet块1.64倍。基于BoTNet展现的结果本文希望SA未来可以在视觉任务中广泛使用。
 

 

2.YOLOv7改进:BoTNeT

2.1增加以下yolov7_botnet.yaml文件

  1. # YOLOv7
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/534076
    推荐阅读
    相关标签