捲積神經網路對圖片分類-上

来源:http://www.cnblogs.com/azheng333/archive/2016/08/29/5816799.html
-Advertisement-
Play Games

我們來看看在圖像處理領域如何使用捲積神經網路來對圖片進行分類。 1 讓電腦做圖片分類: 圖片分類就是輸入一張圖片,輸出該圖片對應的類別(狗,貓,船,鳥),或者說輸出該圖片屬於哪種分類的可能性最大。 人類看到一張圖片馬上就能分辨出裡面的內容,但是電腦分辨一張圖片就完全不一樣了。同一張圖片, 人類看 ...


我們來看看在圖像處理領域如何使用捲積神經網路來對圖片進行分類。

 

1 讓電腦做圖片分類:

圖片分類就是輸入一張圖片,輸出該圖片對應的類別(狗,貓,船,鳥),或者說輸出該圖片屬於哪種分類的可能性最大。

人類看到一張圖片馬上就能分辨出裡面的內容,但是電腦分辨一張圖片就完全不一樣了。同一張圖片,

人類看到的是這樣:


電腦看到的是這樣:


一個充滿像素值的數組。

 

所以給電腦一張圖片讓它對圖片進行分類,就是向電腦輸入一個充滿像素值的數組如上圖所示,數組裡的每一個數字範圍都是0-255,代表該點上的像素值。讓它返回這個數組對應的可能分類概率(狗0.01,貓0.04,船0.94,鳥0.02)。

 

人類分辨一張船的圖片可能是通過圖片里船的邊緣,線條等等特征。類似的電腦分辨一張船的圖片也是通過這些底層特征來進行判斷,比如圖片里的圖像邊緣和圖像輪廓,然後通過捲積神經網路建立更抽象的概念。

 

2 捲積神經網路結構


你有一張圖片(28X28),把它丟給捲積神經網路裡面一系列處理層,捲積層(convolutional layer),池層(pooling),全連接層(Fully connected layer也就是上圖的sigmoid neurons),最後在輸出層得到結果(neuron output layer)。正如之前所說,輸出可能是一個分類或者可能的分類對應的概率。接著我們需要理解每個一層具體做了什麼事情。

 

3 第一層捲積層(convolutional layer)

捲積神經網路里第一層總是捲積層。正如前面所說,我們輸入到捲積層里的是一個充滿像素值的數組 ,假如是一個28X28X3的數組(3是RGB值)。你可以把捲積層想象成一道光束,照在一張圖片上面。這道光束叫做過濾器,被光束照耀的地方叫做感受區。假設這道光束照亮的範圍是一個5X5的方形區域。現在讓這道光束從左到右,從上到下掃過圖片的每一個區域。


當所有移動完畢時,你會發現得到了一個24X24X3的數組。我們叫這個數組為特征圖像。

 

這個過濾器是一個數字類型的數組(裡面的數字就是一些權重值)。過濾器的深度和輸入的深度一樣。所以過濾器的維度就是5X5X3。我們使用5X5X3過濾器,就可以得到輸出數組24X24X3。如果使用更多的過濾器,我們就可以得到更多的特征圖像。這就是捲積層里發生的事情。

 

4 具體如何捲積

假設我們有一張老鼠的圖片:


還有一個7X7X3的過濾器,它有一些權重值, 是一個曲線過濾器:


現在我們讓過濾器在圖片的左上角:


當過濾器掃或者捲積整個圖片時,把過濾器裡面的權重值和真實圖片裡面對應的像素值相乘,最後把所有結果加和,得到一個加和值。然後重覆這個過程,掃描整個輸入圖片,(下一步把過濾器向右移動一個單元,然後在向右移動一步,如此),每一步都可以得到一個值。

下麵是過濾器在圖片左上角所得到的值:

Multiplication and Summation = (50 * 30)+(50 * 30)+(50 * 30)+(20 * 30) + (50 * 30) = 6600

 

可以發現捲積的過程中,如果圖片里有一個形狀與該過濾器表示的形狀相似,就會與過濾器產生激勵效果,那麼所得到的乘積結果加和值將就會是一個很大的數,接著讓我們把過濾器移到圖片的右上角看看結果是什麼。

Multiplication and Summation = 0

 

可以看到這個值很小是0,這是因為一點都不像,沒有與過濾器產生任何激勵效果。這裡我們只使用了一個過濾器,你也可以增加其他的過濾器來檢測圖片的邊緣和顏色等等。過濾器越多,特征圖就越多,從輸入數據里獲取到的信息就越豐富。

 

(未完待續)

 

參考:

http://neuralnetworksanddeeplearning.com/chap6.html#convolutional_neural_networks_in_practice

https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/

 

                    關註大數據尖端技術發展,關註奇點大數據
                       


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前提條件: 1、Spark Standalone 集群部署完成 2、Intellij Idea 能夠運行 Spark local 模式的程式。 源碼: 這裡主要的思想還是將打包的jar提交到集群。 使用.setJars方法 ...
  • 一、 表設計 二、 索引 三、 SQL語句 四、 散表 五、 其他 FAQ 1-1.庫名、表名、欄位名必須使用小寫字母,“_”分割。 a)MySQL有配置參數lower_case_table_names,不可動態更改,linux系統預設為0,即庫表名以實際情況存儲,大小寫敏感。如果是1,以小寫存儲, ...
  • slave IO流程已經在http://www.cnblogs.com/onlyac/p/5815566.html中有介紹 這次我們要探索註冊slave請求和dump請求的報文格式和主要流程。 一、註冊slave請求 在slave IO連接完資料庫後,slave IO接著在主庫里註冊自己,以便後續不 ...
  • 背景 Microsoft SQL Server 對於數據平臺的開發者來說越來越友好。比如已經原生支持XML很多年了,在這個趨勢下,如今也能在SQLServer2016中使用內置的JSON。尤其對於一些大數據很數據介面的環節來說這顯得非常有價值。與我們現在所做比如在SQL中使用CLR或者自定義的函數來 ...
  • 說到高可用,看官們會想到很多方案,也許是自親身經歷過系統從單機變成高可用的痛苦過程,也許有的看官只是在自己的虛機上搭建過測試的玩具。今天本篇用我自己的真實經歷給大家講述,不管怎麼樣實戰和測試玩耍還是很大的區別的!可能你覺得搭建一套高可用方案很簡單,配置配置就OK了,但在真正的複雜系統中一切就沒有那麼 ...
  • 最近看了slave IO的源碼,發現slave IO的寫relay log貌似是單線程單連接的,這讓我有點小失望。 slave IO的主函數是handle_slave_io,處理流程如下: 圖1 handle_slave_io處理流程 我們這次主要要完成safe_connect以及try_to_re ...
  • 1. 表恢復 對誤刪的表,只要沒有使用 purge 永久刪除選項,那麼基本上是能從 flashback table 區恢復回來的。 數據表和其中的數據都是可以恢復回來的,記得 flashback table 是從 Oralce 10g 提供的,一般步驟有: a.從 flashback table 里 ...
  • RDD Resilient Distributed Datasets彈性分散式數據集 Spark revolves around the concept of a resilient distributed dataset (RDD), which is a fault-tolerant colle ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...