摘要: 關於計算機視覺你知道的可能有些少!
計算機視覺是人工智能(AI)中的熱門研究課題,它已經存在多年。然而,計算機視覺仍然是人工智能面臨的最大挑戰之一。在本文中,咱們將探討使用深度神經網絡來解決計算機視覺的一些基本挑戰。特別是,咱們將研究神經網絡壓縮,細粒度圖像分類,紋理合成,圖像搜索和對象跟蹤等應用。算法
儘管深度神經網絡具備使人難以置信的性能,但它們對計算能力和存儲的需求對其在實際應用中的部署提出了重大挑戰。研究代表,神經網絡中使用的參數可能很是多餘。所以,在提升精度的同時還須要投入大量的工做來下降了網絡的複雜性。數據庫
低秩近似用於接近原始權重矩陣。例如,SVD可用於得到矩陣的最佳低秩近似,或者Toeplitz矩陣可與Krylov分析結合使用以近似的原始矩陣。編程
1.1:修剪緩存
一旦訓練完成,一些不相關的神經元鏈接(能夠在損失算法中加權值平衡和稀疏約束)或者將全部這些鏈接過濾掉,而後執行幾輪微調。在實際應用中,修剪神經元鏈接的級別將使結果稀疏,難以緩存,而且難以從存儲器訪問。有時,咱們須要特別設計一個合做運營數據庫。安全
相比之下,過濾級修剪能夠直接在已經存在的操做數據庫上運行,過濾級修剪的關鍵是肯定如何平衡過濾器的重要性。例如,咱們可使用卷積結果的稀疏性、濾波器對損失算法的影響或者卷積對下一層結果的影響進行平衡。網絡
1.2:量化併發
咱們能夠將權重值分紅組,而後使用組中的中值來替換原始權重,並經過霍夫曼編碼運行它。可是,若是咱們只考慮權重自己,則能夠減小量化過程的偏差誤差。隨後,分類操做的偏差誤差將顯着增長。所以,量化CNN的優化目標是重構以最小化偏差誤差。此外,咱們可使用哈希編碼並投影相同的哈希權重(hash bucket weights)來共享相同的值。性能
1.3:減小數據值的範圍優化
在默認狀況下,數據由單精度浮點組成,佔32位。研究人員發現,使用半精度浮點(16位)對性能的影響幾乎爲零。谷歌的TPU使用8位整數來表示數據,這種狀況是值的範圍是兩個或三個值(0/1或-1/0/1)。僅使用位進行操做可使咱們快速完成各類計算,可是訓練兩個或三個價值網絡是一個相當重要的問題。編碼
傳統方法是使用兩個或三個值做爲前饋過程並在更新過程當中傳遞實數。此外,研究人員認爲兩個值的表達能力是有限的,所以可使用額外的浮點縮放二進制卷積結果來改善網絡表示。
1.4:簡化的結構設計
研究人員一直致力於建立簡化的網絡結構,例如:
知識蒸餾(Knowledge distillation)訓練小網絡接近普遍的網絡。可是,目前還不清楚如何正確地接近龐大的網絡。
1.5:硬件-軟件協議設計
經常使用硬件:
與(普通)圖像分類相比,細粒度圖像分類在肯定圖像類別時須要更高的精度。例如,咱們可能須要肯定目標鳥的確切種類、汽車的品牌和型號、飛機的型號。一般,這些類之間的差別很小。例如,波音737-300和波音737-400之間惟一明顯不一樣的區別就是窗戶的數量。所以,細粒度圖像分類比標準圖像分類更具挑戰性。
細粒度圖像分類的經典方法是首先在圖像上定義不一樣的位置,例如,鳥的頭部、腳部或翅膀。而後咱們必須從這些位置提取特徵,最後,組合這些特徵並使用它們來完成分類。這種方法具備很是高的準確性,但它須要大量的數據集和手動標記位置信息。細粒度分類的一個主要趨勢是沒有額外監督信息的訓練,而不是僅使用圖像筆記,該方法由雙線性CNN方法表示。
2.1:雙線性(Bilinear)CNN
首先計算卷積描述符的外積,以找出不一樣維度之間的相互關係。由於不一樣描述符的維度對應於卷積特徵的不一樣通道,而且不一樣的通道提取不一樣的語義特徵,因此使用雙線性操做容許咱們捕獲輸入圖像上的不一樣語義元素之間的關係。
2.2:流線型雙線性匯合(Streamlined Bilinear Confluence)
雙線性匯合的結果是很是高維的,這須要大量的計算和存儲資源,也明顯增長了下一個徹底鏈接層上的參數數量。後續研究旨在制定簡化雙線性匯合的戰略,其結果包括如下內容:
圖像描述是生成圖像的一個或兩個句子描述的過程。這是一項涉及計算機視覺和天然語言處理的跨學科任務。
3.1:編碼器-解碼器網絡
設計圖像字幕網絡背後的基本思想基於天然語言處理領域中機器翻譯的概念。在具備圖像CNN編碼網絡的機器翻譯器中替換源語言編碼網絡並提取圖像的特徵以後,咱們可使用解碼器網絡做爲目標語言來建立文本描述。
3.2:Show Attend and Tell
注意力機制是機器翻譯器用來捕獲遠程依賴關係的標準技術,也能夠用於圖像字幕。在解碼器網絡中,除了預測下一個單詞以外,在每一個時刻,咱們還須要輸出二維注意力圖像並將其用於深度卷積特徵的加權收斂。使用注意力機制的另外一個好處是網絡能夠被可視化,這樣咱們就能夠輕鬆地看到網絡在生成每一個單詞時所看到的圖像部分。
3.3:Adaptive Attention(自適應注意力機制)
先前的注意力機制將爲每一個預測的單詞產生二維注意圖像(圖像(a))。可是,對於一些中止詞,咱們不須要使用圖像中的線索。相反,某些單詞能夠根據上下文生成,徹底獨立於圖像自己。這項工做在LSTM上進行了擴展,併產生了「視覺哨兵」機制,該機制肯定是否應根據上下文或圖像信息(圖像(b))預測當前單詞。
此外,與先前在根據隱藏層的狀態計算注意圖像的先前方法不一樣,該方法根據隱藏層的當前狀態執行計算。
給定圖像和與該圖像相關的問題,視覺問答旨在從選擇的候選答案中回答該問題。從本質上講,這是一個分類任務,有時它使用遞歸神經網絡解碼來產生文本答案。視覺問答也是一項涉及視覺和天然語言處理的跨學科任務。
4.1:基本思想過程
問題概念是使用CNN從圖像中提取特徵,RNN從文本問題中提取文本特徵,而後組合視覺和文本特徵,最後使用徹底鏈接後進行分類。這項任務的關鍵是弄清楚如何鏈接這兩種類型的功能。直接組合這些特徵的方法將它們轉換爲矢量,或者經過添加或乘以元素來添加或生成視覺和文本矢量。
注意使用注意力機制的圖像字幕系統可提升視覺問答的性能。注意力機制包括視覺注意(「我在哪裏看」)和文本注意力(「我在看哪一個詞?」)HieCoAtten能夠同時或依次建立視覺和文本注意力。DAN在同一空間內投射視覺和文本注意力的結果; 而後它同時產生視覺和文本注意力的下一步。
4.2:雙線性整合
該方法使用視覺特徵向量和文本特徵向量的外積來捕獲每一個維度上這些狀態的特徵之間的關係。爲了不明確地計算雙線性匯合的高維度結果,咱們能夠將在細粒度識別中發現的流線型雙線性匯合背後的思想應用於視覺問題回答。例如,MFB使用低速率近似背後的概念以及視覺和文本注意機制。
下文提供了許多可視化方法,以幫助理解卷積和神經網絡。
5.1:直接可視化第一個過濾器
因爲第一個卷積層上的濾鏡在輸入圖像上滑動,咱們能夠直接在第一層上顯示濾鏡。咱們能夠看到第一層權重集中在特定方向的邊緣和指定的顏色組合,這相似於視覺生物學機制。可是,因爲高級過濾器不直接用於輸入圖像,所以直接可視化只能應用於第一層上的過濾器。
5.2:T-SNE
此方法在圖像的fc7和pool5特徵上使用低維嵌入。例如,將它們縮小到2維並容許它們在2維平面上繪製,具備相似語義信息的圖像應該產生與t-SNE相似的結果。該方法與PCA之間的區別在於t-SNE是一種非線性減小方法,能夠保留地點之間的距離。咱們獲得如下圖像,該圖像是將t-SNE應用於原始MNIST圖像的結果。咱們能夠看到MNIST是一個相對簡單的數據集,其中不一樣分類的圖像之間的差別是顯而易見的。
5.3:可視化中間層激活值
咱們能夠看到,即便ImageNet沒有人臉類別,網絡仍將學會區分這種語義信息並捕獲將來的分類。
5.4:最大化響應圖像區域
爲了阻止這種狀況,在中間層選擇一個指定的神經元,而後將多個不一樣的圖像輸入網絡,以找到致使神經元最大響應的圖像區域。這容許咱們觀察神經元對應的語義特徵,咱們使用「圖像區域」而不是「完整圖像」的緣由是中間層神經元的感覺野受限而且不能覆蓋整個圖像。
5.5:梯度上升優化
該方法選擇特定的神經元,而後計算該神經元對輸入圖像的反應產生的偏導數,而後使用梯度上升優化圖像直到收斂。此外,咱們須要一些標準化的項目來使生成的圖像更接近天然模型。除了優化輸入圖像,咱們還能夠優化fc6功能並建立所需的圖像。
選擇圖像和不正確的分類。而後,系統計算該分類對圖像的偏導數,而後對圖像應用梯度上升優化。實驗代表,在使用小的,幾乎察覺不到的變化以後,咱們可使網絡以高可信度對模型實現不正確的類。
在實際應用中,對抗性示例在金融和安全領域很是有用。研究人員發現,這是由於圖像空間的維度很是高。即便有大量的訓練數據,咱們也只能覆蓋該空間的一小部分。若是輸入圖像從該不一樣空間稍微變化,那麼網絡將難以作出合理的決定。
本文做者:【方向】
本文爲雲棲社區原創內容,未經容許不得轉載。