目前人工智慧應用的趨勢,基本上是 "雲端訓練+邊緣運算" 的混合架構。因為訓練人工智慧模型所需要的機器學習算法跟環境,對於大部分的開發人員來說,都需要花許多時間學習跟準備,更別說還要處理訓練用的資料和標記資料了。Azure Custom Vision 服務提供了容易操作的介面,所以不管是開發人員,甚至是終端使用者,只要有圖片,隨時都可以根據需求,建立需要的人工智慧模型。除此之外,Azure Custom Vision 服務也可以將雲端上建立的模型匯出,讓你可以在裝置或是電腦上的程式使用這些模型。在上一篇文章中,我們簡單介紹了如何透過 Azure Custom Vision 服務建立辨識空氣狀況的模型,接下來要來看看怎樣把這模型,離線應用在邊緣裝置或是電腦的程式中。

在匯出模型到裝置上使用之前,首先必須要將先前的模型重新訓練成 Compact 模式。Compact 模式是已經針對行動裝置上做即時圖像分類做最佳化的設定,因此將來輸出的模型可以在 Raspberry Pi 或是手機上直接使用。首先在 Azure Custom Vision 服務的右上角,按下齒輪狀的專案設定按鈕:

接下來,重新設定專案的 Domain 為 General (compact) 模式,然後按下 Save Changes 按鈕:

完成之後,按下右上角的 Train 按鈕,訓練新的 Iteration。訓練完成之後,在 Performance 頁面上,會顯示這是一個 General (compact) 的模型,並且會有 Export 按鈕:

按下 Export 按鈕之後,Azure Custom Vision 服務目前可以將訓練的模型輸出成下面其中一種框架:

我們希望可以在 Raspberry Pi 裝置上的 TensorFlow 框架中使用模型,因此選擇 TensorFlow 之後按下 Export 輸出:

完成之後會下載一個 zip 檔,解壓縮之後裡面會有一個 model.pb 以及一個 labels.txt 的檔案。將這兩個檔案複製到 Raspberry Pi 的工作目錄下之後,就可以在裝置的python 程式中使用這個模型:

import tensorflow as tf# Import the TF graphwith tf.gfile.FastGFile(‘model.pb’, ‘rb’) as f:graph_def.ParseFromString(f.read())tf.import_graph_def(graph_def, name=’’)# Create a list of labels.with open(‘labels.txt’, ‘rt’) as lf:for l in lf:labels.append(l.strip())

接下來,將裝置上所拍攝的照片送進來判斷就可以了:

with tf.Session() as sess:prob_tensor = sess.graph.get_tensor_by_name(output_layer)predictions, = sess.run(prob_tensor, {input_node: [augmented_image] })# Print the highest probability labelhighest_probability_index = np.argmax(predictions)print()print('Classified as: ' + labels[highest_probability_index])print()# Print out all of the results mapping labels to probabilities.label_index = 0for p in predictions:truncated_probablity = np.float64(round(p,8))print (labels[label_index], truncated_probablity)label_index += 1

程式碼完成之後,我們使用下面這張圖進行測試:

得到的結果如下:

如果使用這一張:

就會得到下面的結果:

有興趣測試的朋友,可以從 GitHub 上下載範例的程式碼,就可以在有安裝 TensorFlow 以及 OpenCV 的 Raspberry Pi 裝置上離線執行空氣狀態的偵測。但由於 Raspberry Pi 裝置目前是在離線的狀態下執行,因此若是 Azure Custom Vision 中的專案有任何更新的模型,是沒有辦法馬上套用在裝置上的。這時候你可以結合 Azure IoT Hub,當有新的模型產生的時候,通知所有的裝置重新下載新的模型使用。

--

--

John Chang

John Chang (張書源) 目前擔任 Microsoft 亞太區技術專家,專注在人工智能與物聯網的解決方案,對於雲端服務架構以及商務應用發展具有多年實務經驗,近期也致力於推廣人工智能在產業方面的應用。曾經擔任全球雲端合作戰略官、雲端與人工智能應用架構師、企業應用整合顧問以及講師。