叮咚距糖,前文已經(jīng)簡(jiǎn)單的介紹了一些玄窝,下面進(jìn)入第一個(gè)算法——R-CNN。
在計(jì)算機(jī)視覺(jué)領(lǐng)域有一個(gè)神一樣存在的競(jìng)賽——ImageNet大賽悍引,各種各樣的優(yōu)秀算法差不多都首先初現(xiàn)在大賽上恩脂。講深度學(xué)習(xí)應(yīng)用于計(jì)算機(jī)視覺(jué)最早可以追溯到2012年,在此次大賽上趣斤,卷積神經(jīng)網(wǎng)絡(luò)CNN一炮走紅俩块,成功擊敗了DMP(可變組建模型,被稱為傳統(tǒng)目標(biāo)檢測(cè)算法最后的輝煌E臁)玉凯。基于此联贩,Ross大神趁火打劫漫仆,率先提出了區(qū)域卷積網(wǎng)絡(luò)目標(biāo)檢測(cè)框架(R-CNN)。由此撑蒜,目標(biāo)檢測(cè)鳥(niǎo)槍換大炮歹啼,正式拉開(kāi)了基于深度學(xué)習(xí)的目標(biāo)檢測(cè)研究大幕,目標(biāo)檢測(cè)算法結(jié)束了傳統(tǒng)座菠,“GPU暴力美學(xué)”時(shí)代到來(lái)狸眼。
首先我們先來(lái)看一下論文《Rich feature hierarchies for accurate oject detection and semantic segmentation》(百度云鏈接:https://pan.baidu.com/s/12pESnsHbFi8ktfIxu729_A,提取碼:e84a)浴滴,這便是Ross Girshick大神于2014年發(fā)表的論文拓萌,由此提出R-CNN。
一升略、原文解讀
(并非逐字逐句翻譯)
過(guò)去幾年微王,在PASCAL數(shù)據(jù)集上目標(biāo)檢測(cè)的效果已經(jīng)達(dá)到了一個(gè)穩(wěn)定的效果,并且總結(jié)出了一個(gè)發(fā)展方向:融合多種低維度的特征圖和高緯度的上下文語(yǔ)義可以提升檢測(cè)效果品嚣。Ross大神基于此炕倘,提出了一種算法,可以將數(shù)據(jù)集VOC2012的最高檢測(cè)精度提升30%(也怪當(dāng)時(shí)檢測(cè)效果質(zhì)量較差翰撑,才一下提升如此之高)罩旋,達(dá)到了53.3%(很快就會(huì)被碾壓)!Ross大神并且總結(jié)出了兩個(gè)關(guān)鍵因素(為R-CNN系列算法打下了堅(jiān)實(shí)的基礎(chǔ)):
1.在候選區(qū)域自上而下的使用卷積神經(jīng)網(wǎng)絡(luò)用來(lái)定位和分割眶诈;
2.采用預(yù)訓(xùn)練再微調(diào)的方式(以后都是這樣干的涨醋,遷移學(xué)習(xí)老鐵了解一下)。
1.1 Introduction
特征是賊啦重要的(還用你說(shuō))逝撬。過(guò)去的目標(biāo)檢測(cè)算法基本上都是基于SIFT和HOG特征進(jìn)行檢測(cè)的(關(guān)于這兩個(gè)以后有機(jī)會(huì)再詳述浴骂,你知道他們是兩種特征提取算法就ok了),但是近些年來(lái)(2010-2012年)進(jìn)展非常緩慢(這也就表明了單純的依靠傳統(tǒng)的特征提取已經(jīng)很難再取得進(jìn)步了宪潮,大神們已經(jīng)把這種算法研究的明明白白了)溯警,于是乎趣苏,我們決定采用CNN來(lái)搞一下。
接下來(lái)愧膀,論文中講述了目前最新發(fā)展的傳統(tǒng)目標(biāo)檢測(cè)算法以及基于CNN的目標(biāo)檢測(cè)算法拦键,為接下來(lái)提出我的NB算法打一下前調(diào)。這里就省略了檩淋,如果您喜歡芬为,請(qǐng)?jiān)敿?xì)研究。
我們針對(duì)前人們的研究成果蟀悦,通過(guò)研究他們的缺點(diǎn)媚朦,總結(jié)出了我們的要點(diǎn),就是:通過(guò)操作“recognition using regions”解決了CNN的定位問(wèn)題日戈,并且對(duì)于每一張圖像(注意啊询张,是針對(duì)每一張圖像),我們獲取2K個(gè)于類別無(wú)關(guān)的region proposal(這個(gè)單詞經(jīng)常會(huì)出現(xiàn)浙炼,翻譯成什么樣的中文都感覺(jué)差點(diǎn)意思)份氧,通過(guò)神操作將這2K個(gè)region proposal轉(zhuǎn)化成固定大小的,將其每一個(gè)(注意啊弯屈,是每一個(gè)蜗帜,即這2000多個(gè)都要)輸入到卷積神經(jīng)網(wǎng)絡(luò),然后經(jīng)過(guò)卷積操作之后资厉,利用SVM進(jìn)行分類厅缺。由于這個(gè)算法結(jié)合了region proposal和CNN,因此我們就給他命名為R-CNN宴偿,下面上圖湘捎。
不放上這個(gè)圖,我自己都覺(jué)得我再胡扯窄刘。
如果你說(shuō)我的數(shù)據(jù)集不夠咋辦窥妇,這可就不好辦了。深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練就是從大量娩践,或者說(shuō)海量的數(shù)據(jù)中心獲得特征的描述秩伞,但是有標(biāo)簽的數(shù)據(jù)集是非常難找到的,即使自己制作數(shù)據(jù)集欺矫,需要耗費(fèi)的人力物力還是很大的。因此展氓,數(shù)據(jù)集數(shù)量不夠怎么辦不僅僅困惑著你穆趴,同樣困惑著Ross大神。R-CNN提出的另一個(gè)大的貢獻(xiàn)則是“微調(diào)”遇汞,即在輔助數(shù)據(jù)集(ILSVRC)上進(jìn)行訓(xùn)練(據(jù)說(shuō)數(shù)據(jù)量是千萬(wàn)級(jí)的未妹,我沒(méi)有考證過(guò)簿废,道聽(tīng)途說(shuō)),然后再在小數(shù)據(jù)集上進(jìn)行調(diào)優(yōu)络它,這為我們利用現(xiàn)有模型(VGG16族檬、ZF都有訓(xùn)練好的預(yù)訓(xùn)練模型)來(lái)進(jìn)行訓(xùn)練自己的數(shù)據(jù)集提供了可能(當(dāng)然了,這里的小數(shù)據(jù)集也不能太少化戳,過(guò)擬合還是很恐怖的单料,如果你就三五張,三五十張數(shù)據(jù)集点楼,請(qǐng)出門左拐扫尖,再制作一些數(shù)據(jù)集去,起碼每個(gè)類別也要有幾百上千張的掠廓,為了獲得相對(duì)較好的訓(xùn)練效果换怖,每個(gè)不同類別的數(shù)據(jù)集數(shù)量最好相差不是很大)。
R-CNN目標(biāo)檢測(cè)模型有三個(gè)模塊構(gòu)成:
1.生成類別獨(dú)立的region proposal
2.從各個(gè)region proposal中獲取固定維度的特征向量蟀瞧,可以用ZF沉颂,也可以用VGG16
3.利用SVM算法將這些特征向量分類
1.2 Object detection with R-CNN
region proposal
獲得region proposal是成功的第一步,那么如何獲得region proposal呢悦污?這是一個(gè)非常重要的話題铸屉,在這里R-CNN采用的是選擇性搜索算法(selective search,SS算法塞关,這里就不做過(guò)多的解釋了抬探,請(qǐng)大佬們自行百度吧,很簡(jiǎn)單的)帆赢。這就產(chǎn)生了1K-2K個(gè)region proposal小压,具體是不是這個(gè)數(shù),咱也沒(méi)數(shù)過(guò)椰于,咱也不敢說(shuō)怠益。
獲取了region proposal后,首先要要做的就是給這些region proposal整理大小瘾婿,為了方便計(jì)算蜻牢,均歸一化成227*227大小的(其實(shí)這個(gè)數(shù)字可以通過(guò)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)算出來(lái))。下面就是將大小一樣的region proposal排排隊(duì)送入卷積神經(jīng)網(wǎng)絡(luò)中偏陪,靜等結(jié)果便可抢呆。
論文的下面一些部門便是介紹了訓(xùn)練過(guò)程已經(jīng)各種各樣的對(duì)比試驗(yàn)從而驗(yàn)證了R-CNN算法多么多么優(yōu)秀。就不在一一介紹了笛谦,下面結(jié)合我的訓(xùn)練過(guò)程抱虐,為大家介紹R-CNN的訓(xùn)練過(guò)程。
二饥脑、R-CNN模型訓(xùn)練
在得到region proposal后恳邀,便可以開(kāi)始卷積操作提取特征了懦冰。
好了,現(xiàn)在我要站隊(duì)了谣沸,目前基于深度學(xué)習(xí)的深度神經(jīng)網(wǎng)絡(luò)框架主要有兩大陣營(yíng)刷钢,其一是Caffe,其二是TF(tensorflow乳附,于口紅無(wú)關(guān)内地,于TFBOYS更沒(méi)有一毛錢關(guān)系),其實(shí)這來(lái)兩個(gè)框架各自有各自的特點(diǎn)與不足许溅,由于一開(kāi)始接觸的是基于Caffe的模型瓤鼻,因此后面包括以后的算法基本上均是基于Caffe框架進(jìn)行開(kāi)發(fā)的。
現(xiàn)在常用的基于Caffe的卷積神經(jīng)網(wǎng)絡(luò)主要有ZF和VGG系列贤重,其中VGG系列中VGG16又比較流行茬祷。R-CNN的訓(xùn)練流程如下圖。
自己畫的并蝗,好與不好請(qǐng)多擔(dān)待祭犯。
其訓(xùn)練過(guò)程并不復(fù)雜,這里還有幾點(diǎn)再給大家強(qiáng)調(diào)一下滚停。
R-CNN中沃粗,這2K多個(gè)region proposal經(jīng)過(guò)卷積神經(jīng)網(wǎng)絡(luò)得到特征向量之后,是采用SVM進(jìn)行分類的键畴,來(lái)確定類別最盅,采用Bounding-Box(Bbox)進(jìn)行回歸的,來(lái)獲得其位置坐標(biāo)起惕,關(guān)于這兩個(gè)算法涡贱,雖說(shuō)不影響R-CNN的理解,但還是學(xué)習(xí)了解一下為好惹想。
通過(guò)以上的描述其實(shí)不難發(fā)現(xiàn)R-CNN的缺陷问词,并且是非常致命的缺陷(再NB的算法也是有缺陷的),總結(jié)出來(lái)主要是兩大點(diǎn)吧(個(gè)人認(rèn)為):
1.將每一張待檢測(cè)圖像首先分成2000多個(gè)嘀粱,并且每一個(gè)都要經(jīng)過(guò)卷積計(jì)算激挪,這是非常耗費(fèi)時(shí)間的,這就造成了起檢測(cè)速度非常之慢锋叨。
2.由于對(duì)于region proposal有一個(gè)歸一化操作垄分,過(guò)度拉伸會(huì)導(dǎo)致特征變形。
基于以上問(wèn)題娃磺,便有了接下來(lái)的精彩锋喜。
未完待續(xù)。。嘿般。