道路の深さの研究(4):高速RCNN

上記は、私たちに降りてきた、RCNN SPP-Netのと同様に2古典的なエントリーレベルのアルゴリズムを言われたRCNNファミリー、--fast-RCNN別の傑出した代表です。地域の提案

高速RCNN名は、示唆速いRCNNあり、その目的は遅い、遅い検出問題を訓練RCNNを解決することです。

紙の読み

高速RCNN論文は、その作者神RBG大、シンプルな紙、強い目的の泥棒である「高速RCNN」、でした。(百度クラウドリンク:https://pan.baidu.com/s/1fQlWVSY19kphn8X9zOyGEA、抽出コード:AGLM)。

高速RCNNの分類は、結果の前に使用畳み込みニューラルネットワークにおける効果的な目標に基づいています。これにより、トレーニングの速度を増加させ、検出精度を向上させるために急いを試験する、多数の技術を使用します。中高速RCNN VGG-16 9倍速いRCNNよりも、213倍高速検出、また(PASCAL VOCのデータセット)高い検出精度を達成したトレーニング。

第1章はじめに紙は、画像分類と検出アルゴリズムの現在の開発は、その複雑さだけでなく、低速検知するだけでなく、貧困層の検出精度に大きな成果、しかし、目標検出を行っている紹介しています。次に、右側の紙は、それが2つの原因の複雑さを示している:一つは、候補領域の多数を扱う必要があり、第二は、候補フレーム位置では正確ではない、微細な位置決めを達成するために必要です。これらの問題は必然的に遅い検出速度になります解決するために、検出精度が悪いです。その後、紙は、独自の高速RCNNが発生置きます。

微調整にログ損失関数を使用して特徴抽出を伴うネットワーク、トレーニング:長所と短所R-CNNと重要な点は、これら2つのモデルのトレーニングプロセスは、多段パイプラインであるということであるSPP-Netの、より詳細な分析を与えて次のエッセイ回帰フィッティング検出枠を用いてSVM分類器。

最後に、自信のRBGグレート神最初の章では、Fast-RCNNのいくつかの利点を指摘しました:

R-CNN SPP-Netと高い検出精度(MAP)を有する対象よりも、

トレーニングは、マルチタスクの損失の使用で単相のトレーニングです。

トレーニングは、すべてのネットワーク層のパラメータを更新することができます。

ストレージ機能は、ディスクスペースを必要とされていません。

次に、図(またはR-CNNは、図には、古典的な乗って行きます!)

 

输入图像和多个RoI被输入到卷积网络中。每一个RoI被池化到固定大小的特征图中,然后通过全连接层映射到特征向量(这里的映射是重点,需要注意一下映射)。等到以上操作完成后,接下来就要输出了,这里会有两个输出向量:Softmax概率和每一类检测框的回归偏移量。

Fast R-CNN网络将整个图像和一组候选框作为输入。网络首先使用几个卷积层(conv)和最大池化层来处理整个图像,以产生卷积特征图。然后,对于每个候选框,RoI池化层从特征图中提取固定长度的特征向量。每个特征向量被送入一系列全连接(fc)层中,其最终分支成两个同级输出层 :一个输出个类别加上1个背景类别的Softmax概率估计,另一个为个类别的每一个类别输出四个实数值。每组4个值表示个类别的一个类别的检测框位置的修正。

相比较于R-CNN,Fast-RCNN最大的不同点在于RoI池化层和FC层中的目标分类与检测框回归的统一。(抛弃了SVM!)

首先要讲解的是ROl池化层,其涉及的灵感是来源于SPP-Net,但是在这里rbg大神做了一些简化,抛弃了多尺度池化,转而利用M*N的网格进行maxpooling(注意M不一定等于N,也就是不一定每个网格是方形的,这个改进对于后来的模型具有一定的启示作用。)

这这里需要声明的一点,在前期的准备中,Fast-RCNN还是采用了SS算法进行候选区域的选取。

然后是联合目标分类与候选框回归的FC层

在R-CNN中,首先提取region proposal,然后CNN提取特征,然后SVM分类,最后再BBox回归,不得不说比较繁琐。Fast-RCNN直接将分类和回归一并放入到了全连接层,形成一个multi-task模型。输出两层结构,其一是用来分类的cls_score层,即分类得分看看属于哪一类的分数最高。其二是BBox_predict层,用来进行候选框的微调(这个微调在后面还会提及)。

二. 训练

和R-CNN相似,首先获得预训练的模型(以VGG-16和ZF为例),然后再PASCAL VOC数据集上进行微调。

在调优训练时,每一个mini-batch中首先加入2张完整图片(即mini-batch=2,这是一个考验硬件的参数!),而后加入从2张图片中选取的128个候选框。这128个候选框可以复用2张图片前5个阶段的网络特征。(这里提及了复用的概念,很重要!)

在进行微调前,需要对有监督预训练后的模型进行3步转化:其一是RoI池化层取代预训练模型中卷积网络最后一层池化层(相当于连接了一个空间金字塔池化层);其二是两个并行层取代预训练模型中的最后一层全连接层和softmax层,并行层之一是新全连接层1加原softmax层1000个分类输出修改为21个分类输出(20+1,20类+1个背景,这个参数在做自己数据集训练时会经常用到),并行层之二是新全连接层2加候选区域窗口回归层;其三是预训练模型由原来单输入修改为双输入(图像的列表和这些图像中的RoI的列表)。

三. 其他的一些重要点

微调

卷积神经网络的参数训练,很大程度上是一种猜测,只有通过不断地调整才能猜的更准确。那么怎么才能更好的调整呢?当然是我随口说一个,然后你给我一个反馈,告诉我说的对不对,说的是大了还是小了,然后我再带着这个反馈进行下一轮猜测这才是一个正确并且高效的方法(二分法是不是也是这个思想?)。

卷积神经网络的参数调整同样也是这样的,这里有一个名词是“反向传播”。利用反向传播进行卷积神经网络的参数调整是重要的知识点!Fast-RCNN相较于SPP-Net的一个重要能力便是可以实现“反向传播训练”,那么为什么SPP-Net不能够实现反向传播训练呢?

原因很简单,当每一个训练样本(RoI)来自不同的图像时,通过空间金字塔池化层进行反向传播是非常低效的,低效的部分是因为每一个RoI可能具有非常大的感受野,通常跨越整个输入图像。

为了解决这个问题,实现微调。Fast-RCNN采用了以下办法。

首先是特征共享,在Fast RCNN网络训练中,随机梯度下降(SGD)的小批量是被分层采样的,首先采样N个图像,然后从每个图像采样R/N个 RoI。关键的是,来自同一图像的RoI在向前和向后传播中共享计算和内存。减小N,就减少了小批量的计算。(想要收敛的快,就加大N,加大了N就会吃内存!)。

其次是,在微调阶段联合优化Softmax分类器和检测框回归,而不是分别在三个独立的阶段训练softmax分类器、SVM和回归器。 

多任务损失

Fast-RCNN有两层输出,自然也就会有两个损失等待处理,因此需要计算多任务损失。分别是

 

多任务损失自然就是两者带权之和了。

前边巴拉巴拉讲了很多,基本上说明了Fast-RCNN的基本原理、模型的基本结构和训练的基本操作。Fast-RCNN具有极大的有点就是在训练和检测上都进行了极大的提速,并且保证了检测的质量。

其缺点还是有的,最大的缺点其还是采用SS算法进行候选区域的预选择,这就造成了其并不是一个完整的或者说是全部的卷积神经网络(虽然已经改造了99%了),这样带来的问题就是其检测速度还是不是很快,那么有没有一种方法可以将候选区域的选择也纳入到卷积神经网络之中呢?(当然有了,不然我也就不会说出来了!)

未完待续。。。

发布了4 篇原创文章 · 获赞 1 · 访问量 139

おすすめ

転載: blog.csdn.net/qq_33439794/article/details/104583147