轉:圖像分類、物體檢測、物體分割、實例分割、語義分割

0001,常識1

計算機視覺的任務不少,有圖像分類、目標檢測、語義分割、實例分割和全景分割等,那它們的區別是什麼呢?
一、Image Classification(圖像分類)

圖像分類(下圖左)就是對圖像判斷出所屬的分類,好比在學習分類中數據集有人(person)、羊(sheep)、狗(dog)和貓(cat)四種,圖像分類要求給定一個圖片輸出圖片裏含有哪些分類,好比下圖的例子是含有person、sheep和dog三種。git

 


二、Object detection(目標檢測)

目標檢測(上圖右)簡單來講就是圖片裏面有什麼?分別在哪裏?(把它們用矩形框框住)

目前經常使用的目標檢測算法有Faster R-CNN和基於YOLO的目標檢測的算法
 
三、semantic segmentation(語義分割)

一般意義上的目標分割指的就是語義分割

語義分割(下圖左)就是須要區分到圖中每一點像素點,而不只僅是矩形框框住了。可是同一物體的不一樣實例不須要單獨分割出來。對下圖左,標註爲人,羊,狗,草地。而不須要羊1,羊2,羊3,羊4,羊5等。算法

 



四、Instance segmentation(實例分割)

實例分割(上圖右)其實就是目標檢測和語義分割的結合。相對目標檢測的邊界框,實例分割可精確到物體的邊緣;相對語義分割,實例分割須要標註出圖上同一物體的不一樣個體(羊1,羊2,羊3...)

目前經常使用的實例分割算法是Mask R-CNN。

Mask R-CNN 經過向 Faster R-CNN 添加一個分支來進行像素級分割,該分支輸出一個二進制掩碼,該掩碼錶示給定像素是否爲目標對象的一部分:該分支是基於卷積神經網絡特徵映射的全卷積網絡。將給定的卷積神經網絡特徵映射做爲輸入,輸出爲一個矩陣,其中像素屬於該對象的全部位置用 1 表示,其餘位置則用 0 表示,這就是二進制掩碼。

一旦生成這些掩碼, Mask R-CNN 將 RoIAlign 與來自 Faster R-CNN 的分類和邊界框相結合,以便進行精確的分割:

 
五、Panoramic segmentation(全景分割)

全景分割是語義分割和實例分割的結合。跟實例分割不一樣的是:實例分割只對圖像中的object進行檢測,並對檢測到的object進行分割,而全景分割是對圖中的全部物體包括背景都要進行檢測和分割。api

 

0002,常識2

轉自:https://blog.csdn.net/Gerwels_JI/article/details/82990189markdown

Directions in the CV

  • 物體分割(Object segment)屬於圖像理解範疇。那什麼是圖像理解?Image Understanding (IU) 領域包含衆多sub-domains,如圖像分類、物體檢測、物體分割、實例分割等若干問題。每一個問題研究的範疇是什麼?每一個問題中,各個approach對應的the result of processing是什麼?
  • Image Understanding (IU) is an interdisciplinary approach which fuse computer science, mathematics, engineering science, physics, neurosciences, and cognitive science etc. together.
  • 通常咱們將CV分爲三個大方向:圖像處理、圖像分析、圖像理解。其中圖像理解分爲如下三個部分
  • Image Classification:
    便是將圖像結構化爲某一類別的信息,用事先肯定好的類別(string)或實例ID來描述圖片。其中ImageNet是最權威的測評集,每一年的ILSVRC催生大量優秀的深度網絡結構,爲其餘任務提供基礎,在應用領域,人臉、場景識別均可以視爲分類任務。
  • Detection
    分類任務關心總體,給出的是整張圖片的內容描述,而檢測則關注特定的物體目標,要求得到這一目標的類別信息和位置信息。相比分類,檢測給出的是對圖片前景和背景的理解,咱們須要從背景中分離出感興趣的目標,並肯定這一目標的描述(類別和位置),於是檢測模型的輸出是一個列表,列表的每一項使用一個數據組給出檢出目標的類別和位置,經常使用矩形檢測框的座標表示。
  • Segmentation
    分割包括語義分割(semantic segmentation)和實例分割(instance segmentation),前者是對背景分離的拓展,要求分離開具備不一樣語義的圖像部分,然後者是檢測任務的拓展,要求描述出目標的輪廓(相比檢測框更爲精細)。分割是對圖像的像素級描述,它賦予每一個像素類別意義,適用於理解要求較高的場景,如無人駕駛中對道路和非道路的分割。

後期我會寫CV綜述,此處留坑佔位!
也會對object segmentation的方法進行總結,佔坑!網絡

Image Classification

  • The task of object classification requires binary labels indicating whether objects are present in an image.
  • Definition:Image Classification根據image中不一樣圖像信息中不一樣的feature,把不一樣類別的object region進行分類。
  • 該任務須要咱們對出如今某幅圖像中的物體作標註。
  • 例如:一共有1000個物體類的image中,某個物體要麼有,要麼沒有。可實現:輸入一幅測試圖片,輸出該圖片中物體類別的候選集。以下圖所示,不一樣形狀的圖形,經過分類分紅了8類
    在這裏插入圖片描述

Object localization (目標定位)

  • 在圖像分類的基礎上,咱們還想知道圖像中的目標具體在圖像的什麼位置,一般是以邊界框的(bounding box)形式。
  • 基本思路
  1. 多任務學習,網絡帶有兩個輸出分支。一個分支用於作圖像分類,即全鏈接+softmax判斷目標類別,和單純圖像分類區別在於這裏還另外須要一個「背景」類。另外一個分支用於判斷目標位置,即完成迴歸任務輸出四個數字標記bounding box位置(例如中心點橫縱座標和包圍盒長寬),該分支輸出結果只有在分類分支判斷不爲「背景」時才使用。
  2. 人體位姿定位/人臉定位
    目標定位的思路也能夠用於人體位姿定位或人臉定位。這二者都須要咱們對一系列的人體關節或人臉關鍵點進行迴歸。
  3. 弱監督定位
    因爲目標定位是相對比較簡單的任務,近期的研究熱點是在只有標記信息的條件下進行目標定位。其基本思路是從卷積結果中找到一些較高響應的顯著性區域,認爲這個區域對應圖像中的目標。

Object detection(目標檢測)

  • Detecting an object entails both stating that an object belonging to a specified class is present, and localizing it in the image. The location of an object is typically represented by a bounding box.
  • 理解:object detection=classification+localization
  • 定義:物體探測包含兩個問題,一是判斷屬於某個特定類的物體是否出如今圖中;二是對該物體定位,定位經常使用表徵就是物體的邊界框(bounding box)。
  • 可實現:輸入測試圖片,輸出檢測到的物體類別和位置。以下圖,移動的皮卡丘和恐龍
  • 在這裏插入圖片描述
    在這裏插入圖片描述

語義分割(Semantic Segmentation)

  • The task of labeling semantic objects in a scene requires that each pixel of an image be labeled as belonging to a category, such as sky, chair, floor, street, etc. In contrast to the detection task, individual instances of objects do not need to be segmented.
  • 語義標註(Semantic scene labeling)/分割(segmentation):該任務須要將圖中每一點像素標註爲某個物體類別。同一物體的不一樣實例不須要單獨分割出來。

Instance segmentation

  • instance segment = object detect +semantic segment
  • 相對物體檢測的邊界框,實例分割可精確到物體的邊緣;相對語義分割,實例分割能夠標註出圖上同一物體的不一樣個體
  • 分類任務一般來講就是識別出包含單個對象的圖像是什麼,但在分割實例時,咱們須要執行更復雜的任務。咱們會看到多個重疊物體和不一樣背景的複雜景象,咱們不只須要將這些不一樣的對象進行分類,並且還要肯定對象的邊界、差別和彼此之間的關係!
  • 以下圖所示,把不一樣的實例對象進行了分割,並用不一樣的顏色進行邊緣標註(而不是邊框標註
    在這裏插入圖片描述

Some examples

綜述

圖像理解領域中的object segmentation方向包括了:image classification、object localization、object detection、semantic segmentation、instance-level segmentation。分類複雜度依次遞增,分類詳細程度依次遞增。架構


  1.  
     
     

0003,常識

計算機視覺(CV)一直是目前深度學習領域最熱的研究領域,其是一種交叉學科包括計算機科學(computer science / (Graphics, Algorithms, Theory, Systems, Architecture)、數學 (Information Retrieval, Machine Learning)、工程學(Robotics, Speech, NLP, Image Processing)、物理(Optics)、生物學 (Neuroscience), and 神經科學 (Cognitive Science),因爲計算機視覺表示了對視覺環境的理解,加上其學科交叉性,衆多科學家認爲計算機視覺的發展能夠爲實現理想的人工智能鋪路。app

對於問題:什麼纔是計算機視覺?如下有三個不一樣的教科書式計算機視覺定義:框架

  1. 「the construction of explicit, meaningful descriptions of physical objects from images」 (Ballard & Brown, 1982)dom

  2. 「computing properties of the 3D world from one or more digital images」 (Trucco & Verri, 1998)性能

  3. 「to make useful decisions about real physical objects and scenes based on sensed images」 (Sockman & Shapiro, 2001)

那麼爲何要研究計算機視覺呢?最簡單的答案就是其能夠將研究快速有效的應用到現實場景中,下面列舉了幾個CV應用的場景:

  • 人臉識別
  • 圖像檢索
  • 遊戲和控制
  • 監控
  • 生物統計(指紋,虹膜,人臉匹配)
  • 智能駕駛

筆者最近完成了斯坦福的CS231課程【1】,課程中將卷積神經網絡用在視覺識別任務中,包括圖像分類,定位和檢測,尤爲是深度學習技術的發展極大的提升了這些任務的精度,完成這個課程後,筆者想和你們分享5個最具影響力的計算機視覺技術。

1. 圖像分類 image classification


這裏寫圖片描述

圖像分類任務描述以下:給定一系列標記爲單標籤的圖像,但願成功預測出未經標記的新的數據的標籤。與這個任務相聯繫的是更多的挑戰:包括:角度多樣性, scale多樣性, 額外新類的變化, 圖像的損壞, 先驗條件, 和背景的變化。
so,如何才能設計一個算法分類出不一樣的類,計算機視覺研究者提出以數據爲驅動的解決方法,令計算機從一些已經有類別標記的圖像中學習到圖像的視覺表示。
而在這個算法中最經常使用的就是卷積神經網絡了,Convolutional Neural Networks (CNNs)。輸入圖像到CNN網絡中後,CNN並非直接對整個圖像作計算,而是建立一個滑動機制,假設先輸入圖像中10*10的pixel,以相乘的計算方式計算,乘數部分紅爲卷積核,而後從左到右進行滑動,計算接下來的10*10pixel,這就是CNN中的滑動窗口計算機制
這裏寫圖片描述
輸入數據輸入卷積層後,卷積層中卷積核僅關注當前部分和它附近的部分。總體的卷積網絡趨向於更窄以便於在相同參數量的狀況下搭建更深的網絡。除了卷積層以外,在分類中常使用的還有池化層pooling layer,最多見的是最大池化 Max pooling,假設maxpooling的pooling核是2,maxpooling 的工做機制是取2x2大小的像素塊中的最大值代替這個像素塊。
圖像分類最典型的數據集是imagenet,一個包含120萬張,1000類的大型圖像數據集。以此數據集爲基礎,衍生了許多典型的深度學習經典網絡:

  • AlexNet(2012)
  • ZFNet(2013)
  • VGG(2014)
  • GoogleNet(2014)
  • InceptionNet(2015)
  • ResNet(2016)
  • DenseNet(2016)

圖像分類任務雖然簡單,應用範圍也有限,可是其是計算視覺的基礎,圖像分類上的成功代表深度學習網絡具備學習並理解圖像的能力。目前計算機視覺的其餘任務使用的basemodel都是在image classification上取得成功的網絡結構。所以,能夠把圖像分類視爲深度學習實現人工智能的第一步。
注:貌似16年日後,基本沒有革新性質的網絡結構出現了,/手動笑哭/。

2. 目標檢測 object detection


這裏寫圖片描述

object detection的任務是檢測到圖像中的目標並分類出目標種類,如上圖所示,檢測出車並框住,並給出框中目標的置信度,固然上圖並非目前深度學習最好的結構,圖中有兩個漏檢測的目標。
目標檢測與圖像分類,目標定位不一樣的地方在於目標檢測是同時應用分類和定位技術到圖像中的多個目標,此類任務的label也更復雜,不只要知道目標的位置(bounding box)還要知道目標的類別,並且爲了檢測到比較小的目標,提升檢測精度,此類任務的batch size每每很小。

目標檢測的技術實現相對複雜,可是應用場景很是多,好比統計:統計人、車、花朵或者微生物的數量是現實生活中各類不一樣類型的使用圖形信息的系統最普遍的需求;圖像檢索,根據圖像檢測圖像;衛星圖像分析;安防場景等等。
這裏寫圖片描述

目前深度學習在這方面的工做有不少:

以上這些都是近幾年來最典型的目標檢測成果,這些工做提供了深度學習技術在目標檢測上的應用形式以及研究方向,目前的大部分較好的結果都是基於這些工做改進而來。

3. 目標追蹤 object tracking


這裏寫圖片描述
目標追蹤便是在一個給定的場景中,follow一個或者多個目標。傳統上,目標追蹤都是應用在視頻或者實時場景交互,好比觀測者追蹤一個初始的目標。目前來說,使用最典型的場景就是自動駕駛了。
目標追蹤能夠分爲兩類:一類是生成式方法,另外一類是判別式方法。生成方法使用生成模型來描述表觀特徵並最小化重建偏差以搜索目標,如PCA。而判別式方法能夠用來區分物體和背景,其性能更穩健,並逐漸成爲跟蹤的主要方法。判別法也被稱爲跟蹤檢測,深度學習屬於這一類別。爲了經過檢測實現跟蹤,咱們檢測全部幀的候選對象,並使用深度學習從候選對象中識別想要的對象。有兩種可使用的基本網絡模型:堆疊自動編碼器(SAE)和卷積神經網絡(CNN)。
使用SAE跟蹤任務的最受歡迎的深度網絡是Deep Learning Tracker,它提出線下預訓練和在線微調網絡,工做流程以下:

  • 離線無監督預先訓練使用大規模天然圖像數據集的堆疊去噪自動編碼器,以得到通常對象的表示。疊加去噪自動編碼器經過在輸入圖像中添加噪聲並重構原始圖像能夠得到更強大的特徵表達能力。
  • 將預先訓練好的網絡的編碼部分與分類器合併獲得分類網絡,而後使用從初始幀中得到的正負樣本對網絡進行微調,從而能夠區分當前的對象和背景。 DLT使用粒子濾波器做爲運動模型來生成當前幀的候選patches。分類網絡輸出這些patches的機率分數,即分類的置信度,而後選擇這些patches中最高的patches做爲目標。
  • DLT使用有限閾值的方式更新模型。
    這裏寫圖片描述

因爲其在圖像分類和目標檢測方面的優點,CNN已成爲計算機視覺和視覺跟蹤的主流深度模型。通常來講,大規模的CNN既能夠做爲分類器也能夠做爲跟蹤器來訓練。 2種有表明性的基於CNN的跟蹤算法是全卷積網絡跟蹤器(FCNT)和多域CNN(MD Net)。
FCNT成功地分析和利用了VGG模型的特徵圖,這是一個預先訓練好的ImageNet,並得出如下結論:

  • CNN feature maps可用於定位和跟蹤。
  • 許多CNN feature maps對於區分背景中的特定對象的任務而言是嘈雜或不相關的。
  • 較高層捕獲對象類別的語義概念,而較低層編碼更多區分性特徵以捕獲類內變體。

所以,FCNT設計了特徵選擇網絡以在VGG網絡的conv4-3和conv5-3層上選擇最相關的特徵圖。而後爲了不嘈雜的過擬合,它還爲兩層單獨選擇的特徵映射設計了額外的兩個通道(稱爲SNet和GNet)。 GNet捕獲對象的類別信息,而SNet將該對象從具備類似外觀的背景中區分出來。兩個網絡都使用第一幀中給定的邊界框進行初始化,以獲取對象的熱圖,而對於新幀,將裁剪並傳播最後一幀中以對象位置爲中心的感興趣區域(ROI)。最後,經過SNet和GNet,分類器獲取兩個預測的熱圖,跟蹤器根據是否存在干擾,決定使用哪一個熱圖來生成最終的跟蹤結果。 FCNT的pipline以下所示。
這裏寫圖片描述

與FCNT的想法不一樣,MD Net使用視頻的全部序列來跟蹤它們的移動。上述網絡使用不相關的圖像數據來減小跟蹤數據的訓練需求,而且這種想法與跟蹤有一些誤差。該視頻中的一個類的對象能夠是另外一個視頻中的背景,所以MD Net提出了多域的思想來獨立地區分每一個域中的對象和背景。而一個域表示一組包含相同類型對象的視頻。

以下圖所示,MD Net分爲兩部分:域特定層的共享層和K分支。每一個分支包含一個softmax損失的二進制分類層,用於區分每一個域中的對象和背景,共享層與全部域共享以確保通常表示。
這裏寫圖片描述

近年來,深度學習研究人員嘗試了不一樣的方法來適應視覺追蹤任務的特徵。有許多方向已經被探索:應用其餘網絡模型,如Recurrent Neural Net和Deep Belief Net,設計網絡結構以適應視頻處理和端到端學習,優化流程,結構和參數,或者甚至將深度學習與計算機視覺的傳統方法或其餘領域的方法(如語言處理和語音識別)相結合。

4. 語義分割  Semantic Segmentation


這裏寫圖片描述
計算機視覺的核心是分割過程,它將整個圖像分紅像素分組,而後能夠對其進行標記和分類。特別地,語義分割試圖在語義上理解圖像中每一個像素的角色(例如,它是汽車,摩托車仍是其餘類型的類)。例如,在上圖中,除了識別人,道路,汽車,樹木等以外,咱們還必須劃定每一個物體的邊界。所以,與分類不一樣,咱們須要從咱們的模型進行像素級的預測。

與其餘計算機視覺任務同樣,CNN在分割問題上取得了巨大成功。最流行的初始方法之一是經過滑動窗口進行patches分類,其中每一個像素使用其周圍的圖像pathes分別分類。可是,這在計算上效率很是低,由於咱們不重用重疊patches之間的共享功能。

加州大學伯克利分校的研究員提出了全卷積網絡(FCN),它在沒有任何徹底鏈接層的狀況下推廣端到端CNN體系結構進行密集預測。這容許針對任何尺寸的圖像生成分割圖,而且與patches分類方法相比也快得多。幾乎全部後續的語義分割方法都採用了這種範式。
這裏寫圖片描述

然而,仍然存在一個問題:原始圖像分辨率的卷積將很是昂貴。爲了解決這個問題,FCN在網絡內部使用下采樣和上採樣。下采樣層被稱爲條帶卷積,而上採樣層被稱爲轉置卷積。

儘管有上採樣/下采樣層,但因爲池中的信息丟失,FCN會生成粗分割圖。 SegNet是一種比使用最大池和編碼器 - 解碼器框架的FCN更高效的內存架構。在SegNet中,從更高分辨率的特徵映射中引入了快捷/跳過鏈接,以改善上採樣/下采樣的粗糙度。
這裏寫圖片描述
最近的語義分割研究都嚴重依賴徹底卷積網絡,如
空洞卷積 https://arxiv.org/pdf/1511.07122.pdf
DeepLab https://arxiv.org/pdf/1412.7062.pdf
RefineNet https://arxiv.org/pdf/1611.06612.pdf

5. 實例分割 Instance Segmentation


這裏寫圖片描述

除了語義分段以外,實例分段還將不一樣的實例分類,例如用5種不一樣顏色標記5輛汽車。在分類中,一般有一個圖像包含單個對象做爲焦點,任務是說出該圖像是什麼。但爲了分割實例,咱們須要執行更復雜的任務。咱們看到多個重疊物體和不一樣背景的複雜景點,咱們不只分類這些不一樣的物體,並且還肯定它們的邊界,差別和彼此之間的關係!

到目前爲止,咱們已經看到了如何以許多有趣的方式使用CNN特徵,以便用bounding box框住圖像中的不一樣對象。咱們能夠擴展這種技術來定位每一個對象的精確像素,而不只僅是邊界框嗎?固然能夠, Facebook AI使用稱爲Mask R-CNN的體系結構研究了此實例分割問題。
這裏寫圖片描述
就像Fast R-CNN和更快的R-CNN同樣,Mask R-CNN的底層直覺很直觀鑑於更快的R-CNN在物體檢測方面的工做如此出色,咱們是否能夠將其擴展到進行像素級分割?

Mask R-CNN經過向Faster R-CNN添加分支來完成此操做,該分支輸出一個二進制掩碼,該掩碼錶示給定像素是否爲對象的一部分。該分支是基於CNN特徵映射的徹底卷積網絡。給定CNN特徵映射做爲輸入,網絡輸出一個矩陣,其中像素屬於該對象的全部位置均爲1,而其餘位置爲0(這稱爲二進制掩碼)。

另外,當在原始Faster R-CNN架構上運行時沒有修改時,由RoIPool(感興趣區域)選擇的特徵映射區域與原始圖像的區域略微錯開。因爲圖像分割須要像素級別的特異性,與邊界框不一樣,這天然會致使不許確。 Mask R-CNN經過調整RoIPool使用稱爲Roialign(感興趣區域對齊)的方法更精確地對齊來解決此問題。本質上,RoIAlign使用雙線性插值來避免舍入錯誤,這會致使檢測和分割不許確。

一旦生成這些蒙版,Mask R-CNN將它們與來自Faster R-CNN的分類和邊界框相結合,以生成如此精確的精確分割:
這裏寫圖片描述

結論


這5種主要的計算機視覺技術能夠幫助計算機從單個或一系列圖像中提取,分析和理解有用的信息。還有許多其餘我還沒有涉及的高級技術,包括樣式轉換,着色,動做識別,3D對象,人體姿式估計等等。事實上,計算機視覺領域的成本過高,沒法深刻報道,我鼓勵您進一步探索,不管是經過在線課程,博客教程仍是正式文檔。我強烈推薦CS231n做爲初學者,由於您將學習實施,訓練和調試本身的神經網絡。做爲獎勵,您能夠從個人GitHub存儲庫中獲取全部演講幻燈片和分配指南。我但願它會引導你改變如何看待這個世界!

參考文獻:

【1】http://cs231n.stanford.edu/

相關文章
相關標籤/搜索