1. 程式人生 > >計算機視覺領域最全彙總

計算機視覺領域最全彙總

計算機視覺是人工智慧(AI)中的熱門研究課題,它已經存在多年。然而,計算機視覺仍然是人工智慧面臨的最大挑戰之一。在本文中,我們將探討使用深度神經網路來解決計算機視覺的一些基本挑戰。特別是,我們將研究神經網路壓縮,細粒度影象分類,紋理合成,影象搜尋和物件跟蹤等應用。

1、神經網路壓縮

儘管深度神經網路具有令人難以置信的效能,但它們對計算能力和儲存的需求對其在實際應用中的部署提出了重大挑戰。研究表明,神經網路中使用的引數可能非常多餘。因此,在提高精度的同時還需要投入大量的工作來降低了網路的複雜性。

低秩近似用於接近原始權重矩陣。例如,SVD可用於獲得矩陣的最佳低秩近似,或者Toeplitz矩陣可與Krylov分析結合使用以近似的原始矩陣。

1.1:修剪

一旦訓練完成,一些不相關的神經元連線(可以在損失演算法中加權值平衡和稀疏約束)或者將所有這些連線過濾掉,然後執行幾輪微調。在實際應用中,修剪神經元連線的級別將使結果稀疏,難以快取,並且難以從儲存器訪問。有時,我們需要特別設計一個合作運營資料庫。

相比之下,過濾級修剪可以直接在已經存在的操作資料庫上執行,過濾級修剪的關鍵是確定如何平衡過濾器的重要性。例如,我們可以使用卷積結果的稀疏性、濾波器對損失演算法的影響或者卷積對下一層結果的影響進行平衡。

1.2:量化

我們可以將權重值分成組,然後使用組中的中值來替換原始權重,並通過霍夫曼編碼執行它。但是,如果我們只考慮權重本身,則可以減少量化過程的誤差偏差。隨後,分類操作的誤差偏差將顯著增加。因此,量化CNN的優化目標是重構以最小化誤差偏差。此外,我們可以使用雜湊編碼並投影相同的雜湊權重(hashbucket weights)來共享相同的值。

1.3:減少資料值的範圍

在預設情況下,資料由單精度浮點組成,佔32位。研究人員發現,使用半精度浮點(16位)對效能的影響幾乎為零。谷歌的TPU使用8位整數來表示資料,這種情況是值的範圍是兩個或三個值(0/1或-1/0/1)。僅使用位進行操作可以使我們快速完成各種計算,但是訓練兩個或三個價值網路是一個至關重要的問題。

傳統方法是使用兩個或三個值作為前饋過程並在更新過程中傳遞實數。此外,研究人員認為兩個值的表達能力是有限的,因此可以使用額外的浮點縮放二進位制卷積結果來改善網路表示。

1.4:簡化的結構設計

研究人員一直致力於建立簡化的網路結構,例如:

1. 1x1卷積:這種設計理念已經在Inception和ResNet系列網路設計中得到了廣泛應用;

2. 分組卷積;

3. 擴展卷積:只要值不變,使用擴展卷積就可以擴充套件感知域。

知識蒸餾(Knowledge distillation)訓練小網路接近廣泛的網路。但是,目前還不清楚如何正確地接近龐大的網路。

1.5:硬體-軟體協議設計

常用硬體:

1. 常見硬體,如CPU(低延遲,複雜操作)和GPU(高吞吐量,適合併發,簡單過程);

2. 專用硬體,包括ASIC(專用積體電路,例如Google的TPU)和FPGA(現場可程式設計門陣列,靈活但效率較低)。

2、細粒度影象分類

與(普通)影象分類相比,細粒度影象分類在確定影象類別時需要更高的精度。例如,我們可能需要確定目標鳥的確切種類、汽車的品牌和型號、飛機的型號。通常,這些類之間的差異很小。例如,波音737-300和波音737-400之間唯一明顯不同的區別就是窗戶的數量。因此,細粒度影象分類比標準影象分類更具挑戰性。

細粒度影象分類的經典方法是首先在影象上定義不同的位置,例如,鳥的頭部、腳部或翅膀。然後我們必須從這些位置提取特徵,最後,組合這些特徵並使用它們來完成分類。這種方法具有非常高的準確性,但它需要大量的資料集和手動標記位置資訊。細粒度分類的一個主要趨勢是沒有額外監督資訊的訓練,而不是僅使用影象筆記,該方法由雙線性CNN方法表示。

2.1:雙線性(Bilinear)CNN

首先計算卷積描述符的外積,以找出不同維度之間的相互關係。因為不同描述符的維度對應於卷積特徵的不同通道,並且不同的通道提取不同的語義特徵,所以使用雙線性操作允許我們捕獲輸入影象上的不同語義元素之間的關係。

640?wx_fmt=png

2.2:流線型雙線性匯合(Streamlined Bilinear Confluence)

雙線性匯合的結果是非常高維的,這需要大量的計算和儲存資源,也明顯增加了下一個完全連線層上的引數數量。後續研究旨在制定簡化雙線性匯合的戰略,其結果包括以下內容:

1. PCA維數減少:在雙線性匯合出現之前,我們會在深度描述符上使用PCA投影維數減少,但這會影響影響效能的每個維度。一個折中的方案是僅將PCA降維應用於一條線。

2. 近似核估計:證明在雙線性收斂之後使用線性SVM分類與在描述符上使用多項式核一樣有價值。因為兩個描述符的向外投影等於兩個獨立描述符的卷積投影,所以一些研究集中於使用隨機矩陣來近似描述符投影。此外,通過近似核估計,我們可以捕獲超過二階資訊(見下圖)。

3. 低秩近似:使用來自全連線層的引數矩陣進行低秩近似使得不必明確地計算雙線性匯合的結果。

640?wx_fmt=png

3、影象描述

影象描述是生成影象的一個或兩個句子描述的過程。這是一項涉及計算機視覺和自然語言處理的跨學科任務。

3.1:編碼器-解碼器網路

設計影象字幕網路背後的基本思想基於自然語言處理領域中機器翻譯的概念。在具有影象CNN編碼網路的機器翻譯器中替換源語言編碼網路並提取影象的特徵之後,我們可以使用解碼器網路作為目標語言來建立文字描述。

640?wx_fmt=png

3.2:ShowAttend and Tell

注意力機制是機器翻譯器用來捕獲遠端依賴關係的標準技術,也可以用於影象字幕。在解碼器網路中,除了預測下一個單詞之外,在每個時刻,我們還需要輸出二維注意力影象並將其用於深度卷積特徵的加權收斂。使用注意力機制的另一個好處是網路可以被視覺化,這樣我們就可以輕鬆地看到網路在生成每個單詞時所看到的影象部分。

640?wx_fmt=png

3.3:AdaptiveAttention(自適應注意力機制)

先前的注意力機制將為每個預測的單詞產生二維注意影象(影象(a))。但是,對於一些停止詞,我們不需要使用影象中的線索。相反,某些單詞可以根據上下文生成,完全獨立於影象本身。這項工作在LSTM上進行了擴充套件,併產生了“視覺哨兵”機制,該機制確定是否應根據上下文或影象資訊(影象(b))預測當前單詞。

此外,與先前在根據隱藏層的狀態計算注意影象的先前方法不同,該方法根據隱藏層的當前狀態執行計算。

640?wx_fmt=png

4、視覺問答

給定影象和與該影象相關的問題,視覺問答旨在從選擇的候選答案中回答該問題。從本質上講,這是一個分類任務,有時它使用遞迴神經網路解碼來產生文字答案。視覺問答也是一項涉及視覺和自然語言處理的跨學科任務。

4.1:基本思想過程

問題概念是使用CNN從影象中提取特徵,RNN從文字問題中提取文字特徵,然後組合視覺和文字特徵,最後使用完全連線後進行分類。這項任務的關鍵是弄清楚如何連線這兩種型別的功能。直接組合這些特徵的方法將它們轉換為向量,或者通過新增或乘以元素來新增或生成視覺和文字向量。

640?wx_fmt=png

注意使用注意力機制的影象字幕系統可提高視覺問答的效能。注意力機制包括視覺注意(“我在哪裡看”)和文字注意力(“我在看哪個詞?”)HieCoAtten可以同時或依次建立視覺和文字注意力。DAN在同一空間內投射視覺和文字注意力的結果; 然後它同時產生視覺和文字注意力的下一步。

640?wx_fmt=png

4.2:雙線性整合

該方法使用視覺特徵向量和文字特徵向量的外積來捕獲每個維度上這些狀態的特徵之間的關係。為了避免明確地計算雙線性匯合的高維度結果,我們可以將在細粒度識別中發現的流線型雙線性匯合背後的思想應用於視覺問題回答。例如,MFB使用低速率近似背後的概念以及視覺和文字注意機制。

640?wx_fmt=png

5、神經網路視覺化與神經網路理解

下文提供了許多視覺化方法,以幫助理解卷積和神經網路。

5.1:直接視覺化第一個過濾器

由於第一個卷積層上的濾鏡在輸入影象上滑動,我們可以直接在第一層上顯示濾鏡。我們可以看到第一層權重集中在特定方向的邊緣和指定的顏色組合,這類似於視覺生物學機制。但是,由於高階過濾器不直接用於輸入影象,因此直接視覺化只能應用於第一層上的過濾器。

5.2:T-SNE

此方法在影象的fc7和pool5特徵上使用低維嵌入。例如,將它們縮小到2維並允許它們在2維平面上繪製,具有類似語義資訊的影象應該產生與t-SNE類似的結果。該方法與PCA之間的區別在於t-SNE是一種非線性減少方法,可以保留地點之間的距離。我們得到以下影象,該影象是將t-SNE應用於原始MNIST影象的結果。我們可以看到MNIST是一個相對簡單的資料集,其中不同分類的影象之間的差異是顯而易見的。

640?wx_fmt=png

5.3:視覺化中間層啟用值

我們可以看到,即使ImageNet沒有人臉類別,網路仍將學會區分這種語義資訊並捕獲未來的分類。

5.4:最大化響應影象區域

為了阻止這種情況,在中間層選擇一個指定的神經元,然後將多個不同的影象輸入網路,以找到導致神經元最大響應的影象區域。這允許我們觀察神經元對應的語義特徵,我們使用“影象區域”而不是“完整影象”的原因是中間層神經元的感受野受限並且不能覆蓋整個影象。

5.5:梯度上升優化

該方法選擇特定的神經元,然後計算該神經元對輸入影象的反應產生的偏導數,然後使用梯度上升優化影象直到收斂。此外,我們需要一些標準化的專案來使生成的影象更接近自然模型。除了優化輸入影象,我們還可以優化fc6功能並建立所需的影象。

640?wx_fmt=png

6、對抗性的例子

選擇影象和不正確的分類。然後,系統計算該分類對影象的偏導數,然後對影象應用梯度上升優化。實驗表明,在使用小的,幾乎察覺不到的變化之後,我們可以使網路以高可信度對模型實現不正確的類。

在實際應用中,對抗性示例在金融和安全領域非常有用。研究人員發現,這是因為影象空間的維度非常高。即使有大量的訓練資料,我們也只能覆蓋該空間的一小部分。如果輸入影象從該不同空間稍微變化,那麼網路將難以做出合理的決定。

7、紋理生成(Texture Synthesis)與風格遷移(Style Transform)

紋理生成用於生成包含相同紋理的較大影象。給定正常影象和包含特定風格的影象,然後通過風格遷移不僅保留影象的原始內容,而且將該影象轉換為指定的風格。

7.1:特徵反演(Feature Inversion)

特徵反演是紋理生成和風格遷移背後的核心概念。給定一箇中間層特徵,我們希望迭代來建立與給定特徵類似影象。特徵反演還可以告訴我們在中間層特徵中包含多少影象資訊。

給定DxHxW的深度卷積特徵,我們將它們轉換為Dx(HW)矩陣X,因此我們可以將對應Gram矩陣定義為:G = XX ^ T

通過外積,Gram矩陣捕獲不同特徵之間的關係。

7.2:紋理生成的概念

它對給定紋理圖案的Gram矩陣進行特徵逆向工程。使生成影象的各層特徵的Gram矩陣接近給定紋理影象的各層Gram。低層特徵傾向於捕獲細節資訊,而高層特徵可以捕獲更大面積的特徵。

640?wx_fmt=png

7.3:風格遷移的概念

此優化有兩個主要目標:第一個是使生成的影象的內容更接近原始影象的內容,而第二個是使生成的影象的風格與指定的風格匹配。風格由Gram矩陣體現,而內容直接由神經元的啟用值體現。

640?wx_fmt=png

7.4:直接生成風格遷移的影象

上面直接生成風格遷移的影象的方法的缺點是需要多次迭代才能收斂。解決該問題的方案是訓練一個神經網路來直接生成風格遷移的影象。一旦訓練結束,進行風格遷移只需前饋網路一次,十分高效。在訓練時,將生成影象、原始影象、風格影象三者前饋一固定網路以提取不同層特徵用於計算損失函式。

640?wx_fmt=png

實驗證明,通過使用例項歸一化,風格變換網路可以移除與影象相關的比較資訊以簡化生成過程。

7.5:條件示例規範化

上述方法的一個問題是我們必須為每種不同的風格訓練一個單獨的模型。由於不同的風格有時包含相似性,因此可以通過在不同風格的風格變換網路之間共享引數來完成這項工作。具體來說,它更改了風格轉換網路的示例規範化,使其具有N組縮放和平移引數,每個組對應於特定風格。這樣我們就可以從單個前饋過程中獲得N個風格的變換影象。

8、面部驗證/識別

人臉驗證/識別可以認為是一種更加精細的細粒度影象識別任務。人臉驗證是給定兩張影象、判斷其是否屬於同一個人,而人臉識別是回答影象中的人是誰。一個人臉驗證/識別系統通常包括三大步:檢測影象中的人臉,特徵點定位、及對人臉進行驗證/識別。人臉驗證/識別的難題在於需要進行小樣本學習。通常情況下,資料集中每人只有對應的一張影象,這稱為一次性學習(one-shot  learning)。

8.1:面部識別系統背後的概念

作為分類問題(非常多的類別數),或作為度量學習的問題。如果兩個影象屬於同一個人,那麼我們希望它們的深層特徵非常相似。否則,它們的特徵應該不同。之後,根據深度特徵之間的距離進行驗證或識別(k最近鄰居分類)。

8.2:DeepFace

第一個成功將深度神經網路應用於面部驗證/識別模型的系統。DeepFace使用非共享引數區域性性連線。這是因為人臉的不同部分具有不同的特徵(例如眼睛和嘴脣具有不同的特徵),因此傳統卷積層的經典“共享引數”不適用於面部驗證。因此,面部識別網路使用非共享引數區域性性連線。它使用的孿生(Siamese  network)網路用於面部驗證。當兩個影象的深度特徵小於給定閾值時,它們被認為是同一個人。

8.3:FaceNet

FaceNet通過三因子輸入,希望負樣本之間的距離大於正樣本之間的距離給定量。此外,三個輸入因子並不是隨機的,否則,因為負樣本的差異樣本太大,網路將無法學習。選擇最具挑戰性的三個元素組(例如最遠的正樣本和最接近的負樣本)會使該網路陷入區域性最優。FaceNet使用半困難策略,選擇比正樣本更遠的負樣本。

640?wx_fmt=png

8.4:大區間交叉熵損失

近年來,這一直是一個熱門的研究課題。由於類內波動大而類間相似度高,有研究工作旨在提升經典的交叉熵損失對深度特徵的判斷能力。例如,L-Softmax加強優化目標,使對應類別的引數向量和深度特徵夾角增大。

A-Softmax進一步約束L-Softmax的引數向量長度為1,使訓練更集中到優化深度特徵和夾角上。實際中,L-Softmax和A-Softmax都很難收斂,訓練時採用了退火方法,從標準softmax逐漸退火至L-Softmax或A-Softmax。

8.5:實時檢測

該系統確定面部影象是來自真人還是來自照片,這是面部驗證/識別任務的關鍵障礙。目前在業界流行的一些方法是讀取人的面部表情,紋理資訊,眨眼或要求使用者完成一系列動作的變化。

9、影象搜尋和檢索

給定一個包含特定例項(例如特定目標,場景或建築物)的影象,影象搜尋用於在資料庫中查詢包含與給定例項類似的元素的影象。然而,由於兩個影象中的角度,光照和障礙物通常不相同,因此建立能夠處理影象類別中的這些差異的搜尋演算法的問題對研究人員構成了重大挑戰。

9.1:經典影象搜尋的過程

首先,我們必須從影象中提取適當的代表性向量。其次,將歐氏距離或餘弦距離應用於這些向量以執行最近鄰居搜尋並找到最相似的影象。最後,我們使用特定的處理技術對搜尋結果進行小幅調整。我們可以看到影象搜尋引擎效能的限制因素是影象的表示:

640?wx_fmt=png

9.2:無監督的影象搜尋

無監督影象搜尋使用預先訓練的ImageNet模型,沒有外部資訊作為特徵提取引擎來提取影象的表示。

直觀的思路:因為深度全連線特徵提供了影象的高階描述,並且是一個“自然”向量,直觀的思維過程是直接提取深度全連線特徵作為影象的代表向量。但是,由於影象分類中使用完全連線的特徵缺乏對影象的詳細描述,因此該思維過程僅產生平均準確度。

使用深度卷積特徵:因為深度卷積具有更好的詳細資訊,並且可以用於處理任何大小的影象,目前流行的方法是提取深度卷積特徵,然後使用加權全域性搜尋和求和池來獲得影象的代表向量。權重表示不同位置的特徵的必要性,並且可以採用空間向量權重或通道向量權重的形式。

CroW:深度卷積特徵是一種分散式表示。儘管來自神經元的響應值在確定區域是否有目標方面不是非常有用,但如果多個神經元同時具有大量反應,那麼該區域很可能包含目標。因此,CroW沿著通道添加了特徵圖以獲得二維合成圖,對其進行標準化,並根據數量標準化的結果將其用作空間權重。CroW的通道權重由特徵圖的稀疏性決定,類似於TF-IDF中的IDF特徵,自然語言處理中的特徵可用於提升不常見但具有高度確定性的特徵。

類加權特徵:該方法嘗試利用影象整合網路的類別預測資訊使空間權重更具確定性。具體地,它使用CAM來獲得預訓練網路中每個類別的最具代表性的區域的語義資訊;然後它使用標準化的CAM結果作為空間權重。

PWA:PWA發現,深度卷積特徵的不同通道對應於目標上不同區域的響應。因此,PWA可以選擇一系列確定性特徵對映,並將其標準化結果用作收斂的空間權重。然後系統級聯結果以形成最終影象的表示。

640?wx_fmt=png

9.3:有監督影象搜尋

有監督影象搜尋首先採用預先訓練的ImageNet模型並將其調整到另一個訓練資料集上。然後,它從這個調整的模型中提取影象表示。為了獲得更好的結果,用於優化模型的訓練資料集通常類似於搜尋資料集。此外,我們可以使用候選區域網路從可能包含目標的影象中提取前景區域。

孿生網路:類似於人臉識別的思想,該系統使用兩個元素或三個元素輸入(++ -)來訓練模型,以最小化兩個樣本之間的距離,並最大化兩個不同樣本之間的距離。

640?wx_fmt=png

9.4:物件跟蹤

物件跟蹤的目標是跟蹤視訊中目標的移動。通常,目標位於視訊的第一幀中並由框標記。我們需要預測框在下一幀中的位置。物件跟蹤與目標測試類似。然而,物件跟蹤的難點在於我們不知道我們跟蹤哪個目標。因此,我們無法在任務之前收集足夠的訓練資料並訓練專門的測試。

9.5:孿生網路

類似於面部驗證的概念,利用孿生網路可以在一條線上的目標框內輸入影象,並且在另一條線上輸入候選影象區域,然後輸出兩個影象之間的相似度。我們不需要遍歷不同幀中的所有其他候選區域;相反,我們可以使用卷積網路,只需要將每個影象前饋一次,通過卷積,我們可以獲得二維的響應圖,其中最重要的響應位置確定了框的位置。基於孿生網路的方法非常快並且能夠處理任何大小的影象。

640?wx_fmt=png

9.6:CFNet

相關濾波器訓練線性模板以區分影象區域和它們周圍的區域,然後使用傅立葉變換。CFNet與離線訓練的孿生網路和相關的線上濾波模板相結合,能夠提高加權網路的跟蹤效能。

640?wx_fmt=png

10、生成式模型(generative models)

這種型別的模型用於學習資料(影象)的分佈或從其分佈中取樣新影象。生成模型可用於超解析度重建、影象著色、影象轉換、從文字生成影象、學習隱藏的影象表示、半監督學習等。此外,生成式模型可以與強化學習相結合,用於模擬和逆強化學習。

640?wx_fmt=png

10.1:顯式建模

使用條件概率的公式來對影象的分佈進行最大似然估計並從中學習。該方法的缺點在於,由於每個影象中的畫素取決於先前的畫素,因此必須在一個角開始並以有序的方式進行,所以生成影象的過程將稍微緩慢。例如,WaveNet可以產生類似於人類建立的語音,但由於它不能同時產生,一秒鐘的語音需要2分鐘來計算,並且實時生成是不可能的。

10.2:變分自編碼器

為了避免顯式建模的缺陷,變分自編碼器對資料分佈進行了隱式建模。它認為生成影象受隱藏變數控制的影響,並假設隱藏變數受到對角高斯分佈的影響。

變分自編碼器使用解碼網路根據隱藏變數生成影象。由於我們無法直接應用最大似然估計,因此在訓練時,類似於EM演算法,變分自編碼器構造似然函式的下界函式,然後使用該下界函式進行優化。變分自編碼器的好處是因為每個維度的獨立性;我們可以通過控制隱藏變數來控制影響輸出影象變化的因素。

640?wx_fmt=png

10.3:生成對抗式網路(GAN)

由於學習資料分佈極其困難,生成對抗式網路完全避免了這一步驟並立即生成影象。生成對抗式網路使用生成網路G從隨機噪聲建立影象,並使用判別網路D來確定輸入影象是真實的還是偽造的。

在訓練期間,判別網路D的目標是確定影象是真實的還是偽造的,並且生成式網路G的目的是使判別網路D傾向於確定其輸出影象是真實的。在實踐中,訓練生成式對抗網路會帶來模型崩潰的問題,其中生成對抗式網路無法學習完整的資料分佈。這在LS-GAN和W-GAN中產生了改進,與變分自編碼器一樣,生成對抗式網路提供更好的詳細資訊。

640?wx_fmt=png

11、視訊分類

上述大多數任務都可以用於視訊分類,這裡我們將以視訊分類為例來說明處理視訊資料的一些基本方法。

11.1:多幀影象特徵匯合

這類方法將視訊視為一系列幀影象,網路接收屬於視訊的一組多幀影象(例如15幀),然後從這些影象中提取深度特徵,並最終整合這些影象特徵以獲得視訊的該部分的特徵以對其進行分類。實驗表明,使用“慢速融合(slow  fusion)”效果最佳。此外,獨立組織單個幀也可以得到非常有競爭力的結果,這意味著來自單個幀的影象包含大量相關資訊。

640?wx_fmt=png

11.2:三維卷積

將標準的二維卷積擴充套件為三維卷積,以在時間維度上連線區域性。例如,系統可以採用VGG 3x3卷積並將其擴充套件為3x3x3卷積或2x2收斂擴充套件為2x2x2收斂。

640?wx_fmt=png

11.3:影象+序列兩個分支結構

這種型別的方法使用兩個獨立的網路來區分從視訊捕獲的影象資訊和時間資訊。影象資訊可以從單幀中的靜止影象獲得,並且是影象分類的經典問題。然後通過光流獲得運動資訊,跟蹤目標在相鄰幀上的運動。

640?wx_fmt=png

11.4:CNN + RNN捕獲遠端依賴關係

先前的方法僅能夠捕獲幾幀影象之間的依賴關係。此方法使用CNN從單個幀中提取影象特徵,然後使用RNN捕獲幀之間的依賴關係。

640?wx_fmt=png

此外,研究人員已嘗試將CNN和RNN結合起來,以便每個卷積層能夠捕獲遠距離依賴性。

640?wx_fmt=png

以上為譯文。

本文由阿里云云棲社群組織翻譯。

文章原標題《deep-dive-into-computer-vision-with-neural-network-2》,

作者: Leona Zhang譯者:虎說八道,審校:。

640?wx_fmt=png

end

更多精彩