當前位置:編程學習大全網 - 編程語言 - 圖像識別

圖像識別

前沿

人工智能的浪潮已經席卷全球,深度學習(Deep Learning)和人工智能(Artificial Intelligence, AI)等詞匯也不斷地充斥在我們身邊。人工智能的發展是壹個三起兩落的變化,90年代期間,知識推理>神經網絡>機器學習;2005年左右,機器學習>知識(語義網)>神經網絡;而從2017年之後,基於深度學習的神經網絡>知識(知識圖譜)>機器學習。

卷積神經網絡(convolutional neural network, CNN)作為深度學習中的代表,最早的靈感是來源於1961年Hubel和Wiesel兩位神經生物學家,在對貓視覺皮層細胞的實驗中,發現大腦可視皮層是分層的(CNN中的分層網絡結構與其如出壹轍)。深度學習作為機器學習(ML)的壹個子領域,由於計算機能力的提高和大量數據的可用性,得到了戲劇性的復蘇。但是,深度學習是否能等同或代表人工智能,這壹點筆者認為有待商榷,深度學習可以認為是目前人工智能發展階段的重要技術。由於本文主要撰寫關於深度學習的入門實戰,關於細節概念不做深入研究,下面筆者從實際案例,介紹深度學習處理圖像的大致流程。

目錄:

以手寫識別數字為例,作為深度學習的入門項目,本文以Keras深度學習庫為基礎。其中使用的tensorflow等模塊需要提前配置好,同時註意模型,圖片保存、載入的文件路徑問題。在自己的計算機上運行時,需要創建或修改。下面的流程包括:使用Keras載入MNIST數據集,構建Lenet訓練網絡模型,使用Keras進行模型的保存、載入,使用Keras實現對手寫數字數據集的訓練和預測,最後畫出誤差叠代圖。

手寫數字數據集介紹:

手寫數字識別幾乎是深度學習的入門數據集了。在keras中內置了MNIST數據集,其中測試集包含60000條數據,驗證集包含10000條數據,為單通道的灰度圖片,每張圖片的像素大小為28 28.壹***包含10個類別,為數字0到9。

導入相關模塊:

載入MNIST數據集

Keras可實現多種神經網絡模型,並可以加載多種數據集來評價模型的效果,下面我們使用代碼自動加載MNIST數據集。

顯示MNIST訓練數據集中的前面6張圖片:

數據的預處理

首先,將數據轉換為4維向量[samples][width][height][pixels],以便於後面模型的輸入

為了使模型訓練效果更好,通常需要對圖像進行歸壹化處理

最後,原始MNIST數據集的數據標簽是0-9,通常要將其表示成one-hot向量。如訓練數據標簽為1,則將其轉化為向量[0,1,0,0,0,0,0,0,0,0]

模型的建立與計算

訓練模型的參數設置:

本文使用Lenet網絡架構,下面定義Lenet網絡結構,若要更改網絡結構,如用VGGNet,GoogleNet,Inception,ResNets或自己構建不同的網絡結構,可以直接在這壹塊函數內進行修改。

再附上兩個經典的模型:

VGG16:

GoogleNet:

設置優化方法,loss函數,並編譯模型:

本文使用生成器以節約內存:

結果分析

作出訓練階段的損失、精確度叠代圖,本文將epoch設置為10,已達到0.98的準確率(代碼、圖像如下所示)。

公眾號:帕帕 科技 喵

歡迎關註與討論~

  • 上一篇: 基於Keras的手寫數字識別(含代碼)
  • 下一篇:我的世界起床了,上了壹堂速成課。
  • copyright 2024編程學習大全網