如要訓練圖片標籤模型,您需要提供 AutoML Vision Edge 並加入 映像檔和對應的標籤AutoML Vision Edge 會使用這個資料集訓練 新模型,可在裝置端 應用程式。(如需一般資訊,請參閱總覽 此功能)。
AutoML Vision Edge 是 Google 推出的一項服務 Cloud 服務使用本服務時,必須遵守 Google Cloud Platform 授權協議 以及《服務專屬條款》 並據此收費如需瞭解帳單資訊,請參閱 AutoML 定價方式 頁面。
事前準備
如果您沒有 Firebase 或 Google Cloud 專案,請前往 Firebase 主控台建立專案。
如果您只想試用 AutoML Vision Edge,但沒有自己的訓練資料,請下載以下任一資料集範例:
- TensorFlow 提供的官方花卉圖片範例資料集
- 這個美國手語 (ASL) 字母資料集
您可以在 Kaggle 上找到更多託管資料集。
1. 彙整訓練資料
首先,您需要將標記圖片組合成訓練資料集。請留意下列規範:
圖片必須使用下列其中一種格式:JPEG、PNG、GIF、BMP、ICO。
每張圖片的大小不得超過 30 MB。請注意,AutoML Vision Edge 會在預處理期間縮小大部分圖片,因此提供解析度極高的圖片通常不會提高準確度。
每個標籤至少提供 10 個示例,最好是 100 個以上。
為每個標籤加入多種角度、解析度和背景。
訓練資料應儘可能貼近要用來進行預測的資料。舉例來說,如果所需用途主要是模糊和低解析度的圖片 (例如監視攝影機拍攝的圖片),則訓練資料也應為模糊和低解析度的圖片。
AutoML Vision Edge 產生的模型已經過最佳化調整, 現實世界中的物體X 光、手繪、 掃描文件、收據等
此外,模型通常無法預測人類無法指派的標籤。因此,如果無法訓練人類在觀看圖片 1-2 秒後指派標籤,則可能也無法訓練模型這麼做。
準備好訓練圖片後,請將圖片匯入 Firebase。三個選項如下:
選項 1:結構化 ZIP 封存檔
將訓練圖片歸類至不同目錄,每個目錄以標籤和 其中包含該標籤的範例接著,將目錄結構壓縮為 ZIP 封存檔。
這個 ZIP 封存檔中的目錄名稱長度上限為 32 個 ASCII 字元,且只能包含英數字元和底線字元 (_
)。
例如:
my_training_data.zip |____accordion | |____001.jpg | |____002.jpg | |____003.jpg |____bass_guitar | |____hofner.gif | |____p-bass.png |____clavier |____well-tempered.jpg |____well-tempered (1).jpg |____well-tempered (2).jpg
選項 2:Cloud Storage 採用 CSV 索引
將訓練圖片上傳至 Google Cloud Storage ,並備妥列出每張圖片網址的 CSV 檔案,並視需要準備 為每張圖片加上正確的標籤使用龐大資料集時,這個選項會很實用。
舉例來說,您可以將圖片上傳至 Cloud Storage,並準備以下格式的 CSV 檔案:
gs://your-training-data-bucket/001.jpg,accordion gs://your-training-data-bucket/002.jpg,accordion gs://your-training-data-bucket/003.jpg,accordion gs://your-training-data-bucket/hofner.gif,bass_guitar gs://your-training-data-bucket/p-bass.png,bass_guitar gs://your-training-data-bucket/well-tempered.jpg,clavier gs://your-training-data-bucket/well-tempered%20(1).jpg,clavier gs://your-training-data-bucket/well-tempered%20(2).jpg,clavier
圖片必須儲存在 Firebase 專案的值區中 對應的 Google Cloud 專案。
如要進一步瞭解如何準備 CSV 檔案,請參閱 Cloud AutoML Vision 說明文件中的「準備訓練資料」。
選項 3:未標示的圖片
上傳圖片後,請在 Firebase 主控台中為訓練圖片加上標籤,可以個別標示,也可以將圖片壓縮為非結構化 ZIP 檔案。請參閱下一個步驟。
2. 訓練模型
接著,請使用圖片訓練模型:
開啟 Vision 資料集 頁面Google Cloud。系統出現提示時,請選取您的專案。
按一下「新資料集」,為資料集提供名稱,選取要訓練的模型類型,然後按一下「建立資料集」。
在資料集的「Import」分頁中,上傳 ZIP 封存檔 內含您所輸入 Cloud Storage 位置的訓練圖片或 CSV 檔案 上傳這些檔案請參閱「組合訓練資料」。
匯入工作完成後,請使用「Images」分頁驗證 訓練資料,並為所有未加上標籤的圖片加上標籤
點選「訓練」分頁中的「開始訓練」。
為模型命名,然後選取「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,或是下載 並與您的應用程式整合
部署模型
您可以在資料集的「Test & use」分頁中,部署模型進行線上預測,在雲端中執行模型。Cloud AutoML 文件會說明這個選項。本網站上的文件會說明其餘兩個選項。
發布模型
將模型發布至 Firebase 之後,您就能在不發布的情況下更新模型 新的應用程式版本,且您可以使用 Remote Config 和 A/B Testing 執行下列操作: 專為不同的使用者群組動態提供不同的模型。
如果您選擇只透過 Firebase 代管模型,而非與應用程式捆綁,就能縮減應用程式的初始下載大小。不過,請注意,如果模型未與應用程式捆綁,則必須等到應用程式首次下載模型,才能使用任何模型相關功能。
如要發布模型,您可以使用下列任一方法:
- 在 Google Cloud 控制台的資料集「Test & use」頁面中下載 TF Lite 模型,然後在 Firebase 控制台的「Custom model」頁面上傳模型。這通常 是發布單一模型的最簡單方法
- 使用以下方式,將 Google Cloud 專案中的模型直接發布至 Firebase Admin SDK您可以使用這個方法批次發布多個模型,或協助建立自動發布管道。
使用 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
從 AutoML Cloud API 取得的模型 ID。 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 應用程式中使用模型。