來源 | Seve
編譯 | 火火醬 責編| Carol
出品 | AI科技大本營(ID:rgznai100)
在本教程中,我將向大家展示如何在Google AutoML中創建單個標籤分類模型。我們將使用來自generate.photos的AI生成的面孔數據集。通過算法訓練來判斷一張臉是男性還是女性。之後,我們會將模型部署到雲中,並創建該算法的Web瀏覽器版本。
generate.photos:
https://generated.photos/
獲取標籤
下面,就讓我們開始吧!首先,讓我們看一下要分類的數據。總共約有2,000張人臉照片。
數據下載鏈接:
https://wao.ai/blog/single-label-image-classification-google-automl
很難相信這些面孔是假的對吧!那麼,現在讓我們獲取ground truth標籤來對算法進行訓練吧。首先創建圖片分類作業,我們可以藉助wao.ai來迅速完成此操作,你可以通過下方視頻鏈接瞭解該過程。
wao.ai:https://wao.ai/
視頻鏈接:https://www.youtube.com/watch?v=adjwhyqdXOM
工作完成後,我們會獲得一個包含ground-truth標籤的CSV文件。
CSV文件下載鏈接:
https://wao.ai/blog/single-label-image-classification-google-automl
建立項目
現在可以開始使用Google AutoML了。接下來,我們將在Google AutoML上創建一個數據集,並開始訓練我們的模型。
如果你還沒有賬戶,請先在Google Cloud Platform上創建一個帳戶。然後,我們需要創建一個新項目。
創建項目後,我們可以使用頂部的側邊欄或搜索欄導航到Google AutoML。你可能需要啟用一些API並設置好結算功能,GCP會引導你完成該過程。
接下來,點擊“圖像分類(Image Classification)”。
然後我們將會進入“數據集(Dataset)”界面。在該界面中,單擊“創建新數據集(Create New Dataset)”,並填寫數據集的一些詳細信息以進行訓練。
格式化輸入數據
現在我們將自己的數據放入Google Cloud Platform。所有數據都必須位於GCP存儲桶中。因為我們的數據集太大,所以瀏覽器界面無法正常工作。
但是,GCP命令行工具應該可以正常運行。你也可以安裝Google Cloud SDK(其中包括命令行工具)。
Google Cloud SDK下載鏈接:
https://cloud.google.com/sdk/
現在,我們只需要執行gsutil cp -r path / to / faces gs:// YOUR_BUCKET / faces即可將文件移到存儲桶中。確保將YOUR_BUCKET更改為為你創建的存儲庫的名稱(在下面的截圖中,我的存儲庫名稱為woven-icon-263815-vcm)。
接下來,我們要將ground-truth標籤CSV從wao.ai轉換為AutoML期望的CSV輸出。
(wao.ai:https://wao.ai/)
我們的原始CSV如下圖所示:
為了方便使用Google AutoML,我們需要將其轉換為:
我在ipython終端中使用Pandas DataFrame進行了此操作(如下圖所示):
Pandas:https://pandas.pydata.org/
完成創建數據集
現在,我們有了Google AutoML所需格式的CSV,就可以完成創建自己數據集的準備工作了。
將我們創建的新CSV上傳到你的存儲庫中,然後在“導入數據集(Import Dataset)”界面中選擇該庫。
導入數據後,你可以從瀏覽器中查看所有的圖像和標籤。
創建模型
在本節中,我們將創建一個運行在GCP上的雲模型,該模型具有易於使用的API以及可以導出到Tensorflow並在本地或本地託管的移動設備和瀏覽器上運行的Edge模型。
1. 訓練雲模型
導航到“訓練(TRAIN)”選項卡,然後單擊“開始訓練(START TRAINING)”。我使用了所有的默認選項。
幾個小時後,模型完成,並概述了模型的性能和所用的預算(我分配的全部是16小時)。
2. 訓練“邊緣”模型(可以在任何地方運行的模型)
創建邊緣模型的方法基本相同,只需單擊“邊緣(Edge)”而不是“雲(Cloud)”即可。當創建邊緣模型時,你可以優化其速度或精度。因為我想將邊緣模型與雲模型進行比較,所以我決定對精度進行優化。
結果
在“評估(EVALUATE)”選項卡中,我們能夠看到模型的執行效果。雲模型的準確率為94.5%。邊緣模型的準確率為95.5%。讓我驚訝的是,雲模型的表現竟然稍差一些,特別是考慮到它的培訓成本要更高之後!
總的來說,我對兩個模型的性能都很滿意。由混淆矩陣可知,雲模型在預測男性時出錯較多,而邊緣模型的失誤率則更均勻。
雲模型性能
在下面的屏幕截圖中,你可以看到雲模型的混亂矩陣,以及AutoML報告的一些統計信息。它在預測女性方面略優於男性。
邊緣模型性能
在以下截圖中,你可以看到邊緣模型的混淆矩陣以及AutoML報告的一些統計數據。邊緣模型在預測男性方面略勝一籌!
邊緣案例
Google AutoML為你提供了模型在哪些方面表現良好以及哪些地方出錯的細目。和我的keras模型一樣,兒童和不尋常的面部角度都是個問題。以下屏幕截圖中顯示了誤報的案例。
部署模型
既然我們已經獲得了滿意的模型,那麼我們就該應用一下了!我們的雲模型可以部署在GCP上,Edge模型可供下載並同Tensorflow一起運行。讓我們一起來探索雲模型和邊緣模型的部署吧。
雲部署
導航到“測試&使用(TEST&USE)”選項卡,然後單擊“部署模型(DEPLOY MODEL)”按鈕。為了進行測試,我決定只部署到一個節點。部署該模型大約花費一個小時。
雲模型公開了一個易於使用的API,你可以在其中上傳一個簡單的JSON對象並接收到一組帶有返回概率的預測。對我來說,這是簡單且完美的集成API。
我們還可以直接在瀏覽器中使用API並檢查結果。我從訓練集中上傳了一些面部照片,看起來效果還不錯!總的來說,如果你有能力在後臺運行雲實例,那麼我認為這是一個非常易於使用的API。
邊緣部署
對於邊緣部署,我們有多種下載模型的方法。每種方法都非常強大:
TF Lite:允許你在移動設備上運行模型
(TF Lite:https://www.tensorflow.org/lite)
TensorFlow.js:允許你在網絡瀏覽器中運行模型
(TensorFlow.js:https://www.tensorflow.org/js)
Core ML:允許你在Apple設備上運行模型
(Core ML:https://developer.apple.com/documentation/coreml)
Container:允許你在Docker容器中運行模型(對於Web服務器而言是完美的)
(Container:https://www.docker.com/resources/what-container)
我下載了Tensorflow.js 模型,並構建了一個使用Edge模型和網絡攝像頭的demo示範。注意:此模型不會將你的圖像上傳到服務器,所有內容都在本地運行!
(demo示範鏈接:https://wao.ai/blog/can-ai-guess-our-sex)
結語
總而言之,Google AutoML在該任務上易於使用,且非常有效。我期待著嘗試其他雲提供商,看看他們比較起來表現如何!
https://hackernoon.com/image-classification-model-with-google-automl-a-how-to-guide-wa7n3b6n
本文為 CSDN 翻譯,轉載請註明來源出處。
閱讀更多 CSDN 的文章