【总结】深度学习网络模型总结
1.MobileNet 《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》
论文地址:https://arxiv.org/pdf/1704.04861.pdf
官方代码(Tensorflow):
民间代码(Caffe):https://github.com/Zehaos/MobileNet
https://github.com/shicai/MobileNet-Caffe
论文创新:
1)采用了depthwise separable convolutions(深度可分离卷积)卷积核,减少计算量和模型大小。
主要思想是:将标准卷积层分解为depthwise conv和 pointwise conv(1*1)两个卷积层。即一个depthwise separable卷积核包括depth wise卷积操作和pointwise卷积操作。
标准卷积层计算量为:

使用卷积分解后计算量变为:

2)引入了两个超参数(Width Multiplier: Thinner Models,Resolution Multiplier: Reduced Representation),用于确定合适大小的模型。
使用width multiplier的α参数后,计算量变为:

使用resolution multiplier的ρ参数后,计算量变为:

举个例子:输入图片维度是11 × 11 × 3,标准卷积为3 × 3 × 3 ×16(假设stride为2,padding为1),那么可以得到输出为6 × 6 × 16的输出结果。现在输入图片不变,先通过一个维度是3 × 3 × 1 × 3的深度卷积(输入是3通道,这里有3个卷积核,对应着进行计算,理解成for循环),得到6 × 6 × 3的中间输出,然后再通过一个维度是1 × 1 × 3 ×16的1 ×1卷积,同样得到输出为6 × 6 × 16。
论文实验中还表明:深且瘦的网络架构要比浅且胖的网络准确率高大约3%。

width multiplier的α参数变化结果:
Accuracy drops off smoothly until the architecture is made too small at α = 0.25.
resolution multiplier的ρ参数变化结果:
Accuracy drops off smoothly across resolution.
2.Faster R-CNN 《Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks》
论文代码:https://github.com/ShaoqingRen/faster_rcnn
https://github.com/rbgirshick/py-faster-rcnn
论文创新:
1)提出区域建议网络RPN,快速生成候选区域;(取代了Fast R-CNN中的Selective Search方法。)
RPN网络训练,那么就涉及ground truth和loss function的问题。对于ground truth为anchor是否为目标,用0/1表示。那么怎么判定一个anchor内是否有目标呢?论文中采用了这样的规则:1)假如某anchor与任一目标区域的IoU最大,则该anchor判定为有目标;2)假如某anchor与任一目标区域的IoU>0.7,则判定为有目标;3)假如某anchor与任一目标区域的IoU<0.3,则判定为背景。其它的anchor不参与训练。所谓IoU,就是预测box和真实box的覆盖率,其值等于两个box的交集除以两个box的并集。
RPN的核心思想是使用CNN卷积神经网络直接产生Region Proposal,使用的方法本质上就是滑动窗口(只需在最后的卷积层上滑动一遍),因为anchor机制和边框回归可以得到多尺度多长宽比的Region Proposal。

论文中使用的loss function定义为:

cls层:判断该proposal是前景(object)还是背景(non-object),分类层(cls_score)输出每一个位置上,9个anchor属于前景和背景的概率。
reg层:预测proposal的anchor对应的proposal的(x,y,w,h),窗口回归层(bbox_pred)输出每一个位置上,9个anchor对应窗口应该平移缩放的参数(x,y,w,h)
边框回归(Bouding Box Regression):是对RegionProposal进行纠正的线性回归算法,目的是为了让Region Proposal提取到的窗口与目标窗口(Ground Truth)更加吻合。
2)使RPN和Fast-RCNN网络共享特征参数。其实就相当于RPN+Fast-RCNN的结合
如何实现两个网络共享特征参数的步骤如下:
第一步,我们训练RPN,该网络用ImageNet预训练的模型初始化,并端到端微调用于区域建议任务;
第二步,我们利用第一步的RPN生成的建议框,由Fast R-CNN训练一个单独的检测网络,这个检测网络同样是由ImageNet预训练的模型初始化的,这时候两个网络还没有共享卷积层;
第三步,我们用检测网络初始化RPN训练,但我们固定共享的卷积层,并且只微调RPN独有的层,现在两个网络共享卷积层了;
第四步,保持共享的卷积层固定,微调Fast R-CNN的fc层。这样,两个网络共享相同的卷积层,构成一个统一的网络。
注意:第一次迭代时,用ImageNet得到的模型初始化RPN和Fast-R-CNN中卷积层的参数;从第二次迭代开始,训练RPN时,用Fast-R-CNN的共享卷积层参数初始化RPN中的共享卷积层参数,然后只Fine-tune不共享的卷积层和其他层的相应参数。训练Fast-RCNN时,保持其与RPN共享的卷积层参数不变,只Fine-tune不共享的层对应的参数。这样就可以实现两个网络卷积层特征共享训练。
关于RPN和loss的细节还不是很清楚,继续研究...
浙公网安备 33010602011771号