COCO研究院

 找回密碼
 註冊
搜索
查看: 13631|回復: 2

卷積神經網絡如何進行圖像識別

[複製鏈接]
發表於 17-9-7 09:26 | 顯示全部樓層 |閱讀模式
什麼是圖像識別?為什麼要進行圖像識別?在機器視覺的概念中,圖像識別是指軟件具有分辨圖片中的人物、位置、物體、動作以及筆跡的能力。計算機可以應用機器視覺技巧,結合人工智能以及攝像機來進行圖像識別。
對於人類和動物的大腦來說,識別物體是很簡單的,但是同樣的任務對計算機來說卻是很難完成的。當我們看到一個東西像樹、或者汽車、或者我們的朋友,我們在分辨他是什麼之前,通常不需要下意識的去研究他。然而,對於計算機來說,辨別任何事物(可能是鐘錶、椅子、人或者動物)都是非常難的問題,並且找到問題解決方法的代價很高。

圖像識別算法一般採用機器學習方法,模擬人腦進行識別的方式。根據這種方法,我們可以教會計算機分辨圖像中的視覺元素。計算機依靠大型數據庫,通過對數據呈現的模式進行識別,可以對圖像進行理解,然後形成相關的標籤和類別。
圖像識別技術的普及應用圖像識別技術有許多應用。其中最常見的就是圖像識別技術助力的人物照片分類。誰不想更好地根據視覺主題來管理巨大的照片庫呢?小到特定的物品,大到廣泛的風景。
                                                                                           圖片識別技術賦予了照片分類應用的用戶體驗新感受。除了提供照片存儲,應用程序也可以更進一步,為人們提供更好的發現和搜索功能。有了通過機器學習進行自動圖像管理的功能,它們就可以做到這一點。在應用程序中整合的圖像識別程序界面可以根據機器所鑒定的特徵對圖像進行分類,並且根據主題將照片分組。
圖像識別的其他應用包括存儲照片和視頻網站、互動營銷以及創意活動,社交網絡的人臉和圖像識別,以及具有大型視覺圖像庫網站的圖像分類。
圖像識別是一項艱巨的任務圖像識別不是一項容易的任務,一個好的方法是將元數據應用到非結構數據上。聘請專家對音樂和電影庫進行人工標注或許是一個令人生畏的艱巨任務,然而有的挑戰幾乎是不可能完成的,諸如教會無人駕駛汽車的導航系統將過馬路的行人與各種各樣的機動車分辨出來,或者將用戶每天傳到社交媒體上的數以百萬計的視頻或照片進行標注以及分類。
解決這個問題的一個方法是使用神經網絡。理論上,我們可以使用傳統神經網絡對圖像進行分析,但是實際上從計算角度來看代價很高。舉個例子,一個傳統的神經網絡在處理一張很小的圖片時(假設30*30像素)仍然需要50萬個參數以及900個輸入神經元。一個相當強大的機器可以運行這個網絡,但是一旦圖片變大了(例如500*500像素),參數以及輸入的數目就會達到非常高的數量級。
神經網絡應用於圖像識別的另一個會出現的問題是:過擬合。簡單地說,過擬合一般發生在模型過於貼合訓練數據的情況下。一般而言,這會導致參數增加(進一步增加了計算成本)以及模型對於新數據的結果在總體表現中有所下降。
卷積神經網絡
卷積神經網絡結構模型
根據神經網絡的構建方式,一個相對簡單的改變就可以讓較大的圖像變得更好處理。改變的結果就是我們所見到的卷積神經網絡(CNNs,ConvNets)。
神經網絡的廣適性是他們的優點之一,但是在處理圖像時,這個優點就變成了負擔。卷積神經網絡對此專門進行了折衷:如果一個網絡專為處理圖像而設計,有些廣適性需要為更可行的解決方案做出讓步。
對於任意圖像,像素之間的距離與其相似性有很強的關係,而卷積神經網絡的設計正是利用了這一特點。這意味著,對於給定圖像,兩個距離較近的像素相比於距離較遠的像素更為相似。然而,在普通的神經網絡中,每個像素都和一個神經元相連。在這種情況下,附加的計算負荷使得網絡不夠精確。
卷積神經網絡通過消除大量類似的不重要的連接解決了這個問題。技術上來講,卷積神經網絡通過對神經元之間的連接根據相似性進行過濾,使圖像處理在計算層面可控。對於給定層,卷積神經網絡不是把每個輸入與每個神經元相連,而是專門限制了連接,這樣任意神經元只能接受來自前一層的一小部分的輸入(例如3*3或5*5)。因此,每個神經元只需要負責處理一張圖像的一個特定部分。(順便提一下,這基本就是人腦的獨立皮質神經元工作的方式。每個神經元只對完整視野的一小部分進行響應)。
卷積神經網絡的工作過程
上圖從左到右可以看出:
  •         網絡對輸入的真實圖像進行掃瞄提取特徵。傳遞特徵的濾波器由淺色方塊表示。
  •         激活圖由堆棧形式排列,每一個對應所用的濾波器。較大的方形是要進行下採樣的塊。
  •         激活圖通過下採樣進行壓縮。
  •         下採樣後的激活圖經過濾波器產生新的一組激活圖。
  •         第二次下採樣——對第二組激活圖進行壓縮。
  •         全連接層為每個節點的輸出指定一個標籤。

卷積神經網絡的濾波器如何對連接根據相似性進行濾波?訣竅在於新加的兩種層結構:池化層和卷積層。我們下面將步驟進行分解。用為了只完成一件事情而設計的網絡實例進行介紹,即決定一張圖片中是否含有一個老爺爺。
過程的第一步是卷積層,它自己本身就包含幾個小步驟。
  •         首先,我們要將包含老爺爺的圖片分解為一系列有重疊的3*3的像素塊。
  •         在這之後,我們將每個像素塊輸入一個簡單的、單層的神經網路,保持權重不變。這一步將像素塊集轉化成一個矩陣。只要我們保持每塊像素塊都比較小(這裡是3*3),處理它們所需的網絡也可以保持可控以及小型。
  •         下一步,輸出值會被排成矩陣,以數據形式表示照片中每個區域的內容,不同軸分別代表顏色、寬度、和高度通道。對於每一個圖像塊,都有一個3*3*3的表示。(如果要處理視頻,可以加入第四維度代表時間)。

接下來是池化層。池化層對這些3或4維的矩陣在空間維度上進行下採樣。處理結果是池化陣列,其中只包含重要部分圖像,並且丟棄了其他部分,這樣一來最小化了計算成本,同時也能避免過擬合問題。
經過下採樣的矩陣作為全連接層的輸入。由於經過了池化和卷積操作,輸入的尺寸被大幅減小,我們現在有了正常網絡能處理的,同時能保持數據最重要特性的東西。最後一步的輸出代表系統對於圖片中有老爺爺這一判斷的確信度。
在實際應用中,卷積神經網絡的工作過程很複雜,包括大量的隱藏、池化和卷積層。除此之外,真實的卷積神經網絡一般會涉及上百甚至上千個標籤,而不只是樣例中的一個。
如何搭建卷積神經網絡從頭開始構建一個卷積神經網絡是很費時費力的工作。目前已經有了許多API能夠實現關於卷積神經網絡的想法,而不需要工程師去瞭解機器學習的原理或者計算機視覺的專業知識。
Google雲視覺Google雲視覺是使用REST API搭建的視覺識別API。它基於開源的TensorFlow框架。它可以檢測到獨立的人臉或物體,並且包含十分全面的標籤集。
IBM Watson 視覺識別IBM Watson 視覺識別是Waston Developer Cloud服務的一部分,並且自帶大量內置類別,但它實際是為訓練基於你提供圖片的自定義類別而打造的。同時,和Google雲視覺一樣,它也提供了大量花哨的特性,包括NSFW以及OCR檢測。
Clarif.aiClarif.ai也是一個使用REST API的初創圖像識別服務。關於Clarif.ai有趣的一點是,它自帶的一系列模塊可以用於修改算法,將其應用到特定的主題上,例如食物、旅遊和結婚。
儘管上述的API適合一些一般的應用,但最好還是針對特定問題開發一個自定義的解決方案。幸運的是,大量可用的庫解決了優化和計算方面的問題,開發人員和數據科學家可以只關注訓練模型,這樣一來他們的工作便輕鬆了一些。這些庫包括Theano、 Torch、 DeepLearning4J以及TensorFlow,已成功地運用在各種各樣的應用程序中。
卷積神經網絡的有趣小應用:自動為無聲電影添加聲音要為無聲電影添加匹配的聲音,系統必須在這個任務中自動合成聲音。該系統使用上千個視頻樣例進行訓練,視頻帶有鼓棍敲打不同表面產生的不同聲音。一個深度學習模型將視頻的幀和預錄的聲音建立聯繫,然後選擇能夠完美匹配場景的音頻進行播放。系統會通過圖靈測試進行評估,讓人來決定那個視頻是合成的,哪個是真實的聲音。這是卷積神經網絡和LSTM循環神經網絡的一個很潮的應用。
視頻地址如下:視覺指引聲音 (Visually-Indicated Sounds)
關於作者:Savaram Ravindra,出生於印度,海德拉巴,「珍珠之城」。目前是Mindmajix.com網站的內容貢獻者。曾任Cognizant Technology Solutions的程序分析員。碩士畢業於韋洛爾理工大學納米技術專業。LinkedIn主頁:https://www.linkedin.com/in/savaram-ravindra-48064641/

查看英文原文:How Convolutional Neural Networks Accomplish Image Recognition?

發表於 17-10-4 08:42 | 顯示全部樓層
感謝版主分享
發表於 19-1-31 13:24 | 顯示全部樓層
感謝樓主的分享唷!
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-12-2 15:06

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |