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

来源: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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...