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