分类网络迁移过来,用作特征提取器(通过在OD数据集上进行微调,并且与后续的网络的共同训练,使得它提取出来的特征更适合OD任务),后续的网络负责从这些特征中,检测目标的位置和类别。那么,我们就将分类网络所在的环节称之为“Backbone”,后续连接的网络层称之为“Detection head”。
骨干网络(backbone)
在现代深度学习算法研究中,通用的骨干网+特定任务网络head成为一种标准的设计模式。
CNN Backbone往往是各种CNN模型的一个共享结构。
https://zhuanlan.zhihu.com/p/93451942
机器学习、模式识别、深度学习等等模型的目的,是压缩。对数据的背诵这不是压缩,对特征的提取才是压缩。
它们都抓住了、而且必须抓住平移、镜像、一定程度上的缩放不变性,只要满足不变性,相似的特征表征能力一定强。CNN的新工作还有旋转不变性、仿射变换不变性和时间轴上的灰度不变性。设计思路不包含这些不变性的,一般都是逗比。
在ImageNet上训练的不少模型,把2 ^ (224 * 224 * 3 * 8bit)的数据空间中的数据特征用少到几十万,大到几亿的参数表征出来,起到了局部或者全局特征的提取,从而用特征进行各种任务。重要的是很多任务可以通过1次定义结构端到端完成。
它是Object Detection, Scene Parsing, OCR等任务的前导性任务,往往也被称为Backbone Model。而且在上面快速实验很多元方法,比如dropout,attention,套用GAN等等是直接、方便的。
要求概率图可微分这个假设很强,在CNN里体现为参数连续,而很多超参离散,使用同样的NN技巧自动连续超参还凑合,离散会碰到各种问题。
知道为什么,远比知道是什么重要。论文是读不过来的。但是读论文可以通过
多读好文、浏览水文、搭配烂文
提高品位。
概念中提到,它是Object Detection, Scene Parsing, OCR等任务的前导性任务。
AlexNet:
https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf
VGG:
https://arxiv.org/pdf/1409.1556.pdf
Residual Network:
https://arxiv.org/pdf/1512.03385.pdf
Wide ResNet:
https://arxiv.org/pdf/1605.07146.pdf
FractalNet:
https://arxiv.org/pdf/1605.07648.pdf
ResNeXt:
https://arxiv.org/pdf/1611.05431.pdf
GoogleNet:
https://arxiv.org/pdf/1409.4842.pdf
Inception:
https://arxiv.org/pdf/1602.07261.pdf
DenseNet:
https://arxiv.org/pdf/1608.06993.pdf
SORT:
https://arxiv.org/pdf/1703.06993.pdf
Compact Bilinear:
https://arxiv.org/pdf/1511.06062.pdf
这个共享结构除了结构性的超参(总深度、总宽度)以外,反复使用了多种技巧,其中包括
Residual(残差): 直接elementwise加法。
Concat(特征拼接): 直接对特征深度作拼接。
Bottleneck(特征压缩): 通过Conv(1,1)对稀疏的或者臃肿的特征进行压缩
Grouping(分组): fc-softmax分类器从1个观察点把不同类靠空间球心角分离开,不同类放射状散开不符合高斯假设。分组改善了这一点。
Fractal(分形模式): 结构复用,可能带来好处
High-Order(高阶): 在非分组时,可能带来好处
Asymmetric(非对称): Conv(1,3),Conv(1,5),Conv(1,7)属于非对称结构,这个技巧在OCR处理长宽非1:1的字体有用
再次的,我们对结构有一个重新的审视
AlexNet/VGG: 普通
VGG: 加深
ResNet: 通过x+F(x)直接加法实现了Residual模块
Wide ResNet: 加宽
FractalNet: 结构复用,使用Concat
ResNeXt: ResNet基础上对Conv(3,3)使用了分组,但是如果Conv(1,1)也分组甚至精度不降
GoogleNet/Inception: 大量的非对称技巧
DenseNet: 大量使用压缩
SORT: 一个小trick使用elementwise x*F(x)实现高阶
Compact Bilinear: 通过学习矩阵A实现x’Ay实现制造新的特征
为Object Detection设计的结构更主要关心多尺度框选准确与否,因此有RPN、SPPNet、上下采样等设计思想。
为Scene Parsing设计的结构更主要关心单位像素点分类正确与否,因此有FCN、上下采样等设计思想。
本文不作介绍。
作为模型压缩的替代方案,XNOR,二值化(Binarization),量子化(Quantization,使用数个比特替代原模型)
本文不作介绍。
我们在DataParallel的语境下面讨论这个问题。也就是说,每张显卡都保存一份参数
全集
,一份数据+数据形成FeatureMap的
子集
。
我们知道,就像组装深度学习服务器一样,你的预算一定的条件下,如何搭配一台服务器才能让CPU对数据预处理够用、内存加载数据够用、硬盘I/O够用,以及最重要的是,选择一块好的GPU卡。资源不是无限的。这其实是一个线性规划问题。在这里不赘述。
进行CNN Backbone优化同样有这个问题:
降低Batch-size会减小Feature Map占用缓存,但收敛情况怎么样,可能饮鸩止渴。
加宽直接影响参数数量。
加深不仅影响参数数量还影响Feature Map大小。
分组极大节省参数,甚至还能提高效果。
结构复用、压缩节省参数,增加计算量。
特征拼接、高阶操作降低并行效率,尤其不是inplace的那种。在动态图框架尤为如此。
Bilinear大量使用额外参数。
非对称带来额外的代码工作。
任何新颖结构的引入带来非连续超参,让模型BP,让超参优化无B可P。
美就是简单
美就是复用
美就是对称
美就是分形
Inception-ResNet.v2干不过ResNeXt,我一点都不意外。
Mask-RCNN标配ResNeXt101 Backbone,我一点都不意外。
基于个人品位,使用ResNeXt+WideResNet+SORT,强力备选方案是DenseNet修改版。
大量超参可调整。
CIFAR100 top1 acc: 84.2%,可再现。
计划使用Compact Bilinear和Attention。
https://blog.csdn.net/u014380165/article/details/78651060
这篇旷视的文章主要是对Faster RCNN、R-FCN算法做加速,取名为Light-Head RCNN,是因为作者将two stage的object detection算法的网络结构分成两部分,一部分是region proposal(或者叫ROI)的生成过程(文章中命名为body部分),另一部分是基于ROI预测框的过程(文章中命名为head部分)。对于像Faster RCNN、R-FCN这样的two stage的object detection算法,第二部分有一些操作耗时且存储量较大,因此称为heavy head。而本文的light head RCNN则是通过对第二部分的修改减少了许多复杂操作,所以称之为light head。
先来感受下Light-Head RCNN算法和其他算法相比的提升情况。Figure1是Light-Head RCNN算法和其他object detection算法在速度和准确率上的直观对比,可以看出在这两方面的优势还是很明显的。