分类和定位是目标检测中两个高度相关但互相“矛盾”的任务。对于每个对象,分类属于粗粒度的戏细分任务,需要更丰富的语义上下文,而定位则相当细粒度,需要能提供更多丰富细节的边界信息。这一点不难理解,分类通常需要站在全局的角度去审时度势,这也是为什么大多数分类任务会采用全局上下文池化(Global Average Pooling, GAP
)的原因。
如上所述,诸如YOLOX
等常规的解耦头设置中,分类和回归分支都是共享来自Neck
输出的相同输入特征。虽然它们使用单独的参数进行学习,以便为每个任务提供不同的特征上下文,即参数解耦,但这种简单的设计并不能从本质上解决问题。这是因为不同的输入特征其涵盖的语义和空间细节信息是并相同的。通常来说,低层特征具备更丰富的细节信息而缺乏语义信息,而高层特征则与之相反,这必然不能最大限度的发挥这种“解耦头”的优势。
如图所示,TSCODE
整体的网络架构与常规的单阶段目标检测器并无多大差异,都是包含Backbone
、Neck
和Head
。其中骨干网络充当特征提取器从输入图像生成多尺度特征图。随后通过类似于FPN
或BiFPN
之类的特征金字塔结构进行深、浅层的特征融合,最后再分别输入到头部进行相应的解码输出。需要注意的是,这里TSCODE
接收来自中间三个层级输出的特征图,并生成用于分类和定位的解耦特征图。更重