深浅层特征融合——CBNet

时间:2024-03-26 15:26:34

写在前面

本系列博客“深浅层特征融合”对几篇出现较新的深浅层特征融合算法进行简要介绍,多为本人的论文笔记,记录了一个深度学习小学生在看论文时想到的问题。


论文题目:CBNet: A Novel Composite Backbone Network Architecture for Object Detection

论文链接:https://arxiv.org/pdf/1909.03625.pdf

github地址:https://github.com/PKUbahuangliuhe/CBNet

整体介绍

这篇论文来自北大,2019年9月发表,时间很新。

研究背景:作者认为当前基于深度学习的目标检测算法中,负责进行特征提取的backbone网络,其最初的设计目的大多是为了图像分类。利用这些网络提取的特征直接进行不同数据集的目标检测任务时,可能不会达到最优效果。

研究方法:直接设计一个新的backbone并预训练又很慢很艰难,因此作者以对现有的backbone进行融合作为研究出发点

特征融合算法:对多个同结构不同参数的backbone网络并列,横向地沿一个方向对相邻backbone的各个阶段特征进行整合,仅采用最末端的backbone网络所提取的特征进行后续目标检测或语义分割任务。

算法介绍

本文提出的backbone融合的思想很好理解,单看下图就能理解:

深浅层特征融合——CBNet

这样融合的好处是,Lead Backbone相比于传统单一backbone,每个阶段提取的特征,包含了一些多次经过某阶段卷积核提取出的特征,可以粗糙理解为该阶段该的卷积核反复通过了好几次(不过不同backbone同一阶段的weight也不同,并且进行composite融合前也进行了upsample操作,不是简单地重复该层)。

对比实验

  • 不同composite方式对比

作者对比了相邻backbone之间不同composite方式的效果差异,最终发现“左high-level+右low-level”的形式效果最好,在对几种composite方式的效果进行对比并尝试分析理由时,个人觉得有点牵强。仅从文章中我还是不太能理解为什么“左high-level+右low-level”就能让后者get enhanced,“左low-level+右high-level”就能让后者get harmed。也欢迎和大家讨论。

深浅层特征融合——CBNet

  • backbone个数的对比

作者通过实验发现,随着backbone个数的增长,整体效果都是在提高的,但随之而来的memory cost也不容忽视。最终作者建议采用2或3个backbone。

深浅层特征融合——CBNet

 两个backbone会令model size扩充到原先的不到两倍(图中的mb):

深浅层特征融合——CBNet

问题记录

以下问题是作者看论文是脑子里蹦出来的所有问题,适合小白日常修补知识漏洞。

关于本文的问题:

Q A
关于benchmark怎样理解?  
identical backbone的identical? 只表示结构一样,weight不同

将CBNet和RCNN对比时,为什么用RCNN作为detector的backbone就需要再预训练?

深浅层特征融合——CBNet

 

一般upsample都有什么操作?upsample除了维度上的作用,还有别的用途吗?

深浅层特征融合——CBNet

 

one stage方法的backbone为什么不保持一样?深浅层特征融合——CBNet

 
   

本文以外的问题:

Q A
ResNet and ResNeXt  

新提出的一些目标检测算法需要看

深浅层特征融合——CBNet

 

 DetNet 、FishNet?特征为目标检测设计的backbone和普通针对图像分类初衷的backbone有何区别?

深浅层特征融合——CBNet

 

RCNN?

深浅层特征融合——CBNet

 
FPN、RPN?  

Detectron?

深浅层特征融合——CBNet

 
hrnet?分辨率维持不变  
学习率warm up  
soft-NMS?  

目标检测几个指标的具体算法

深浅层特征融合——CBNet

 

single\multi-scale training\inference?

深浅层特征融合——CBNet