摘要:這個(gè)像素級(jí)別的圖像分割問(wèn)題被等科學(xué)家解決,這個(gè)框架被稱為。由于圖像分割需要做到像素級(jí),這與邊框分割不同,所以必然導(dǎo)致不準(zhǔn)確。
作者:chen_h
微信號(hào) & QQ:862251340
微信公眾號(hào):coderpai
簡(jiǎn)書地址:https://www.jianshu.com/p/867...
自從?Alex Krizhevsky, Geoff Hinton, and Ilya Sutskever 成為了 ImageNet 2012 冠軍之后,CNN 已經(jīng)變成了圖像分割的標(biāo)配。實(shí)際上,從那時(shí)起,CNN 已經(jīng)在 ImageNet 挑戰(zhàn)上面戰(zhàn)勝了人類。
雖然這些分類結(jié)果令人印象深刻,但是比真實(shí)的人類視覺(jué)理解還是要簡(jiǎn)單很多。
在分類中,通常我們會(huì)把圖像中一個(gè)單一對(duì)象作為分類焦點(diǎn),也就是說(shuō)主要去識(shí)別焦點(diǎn)的物體(比如上面的狗狗)。但是,當(dāng)我們環(huán)顧我們周圍世界的時(shí)候,我們面對(duì)的是一個(gè)更加復(fù)雜的問(wèn)題。
我們看到場(chǎng)景是一個(gè)非常復(fù)雜的場(chǎng)景,而且是多個(gè)目標(biāo)進(jìn)行重疊的背景,我們不僅需要分類這些不同的對(duì)象,而且需要識(shí)別他們的邊界和彼此的關(guān)聯(lián)。
CNN 可以幫助我們實(shí)現(xiàn)這樣復(fù)雜的任務(wù)嗎?也就是說(shuō),我們給出更復(fù)雜的圖像,可以利用 CNN 來(lái)識(shí)別圖像中的不同物體之間的邊界嗎?這個(gè)問(wèn)題,在過(guò)去幾年里,已經(jīng)由 Ross Girshick 和他的同事向我們證明了,答案是肯定的。
這篇文章的目標(biāo)通過(guò)這篇文章,我們將介紹一些用于對(duì)象檢測(cè)和分割的主要技術(shù)手段,并且了解他們是如何從上一個(gè)模型演變到下一個(gè)模型的。具體來(lái)說(shuō),我們將介紹 R-CNN(Regional CNN),一個(gè)最早利用CNN解決這個(gè)問(wèn)題的模型,以及其后期的 Fast R-CNN 模型和 Faster R-CNN 模型。最后,我們將介紹 Mask R-CNN 模型,這個(gè)模型是由 Facebook Research 最近發(fā)布的一篇文章,這篇文章提供了像素級(jí)別的分割。以下是各個(gè)模型的文章:
R-CNN:?https://arxiv.org/abs/1311.2524
Fast R-CNN:?https://arxiv.org/abs/1504.08083
Faster R-CNN:?https://arxiv.org/abs/1506.01497
Mask R-CNN:?https://arxiv.org/abs/1703.06870
2014: R-CNN - An Early Application of CNNs to Object Detection.](http://upload-images.jianshu....
受 Hinton 實(shí)驗(yàn)室的啟發(fā),UCB 的 Jitendra Malik 的團(tuán)隊(duì)問(wèn)了這樣一個(gè)問(wèn)題:
對(duì)象檢測(cè)到底能如何泛化?
對(duì)象檢測(cè)是找到圖像中的不同對(duì)象并且進(jìn)行分類的任務(wù)(如上圖所示)。由 Ross Girshick,Jeff Donahue 和 Trevor Darrel 組成的團(tuán)隊(duì)發(fā)現(xiàn)這個(gè)問(wèn)題可以用 Krizhevsky 的方法在 PASCAL VOC Challenge 上面進(jìn)行實(shí)現(xiàn),他們寫道:
本文首先顯示,與基于 HOG 類特征的簡(jiǎn)單系統(tǒng)相比,CNN 可以顯著提高 PASCAL VOC 上的對(duì)象檢測(cè)性能。
現(xiàn)在讓我們來(lái)了解一下 R-CNN 的架構(gòu),以及它是如何工作的。
理解 R-CNNR-CNN 模型的目標(biāo)是根據(jù)拍攝的圖像,正確識(shí)別圖像中主要對(duì)象(通過(guò)邊框)的位置。
輸入:image
輸出:物體邊框 + 每個(gè)對(duì)象的標(biāo)簽
但是我們?nèi)绾握页鲞@些邊框的位置呢?R-CNN 的做法就是按照人類的直觀理解來(lái)做的 —— 我們先從圖像里把一些物體給框出來(lái),然后來(lái)確定這個(gè)物體是什么對(duì)象。
R-CNN 使用一種稱為選擇性搜索的技術(shù)來(lái)創(chuàng)建這些邊界框,更多的細(xì)節(jié)你可以閱讀這篇文章。更高層次來(lái)說(shuō),選擇性搜索(如上圖所示)是通過(guò)不同大小的窗口來(lái)查看圖像,并且對(duì)于每個(gè)大小不同的窗口,嘗試通過(guò)文理,顏色或強(qiáng)度將相鄰像素分組在一起以識(shí)別對(duì)象。
一旦這些邊框確定之后,R-CNN 就會(huì)將該區(qū)域轉(zhuǎn)變到一個(gè)標(biāo)準(zhǔn)的平方尺寸,并將其傳送到 AlexNet 的一個(gè)變體中,如上圖所示。
在 CNN 的最后一層,R-CNN 添加了一個(gè)支持向量機(jī)(SVM),它簡(jiǎn)單的分類這是否是一個(gè)對(duì)象,也就是圖中的第四步。
改進(jìn)邊界框現(xiàn)在,我們已經(jīng)獲得了物體的大致邊框,那么我們可以將這個(gè)邊框縮小以適應(yīng)物體本身真實(shí)的尺寸嗎?答案是可以的,這是 R-CNN的最后一步。R-CNN 對(duì)區(qū)域進(jìn)行一個(gè)簡(jiǎn)單的線性回歸,以生成更緊密的邊界框坐標(biāo)以獲得結(jié)果。以下是回歸模型的輸入和輸出:
輸入:與物體對(duì)應(yīng)圖像的子區(qū)域。
輸出:子區(qū)域中對(duì)象的新邊界框坐標(biāo)。
最后,總結(jié)一下 R-CNN 的幾個(gè)步驟:
給圖像生成一組邊界框。
通過(guò)預(yù)先訓(xùn)練的 AlexNet 運(yùn)行邊框中的圖像,最后通過(guò) SVM 來(lái)進(jìn)行分類。
一旦對(duì)象被分類,邊界框通過(guò)運(yùn)行線性回歸模型輸出更加緊密的邊框坐標(biāo)。
2015: Fast R-CNN - Speeding up and Simplifying R-CNNR-CNN 可以很好的工作,但是基于以下幾個(gè)理由,它非常慢:
‘
’它需要 CNN(AlexNet)針對(duì)每個(gè)圖像區(qū)域進(jìn)行運(yùn)行分類(每個(gè)圖像大約 2000 次前向傳遞)。
它需要分別訓(xùn)練三種不同的模型 —— CNN生成圖像特征,SVM來(lái)預(yù)測(cè)分類,最后通過(guò)線性回歸來(lái)收緊邊界框。這樣設(shè)計(jì)使得數(shù)據(jù)管道非常難設(shè)計(jì)。
2015年,R-CNN 的第一作者 Ross Girshick 解決了這兩個(gè)問(wèn)題,也就誕生了第二個(gè)算法 —— Fast R-CNN?,F(xiàn)在,讓我們來(lái)看看它的主要思路:
Fast R-CNN Insight 1: RoI (Region of Interest) Pooling對(duì)于 CNN 的前向傳播,Girshick 意識(shí)到,對(duì)于每個(gè)圖像,圖像的許多分割區(qū)域都是重疊的,這就使得我們一次又一次地運(yùn)行相同的 CNN 計(jì)算(大約 2000 次)。他的想法很簡(jiǎn)單,就是讓CNN運(yùn)行一次圖像,然后找到一種共享計(jì)算的方法,來(lái)區(qū)分這 2000 個(gè)區(qū)域。
這正是 Fast R-CNN 被稱之為 PolPool(Region of Interest Pooling)的核心技術(shù),該技術(shù)能分享 CNN 在其次區(qū)域的前向傳遞。在上圖中,請(qǐng)注意每個(gè) CNN 特征圖是從一個(gè)原來(lái)的大特征圖中進(jìn)行選取的。然后,區(qū)域中的特征都被進(jìn)行合并(一般是采用最大池)。所以需要我們計(jì)算的是一個(gè)原始圖片,而不是那個(gè) 2000 次區(qū)域。
Fast R-CNN Insight 2: Combine All Models into One NetworkFast R-CNN 的第二個(gè)改進(jìn)是在單一模型中同時(shí)訓(xùn)練了 CNN,分類器和邊界回歸。早期的模型我們使用 CNN 來(lái)進(jìn)行圖像特征提取,SVM 來(lái)進(jìn)行分類,最后用線性回歸來(lái)進(jìn)行邊框收緊。Fast R-CNN 使用一個(gè)模型來(lái)同時(shí)達(dá)到這三個(gè)模型的效果。
上圖展示的就是這個(gè)聯(lián)合模型。Fast R-CNN 用 CNN 頂部的 softmax 層來(lái)替代 SVM 分類器的輸出分類。它還添加了與 softmax 層平行的線性回歸層用來(lái)輸出邊界框坐標(biāo)。這樣,所有我們需要模型的輸出都是來(lái)自于單一的網(wǎng)絡(luò)。整個(gè)網(wǎng)絡(luò)模型的輸入和輸出如下:
輸入:帶有區(qū)域目的的圖像。
輸出:每個(gè)區(qū)域的對(duì)象分類以及更緊密的邊界框。
2016: Faster R-CNN - Speeding Up Region Proposal即使取得了這些進(jìn)步,F(xiàn)ast R-CNN 仍然存在一個(gè)瓶頸 —— 區(qū)域檢測(cè)。正如我們所看到的,檢測(cè)對(duì)象位置的第一步是產(chǎn)生一對(duì)潛在的邊界框和區(qū)域進(jìn)行測(cè)試。在 Fast R-CNN 中,這些邊界框是采用選擇性搜索創(chuàng)建的,這是一個(gè)相當(dāng)緩慢的過(guò)程,被認(rèn)為是整個(gè)流程額瓶頸。
在2015年中期,一個(gè)微軟研究員的團(tuán)隊(duì) Shaoqing Ren,Kaiming He,Ross Girshick 和 Jian Sun,找到了一個(gè)方法來(lái)解決這個(gè)瓶頸問(wèn)題,他們將這個(gè)方法命名為 Faster R-CNN。
Faster R-CNN 的一個(gè)重大改進(jìn)是,在 CNN 第一步分類的時(shí)候,后續(xù)步驟重用那些相同的 CNN 結(jié)構(gòu),而不是多帶帶運(yùn)行選擇性搜索算法。
的確,這正是 Faster R-CNN 團(tuán)隊(duì)所取得的成就。在上圖中,你可以看到如何使用單個(gè) CNN 來(lái)對(duì)區(qū)域進(jìn)行處理和分類。這樣,我們只需要一個(gè) CNN 進(jìn)行訓(xùn)練,而其他的區(qū)域都可以從這個(gè) CNN 網(wǎng)絡(luò)中獲取,作者這樣寫道:
我們的觀測(cè)結(jié)果是,用于區(qū)域檢查(如 Fast R-CNN)的卷積特征圖也可以用于區(qū)域生成,從而實(shí)現(xiàn)幾乎無(wú)成本的區(qū)域生成。
一下是其模型的輸入和輸出:
輸入:圖像(注意不需要區(qū)域提案)。
輸出:圖像中對(duì)象的分類和邊界框坐標(biāo)。
如何生成區(qū)域接下來(lái),讓我們來(lái)看看 Faster R-CNN 是如何從 CNN 特征圖中來(lái)生成區(qū)域。Faster R-CNN 在網(wǎng)絡(luò)上添加了一個(gè)完全卷積網(wǎng)絡(luò),創(chuàng)建了一個(gè)所謂的區(qū)域生成網(wǎng)絡(luò)。
區(qū)域生成網(wǎng)絡(luò)通過(guò)在 CNN 特征圖上面的滑動(dòng)窗口,并在每個(gè)窗口中輸出 k 個(gè)潛在的邊界框和分?jǐn)?shù),以便預(yù)測(cè)哪些框是最好的。那么,k 個(gè)框是代表什么呢?
直觀地,我們知道圖像中的對(duì)象應(yīng)該符合某些常見(jiàn)的比例和大小。例如,我們知道我們想要的一些類似于人類形狀的邊框比例和大小。同樣,我們知道我們看到的很多的盒子厚度都不會(huì)很薄。以這種方式,我們可以創(chuàng)建 k 個(gè)這樣的盒子,我們稱之為錨盒(anchor boxes)。對(duì)于每個(gè)這樣的錨盒,我們?cè)趫D像中輸出一個(gè)邊界框和每個(gè)位置的得分。
考慮到這些錨盒,我們來(lái)看看這個(gè)區(qū)域生成網(wǎng)絡(luò)的輸入和輸出:
輸入:CNN 特征圖。
輸出:每個(gè)錨盒對(duì)應(yīng)的邊界框和該邊界框中圖像會(huì)是某個(gè)對(duì)象的可能性分?jǐn)?shù)。
然后,我們將每個(gè)這樣的可能對(duì)象邊界框傳遞到 Fast R-CNN 中,以生成分類結(jié)果和收緊邊界框。
2017: Mask R-CNN - Extending Faster R-CNN for Pixel Level Segmentation到目前為止,我們已經(jīng)看到我們?nèi)绾问褂?CNN 特征圖去有效地定位圖像中不同對(duì)象的邊界框。
我們可以將這些技術(shù)進(jìn)一步擴(kuò)展,并定位每個(gè)對(duì)象的精確像素,而不是僅限于邊框。這個(gè)像素級(jí)別的圖像分割問(wèn)題被 Kaiming He 等科學(xué)家解決,這個(gè)框架被稱為 Mask R-CNN。
Fast R-CNN 和 Faster R-CNN 都能很好的工作,那么我們能不能將模型進(jìn)行擴(kuò)展,使得他們?cè)谙袼丶?jí)別進(jìn)行分割?
Mask R-CNN 通過(guò)向 Faster R-CNN 添加一個(gè)分支來(lái)輸出一個(gè)二進(jìn)制掩碼,說(shuō)明給定像素是否是對(duì)象的一部分。如上所述,分支(在上圖中的白色部分)僅僅是基于 CNN 特征圖的完全卷積網(wǎng)絡(luò),一下是它的輸入和輸出:
輸入:CNN特征圖
輸出:在像素屬于對(duì)象的所有位置上標(biāo)記為 1,其他地方標(biāo)記為 0(這個(gè)稱為二進(jìn)制掩碼)。
但是 Mask R-CNN 的作者不得不對(duì)模型進(jìn)行一個(gè)小的調(diào)整,使這個(gè)管道可以按預(yù)期工作。
RoiAlign - Realigning RoIPool to be More Accurate我們需要對(duì)原始的 Faster R-CNN 架構(gòu)進(jìn)行修改,Mask R-CNN 的作者發(fā)現(xiàn) RoIPool 選擇的特征圖的區(qū)域與原始圖形的區(qū)域略有一點(diǎn)不對(duì)氣。由于圖像分割需要做到像素級(jí),這與邊框分割不同,所以必然導(dǎo)致不準(zhǔn)確。
作者可以通過(guò)巧妙的調(diào)整 RoIPool 網(wǎng)絡(luò)來(lái)解決這個(gè)問(wèn)題,調(diào)整好的模型被稱為 RoIAlign。
想象一下,我們有一個(gè)大小為 128128 的圖像和大小為 2525 的特征圖。讓我們想象一下,我們想要的是與原始圖像中左上角 15*15 像素對(duì)應(yīng)的區(qū)域(見(jiàn)上文),那么我們?nèi)绾螐奶卣鲌D中選取出這些像素呢?
我們知道原始圖像中的每個(gè)像素對(duì)應(yīng)于特征圖中大約 25/128 像素。要從原始圖像中選擇 15 像素,所以我們只是選擇了 15*25/128 ~= 2.93 像素。
在 RoIPool 中,我們會(huì)將小數(shù)點(diǎn)舍去,從而選擇 2 個(gè)像素,這樣就會(huì)導(dǎo)致輕微的錯(cuò)位。然而,在 RoIAlign 中,我們避免了這種四舍五入。相反的,我們使用雙線性差值來(lái)精確地了解像素 2.93 中的所有內(nèi)容。這在很大程度上讓我們避免 RoIPool 所造成的錯(cuò)位。
一旦這些掩碼生成,Mask R-CNN 將它們與來(lái)自 Faster R-CNN 的分類和邊界框組合起來(lái),以產(chǎn)生如此奇妙的精確分割:
代碼如果你有興趣自己嘗試這些算法,這里有一些相關(guān)的庫(kù):
Faster R-CNNCaffe:?https://github.com/rbgirshick/py-faster-rcnn
PyTorch:?https://github.com/longcw/faster_rcnn_pytorch
MatLab:?https://github.com/ShaoqingRen/faster_rcnn
Mask R-CNNPyTorch:?https://github.com/felixgwu/mask_rcnn_pytorch
TensorFlow:?https://github.com/CharlesShang/FastMaskRCNN
作者:chen_h
微信號(hào) & QQ:862251340
簡(jiǎn)書地址:https://www.jianshu.com/p/867...
CoderPai 是一個(gè)專注于算法實(shí)戰(zhàn)的平臺(tái),從基礎(chǔ)的算法到人工智能算法都有設(shè)計(jì)。如果你對(duì)算法實(shí)戰(zhàn)感興趣,請(qǐng)快快關(guān)注我們吧。加入AI實(shí)戰(zhàn)微信群,AI實(shí)戰(zhàn)QQ群,ACM算法微信群,ACM算法QQ群。長(zhǎng)按或者掃描如下二維碼,關(guān)注 “CoderPai” 微信號(hào)(coderpai)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/41156.html
摘要:自從和在年贏得了的冠軍,卷積神經(jīng)網(wǎng)絡(luò)就成為了分割圖像的黃金準(zhǔn)則。事實(shí)上,從那時(shí)起,卷積神經(jīng)網(wǎng)絡(luò)不斷獲得完善,并已在挑戰(zhàn)上超越人類?,F(xiàn)在,卷積神經(jīng)網(wǎng)絡(luò)在的表現(xiàn)已超越人類。 卷積神經(jīng)網(wǎng)絡(luò)(CNN)的作用遠(yuǎn)不止分類那么簡(jiǎn)單!在本文中,我們將看到卷積神經(jīng)網(wǎng)絡(luò)(CNN)如何在圖像實(shí)例分割任務(wù)中提升其結(jié)果。自從 Alex Krizhevsky、Geoff Hinton 和 Ilya Sutskever ...
摘要:從標(biāo)題上可以看出,這是一篇在實(shí)例分割問(wèn)題中研究擴(kuò)展分割物體類別數(shù)量的論文。試驗(yàn)結(jié)果表明,這個(gè)擴(kuò)展可以改進(jìn)基準(zhǔn)和權(quán)重傳遞方法。 今年10月,何愷明的論文Mask R-CNN摘下ICCV 2017的較佳論文獎(jiǎng)(Best Paper Award),如今,何愷明團(tuán)隊(duì)在Mask R-CNN的基礎(chǔ)上更近一步,推出了(以下稱Mask^X R-CNN)。這篇論文的第一作者是伯克利大學(xué)的在讀博士生胡戎航(清華...
摘要:目前目標(biāo)檢測(cè)領(lǐng)域的深度學(xué)習(xí)方法主要分為兩類的目標(biāo)檢測(cè)算法的目標(biāo)檢測(cè)算法。原來(lái)多數(shù)的目標(biāo)檢測(cè)算法都是只采用深層特征做預(yù)測(cè),低層的特征語(yǔ)義信息比較少,但是目標(biāo)位置準(zhǔn)確高層的特征語(yǔ)義信息比較豐富,但是目標(biāo)位置比較粗略。 目前目標(biāo)檢測(cè)領(lǐng)域的深度學(xué)習(xí)方法主要分為兩類:two stage的目標(biāo)檢測(cè)算法;one stage的目標(biāo)檢測(cè)算法。前者是先由算法生成一系列作為樣本的候選框,再通過(guò)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行樣本...
摘要:近日,開(kāi)源了和的實(shí)現(xiàn)基準(zhǔn)。是商湯和港中文近日聯(lián)合開(kāi)源的基于的開(kāi)源目標(biāo)檢測(cè)工具包。你也可以配置你自己的到數(shù)據(jù)集的路徑。 近日,F(xiàn)acebook AI Research 開(kāi)源了 Faster R-CNN 和 Mask R-CNN 的 PyTorch 1.0 實(shí)現(xiàn)基準(zhǔn):MaskRCNN-Benchmark。相比 Detectron 和 mmdetection,MaskRCNN-Benchmark ...
摘要:近幾年來(lái),目標(biāo)檢測(cè)算法取得了很大的突破。本文主要講述算法的原理,特別是算法的訓(xùn)練與預(yù)測(cè)中詳細(xì)細(xì)節(jié),最后將給出如何使用實(shí)現(xiàn)算法。但是結(jié)合卷積運(yùn)算的特點(diǎn),我們可以使用實(shí)現(xiàn)更高效的滑動(dòng)窗口方法。這其實(shí)是算法的思路。下面將詳細(xì)介紹算法的設(shè)計(jì)理念。 1、前言當(dāng)我們談起計(jì)算機(jī)視覺(jué)時(shí),首先想到的就是圖像分類,沒(méi)錯(cuò),圖像分類是計(jì)算機(jī)視覺(jué)最基本的任務(wù)之一,但是在圖像分類的基礎(chǔ)上,還有更復(fù)雜和有意思的任務(wù),如目...
閱讀 3407·2021-11-22 15:22
閱讀 2386·2021-09-06 15:00
閱讀 886·2020-06-22 14:39
閱讀 3716·2019-08-30 15:56
閱讀 1550·2019-08-30 12:55
閱讀 3290·2019-08-29 17:19
閱讀 3239·2019-08-26 11:41
閱讀 625·2019-08-23 17:14