您的位置:首頁>科技>正文

利用阿裡雲機器學習在深度學習框架下實現智慧圖片分類

更多深度文章, 請關注雲計算頻道:https://yq.aliyun.com/cloud

伴隨著今日阿裡雲機器學習PAI在雲棲大會的重磅發佈, 快來感受下人工智慧的魅力。

一、背景

隨著互聯網的發展, 產生了大量的圖片以及語音資料, 如何對這部分非結構化資料行之有效的利用起來, 一直是困擾資料採擷工程師的一到難題。 首先, 解決非結構化資料常常要使用深度學習演算法, 上手門檻高。 其次, 對於這部分資料的處理, 往往需要依賴GPU計算引擎, 計算資源代價大。 本文將介紹一種利用深度學習實現的圖片識別案例, 這種功能可以服用到圖片的檢黃、人臉識別、物體檢測等各個領域。

下面嘗試通過阿裡雲機器學習平臺產品, 利用深度學習框架Tensorflow, 快速的搭架圖像識別的預測模型, 整個流程只需要半小時, 就可以實現對下面這幅圖片的識別, 系統會返回結果“鳥”:

二、資料集介紹

使用CIFAR-10資料集, 這份資料是一份對包含6萬張圖元為32*32的彩色圖片,

這6萬張圖片被分成10個類別, 分別是飛機、汽車、鳥、毛、鹿、狗、青蛙、馬、船、卡車。 資料集截圖:

資料來源在使用過程中被拆分成兩個部分, 其中5萬張用於訓練, 1萬張用於測試。 其中5萬張訓練資料又被拆分成5個data_batch, 1萬張測試資料組成test_batch。

最終資料來源如圖:

三、資料探索流程

下面我們一步一步講解下如何將實驗在阿裡雲機器學習平臺跑通, 首先需要開通阿裡雲機器學習產品的GPU使用權限, 並且開通OSS, 用於存儲資料。

機器學習:https://data.aliyun.com/product/learn?spm=a21gt.99266.416540.112.IOG7OU

OSS:https://www.aliyun.com/product/oss?spm=a2c0j.103967.416540.50.KkZyBu

1.資料來源準備

第一步, 進入OSS物件存儲, 將本案例使用的相關資料和代碼放到OSS的bucket路徑下。

首先建立OSS的bucket, 然後我建立了aohai_test資料夾, 並在這個目錄下建立如下4個資料夾目錄:

每個資料夾的作用如下:

check_point:用來存放實驗生成的模型

predict_code:用來存放訓練資料, 也就是cifar_pai.py

train_code:用來存放cifar_predict_pai.py

2.配置OSS訪問授權

現在我們已經把資料和訓練需要的代碼放入OSS,

下面要配置機器學習對OSS的訪問, 進入阿裡雲機器學習, 在“設置”按鈕的彈出頁面, 配置OSS的訪問授權。 如圖:

3.模型訓練

從左邊的組件框中拖拽“讀OSS Bucket”以及“Tensorflow”元件連結, 並且在“Tensorflow”的配置項中進行相關設置。

Python代碼檔:OSS中的cifar_pai.py

數據原始目錄:OSS中的cifar-10-batches-py資料夾

輸出目錄:OSS中的check_point資料夾

點擊運行,實驗開始訓練,可以針對底層的GPU資源靈活調節,除了介面端的設置,需要在代碼中也有相應的支持,代碼編寫符合Tensorflow的多卡規範。

4.模型訓練代碼解析

這裡針對cifar_pai.py檔中的關鍵代碼講解:

(1)構建CNN圖片訓練模型

network = input_data(shape=[None, 32, 32, 3],

(2)訓練生成模型model.tfl

model = tflearn.DNN(network, tensorboard_verbose=0)

5.查看訓練過程中的日誌

訓練過程中,右鍵“Tensorflow”元件,點擊查看日誌。

點擊打開logview連接,按照如下鏈路操作,打開ODPS Tasks下面的Algo Task,按兩下Tensorflow Task,點擊StdOut,可以看到模型訓練的日誌被即時的列印出來:

隨著實驗的進行,會不斷打出日誌出來,對於關鍵的資訊也可以利用print函數在代碼中列印,結果會顯示在這裡。在本案例中,可以通過acc查看模型訓練的準確度。

5.結果預測

再拖拽一個“Tensorflow”元件用於預測,

Python代碼檔:OSS中的cifar_predict_pai.py

數據原始目錄:OSS中的cifar-10-batches-py資料夾,用來讀取bird_mount_bluebird.jpg檔

輸出目錄:讀取OSS中的check_point資料夾下模型訓練生成的model.tfl模型檔

預測的圖片是存儲在checkpoint資料夾下的圖:

結果見日誌:

6.預測代碼資料

部分預測代碼解析:

predict_pic = os.path.join(FLAGS.buckets, "bird_bullocks_oriole.jpg")

首先讀入圖片“bird_bullocks_oriole.jpg”,將圖片調整為圖元32*32的大小,然後帶入model.predict預測函數評分,最終會返回這張圖片對應的十種分類['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']的權重,選擇權重最高的一項作為預測結果返回。

四、其它

免費體驗:阿裡雲數加機器學習平臺

往期文章:

【玩轉資料數列一】人口普查統計案例

【玩轉資料數列二】機器學習應用沒那麼難,這次教你玩心臟病預測

【玩轉資料數列三】利用圖演算法實現金融行業風控

【玩轉資料數列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦

【玩轉資料數列五】農業貸款發放預測

【玩轉資料數列六】文本分析演算法實現新聞自動分類

【玩轉資料數列七】有娃的注意了,機器學習教您如何提高孩子學習成績

【玩轉資料數列八】機器學習演算法的離線調度實現-廣告CTR預測

【玩轉資料數列九】機器學習為您解密霧霾形成原因

上述所有連結,在這都可以看到:https://yq.aliyun.com/articles/72841

輸出目錄:OSS中的check_point資料夾

點擊運行,實驗開始訓練,可以針對底層的GPU資源靈活調節,除了介面端的設置,需要在代碼中也有相應的支持,代碼編寫符合Tensorflow的多卡規範。

4.模型訓練代碼解析

這裡針對cifar_pai.py檔中的關鍵代碼講解:

(1)構建CNN圖片訓練模型

network = input_data(shape=[None, 32, 32, 3],

(2)訓練生成模型model.tfl

model = tflearn.DNN(network, tensorboard_verbose=0)

5.查看訓練過程中的日誌

訓練過程中,右鍵“Tensorflow”元件,點擊查看日誌。

點擊打開logview連接,按照如下鏈路操作,打開ODPS Tasks下面的Algo Task,按兩下Tensorflow Task,點擊StdOut,可以看到模型訓練的日誌被即時的列印出來:

隨著實驗的進行,會不斷打出日誌出來,對於關鍵的資訊也可以利用print函數在代碼中列印,結果會顯示在這裡。在本案例中,可以通過acc查看模型訓練的準確度。

5.結果預測

再拖拽一個“Tensorflow”元件用於預測,

Python代碼檔:OSS中的cifar_predict_pai.py

數據原始目錄:OSS中的cifar-10-batches-py資料夾,用來讀取bird_mount_bluebird.jpg檔

輸出目錄:讀取OSS中的check_point資料夾下模型訓練生成的model.tfl模型檔

預測的圖片是存儲在checkpoint資料夾下的圖:

結果見日誌:

6.預測代碼資料

部分預測代碼解析:

predict_pic = os.path.join(FLAGS.buckets, "bird_bullocks_oriole.jpg")

首先讀入圖片“bird_bullocks_oriole.jpg”,將圖片調整為圖元32*32的大小,然後帶入model.predict預測函數評分,最終會返回這張圖片對應的十種分類['airplane','automobile','bird','cat','deer','dog','frog','horse','ship','truck']的權重,選擇權重最高的一項作為預測結果返回。

四、其它

免費體驗:阿裡雲數加機器學習平臺

往期文章:

【玩轉資料數列一】人口普查統計案例

【玩轉資料數列二】機器學習應用沒那麼難,這次教你玩心臟病預測

【玩轉資料數列三】利用圖演算法實現金融行業風控

【玩轉資料數列四】聽說啤酒和尿布很配?本期教你用協同過濾做推薦

【玩轉資料數列五】農業貸款發放預測

【玩轉資料數列六】文本分析演算法實現新聞自動分類

【玩轉資料數列七】有娃的注意了,機器學習教您如何提高孩子學習成績

【玩轉資料數列八】機器學習演算法的離線調度實現-廣告CTR預測

【玩轉資料數列九】機器學習為您解密霧霾形成原因

上述所有連結,在這都可以看到:https://yq.aliyun.com/articles/72841

Next Article
喜欢就按个赞吧!!!
点击关闭提示