物件偵測模型與圖片標記模型類似,但前者會為圖片區域指派標籤,而非為整張圖片指派標籤。您可以使用物件偵測模型辨識及定位圖片中的物件,或追蹤一系列圖片中物件的移動情形。
如要訓練物件偵測模型,請提供一組圖片給 AutoML Vision Edge,並附上相應的物件標籤和物件邊界。AutoML Vision Edge 會使用這個資料集在雲端訓練新模型,供您用於裝置端物件偵測。
事前準備
如果您沒有 Firebase 專案,請在 Firebase 控制台中建立專案。
詳閱「包容性機器學習指南 - AutoML」中的指南。
如要試用 AutoML Vision Edge,但沒有自己的訓練資料,請下載範例資料集,例如:
1. 組裝訓練資料
首先,您需要準備加上標籤的圖片訓練資料集。請留意下列規定:
圖片必須採用下列其中一種格式:JPEG、PNG、GIF、BMP、ICO。
每張圖片不得大於 30 MB。請注意,AutoML Vision Edge 會在預先處理期間縮減大多數圖片的比例,因此提供高解析度圖片通常不會提升準確度。
每個標籤至少要有 10 個範例,最好是 100 個以上。
每個標籤都應包含多個角度、解析度和背景。
訓練資料應儘可能貼近要用來進行預測的資料。舉例來說,如果所需用途主要是模糊和低解析度的圖片 (例如監視攝影機拍攝的圖片),則訓練資料也應為模糊和低解析度的圖片。
AutoML Vision Edge 生成的模型已針對實體物件的照片進行最佳化。這類模型可能無法準確辨識 X 光片、手繪圖、掃描文件、收據等。
此外,模型通常無法預測人類無法指派的標籤。因此,如果無法訓練人類在觀看圖片 1-2 秒後指派標籤,則可能也無法訓練模型這麼做。
準備好訓練圖片後,請準備將圖片匯入 Google Cloud。您可以採用兩種方法:
做法 1:Cloud Storage使用 CSV 索引
將訓練圖片上傳至 Google Cloud Storage,並準備 CSV 檔案,列出每張圖片的網址,以及每張圖片的正確物件標籤和邊界區域 (選用)。使用大型資料集時,這個選項會很有幫助。
舉例來說,將圖片上傳至 Cloud Storage,然後準備類似下列的 CSV 檔案:
gs://your-training-data-bucket/001.jpg,accordion,0.2,0.4,,,0.3,0.5,, gs://your-training-data-bucket/001.jpg,tuba,0.2,0.5,,,0.4,0.8,, gs://your-training-data-bucket/002.jpg,accordion,0.2,0.2,,,0.9,0.8,,
物件定界框會指定為圖片中的相對座標。請參閱「格式化訓練資料 CSV 檔案」。
圖片必須儲存在 us-central1
區域的值區中,且該值區屬於 Firebase 專案的對應 Google Cloud 專案。
選項 2:未標示的圖片
上傳訓練圖片後,請在 Google Cloud 控制台中標記圖片,並繪製物件邊界。建議只對小型資料集使用這項功能。請參閱下一個步驟。
2. 訓練模型
接著,使用圖片訓練模型:
在 Google Cloud 控制台中開啟「Vision Datasets」(Vision 資料集) 頁面。系統顯示提示時,請選取專案。
按一下「新增資料集」,提供資料集名稱,選取要訓練的模型類型,然後按一下「建立資料集」。
在資料集的「匯入」分頁中,上傳訓練圖片、訓練圖片的 ZIP 封存檔,或包含上傳位置的 CSV 檔案 Cloud Storage。請參閱「組裝訓練資料」。
匯入工作完成後,請使用「圖片」分頁標籤驗證訓練資料。
如果沒有上傳 CSV 檔案,請為每張圖片中要辨識的物件繪製定界框,並為每個物件加上標籤。
在「Train」(訓練) 分頁中,按一下「Start training」(開始訓練)。
為模型命名,然後選取「Edge」模型類型。
設定下列訓練設定,以控管生成模型的效能:
針對以下項目最佳化模型: 要使用的模型設定。如果低延遲或小型封裝大小很重要,您可以訓練速度較快的小型模型;如果準確度最重要,則可以訓練速度較慢的大型模型。 節點時數預算 訓練模型時數上限 (以運算時數為單位)。一般來說,訓練時間越長,模型就越準確。
請注意,如果系統判斷模型已最佳化,且額外訓練無法提高準確度,訓練作業可能會在指定時間前完成。系統只會針對實際使用的時數向您收取費用。
一般訓練時間 非常小的集合 1 小時 500 張圖片 2 小時 1,000 張圖片 3 小時 5,000 張圖片 6 小時 10,000 張圖片 7 小時 50,000 張圖片 11 小時 100,000 張圖片 13 小時 1,000,000 張圖片 18 小時
3. 評估模型
訓練完成後,您可以按一下「評估」分頁標籤,查看模型的成效指標。
這個頁面的重要用途之一,就是找出最適合模型的可信度門檻。可信度門檻是指模型為圖片指派標籤時必須達到的信賴水準。只要移動「可信度門檻」滑桿,即可查看不同門檻值對模型成效的影響。模型成效是透過「精確度」和「喚回度」這兩項指標來評估。
就圖片分類而言,「精確度」是指模型在所選門檻值下標記的圖片數量中,正確標記的圖片所占比例。如果模型精確度高,指派的標籤就越少出錯 (偽陽性情形較少)。
喚回率是指模型正確標記的圖片數量,在模型應能標記的圖片數量中所占的比例。如果模型喚回度高,就比較不會無法指派任何標籤 (偽陰性情形較少)。
您要最佳化精確度還是喚回度,取決於用途。詳情請參閱 AutoML Vision 新手指南和包容性機器學習指南 - AutoML。
找到可產生您滿意指標的信賴度門檻後,請記下該門檻,以便在應用程式中設定模型。(您可以隨時使用這項工具取得適當的門檻值)。
4. 發布或下載模型
如果您對模型的效能感到滿意,並想在應用程式中使用, 可以選擇下列三種方式,並視需要組合使用:部署模型以進行線上預測、將模型發布至 Firebase,或下載模型並與應用程式一併封裝。
部署模型
在資料集的「測試及使用」分頁中,您可以部署模型以進行線上預測,這會在雲端中執行模型。如要瞭解這個選項,請參閱 Cloud AutoML 文件。本網站的文件將說明其餘兩個選項。
發布模型
將模型發布至 Firebase 後,您不必發布新版應用程式即可更新模型,並可使用 Remote Config 和 A/B Testing,動態為不同使用者群組提供不同模型。
如果您選擇只透過 Firebase 代管模型,而不將模型與應用程式一併封裝,就能縮減應用程式的初始下載大小。但請注意,如果模型未與應用程式一併封裝,應用程式必須先下載模型,才能使用任何與模型相關的功能。
如要發布模型,可以使用下列任一方法:
- 從 Google Cloud 控制台資料集的「測試及使用」頁面下載 TF Lite 模型,然後將模型上傳至 Firebase 控制台的「自訂模型」頁面。這通常是發布單一模型最簡單的方式。
- 使用 Admin SDK,直接從 Google Cloud 專案將模型發布至 Firebase。您可以使用這個方法批次發布多個模型,或協助建立自動發布管線。
如要使用 Admin SDK 模型管理 API 發布模型,請按照下列步驟操作:
發布模型。
您需要指定模型的資源 ID,這是一個字串, 類似以下範例:
projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_ID
PROJECT_NUMBER
包含模型的 Cloud Storage 值區專案編號。這可能是您的 Firebase 專案或其他專案。Google Cloud 您可以在 Firebase 控制台的「設定」頁面或 Google Cloud 控制台資訊主頁上找到這個值。 MODEL_ID
模型 ID (從 AutoML Cloud API 取得)。 Python
# First, import and initialize the SDK. # Get a reference to the AutoML model source = ml.TFLiteAutoMlSource('projects/{}/locations/us-central1/models/{}'.format( # See above for information on these values. project_number, model_id )) # Create the model object tflite_format = ml.TFLiteFormat(model_source=source) model = ml.Model( display_name="example_model", # This is the name you will use from your app to load the model. tags=["examples"], # Optional tags for easier management. model_format=tflite_format) # Add the model to your Firebase project and publish it new_model = ml.create_model(model) new_model.wait_for_unlocked() ml.publish_model(new_model.model_id)
Node.js
// First, import and initialize the SDK. (async () => { // Get a reference to the AutoML model. See above for information on these // values. const automlModel = `projects/${projectNumber}/locations/us-central1/models/${modelId}`; // Create the model object and add the model to your Firebase project. const model = await ml.createModel({ displayName: 'example_model', // This is the name you use from your app to load the model. tags: ['examples'], // Optional tags for easier management. tfliteModel: { automlModel: automlModel }, }); // Wait for the model to be ready. await model.waitForUnlocked(); // Publish the model. await ml.publishModel(model.modelId); process.exit(); })().catch(console.error);
下載模型並與應用程式組合
將模型與應用程式一併封裝,即可確保應用程式的機器學習功能在 Firebase 託管模型無法使用時,仍能正常運作。
如果您發布模型並與應用程式一併發布,應用程式會使用最新版本。
如要下載模型,請在資料集的「Test & use」(測試及使用) 頁面中點選「TF Lite」。
後續步驟
發布或下載模型後,請參閱 iOS+ 和 Android 應用程式的相關說明,瞭解如何使用模型。