本文主要是介绍深浅层特征融合——CBNet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写在前面
本系列博客“深浅层特征融合”对几篇出现较新的深浅层特征融合算法进行简要介绍,多为本人的论文笔记,记录了一个深度学习小学生在看论文时想到的问题。
论文题目: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融合的思想很好理解,单看下图就能理解:
这样融合的好处是,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。也欢迎和大家讨论。
- backbone个数的对比
作者通过实验发现,随着backbone个数的增长,整体效果都是在提高的,但随之而来的memory cost也不容忽视。最终作者建议采用2或3个backbone。
两个backbone会令model size扩充到原先的不到两倍(图中的mb):
问题记录
以下问题是作者看论文是脑子里蹦出来的所有问题,适合小白日常修补知识漏洞。
关于本文的问题:
Q | A |
关于benchmark怎样理解? | |
identical backbone的identical? | 只表示结构一样,weight不同 |
将CBNet和RCNN对比时,为什么用RCNN作为detector的backbone就需要再预训练? | |
一般upsample都有什么操作?upsample除了维度上的作用,还有别的用途吗? | |
one stage方法的backbone为什么不保持一样? | |
本文以外的问题:
Q | A |
ResNet and ResNeXt | |
新提出的一些目标检测算法需要看 | |
DetNet 、FishNet?特征为目标检测设计的backbone和普通针对图像分类初衷的backbone有何区别? | |
RCNN? | |
FPN、RPN? | |
Detectron? | |
hrnet?分辨率维持不变 | |
学习率warm up | |
soft-NMS? | |
目标检测几个指标的具体算法 | |
single\multi-scale training\inference? |
这篇关于深浅层特征融合——CBNet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!