計算機(jī)視覺——典型的目標(biāo)檢測算法(OverFeat算法)(二)

姓名:賈軼名? ? 學(xué)號:21011210011? ? ?學(xué)院:通信工程學(xué)院

【嵌牛導(dǎo)讀】目標(biāo)檢測在現(xiàn)實中的應(yīng)用很廣泛糠聪,我們需要檢測數(shù)字圖像中的物體位置以及類別,它需要我們構(gòu)建一個模型,模型的輸入一張圖片崖蜜,模型的輸出需要圈出圖片中所有物體的位置以及物體所屬的類別州胳。在深度學(xué)習(xí)浪潮到來之前,目標(biāo)檢測精度的進(jìn)步十分緩慢馏颂,靠傳統(tǒng)依靠手工特征的方法來提高精度已是相當(dāng)困難的事示血。而ImageNet分類大賽出現(xiàn)的卷積神經(jīng)網(wǎng)絡(luò)(CNN)——AlexNet所展現(xiàn)的強(qiáng)大性能,吸引著學(xué)者們將CNN遷移到了其他的任務(wù)救拉,這也包括著目標(biāo)檢測任務(wù)难审,近年來,出現(xiàn)了很多目標(biāo)檢測算法亿絮。

【嵌牛鼻子】計算機(jī)視覺

【嵌牛提問】如何理解目標(biāo)檢測算法——OverFeat

【嵌牛正文】

一告喊、深度學(xué)習(xí)的典型目標(biāo)檢測算法

深度學(xué)習(xí)目標(biāo)檢測算法主要分為雙階段檢測算法單階段檢測算法麸拄,如圖1所示。


雙階段目標(biāo)檢測算法先對圖像提取候選框黔姜,然后基于候選區(qū)域做二次修正得到檢測結(jié)果拢切,檢測精度較高,但檢測速度較慢;單階段目標(biāo)驗測算法直接對圖像進(jìn)行計算生成檢測結(jié)果秆吵,檢測速度快,但檢測精度低淮椰。

1、雙階段目標(biāo)檢測算法

雙階段目標(biāo)檢測方法主要通過選擇性搜索(Selective Search)或者Edge Boxes等算法對輸入圖像選取可能包含檢測目標(biāo)的候選區(qū)域(Region Proposal)纳寂,再對候選區(qū)域進(jìn)行分類和位置回歸以得到檢測結(jié)果主穗。

1.1 OverFeat算法

《OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks》

Sermanet?等改進(jìn)AlexNet 提出 OverFeat 算法。該算法結(jié)合AlexNet通過多尺度滑動窗口實現(xiàn)特征提取功能毙芜,并且共享特征提取層忽媒,應(yīng)用于圖像分類、定位和目標(biāo)檢測等任務(wù)腋粥。

關(guān)鍵技術(shù):

1晦雨、FCN(全卷積神經(jīng)網(wǎng)絡(luò)

對于一個各層參數(shù)結(jié)構(gòu)都設(shè)計好的網(wǎng)絡(luò)模型,要求輸入圖片的尺寸是固定的(例如隘冲,Alexnet要求輸入圖片的尺寸為227px*227px)闹瞧。如果輸入一張500*500的圖片,希望模型仍然可以一直前向傳導(dǎo)对嚼,即一個已經(jīng)設(shè)計完畢的網(wǎng)絡(luò)夹抗,可以輸入任意大小的圖片,這就是FCN纵竖。

FCN的思想在于:

1漠烧、從卷積層到全連接層,看成是對一整張圖片的卷積層運(yùn)算靡砌。

2已脓、從全連接層到全連接層,看成是采用1*1大小的卷積核通殃,進(jìn)行卷積層運(yùn)算度液。


如上圖所示,綠色部分代表卷積核大小画舌。假設(shè)一個CNN模型堕担,其輸入圖片大小是14*14,通過第一層卷積后得到10*10大小的圖片曲聂,然后接著通過池化得到了5*5大小的圖片霹购。像但是對于像素值為5*5的圖片到像素值為1*1的圖片的過程中:

(1)傳統(tǒng)的CNN:如果從以前的角度進(jìn)行理解的話玄柠,那么這個過程就是全連接層橱鹏,我們會把這個5*5大小的圖片轴脐,展平成為一維向量進(jìn)行計算形真。

(2)FCN:FCN并不是把5*5的圖片展平成一維向量再進(jìn)行計算,而是直接采用5*5的卷積核贞奋,對一整張圖片進(jìn)行卷積運(yùn)算赌厅。

二者本質(zhì)上是相同的,只是角度不同轿塔,F(xiàn)CN把這個過程當(dāng)成了對一整張?zhí)卣鲌D進(jìn)行卷積特愿,同樣,后面的全連接層也是把它當(dāng)做是以1*1大小的卷積核進(jìn)行卷積運(yùn)算勾缭。

當(dāng)輸入一張任意大小的圖片洽议,就需要利用以上所述的網(wǎng)絡(luò),例如輸入一張像素為16*16的圖片:


根據(jù)上圖漫拭,該網(wǎng)絡(luò)最后的輸出是一張2*2的圖片』旎可見采用FCN網(wǎng)絡(luò)可以輸入任意大小的圖片采驻。同時需要注意的是網(wǎng)絡(luò)最后輸出的圖片大小不在是一個1*1大小的圖片,而是一個與輸入圖片大小息息相關(guān)的一張圖片匈勋。

Overfeat就是把采用FCN的思想把全連接層看成了卷積層礼旅,在網(wǎng)絡(luò)測試階段可以輸入任意大小的圖片。

2洽洁、offset max-pooling

簡單起見痘系,不用二維的圖像作為例子,而是采用一維作為示例:

如上圖所示饿自,在X軸上有20個神經(jīng)元汰翠,并且選擇池化size=3的非重疊池化,那么根據(jù)之前所學(xué)的方法應(yīng)該是:對上面的20個神經(jīng)元昭雌,從1位置開始進(jìn)行分組复唤,每3個連續(xù)的神經(jīng)元為一組,然后計算每組的最大值(最大池化)烛卧,19佛纫、20號神經(jīng)元將被丟棄,如下圖所示:

或者可以在20號神經(jīng)元后面总放,添加一個數(shù)值為0的神經(jīng)元編號21呈宇,與19、20成為一組局雄,這樣可以分成7組:[1,2,3]甥啄,[4,5,6]……,

[16,17,18],[19,20,21],最后計算每組的最大值哎榴。

如果只分6組型豁,除了以1作為初始位置進(jìn)行連續(xù)組合之外僵蛛,也可以從位置2或者3開始進(jìn)行組合。也就是說其實有3種池化組合方法:

A迎变、△=0分組:[1,2,3]充尉,[4,5,6]……,[16,17,18];

B衣形、△=1分組:[2,3,4]驼侠,[5,6,7]……,[17,18,19];

C谆吴、△=2分組:[3,4,5]倒源,[6,7,8]……,[18,19,20];

對應(yīng)圖片如下:

以往的CNN中句狼,一般只用△=0的情況笋熬,得到池化結(jié)果后,就送入了下一層腻菇。但是該文獻(xiàn)的方法是胳螟,把上面的△=0、△=1筹吐、△=2的三種組合方式的池化結(jié)果糖耸,分別送入網(wǎng)絡(luò)的下一層。這樣的話丘薛,網(wǎng)絡(luò)在最后輸出的時候嘉竟,就會出現(xiàn)3種預(yù)測結(jié)果了。

前面所述是一維的情況洋侨,如果是2維圖片的話舍扰,那么(△x,△y)就會有9種取值情況(3*3);如果我們在做圖片分類的時候希坚,在網(wǎng)絡(luò)的某一個池化層加入了這種offset 池化方法妥粟,然后把這9種池化結(jié)果,分別送入后面的網(wǎng)絡(luò)層吏够,最后的圖片分類輸出結(jié)果就可以得到9個預(yù)測結(jié)果(每個類別都可以得到9種概率值勾给,然后我們對每個類別的9種概率,取其最大值锅知,做為此類別的預(yù)測概率值)播急。

算法原理:

文獻(xiàn)中的算法,就是把這兩種思想結(jié)合起來售睹,形成了文獻(xiàn)最后測試階段的算法桩警。

1、論文的網(wǎng)絡(luò)架構(gòu)與訓(xùn)練階段

(1)網(wǎng)絡(luò)架構(gòu)

對于網(wǎng)絡(luò)的結(jié)構(gòu)昌妹,文獻(xiàn)給出了兩個版本——快速版捶枢、精確版握截,一個精度比較高但速度慢;另外一個精度雖然低但是速度快烂叔。下面是高精度版本的網(wǎng)絡(luò)結(jié)構(gòu)表相關(guān)參數(shù):

表格參數(shù)說明:

網(wǎng)絡(luò)輸入:圖片大小為221px*221px谨胞;

網(wǎng)絡(luò)結(jié)構(gòu)方面基本上和AlexNet相同,使用了ReLU激活蒜鸡,最大池化胯努。不同之處在于:(a)作者沒有使用局部響應(yīng)歸一化層;(b)然后也沒有采用重疊池化的方法逢防;(c)在第一層卷積層叶沛,stride作者是選擇了2,這個與AlexNet不同(AlexNet選擇的跨步是4忘朝,在網(wǎng)絡(luò)中灰署,如果stride選擇比較大得話,雖然可以減少網(wǎng)絡(luò)層數(shù)局嘁,提高速度氓侧,但是卻會降低精度)。

需要注意的是把f7這一層导狡,看成是卷積核大小為5*5的卷積層,總之就是需要把網(wǎng)絡(luò)看成前面所述的FCN模型偎痛,去除了全連接層的概念旱捧,因為在測試階段可不是僅僅輸入221*221這樣大小的圖片,在測試階段要輸入各種大小的圖片踩麦,具體請看后面測試階段的講解枚赡。

(2)網(wǎng)絡(luò)訓(xùn)練

訓(xùn)練輸入:對于每張原圖片為256*256,然后進(jìn)行隨機(jī)裁剪為221*221的大小作為CNN輸入谓谦,進(jìn)行訓(xùn)練贫橙。

優(yōu)化求解參數(shù)設(shè)置:訓(xùn)練的min-batchs選擇128,權(quán)重初始化選擇高斯分布的隨機(jī)初始化:

然后采用隨機(jī)梯度下降法反粥,進(jìn)行優(yōu)化更新卢肃,動量項參數(shù)大小選擇0.6,L2權(quán)重衰減系數(shù)大小選擇10-5次方才顿。學(xué)習(xí)率初始化值為0.05莫湘,根據(jù)迭代次數(shù)的增加,每隔幾十次的迭代后郑气,就把學(xué)習(xí)率的大小減小一半幅垮。

然后就是DropOut,這個只有在最后的兩個全連接層尾组,才采用dropout忙芒,dropout比率選擇0.5示弓。

2、網(wǎng)絡(luò)測試階段

在Alexnet的文獻(xiàn)中呵萨,預(yù)測方法是輸入一張圖片256*256奏属,然后進(jìn)行multi-view裁剪,也就是從圖片的四個角進(jìn)行裁剪甘桑,還有就是一圖片的中心進(jìn)行裁剪拍皮,這樣可以裁剪到5張224*224的圖片。然后把原圖片水平翻轉(zhuǎn)一下跑杭,再用同樣的方式進(jìn)行裁剪铆帽,又可以裁剪到5張圖片。把這10張圖片作為輸入德谅,分別進(jìn)行預(yù)測分類爹橱,在后在softmax的最后一層,求取個各類的總概率窄做,求取平均值愧驱。

然而Alexnet這種預(yù)測方法存在兩個問題:

一方面這樣的裁剪方式,把圖片的很多區(qū)域都給忽略了椭盏,這樣的裁剪方式组砚,剛好把圖片物體的一部分給裁剪掉了;

另一方面掏颊,裁剪窗口重疊存在很多冗余的計算糟红,像上面要分別把10張圖片送入網(wǎng)絡(luò),可見測試階段的計算量還是較大的乌叶。

Overfeat算法:

訓(xùn)練完上面所說的網(wǎng)絡(luò)之后盆偿,在測試階段不再是用一張221*221大小的圖片了作為網(wǎng)絡(luò)的輸入,而是用了6張大小都不相同的圖片准浴,也就是所謂的多尺度輸入預(yù)測事扭,如下表格所示:

當(dāng)網(wǎng)絡(luò)前向傳導(dǎo)到layer 5的時候,就利用了前面所述的FCN乐横、offset pooling這兩種思想的相結(jié)合∏箝希現(xiàn)以輸入一張圖片為例(6張圖片的計算方法都相同),講解layer 5后面的整體過程葡公,具體流程示意圖如下:

步驟一:

對于某個尺度的圖片谈撒,經(jīng)過前五層的卷積后得到特征圖。上圖中特征圖的分辨率是20x23匾南,256個通道啃匿。

步驟二:

對于該特征圖,重復(fù)多次使用非重疊的池化,每次池化的偏置不同溯乒,有行偏置和列偏置夹厌。上圖中偏置池化3次,偏置分別為為(0,1,2)裆悄。這就是offset pooling矛纹,也被稱為fine stride。offset pooling得到的特征圖的維度為6x7x3x3xD光稼,其中6x7是特征圖的分辨率或南,3x3是偏置池化的次數(shù),D是通道數(shù)艾君。上圖中是以1維顯示的采够。

步驟三:

池化后得到的特征圖將被送入分類器。

步驟四:

分類器的輸入是的5x5xD冰垄,輸出是C(類別數(shù))維向量蹬癌。但是offset pooling后得到的特征圖并不是5x5xD,比如上圖中的特征圖大小為6x7xD虹茶,因此分類器以滑動窗口的方式應(yīng)用在特征圖上逝薪,每個滑動窗口經(jīng)過分類器輸出一個C維向量。比如上圖中輸入的6x7xD的特征圖最終得到2x3xC的輸出蝴罪,其中2x3是滑動窗口的個數(shù)董济。

步驟五:

而2x3xC只是一組偏置池化的輸出,總的輸出為2x3x3x3xC要门,將輸出的張量reshape虏肾,得到6x9xC輸出張量。最終輸出分類張量為3d張量暂衡,即兩個分辨率維度 x C維。

然后需要在后面把它們拉成一維向量崖瞭,這樣在一個尺度上狂巢,可以得到一個C*N個預(yù)測值矩陣,每一列就表示圖片屬于某一類別的概率值书聚,并且求取每一列的最大值唧领,作為本尺度的每個類別的概率值。

最后一共用了6種不同尺度(文獻(xiàn)使用了12張雌续,另外6張是水平翻轉(zhuǎn)的圖片)進(jìn)行做預(yù)測斩个,然后把這六種尺度結(jié)果再做一個平均,作為最最后的結(jié)果驯杜。

從上面過程可以看到整個網(wǎng)絡(luò)分成兩部分:layer 1~5這五層稱之為特征提取層受啥;layer 6~output稱之為分類層。

六、定位任務(wù)

用于定位任務(wù)的時候滚局,就把分類層(上面的layer 6~output)給重新設(shè)計一下居暖,把分類改成回歸問題,然后在各種不同尺度上訓(xùn)練預(yù)測物體的bounding box藤肢。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末太闺,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嘁圈,更是在濱河造成了極大的恐慌省骂,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件最住,死亡現(xiàn)場離奇詭異钞澳,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)温学,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門略贮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仗岖,你說我怎么就攤上這事逃延。” “怎么了轧拄?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵揽祥,是天一觀的道長。 經(jīng)常有香客問我檩电,道長拄丰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任俐末,我火速辦了婚禮料按,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卓箫。我一直安慰自己载矿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布烹卒。 她就那樣靜靜地躺著闷盔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪旅急。 梳的紋絲不亂的頭發(fā)上逢勾,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天,我揣著相機(jī)與錄音藐吮,去河邊找鬼溺拱。 笑死逃贝,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盟迟。 我是一名探鬼主播秋泳,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼攒菠!你這毒婦竟也來了迫皱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤辖众,失蹤者是張志新(化名)和其女友劉穎卓起,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凹炸,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戏阅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了啤它。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奕筐。...
    茶點(diǎn)故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖变骡,靈堂內(nèi)的尸體忽然破棺而出离赫,到底是詐尸還是另有隱情,我是刑警寧澤塌碌,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布渊胸,位于F島的核電站,受9級特大地震影響台妆,放射性物質(zhì)發(fā)生泄漏翎猛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一接剩、第九天 我趴在偏房一處隱蔽的房頂上張望切厘。 院中可真熱鬧,春花似錦懊缺、人聲如沸疫稿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽而克。三九已至靶壮,卻和暖如春怔毛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腾降。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工拣度, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓抗果,卻偏偏與公主長得像筋帖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冤馏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容