01.13 谷歌AutoML手把手教你在數小時為移動和邊緣設備構建機器學習模型


機器學習從概念上來說很有趣,但同時,對於初學者來說也很難理解。要掌握和理解基礎數學和邏輯,需要付出很多努力。但幸運的是,在線上有許多工具可以成倍地減少這些工作。其中之一是Google Cloud AutoML。


AutoML是一套機器學習產品,可使擁有有限機器學習專門知識的開發人員可以針對其業務需求訓練高質量模型。用技術術語來說,它是可以設計神經網絡的神經網絡。

這篇文章將重點介紹如何使用Google Cloud AutoML Vision Edge從頭開始訓練自定義機器學習模型。


1.什麼是基於邊緣的模型?

AutoML Vision Edge允許您訓練和部署針對邊緣設備優化的低延遲,高精度模型。

訓練後,可以使用AutoML提供的各種格式使用模型,例如TF Lite,Core ML,Tensorflow.js和其他容器導出格式。這篇文章將涵蓋培訓和使用基於AutoML Edge的模型的TF Lite格式。


2.準備數據集並訓練基於邊緣的模型

2.1獲得一個好的數據集

數據集是機器學習的基礎。準備數據集是培訓之前的關鍵步驟。

有兩種方法可以獲取可行的數據集-可以使用互聯網上現有的數據集(即適用於一般用例),也可以為特定用例創建自己的數據集。

為此,作者編寫了一個簡單的腳本,該腳本將有助於從Pexels網站上抓取圖片,該網站上有1000張免費的高質量照片。


爬蟲地址:

https://github.com/aayusharora/LazySpider/

一個簡單的用AutoML進行試驗的用例將是一個基本的圖像分類問題:識別狗還是貓。互聯網上可以找到許多貓和狗的圖像,也可以從各種網站(例如Pexels)輕鬆地將它們抓取。


2.2問題:將照片分類為貓和狗類

  • 步驟1:從Pexels抓取並創建數據集


通過使用Pexels,我們可以提取所需的所有貓狗圖像。使用上述腳本,我們只需要按如下所示將spider.py中的關鍵字“ cat”和“ dog”更改為:

<code>keyword = 'dog'url = "https://www.pexels.com/search/" + keyword/<code>

然後使用以下命令運行Python腳本:

<code>python spider.py/<code>

該腳本使用Selenium將所有圖像延遲加載到瀏覽器窗口中,然後再將它們下載到_images文件夾中。


  • 步驟2:清理資料集


該步驟通常被忽略,但是對於獲得良好的準確性而言,這是非常重要的。確保數據集有一個名為“ dogs”的文件夾,另一個名為“ cats”的文件夾,分別包含其圖像。


該目錄應如下所示:


谷歌AutoML手把手教你在數小時為移動和邊緣設備構建機器學習模型

注意:兩個文件夾都應至少包含100張圖像,以便AutoML開始模型訓練。


  • 步驟3:建立Google Cloud案例


準備好乾淨的數據集後,我們可以開始設置Google Cloud項目。


我們可以按照此指南創建Google Cloud項目:


https://cloud.google.com/dataproc/docs/guides/setup-project


下一步是在AutoML頁面上創建我們的數據集。如您在快照中所見,在這裡,我們將使用單標籤分類。當圖像可以屬於一個類別時,使用單標籤分類。在我們的貓與狗問題中,每張圖像都將被標記為貓還是狗,即單級標籤。在多標籤分類中,單個圖像可以同時屬於多個類別。

谷歌AutoML手把手教你在數小時為移動和邊緣設備構建機器學習模型

  • 步驟4:導入所有圖片


完成初始項目設置後,我們將使用“導入”按鈕,並導入dog和cat文件夾及其各自的圖像。


注意:最佳做法是將所有圖像上傳到Google Cloud Storage Bucket,然後從AutoML儀表板導入存儲。


上傳後,我們可以在“圖片”標籤下看到所有圖片:

谷歌AutoML手把手教你在數小時為移動和邊緣設備構建機器學習模型

  • 步驟5:開始進行模型訓練


一旦看到在AutoML儀表板中反映出貓和狗的圖像,我們就可以開始訓練我們的模型了:D


使用AutoML訓練此模型非常容易,請轉到“訓練”選項卡,然後單擊“訓練新模型”。 訓練完成後,我們會收到一封電子郵件通知。


在訓練之前,您應該決定如何使用模型(作為API(在線預測)或在邊緣設備(離線預測)上使用)。在線預測是測試結果的最佳方法,或者是您要直接通過AutoML API使用模型的最佳方法。他們更準確。離線模型可以節省大量成本,並且可以在設備上運行。它們通常較小,並且可以在沒有互聯網連接的情況下運行。


  • 步驟6:評估模型


在評估模型之前,我們應該瞭解精度和召回率的含義。精度是指您相關結果中所佔的百分比。另一方面,召回率是指按算法正確分類的所有相關結果中的百分比。您可以在此處瞭解更多有關精度和召回的信息


在儀表板上查看我們CatVsDog模型的召回率和精度值。

谷歌AutoML手把手教你在數小時為移動和邊緣設備構建機器學習模型

  • 步驟7:測試模型

該模型將在1–8小時之間的任何時間進行訓練,具體取決於數據集中的圖像數量。您可以在“測試和使用”選項卡中測試圖像。


默認情況下,AutoML將數據集隨機分為以下3組:


  • 測試數據集:用於對訓練數據集上的最終模型擬合進行評估的數據樣本。80%的圖像用於訓練。
  • 訓練數據集:用於訓練模型的數據樣本。10%的圖像用於超參數調整和/或決定何時停止訓練。
  • 驗證數據集:數據樣本,用於在調整模型超參數時對訓練數據集上的模型擬合進行評估。10%的圖像用於評估模型。這些圖像未在訓練中使用。
谷歌AutoML手把手教你在數小時為移動和邊緣設備構建機器學習模型

3.離線使用TensorFlow Lite(.tflite)模型


如果我們想離線使用模型(無論是在Android,iOS,任何桌面應用還是在邊緣設備上),我們都需要一個.tflite版本的模型,這是常見的移動和邊緣用例的模型版本。


要導出模型,我們必須單擊Tf Lite卡並選擇一個Google Cloud Bucket來導出它。


谷歌AutoML手把手教你在數小時為移動和邊緣設備構建機器學習模型

將模型導出到Google Cloud存儲桶後,您將可以看到一個.dict文件,其中包含模型的類名以及一個JSON文件,其中解釋了圖像的輸入和輸出形狀。詞典文件是您的類名的詞典。它包含將由TensorFlow Lite模型預測其分數/置信度的類名稱。


JSON文件可幫助我們瞭解可接受的輸入類型以及有關模型的其他信息。


例如:在這裡,字典文件將包含兩個類dog和cat。當運行下面提到的代碼時,我們將得到圖片的信心分別是貓還是狗。

<code>import numpy as npimport tensorflow as tfimport cv2 as cvimport osimport random# Load TFLite model and allocate tensors.interpreter = tf.lite.Interpreter(model_path="Your Model Path")interpreter.allocate_tensors()input_details = interpreter.get_input_details()output_details = interpreter.get_output_details()dim = (224, 224) // From request.jsonimg = cv.resize(img,dim)img = img.reshape(1,224,224,3 ) // From request.jsoninput_data = np.array(img, dtype=np.uint8)interpreter.set_tensor(input_details[0]['index'], input_data)interpreter.invoke()output_data = interpreter.get_tensor(output_details[0]['index'])print(output_data)/<code>

您的output_data將包含圖像的類名稱和準確性得分。我們的數據集的準確度達到93.2%,對於大多數基本用例而言,這是很好的選擇。


結論

AutoML它確實伴隨著不可避免的在線預測成本。但是如果您離線(即在設備上)使用模型,則無需支付任何費用。


AutoML非常適合分類問題,也非常適合希望使用ML解決實際問題的初學者。


分享到:


相關文章: