模型结构
通过捕获long-range dependency提取全局信息,对各种视觉任务都是很有帮助的,典型的方法是Non-local Network自注意力机制。对于每个查询位置(query position),Non-local network首先计算该位置和所有位置之间一个两两成对的关系,得到一个attention map。然后对attention map所有位置的权重加权求和得到汇总特征,每一个查询位置都得到一个汇总特征,将汇总特征与原始特征相加得到最终输出。对于某个query position,nNon-local network计算的另一个位置与该位置的关系即一个权重值表示这个位置对query位置的重要程度。但现有研究发现不同的query位置其对应的attention map几乎一样,如下图所示。
GlobalContext作者观察发现non-local block针对每个query position计算的attention map最终结果是独立于查询位置的,那么就没有必要针对每个查询位置计算了,因此提出计算一个通用的attention map并应用于输入feature map上的所有位置,大大减少了计算量的同时又没有导致性能的降低。此外,结合SE block,设计得到GlobalContext,既轻量又可以有效地建模全局上下文。GC Block结合了Non-local block和SE block的优点,多个任务上均超过了NLNet和SENet。GlobalContext的整体结构并不复杂,如下图所示。
论文地址:https://arxiv.org/pdf/1904.11492.pdf
代码仓库:https://github.com/xvjiarui/GCNet
实现代码
GlobalContext的实现代码如下所示:
YOLOv5模型改进
本文在YOLOv5目标检测算法的Backbone和Head部分分别加入GlobalContext来增强目标提取能力,以下分别是在Backbone以及Head中改进的模型结构和参数(以YOLOv5s为例)。
在Backbone部分
在Head部分
总结
GlobalContext计算一个通用的attention map并应用于输入feature map上的所有位置,大大减少了计算量的同时又没有导致性能的降低,既轻量又可以有效地建模全局上下文。此外,GlobalContext可进一步应用于YOLOv7、YOLOv8等模型中,欢迎大家关注本博主的微信公众号 BestSongC,后续更多的资源如模型改进、可视化界面等都会在此发布。另外,本博主最近也在MS COCO数据集上跑了一些YOLOv5的改进模型,实验表明改进后的模型能在MS COCO 2017验证集上分别涨点1-3%,感兴趣的朋友关注后回复YOLOv5改进。