简介
CoTAttention网络是一种用于多模态场景下的视觉问答(Visual Question Answering,VQA)任务的神经网络模型。它是在经典的注意力机制(Attention Mechanism)上进行了改进,能够自适应地对不同的视觉和语言输入进行注意力分配,从而更好地完成VQA任务。CoTAttention网络中的“CoT”代表“Cross-modal Transformer”,即跨模态Transformer。在该网络中,视觉和语言输入分别被编码为一组特征向量,然后通过一个跨模态的Transformer模块进行交互和整合。在这个跨模态的Transformer模块中,Co-Attention机制被用来计算视觉和语言特征之间的交互注意力,从而实现更好的信息交换和整合。在计算机视觉和自然语言处理紧密结合的VQA任务中,CoTAttention取得了很好的效果。
论文地址:https://arxiv.org/pdf/2107.12292.pdf
代码地址:https://github.com/JDAI-CV/CoTNet
模型结构
传统的Self-Attention可以很好地触发不同空间位置的特征交互。然而,在传统的Self-Attention机制中,所有的query-key关系都是通过独立的quey-key pair学习的,没有探索两者之间的丰富上下文,这极大的限制了视觉表示学习。因此,作者提出了CoT Block,如上图所示,这个结构将上下文信息的挖掘Self-Attention的学习聚合到了一个结构中。
首先对于输入特征,首先定义了三个变量(这里只是将V进行了特征的映射,Q和K还是采用了原来的X值)。作者首先在K上进行了kxk的分组卷积,来获得具备局部上下文信息表示的K,这个可以看做是在局部信息上进行了静态的建模。接着作者将和Q进行了concat,然后对concat的结果进行了两次连续的卷积操作。然后,作者将得到的Attention Map和V进行相乘得到动态上下文建模特征图。最后CoT的结果为局部静态上下文建模的和全局动态上下文建模的融合之后的结果。
实现代码
CoTAttention的实现代码如下所示:
YOLOv5模型改进
本文在YOLOv5目标检测算法的Backbone和Head部分分别加入CoordAttention来增强目标提取能力,以下分别是在Backbone以及Head中改进的模型结构和参数(以YOLOv5s为例)。
在Backbone部分
在Head部分
总结
CoTAttention是一种用于多模态场景下的视觉问答(Visual Question Answering,VQA)任务的神经网络模型。它是在经典的注意力机制(Attention Mechanism)上进行了改进,能够自适应地对不同的视觉和语言输入进行注意力分配,此外,CoTAttention可进一步应用于YOLOv7、YOLOv8等模型中,欢迎大家关注本博主的微信公众号 BestSongC,后续更多的资源如模型改进、可视化界面等都会在此发布。另外,本博主最近也在MS COCO数据集上跑了一些YOLOv5的改进模型,实验表明改进后的模型能在MS COCO 2017验证集上分别涨点1-3%,感兴趣的朋友关注后回复YOLOv5改进。