1. 程式人生 > >改變你對世界看法的五大計算機視覺技術!

改變你對世界看法的五大計算機視覺技術!

計算機視覺是當前最熱門的研究之一,是一門多學科交叉的研究,涵蓋電腦科學(圖形學、演算法、理論研究等)、數學(資訊檢索、機器學習)、工程(機器人、NLP等)、生物學(神經系統科學)和心理學(認知科學)。由於計算機視覺表示對視覺環境及背景的相對理解,很多科學家相信,這一領域的研究將為人工智慧行業的發展奠定基礎。

那麼,什麼是計算機視覺呢?下面是一些公認的定義:

  1. 從影象中清晰地、有意義地描述物理物件的結構(Ballard & Brown,1982);

  2. 由一個或多個數字影象計算立體世界的性質(Trucco & Verri,1998);

  3. 基於遙感影象對真實物體和場景做出有用的決定(Sockman & Shapiro,2001);

那麼,為什麼研究計算機視覺呢?答案很明顯,從該領域可以衍生出一系列的應用程式,比如:

  1. 人臉識別:人臉檢測演算法,能夠從照片中認出某人的身份;

  2. 影象檢索:類似於谷歌影象使用基於內容的查詢來搜尋相關影象,演算法返回與3.查詢內容最佳匹配的影象。

  3. 遊戲和控制:體感遊戲;

  4. 監控:公共場所隨處可見的監控攝像機,用來監視可疑行為;

  5. 生物識別技術:指紋、虹膜和人臉匹配是生物特徵識別中常用的方法;

  6. 智慧汽車:視覺仍然是觀察交通標誌、訊號燈及其它視覺特徵的主要資訊來源;

正如斯坦福大學公開課CS231所言,計算機視覺任務大多是基於卷積神經網路完成。比如影象分類、定位和檢測等。那麼,對於計算機視覺而言,有哪些任務是佔據主要地位並對世界有所影響的呢?本篇文章將分享給讀者5種重要的計算機視覺技術,以及其相關的深度學習模型和應用程式。相信這5種技術能夠改變你對世界的看法。

1.影象分類

640?wx_fmt=png&wxfrom=5&wx_lazy=1

影象分類這一任務在我們的日常生活中經常發生,我們習慣了於此便不以為然。每天早上洗漱刷牙需要拿牙刷、毛巾等生活用品,如何準確的拿到這些用品便是一個影象分類任務。官方定義為:給定一組影象集,其中每張影象都被標記了對應的類別。之後為一組新的測試影象集預測其標籤類別,並測量預測準確性。

如何編寫一個可以將影象分類的演算法呢?計算機視覺研究人員已經提出了一種資料驅動的方法來解決這個問題。研究人員在程式碼中不再關心影象如何表達,而是為計算機提供許多很多影象(包含每個類別),之後開發學習演算法,讓計算機自己學習這些影象的特徵,之後根據學到的特徵對影象進行分類。

鑑於此,完整的影象分類步驟一般形式如下:

  1. 首先,輸入一組訓練影象資料集;

  2. 然後,使用該訓練集訓練一個分類器,該分類器能夠學習每個類別的特徵;

  3. 最後,使用測試集來評估分類器的效能,即將預測出的結果與真實類別標記進行比較;

對於影象分類而言,最受歡迎的方法是卷積神經網路(CNN)。CNN是深度學習中的一種常用方法,其效能遠超一般的機器學習演算法。CNN網路結構基本是由卷積層、池化層以及全連線層組成,其中,卷積層被認為是提取影象特徵的主要部件,它類似於一個“掃描器”,通過卷積核與影象畫素矩陣進行卷積運算,每次只“掃描”卷積核大小的尺寸,之後滑動到下一個區域進行相關的運算,這種計算叫作滑動視窗。

640?wx_fmt=png

從圖中可以看到,輸入影象送入卷積神經網路中,通過卷積層進行特徵提取,之後通過池化層過濾細節(一般採用最大值池化、平均池化),最後在全連線層進行特徵展開,送入相應的分類器得到其分類結果。

大多數影象分類演算法都是在ImageNet資料集上訓練的,該資料集由120萬張的影象組成,涵蓋1000個類別,該資料集也可以稱作改變人工智慧和世界的資料集。ImagNet 資料集讓人們意識到,構建優良資料集的工作是 AI 研究的核心,資料和演算法一樣至關重要。為此,世界組織也舉辦了針對該資料集的挑戰賽——ImageNet挑戰賽。

第一屆ImageNet挑戰賽的第一名是由Alex Krizhevsky(NIPS 2012)獲得,採用的方法是深層卷積神經網路,網路結構如下圖所示。在該模型中,採用了一些技巧,比如最大值池化、線性修正單元啟用函式ReLU以及使用GPU模擬計算等,AlexNet模型拉開了深度學習研究的序幕。自從AlexNet網路模型贏得比賽之後,有很多基於CNN的演算法也在ImageNet上取得了特別好的成績,比如ZFNet(2013)、GoogleNet(2014)、VGGNet(2014)、ResNet(2015)以及DenseNet(2016)等。

640?wx_fmt=png

2.目標檢測

640?wx_fmt=png

目標檢測通常是從影象中輸出單個目標的Bounding Box(邊框)以及標籤。比如,在汽車檢測中,必須使用邊框檢測出給定影象中的所有車輛。

之前在影象分類任務中大放光彩的CNN同樣也可以應用於此。第一個高效模型是R-CNN(基於區域的卷積神經網路),如下圖所示。在該網路中,首先掃描影象並使用搜索演算法生成可能區域,之後對每個可能區域執行CNN,最後將每個CNN網路的輸出送入SVM分類器中來對區域進行分類和線性迴歸,並用邊框標註目標。

640?wx_fmt=png

本質上,是將物體檢測轉換成影象分類問題。但該方法存在一些問題,比如訓練速度慢,耗費記憶體、預測時間長等。

為了解決上述這些問題,Ross Girshickyou提出Fast R-CNN演算法,從兩個方面提升了檢測速度:1)在給出建議區域之前執行特徵提取,從而只需在整幅影象上執行一次CNN;2)使用Softmax分類器代替SVM分類器;

640?wx_fmt=png

雖然Fast R-CNN在速度方面有所提升,然而,選擇搜尋演算法仍然需要大量的時間來生成建議區域。為此又提出了Faster R-CNN演算法,該模型提出了候選區域生成網路(RPN),用來代替選擇搜尋演算法,將所有內容整合在一個網路中,大大提高了檢測速度和精度。

640?wx_fmt=png

近年來,目標檢測研究趨勢主要向更快、更有效的檢測系統發展。目前已經有一些其它的方法可供使用,比如YOLO、SSD以及R-FCN等。

3.目標跟蹤

640?wx_fmt=png

目標跟蹤是指在給定場景中跟蹤感興趣的具體物件或多個物件的過程。簡單來說,給出目標在跟蹤視訊第一幀中的初始狀態(如位置、尺寸),自動估計目標物體在後續幀中的狀態。該技術對自動駕駛汽車等領域顯得至關重要。

根據觀察模型,目標跟蹤可以分為兩類:產生式(generative method)和判別式(discriminative method)。其中,產生式方法主要運用生成模型描述目標的表觀特徵,之後通過搜尋候選目標來最小化重構誤差。常用的演算法有稀疏編碼(sparse coding)、主成分分析(PCA)等。與之相對的,判別式方法通過訓練分類器來區分目標和背景,其效能更為穩定,逐漸成為目標跟蹤這一領域的主要研究方法。常用的演算法有堆疊自動編碼器(SAE)、卷積神經網路(CNN)等。

使用SAE方法進行目標跟蹤的最經典深層網路是Deep Learning Tracker(DLT),提出了離線預訓練和線上微調。該方法的主要步驟如下:

  1. 先使用棧式自動編碼器(SDAE)在大規模自然影象資料集上進行無監督離線預訓練來獲得通用的物體表徵能力。

  2. 將預訓練網路的編碼部分與分類器相結合組成分類網路,然後利用從初始幀獲得的正、負樣本對網路進行微調,使其可以區分當前物件和背景。在跟蹤過程中,選擇分類網路輸出得分最大的patch作為最終預測目標。

  3. 模型更新策略採用限定閾值的方法。

640?wx_fmt=png

基於CNN完成目標跟蹤的典型演算法是FCNT和MD Net。

FCNT的亮點之一在於對ImageNet上預訓練得到的CNN特徵在目標跟蹤任務上的效能做了深入的分析:

  1. CNN的特徵圖可以用來做跟蹤目標的定位;

  2. CNN的許多特徵圖存在噪聲或者和物體跟蹤區分目標和背景的任務關聯較小;

  3. CNN不同層提取的特徵不一樣。高層特徵更加抽象,擅長區分不同類別的物體,而低層特徵更加關注目標的區域性細節。

基於以上觀察,FCNT最終提出瞭如下圖所示的模型結構:

  1. 對於Conv4-3和Con5-3採用VGG網路的結構,選出和當前跟蹤目標最相關的特徵圖通道;

  2. 為了避免過擬合,對篩選出的Conv5-3和Conv4-3特徵分別構建捕捉類別資訊GNet和SNet;

  3. 在第一幀中使用給出的邊框生成熱度圖(heap map)迴歸訓練SNet和GNet;

  4. 對於每一幀,其預測結果為中心裁剪區域,將其分別輸入GNet和SNet中,得到兩個預測的熱圖,並根據是否有干擾來決定使用哪個熱圖。

640?wx_fmt=png

區別與FCNT,MD Net使用視訊中所有序列來跟蹤它們的運動。但序列訓練也存在問題,即不同跟蹤序列與跟蹤目標完全不一樣。最終MD Net提出多域的訓練思想,網路結構如下圖所示,該網路分為兩個部分:共享層和分類層。網路結構部分用於提取特徵,最後分類層區分不同的類別。

640?wx_fmt=png

4.語義分割

640?wx_fmt=png

計算機視覺的核心是分割過程,它將整個影象分成畫素組,然後對其進行標記和分類。語言分割試圖在語義上理解影象中每個畫素的角色(例如,汽車、摩托車等)。

CNN同樣在此項任務中展現了其優異的效能。典型的方法是FCN,結構如下圖所示。FCN模型輸入一幅影象後直接在輸出端得到密度預測,即每個畫素所屬的類別,從而得到一個端到端的方法來實現影象語義分割。

640?wx_fmt=png

與FCN上取樣不同,SegNet將最大池化轉移至解碼器中,改善了分割解析度。提升了記憶體的使用效率。

640?wx_fmt=png

還有一些其他的方法,比如全卷積網路、擴展卷積,DeepLab以及RefineNet等。

5.物體分割

物體分割與語義分割有所不同,物體分割不僅需要對影象中不同的物件進行分類,而且還需要確定它們之間的界限、差異和關係。

640?wx_fmt=png

CNN在此項任務中同樣表現優異,典型演算法是Mask R-CNN。Mask R-CNN在Faster R-CNN的基礎上添加了一個分支以輸出二元掩膜。該分支與現有的分類和邊框迴歸並行,如下圖所示:

640?wx_fmt=png

Faster-RCNN在物體分割任務中表現不好,為了修正其缺點,Mask R-CNN提出了RolAlign層,通過調整Rolpool來提升精度。從本質上講,RolAlign使用雙線性插值避免了取整誤差,該誤差導致檢測和分割不準確。

一旦掩膜被生成,Mask R-CNN結合分類器和邊框就能產生非常精確的分割:

640?wx_fmt=png

結論

以上五種計算機視覺技術可以幫助計算機從單個或一系列影象中提取、分析和理解有用資訊。此外,還有很多其它的先進技術等待我們的探索,比如風格轉換、動作識別等。希望本文能夠引導你改變看待這個世界的方式。

∞∞∞

640?wx_fmt=jpeg&wx_lazy=1&wxfrom=5

IT派 - {技術青年圈}持續關注網際網路、區塊鏈、人工智慧領域640?wx_fmt=jpeg&wx_lazy=1&wxfrom=5

公眾號回覆“機器學習”

邀你加入{ IT派AI機器學習群 }