模型自訂 (4.0 版預覽版)
模型自定義可讓您針對自己的使用案例定型特製化影像分析模型。 自定義模型可以執行影像分類(標籤適用於整個影像)或物件偵測(標籤適用於影像的特定區域)。 建立和定型自定義模型之後,它會屬於您的視覺資源,而且您可以使用分析影像 API 來呼叫它。
遵循快速入門,快速且輕鬆地實作模型自定義:
重要
您可以使用 自訂視覺 服務或具有模型自定義的影像分析 4.0 服務來定型自定義模型。 下表比較這兩個服務。
區域 | 自訂視覺服務 | 影像分析 4.0 服務 | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
工作 | 影像分類 物件偵測 |
影像分類 物件偵測 |
||||||||||||||||||||||||||||||||||||
基底模型 | Cnn | 轉換器模型 | ||||||||||||||||||||||||||||||||||||
加上標籤 | Customvision.ai | AML Studio | ||||||||||||||||||||||||||||||||||||
入口網站 | Customvision.ai | Vision Studio | ||||||||||||||||||||||||||||||||||||
Libraries | REST、SDK | REST、Python 範例 | ||||||||||||||||||||||||||||||||||||
所需的最小定型數據 | 每個類別15個影像 | 每個類別 2-5 個影像 | ||||||||||||||||||||||||||||||||||||
訓練資料儲存體 | 上傳至服務 | 客戶的 Blob 記憶體帳戶 | ||||||||||||||||||||||||||||||||||||
模型裝載 | 雲端和邊緣 | 僅限雲端裝載、邊緣容器裝載即將來臨 | ||||||||||||||||||||||||||||||||||||
AI 品質 |
|
|
||||||||||||||||||||||||||||||||||||
定價 | 自訂視覺定價 | 影像分析定價 |
情節元件
模型自定義系統的主要元件是定型影像、COCO 檔案、數據集物件和模型物件。
定型影像
您的定型影像集合應該包含您想要偵測的每個標籤的數個範例。 您也會想要收集一些額外的影像,以在模型定型之後進行測試。 映像必須儲存在 Azure 儲存體 容器中,才能供模型存取。
若要有效地定型模型,請使用具有視覺多樣性的影像。 選取依不同而有所不同的影像:
- 相機角度
- 照明
- 背景
- 可視化樣式
- 個別/分組的主體(s)
- size
- type
此外,請確定所有定型影像都符合下列準則:
- 影像必須以 JPEG、PNG、GIF、BMP、WEBP、ICO、TIFF 或 MPO 格式呈現。
- 映像的檔案大小必須小於 20 MB(MB)。
- 影像的維度必須大於 50 x 50 像素,且小於 16,000 x 16,000 像素。
COCO 檔案
COCO 檔案會參考所有定型影像,並將其與其標籤資訊產生關聯。 在物件偵測的情況下,它會在每個影像上指定每個標記的周框方塊座標。 此檔案必須是 COCO 格式,這是特定類型的 JSON 檔案。 COCO 檔案應該儲存在與定型映像相同的 Azure 儲存體 容器中。
提示
關於 COCO 檔案
COCO 檔案是具有特定必要欄位的 JSON 檔案:"images"
、"annotations"
和 "categories"
。 範例 COCO 檔案看起來會像這樣:
{
"images": [
{
"id": 1,
"width": 500,
"height": 828,
"file_name": "0.jpg",
"absolute_url": "https://blobstorage1.blob.core.windows.net/cpgcontainer/0.jpg"
},
{
"id": 2,
"width": 754,
"height": 832,
"file_name": "1.jpg",
"absolute_url": "https://blobstorage1.blob.core.windows.net/cpgcontainer/1.jpg"
},
...
],
"annotations": [
{
"id": 1,
"category_id": 7,
"image_id": 1,
"area": 0.407,
"bbox": [
0.02663142641129032,
0.40691584277841153,
0.9524163571731749,
0.42766634515266866
]
},
{
"id": 2,
"category_id": 9,
"image_id": 2,
"area": 0.27,
"bbox": [
0.11803319477782331,
0.41586723392402375,
0.7765206955096307,
0.3483334397217212
]
},
...
],
"categories": [
{
"id": 1,
"name": "vegall original mixed vegetables"
},
{
"id": 2,
"name": "Amy's organic soups lentil vegetable"
},
{
"id": 3,
"name": "Arrowhead 8oz"
},
...
]
}
COCO 檔案欄位參考
如果您要從頭開始產生自己的 COCO 檔案,請確定所有必要的欄位都已填入正確的詳細資料。 下表描述 COCO 檔案中的每個欄位:
"images"
機碼 | 類型 | 描述 | 是必要的嗎? |
---|---|---|---|
id |
整數 | 唯一影像識別碼,從 1 開始 | Yes |
width |
整數 | 以像素為單位的影像寬度 | Yes |
height |
整數 | 以像素為單位的影像高度 | Yes |
file_name |
string | 影像的唯一名稱 | Yes |
absolute_url 或 coco_url |
string | 作為 Blob 容器中 Blob 絕對 URI 的影像路徑。 視覺資源必須具有讀取註釋檔案和所有參考影像檔案的權限。 | Yes |
absolute_url
的值可以在 Blob 容器的屬性中找到:
"annotations"
機碼 | 類型 | 描述 | 是必要的嗎? |
---|---|---|---|
id |
整數 | 註釋的識別碼 | Yes |
category_id |
整數 | categories 區段中定義的類別識別碼 |
Yes |
image_id |
整數 | 影像的識別碼 | Yes |
area |
整數 | 'Width' x 'Height' 的值 (bbox 的第三和第四個值) |
No |
bbox |
list[float] | 周框方塊的相對座標 (0 到 1),順序為 'Left'、'Top'、'Width'、'Height' | Yes |
"categories"
機碼 | 類型 | 描述 | 是必要的嗎? |
---|---|---|---|
id |
整數 | 每個類別的唯一識別碼 (標籤類別)。 這些應該會出現在 annotations 區段中。 |
Yes |
name |
string | 類別的名稱 (標籤類別) | Yes |
COCO 檔案驗證
您可以使用我們的 Python 範例程式碼來檢查 COCO 檔案的格式。
資料集物件
Dataset 對像是影像分析服務所儲存的數據結構,可參考關聯檔案。 您必須先建立 Dataset 物件,才能建立和定型模型。
模型物件
Model 對像是影像分析服務所儲存的數據結構,代表自定義模型。 它必須與數據集相關聯,才能進行初始定型。 定型之後,您可以在分析影像 API 呼叫的查詢參數中model-name
輸入其名稱來查詢模型。
配額限制
下表說明自定義模型項目的規模限制。
類別 | 一般影像分類器 | 一般對象偵測器 |
---|---|---|
最大 # 訓練時數 | 288 (12 天) | 288 (12 天) |
Max # 定型影像 | 1,000,000 | 200,000 |
Max # 評估影像 | 100,000 | 100,000 |
每個類別的最小 # 定型影像 | 2 | 2 |
每個影像的標籤上限 | multiclass:1 | NA |
每個映像的最大 # 區域 | NA | 1,000 |
最大 # 類別 | 2,500 | 1,000 |
最小值 # 類別 | 2 | 1 |
影像大小上限 (訓練) | 20 MB | 20 MB |
影像大小上限 (預測) | 同步:6 MB,Batch:20 MB | 同步:6 MB,Batch:20 MB |
最大影像寬度/高度 (訓練) | 10,240 | 10,240 |
最小影像寬度/高度(預測) | 50 | 50 |
可用區域 | 美國西部 2、美國東部、西歐 | 美國西部 2、美國東部、西歐 |
接受的影像類型 | jpg, png, bmp, gif, jpeg | jpg, png, bmp, gif, jpeg |
常見問題集
為什麼從 Blob 記憶體匯入時,我的 COCO 檔案匯入失敗?
目前,Microsoft 正在解決會導致 COCO 檔案匯入在 Vision Studio 中起始時,大型數據集失敗的問題。 若要使用大型資料集來訓練,建議您改用 REST API。
為什麼訓練比我指定的預算還要長/短?
指定的定型預算是校正的 計算時間,而不是 時鐘時間。 列出差異的一些常見原因:
比指定的預算長:
- 影像分析體驗高定型流量,而 GPU 資源可能很緊。 您的工作可能會在佇列中等候,或在訓練期間擱置。
- 後端定型程式發生非預期的失敗,導致重試邏輯。 失敗的執行不會耗用您的預算,但這可能會導致一般訓練時間較長。
- 您的數據會儲存在與您的視覺資源不同的區域中,這會導致數據傳輸時間更長。
比指定的預算短: 下列因素會以在一定時鐘時間使用更多預算來加快訓練速度。
- 影像分析有時會根據您的數據來訓練多個 GPU。
- 影像分析有時會同時訓練多個 GPU 上的多個探索試驗。
- 影像分析有時會使用頂級 (更快速) GPU SKU 來定型。
為什麼我的訓練失敗,我該怎麼做?
以下是定型失敗的一些常見原因:
diverged
:定型無法從您的數據中學習有意義的專案。 一些常見的原因是:- 數據不足:提供更多數據應該有説明。
- 數據品質不佳:檢查您的影像是否解析度低、外觀比例極端,或註釋錯誤。
notEnoughBudget
:您指定的預算不足以容納您正在定型的數據集和模型類型大小。 指定較大的預算。datasetCorrupt
:這通常表示您提供的影像無法存取,或註釋檔案的格式不正確。datasetNotFound
:找不到數據集unknown
:這可能是後端問題。 請連絡以支持調查。
評估模型時會使用哪些計量?
使用的計量如下:
- 影像分類:平均精確度、最高精確度、精確度前 5 名
- 物件偵測:平均值平均精確度 @ 30,平均值平均精確度 @ 50,平均值平均精確度 @ 75
為什麼我的數據集註冊失敗?
API 回應應該有足夠的資訊。 畫面如下:
DatasetAlreadyExists
:具有相同名稱的數據集存在DatasetInvalidAnnotationUri
:「在數據集註冊時間的批注 URI 中提供了無效的 URI。
合理/良好/最佳模型品質需要多少個影像?
雖然佛羅倫薩模型具有非常少的射門功能(在有限的數據可用性下達到絕佳的模型效能),但一般而言,更多的數據可讓定型的模型變得更好且更健全。 有些案例需要很少的數據(例如將蘋果分類成香蕉),但其他案例則需要更多(如在雨林中檢測200種昆蟲)。 這使得很難提供單一建議。
如果您的數據標籤預算受到限制,我們建議的工作流程會重複下列步驟:
N
收集每個類別的影像,其中N
影像很容易收集(例如)N=3
將模型定型,並在評估集上進行測試。
如果模型效能為:
- 足夠 好(效能比您先前實驗接近預期或效能更好,但收集的數據較少):請在此停止並使用此模型。
- 不好(效能仍然低於您的預期,或比先前的實驗更好,以合理的幅度收集較少的數據):
- 收集每個類別的更多影像,這是一個容易收集的數位,並返回步驟 2。
- 如果您注意到效能在幾個反覆項目之後不會再改善,可能是因為:
- 此問題未妥善定義或太困難。 與我們連絡以逐一分析。
- 定型數據品質可能很低:檢查是否有錯誤的註釋或非常低圖元的影像。
我應該指定多少定型預算?
您應該指定您願意取用的預算上限。 影像分析會在其後端使用 AutoML 系統來試用不同的模型和定型配方,以找出最適合使用案例的模型。 指定的預算越多,尋找更好的模型的機會就越高。
如果 AutoML 系統得出結論,即使仍有剩餘的預算,也會自動停止。 因此,它並不總是耗盡您指定的預算。 您保證不會按指定的預算計費。
我可以控制超參數,或在定型中使用自己的模型嗎?
否,影像分析模型自定義服務會使用低程序代碼 AutoML 定型系統來處理後端中的超參數搜尋和基底模型選取。
我可以在定型之後導出模型嗎?
預測 API 僅透過雲端服務支援。
為什麼我的物件偵測模型評估失敗?
以下是可能的原因:
internalServerError
:發生未知的錯誤。 請稍後再試一次。modelNotFound
:找不到指定的模型。datasetNotFound
:找不到指定的數據集。datasetAnnotationsInvalid
:嘗試下載或剖析與測試數據集相關聯的地面真相批注時發生錯誤。datasetEmpty
:測試數據集未包含任何「地面真相」註釋。
使用自定義模型進行預測的預期延遲為何?
我們不建議您將自訂模型用於業務關鍵環境,因為潛在的高延遲。 當客戶在 Vision Studio 中訓練自定義模型時,這些自定義模型屬於他們定型的 Azure AI 視覺資源,而且客戶可以使用分析影像 API 來呼叫這些模型。 當他們進行這些呼叫時,自定義模型會載入記憶體中,並初始化預測基礎結構。 發生此情況時,客戶在接收預測結果時可能會遇到高於預期的延遲。
資料隱私權和安全性
如同所有 Azure AI 服務,使用影像分析模型自定義的開發人員應該瞭解 Microsoft 對客戶數據的原則。 請參閱 Microsoft 信任中心上的 Azure AI 服務頁面以深入了解。