2017CS231n李飛飛深度視覺識別筆記(十一)——圖像識別和分割

第十一講 圖像識別和分割

    上一章中講到使用循環神經網絡來解決問題,同時也看到這個網絡結構在很多方面的應用;目前爲止談論最多的是分類問題,這一章中我們在基於計算機視覺的主題上將討論目標檢測、圖像分割等內容。

    首先是語義分割,然後分類和定位,最後討論目標檢測及實例分割。

課時1 分割

    我們希望輸入圖像,並對圖像中每個像素做分類,對於每個像素,確定它屬於貓、草地、天空或者背景亦或者其他分類,首先確定分類,就像做圖像分類一樣,不過現在不能簡單地分一類給整個圖像,希望能爲每個像素產生一個分類類標,這就叫語義分割。

    語義分割並不區分同類目標,例如下圖中的兩頭牛並排站立,解決這個問題的時候是爲每個像素分類;而在之前的例子中,輸出並不能區分結果,也就是說不會區分這兩頭牛。

    語義分割可能僅通過分類實現,這就是問題所在,可以用滑動窗口來實現語義分割,可以想象用輸入圖像將其打碎爲許多小的、局部的圖像塊,如下:

    可以用這些小塊做分類,但這只能在一定程度上起到作用,並不是完美的解決方案,並且這個方法的計算複雜度很高。

另一個方法是全連接卷積網絡,不僅是從圖像中提取各個圖像塊並且分類,還可以把網絡當成很多的卷積堆疊在一起。

    但是如果有比如64或128甚至256個卷積通道,這樣運行卷積層在這樣高的清晰度逐層訓練,可想而知計算量很大會很耗內存;所以我們會在圖像內做下采樣,之後對特徵做上採樣,與其全部卷積基於整個圖像的全維度,僅僅對一部分的卷積層做原清晰度處理,下采樣用包括最大池化或跨卷積。

    討論過了下采樣,那麼怎麼進行上採樣呢?

    其中一個方法是去池化,上採樣做的是最近距離去池化或者釘牀函數去池化:

    問題:爲什麼做分割?

    答:希望基於像素預測結果儘可能好,想要找到邊界讓這些細節體現在預測中,如果做最大池化,這種不均勻性會凸顯出來,在特徵圖中,由於最大池化在低清晰度中看不到,會丟失一些空間信息,所以講向量去池化,它能幫助我們很好的處理細節,幫助我們存儲空間信息。

    另一個要關注的是轉置卷積的概念:

    跨卷積就是一種可學習的層,可學習如何下采樣針對某一層來做;類比一下叫轉置卷積的層,可以用它來做上採樣,既上採樣特徵圖又能學習權重,這就是另一種卷積的方式。

    跨卷積的過程如下:

    跨卷積的定義是不依次向下放置過濾單元,而是每隔兩個像素單元做一次,在輸入中,卷積核每次移動一格,輸出也這樣;所以一個比值爲輸入中移動距離和輸出中移動距離的比。

    轉置卷積的過程如下:

    它正好相反,轉置卷積不做內乘,而是取特徵池的輸入值,用這個值乘以卷積核,以3*3的區域的方式複製這些值作爲輸出。

    從一維的角度看卷積轉置,如果做3*1的一維轉置卷積,可以看到輸出是對輸入的加權,依次去下移輸出中的加權卷積核,跨度爲2,最後對的輸出中的感受野重疊部分進行疊加。

 

課時2 定位

    接下來我們要討論的問題是圖像分類和定位,剛剛已經談到過了圖像分類,做的是給輸入圖像分類標籤,但有時候也想知道更多關於圖像的事,除了預測分類,也想知道圖像中內容的定位問題。

    定位的情況是提前知道會有一個或幾個物體是需要找的,但是預先知道要對這個圖像做分類決策,只產生一個邊界,這個邊界告訴我們物體在圖像中的哪裏。

    預測圖像中固定幾個點的位置的想法可以應用到除分類與定位的其他問題上,比如姿態估計。

    如下圖中,拿一張人像作爲輸入圖片,想輸出這個人的關節在圖中的點位,這樣一來就可以在網絡中預測這個人的姿態:

    輸入這張人像後,將輸出14個關節點的參數,逐一給出14個關節點的x、y座標,然後用迴歸損失(通常是L2損失)來評估這14個點的表現,運用反向傳播方法再次訓練這個網絡。

 

課時3 識別

    下一個要討論的是對象識別,可以說這在計算機視覺領域佔據核心地位。

    對象識別主要研究是一開始有固定幾個類別,比如貓、狗或其他種類,任務是根據輸入的圖像,每當在圖像中出現其中一類對象時,圍繞對象劃定一個框並預測該對象從屬的類別,因爲不知道圖像中有多少個對象,所以這個問題是很有挑戰性的。

    下圖是對象識別進程:

    可以看到在深度學習應用於圖像識別時,性能水平迅速提高,而如今的識別準確率已經超過了80%。

    根據圖片中對象的數目不同。所需要的參數也是不一樣的,如下圖所示:

    因此,如果把對象識別等同於迴歸問題考慮會非常棘手,嘗試用滑動窗口的方法,類似於圖像分割中的將圖像劃分爲小塊一樣,也可以將其應用到對象識別中去;將圖像切分爲小塊,然後輸入到神經網絡中,之後網絡會對輸入的圖塊進行分類決策。

    問題在於如何選擇圖塊,因爲圖像裏的對象數量是不定的,並且它們可能在任何位置,擁有任意尺寸,以任意比例出現,如果想用蠻力,滑動窗口法可能需要測試成千上萬次才能處理這個問題,同時計算的複雜度也會很高。

    所以相應的會用一種叫做候選區域選擇的方法,它更多采用了類似於信號處理、圖像處理等方法來建立候選清單,所以對給定的輸入圖像,候選區域網絡在對象周圍會給出上千個框,這時就可以進行定位,也就是尋找圖像的邊界,劃定閉合的限定框,區域選擇網絡會在輸入圖像中尋找點狀的候選區域,也就是對象可能出現的區域。

    不同於分類網絡在圖像的各個位置和範圍內進行搜索,首先採取候選區域網絡找到物體可能存在的備選區域,再應用卷積神經網絡對這些備選區域進行分類,這樣做比窮盡所有可能位置的位置和範圍要來的更容易一些。

    對於候選區域選擇有一個改進的方法,不再按感興趣區域處理,而是通過一些卷積層,整個圖像去運行,得到整個圖像的高分辨率特徵映射,仍舊要用一些備選區域,但不是固定算法(比如選擇搜索),而是針對備選區域切分圖像的像素,考慮基於備選區域的投影到卷積特徵映射,之後從卷積特徵映射提取屬於備選區域的卷積塊而不是直接截取備選區域,通過對整個圖像進行處理,當有很多小塊時可以重用很多卷積計算。

    需要強調的是在下游有很多全連接層,這些全連接層的輸入應該是固定尺寸的,所以需要對從卷積映射提取出來的圖像塊進行整形;當通過卷積特徵映射得到這些小塊,可以通過全連接層運行這些輸入預測分類結果以及對線性分類的迴歸補償;當訓練這個的時候,在反向傳播階段有一個多任務損失,要在這兩個約束之間取捨,可以基於全局反向傳播同時學習。

    還有一種用於目標檢測的模型,是一種前饋模型;其中一個模型是YOLO,還有一個是SSD。這類模型的思想不是對這些候選框分別進行處理,而是嘗試將其作爲迴歸問題處理,藉助於大型卷積網絡,所有預測一次完成。

    給出輸入圖像,可以將輸入圖像分成網格,在每個單元裏可以想象一系列的基本邊界框,如下圖所示:

    相對每個網格和每個基本邊界框預測幾種目標物體,第一要預測邊界框偏移從而預測出邊界框與目標物體的位置的偏差;第二要預測目標對應類別的分數,所以每個邊界框都會對應一個類別分數,即每個物體出現在邊界框中的可能性有多大。

課時4 物體分割

    Mask R-CNN是用來解決物體分割最好的方法,這個和Faster R-CNN很像,包含了多步處理,取整張輸入圖像送進卷積,網絡中和訓練好的候選框生成網絡,得到訓練好的候選框後,把候選框投射到卷積特徵圖上,但並不是進行分類或迴歸預測邊界框,而是想對每一個候選區域的每個邊界框預測出一個分割區域。

    總結:討論了不同計算機視覺研究主題的大量工作,也看到了大量源於圖像分類任務的結構,可以很容易被應用於解決這些不同的計算機視覺任務

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章