圖像識別是非常有趣和具有挑戰(zhàn)性的研究領域。本文闡述了卷積神經網絡用于圖像識別的概念、應用和技術。
什么是圖像識別,為什么要使用它?
在機器視覺領域,圖像識別是指軟件識別人物、場景、物體、動作和圖像寫入的能力。為了實現(xiàn)圖像識別,計算機可以結合人工智能軟件和攝像機使用機器視覺技術。
雖然人類和動物的大腦很容易識別物體,但計算機在相同的任務中卻遇到了困難。當我們看著像樹木、汽車或朋友的東西時,我們通常不需要有意識地去學習后才能判斷它是什么。然而,對于計算機,識別任何東西(無論是鐘、椅子、人類或動物)都是一個非常困難的問題,并且為該問題找到解決方案的風險非常高。
圖像識別是一種機器學習方法,其設計類似于人類大腦的功能。通過這種方法,計算機可以識別圖像中的視覺元素。通過依靠大型數(shù)據(jù)庫和注意顯露模式(emerging patterns),計算機可以理解圖像,并制定相關的標簽和類別。
圖像識別的流行應用
圖像識別有各種應用。其中最常見和最受歡迎的是個人圖片管理。照片管理應用程序的用戶體驗正在通過圖像識別變得越來越好。除了提供照片存儲,應用程序還要進一步向人們提供更好的發(fā)現(xiàn)和搜索功能。他們可以通過機器學習提供的自動圖像組織的功能來實現(xiàn)。集成在應用中的圖像識別應用編程接口根據(jù)識別的圖案對圖像進行分類,并將它們進行主題分組。
圖像識別的其他應用包括全景圖庫和視頻網站、互動營銷和創(chuàng)意活動、社交網絡上的面部和圖像識別以及具有巨大視覺數(shù)據(jù)庫的網站的圖像分類。
圖像識別是一項艱巨的任務
圖像識別不是一件容易的事情。實現(xiàn)它的一個好方法是,將元數(shù)據(jù)應用于非結構化數(shù)據(jù)。聘請人類專家手動標注音樂和電影庫可能是一項艱巨的任務,但是當涉及無人駕駛汽車的導航系統(tǒng),如將道路上的行人與各種其他車輛區(qū)分開來或過濾,分類或標記每天在社交媒體上顯示的用戶上傳的數(shù)百萬個視頻和照片等挑戰(zhàn)時,將變得遙不可及。
解決這個問題的一個方法是利用神經網絡。我們可以利用傳統(tǒng)的神經網絡在理論上分析圖像,但在實踐中,從計算的角度來說,成本將是非常昂貴的。例如,一個普通的試圖處理小圖像的神經網絡(讓它變?yōu)?0 * 30像素)仍然需要50萬個參數(shù)和900個輸入。一個功能強大的機器可以處理這一點,但是,一旦圖像變得更大(例如達到500 * 500像素),則需要的參數(shù)和輸入數(shù)量就會增加到非常高的水平。
與圖像識別神經網絡的應用相關的另一個問題是過度擬合。簡單來說,過度擬合發(fā)生在模型裁剪本身與其已經被訓練的數(shù)據(jù)非常接近的時候。一般來說,這將導致附加參數(shù)(進一步增加計算成本)和模型對新數(shù)據(jù)的暴露導致一般性能下降。
卷積神經網絡
卷積神經網絡架構模型
就神經網絡的結構而言,一個相對簡單的變化可以使更大的圖像更易于管理。結果就是我們所說的CNN或ConvNets(卷積神經網絡)。
神經網絡的一般適用性是其優(yōu)點之一,但是這種優(yōu)勢在處理圖像時變成了一種妨礙。卷積神經網絡進行有意思的權衡:如果一個網絡是專門為處理圖像而設計的,那么為了更可行的解決方案,必須犧牲一些一般性。
如果你考慮任何圖像,接近度與其中的相似性具有很強的相關性,并且卷積神經網絡明確利用了這一事實。這意味著在給定圖像中,彼此更接近的兩個像素更可能與彼此分開的兩個像素相關。然而,在一般的神經網絡中,每個像素都都與每一個神經元相連。增加的計算負荷使得網絡在這種情況下不太準確。
通過停止很多這些不太重要的連接,卷積解決了這個問題。在技術術語中,卷積神經網絡使得圖像處理可以通過鄰近度對連接進行濾波而計算可管理。在給定層中,卷積神經網絡不是將每個輸入連接到每個神經元,而是有意限制了連接,使得任何一個神經元僅從它之前的層的小部分接受輸入(例如5 * 5或3 * 3像素)。因此,每個神經元只負責處理圖像的某一部分(順便說一句,這幾乎是個體皮質神經元在大腦中的作用,每個神經元只對整個視野的一小部分起反應)。
卷積神經網絡的工作過程
在上圖中從左到右,你可以觀察到:
·對特征進行掃描的真實輸入圖像。通過它的過濾器是光矩形。
·激活映射被安排在一個堆棧的頂部,另一個用于你使用的每個篩選器。較大的矩形為要進行下采樣的1補丁。
·激活圖通過下采樣進行壓縮。
·通過將過濾器通過堆棧進行下采樣生成的一組新的激活映射。
·第二次下采樣——將第二組激活圖壓縮。
·完全連接層,每個節(jié)點指定1個標簽的輸出。
CNN如何通過濾臨近連接?秘密是添加了兩種新的層:池化和卷積層。我們將以下述方式分解這個過程:使用一個被用于某種用途的,比如說,確定一張圖片中是否包含祖父。
該過程的第一步是卷積層,其本身又包含幾個步驟。
·首先,我們將把祖父的圖片分解成一系列重疊的3 * 3像素的拼圖。
·之后,我們將通過一個簡單的單層神經網絡來運行這些拼圖,權重保持不變。將瓷磚排列組合,當我們保持每個圖像尺寸是小的(在這種情況下為3 * 3)時,神經網絡需要處理它們保證可控與小型化。
·然后,將以數(shù)字表示照片中每個區(qū)域的內容的數(shù)組進行輸出值排列,其中坐標軸表示顏色,寬度和高度。所以,對于每個拼圖,在這種情況下,我們將有一個3 * 3 * 3的表示。(如果我們談論祖父的視頻的話,我們會拋出第四個維度——時間)。
·下一步是池化層。它采用這些3或4維陣列,并與空間維度一起應用下采樣功能。結果是一個池數(shù)組,其中僅包含重要的圖像部分,同時丟棄剩余部分,這最大限度地減少了需要完成的計算量,同時也避免了過度擬合問題。
采用下采樣陣列作為常規(guī)全連接神經網絡的輸入。由于使用池和卷積,輸入的大小已經大大降低了,所以我們現(xiàn)在必須擁有普通網絡能夠處理的一些東西,同時保留最重要的數(shù)據(jù)部分。最后一步的輸出將代表系統(tǒng)對于祖父圖片的確信度。
在現(xiàn)實生活中,CNN的工作過程錯綜復雜,涉及許多隱藏、池化和卷積層。除此之外,真正的CNN通常涉及數(shù)百或數(shù)千個標簽,而不僅僅是單一標簽。
如何構建卷積神經網絡?
從零開始構建CNN可能是一項昂貴而耗時的工作。話雖如此,人們最近開發(fā)了一些API,旨在使不同組織能夠收集不同的見解,而無需自己研究機器學習或計算機視覺專業(yè)知識。
谷歌 Cloud Vision
GoogleCloud Vision是谷歌的視覺識別API,并使用REST API。它基于開源的TensorFlow框架。它檢測單個面部和物體,并包含一個相當全面的標簽集。
IBM沃森視覺識別
IBM沃森視覺識別是沃森開發(fā)者云(Watson Developer Cloud)的一部分,并附帶了一大批內置的類別,但實際上是為根據(jù)你提供的圖像來訓練自定義定制類而構建的。它還支持一些很棒的功能,包括NSFW和OCR檢測,如Google Cloud Vision。
Clarif.ai
Clarif.ai是一個新興的圖像識別服務,也使用REST API。關于Clarif.ai的一個有趣的方面是它附帶了一些模塊,有助于將其算法定制到特定主題,如食物、旅行和婚禮。
盡管上述API適用于少數(shù)一般應用程序,但你可能仍然需要為特定任務開發(fā)自定義解決方案。幸運的是,許多庫可以通過處理優(yōu)化和計算方面來使開發(fā)人員和數(shù)據(jù)科學家的生活變得更加容易,從而使他們專注于訓練模型。有許多庫,包括Theano、Torch、DeepLearning4J和TensorFlow已經成功應用于各種應用。
卷積神經網絡的有趣應用
自動將聲音添加到無聲電影
為了匹配無聲視頻,系統(tǒng)必須在此任務中合成聲音。該系統(tǒng)使用千個視頻示例進行訓練,用鼓棒擊打不同的表面,產生不同的聲音。深度學習模型將視頻幀與預錄音的數(shù)據(jù)庫相關聯(lián),以選擇與場景中發(fā)生的完全匹配的聲音。然后系統(tǒng)將借助于類似于圖靈測試的設置進行評估,人們必須確定哪個視頻具有假(合成)或真實的聲音。這是卷積神經網絡和LSTM循環(huán)神經網絡中非?岬膽。