以 Azure Custom Vision 實作圖像分類器 — 1

Ashe Liao
Ashe Liao
Aug 31, 2018 · 6 min read

1. 前言

  • Custom Vision 是什麼

Custom Vision 是由Microsoft所開發的雲端服務,讓使用者可以輕鬆打造影像分類器和物件辨識。

只需由使用者上傳圖片並標籤後,就可以透過Custom Vision訓練出一個合適的模型,使用者可以透過Web介面或是下載模型做後續應用。

簡言之,Microsoft Custom Vision 和 Google Auto ML有著相似的理念,使用者不需深入了解機器學習的技術架構及演算法,只需上傳圖片,點幾個按鍵後就可以輕鬆地訓練出模型,模型匯出後的結果甚至和tensorflow所訓練出的模型格式相同。

  • 分類器是什麼

分類器(Classifier),是透過分群演算法所建構出來的模型。我們可以透過分群的方式將資料分隔,在新資料進來時,就可以透過分類器知道新資料的標籤應該為何。

舉例來說,如果我們讓電腦自動揀選土豆。一粒土豆是一筆數據, ( 土豆重量 , 土豆顏色 ) 是其數值。首先,取一百粒土豆,個別以儀器測量其數值,然後人工進行分類,分為良與劣兩類,再把這些數據全數輸入到電腦當中。接著,利用任何一種分群的演算法,找到良與劣的分界線。則每一粒新產的土豆,都可以以儀器自動測量其數值,再用演算法判斷數值在分界線的哪一側,就能判斷出土豆的良劣了。( From NTNU CSIE 演算法筆記)

回到主題,我們也可以透過Custom Vision的分類器來實作圖像分類,我們只需把照片丟入Custom Vision並加上標籤,就可以由Custom Vision訓練出一個合適的分類器模型。


2. 設定步驟

  • 首先,你必須要有Microsoft的帳號,才可以開通Custom Vision的專案。註冊Microsoft的帳號及開通Custom Vision的權限完全免費。甚至,在免費帳戶下,你可以擁有兩個免費專案,每個專案可以有 5,000 個訓練影像
    以及10,000 個預測結果。
  1. 在擁有Microsoft的帳號後,可以由此處進入Custom Vision的頁面。點選Sign In就可以登入你的帳號並進入你專屬的專案介面。
  2. 點擊New Project就可以新增一個專案,不過要注意的是,一個免費帳戶只能擁有兩個專案。若是免費帳戶,請選擇Limited Trial。若是付費帳戶,則可以選擇現有的一個群組,或輸入Name(專案的名稱)、Description(描述)及Resource Group(資源群組)來新增一項。資源群組類似資料夾的概念,在第一次進入時,你應該不會有任何的資源群組可供使用,請新增一個。
  3. 下方的Project Type有兩項可供選擇,這邊我們選擇 Classification(分類器),另一項 Object Detection (preview) 是物件偵測,可以在畫面中偵測特定物體並給出框線。由於這項服務有限制呼叫API的次數,因此一般並不會由這項服務來實做物件偵測,我們會使用沒有次數限制的深度學習框架CNTK。
  4. Classification Types 則需看你標籤的數目多寡,若你只想在單張照片中辨識單一標籤,可以選擇 Multiclass (Single tag per image),若你想在一張照片中辨識多個標籤,則可以選擇 Multilabel (Multiple tags per image)。
  5. 設定的最後一部分則是選擇 Domain,請選擇一個最符合專案場景的選項。若需要匯出模型至本機,則需選取帶有compact的後綴場景( General (compact)、 Landmarks (compact)、 Retail (compact) 等三種)
  6. 全數設定完成後,就可以點選create project 來新增一項專案。

3. 訓練模型及其結果

剛進入一個專案的樣子

剛進入新增的專案時,會呈現如上圖的樣子。右上方有三個項目可供選擇,分別是Training Images, Performance以及Predictions,以下會分別介紹。

在一開始進入專案時,會預設停留在Training Images的頁面。

這是因為如果要訓練一個模型,我們必須先提供足夠數量的照片讓模型來學習,這個步驟稱為訓練。

因此,在這個頁面,你可以新增一些你想讓模型認識的照片。舉例來說,如果你想讓模型透過訓練後,可以辨識香蕉和西瓜,那麼你就需要先上傳一些香蕉和西瓜的照片讓模型學習。

在第一次新增照片時,你需要手動輸入這張照片的標籤,也就是你想要模型可以透過這張照片辨識出什麼資訊。

只有第一次需要手動輸入標籤,之後新增的照片都可以透過點按已有的標籤即可新增

在這個範例中,我們新增了十張香蕉和十張西瓜的照片,來讓模型學習辨識兩者的不同進而學習分類。

全數上傳完成並標籤後的結果

全數上傳完成後,就可以點選右上方的綠色Train按鈕來進行訓練。按下後會自動跳轉到Performance的頁面,在這邊可以看到模型訓練後的結果。

上面這張圖就是模型訓練後的結果,Iteration 1是指第一次訓練後的結果,再訓練第二次、第三次後,就會多出Iteration 2,Iteration 3的結果,每次的結果可能都不盡相同,牽涉到照片樣本多寡及解析度、雜訊等問題。

而我們該如何評價這個模型的好壞呢? 我們可以透過上圖的Precision和Recall來解讀。Precision稱為準確率,Recall稱為召回率,在不牽涉過多術語的情況下,一般來說,兩者皆是越高越好。如果要詳細定義兩者的不同,則讀者需要有混淆矩陣等機器學習的相關知識,若有機會會再深入說明。

結束訓練後,我們可以點按右上方的Quick Test來檢視模型是否能正確預測香蕉和西瓜。你需要準備一張之前沒有使用過的香蕉或西瓜的照片並上傳,上傳後就會馬上得到結果。

以範例來說,新上傳的照片被分類器認為是香蕉的機率有100%,相對的,西瓜則是0%。

至此,我們就完成了一個簡單的圖像分類器,下一篇則會教學要如何將模型匯出至本機端並做後續的應用。

    Ashe Liao

    Written by

    Ashe Liao

    Microsoft Technology Center TAI / NTU BDSRC research assistant

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade