ML.NET是一個開源的跨平台機器學習框架,ML.NET 1.5.2 版本工具更新包括通過模型生成器使用 Azure ML 訓練對象檢測模型的能力。現在您還可以使用 ML.NET CLI 本地訓練圖像模型。
模型生成器中的對象檢測
對象檢測是計算機視覺問題。對象檢測雖然與圖像分類密切相關,但以更精細的規模執行圖像分類。對象檢測可定位和分類圖像中的實體。當圖像包含不同類型的多個對象時請使用對象檢測。
對象檢測的一些用例包括:
- 自駕汽車
- 機器人
- 人臉檢測
- 工作場所安全
- 對象計數
- 活動識別
雖然以前 ML.NET 提供了通過 ML.NET API 使用預先訓練的 TensorFlow 和 ONNX 模型進行對象檢測的能力,但現在您可以使用 Visual Studio 中的模型生成器來訓練具有 Azure 和 AutoML 功能的自定義對象檢測模型。
在模型生成器中選擇對象檢測方案並設置 Azure ML 工作區后,必須輸入數據。目前,模型生成器不提供注釋圖像的方法,因此必須使用外部工具在訓練圖像中的對象周圍繪制邊界框。
如果您需要標記圖像,我們建議您嘗試 VoTT,一個開源注釋和標簽工具的圖像和視頻資產。
下載 VoTT 后,您可以創建一個新的 VoTT 項目,從本地文件系統中選擇數據集(Azure Blob 存儲和必應圖像搜索也是選項,但模型生成器目前僅支持本地數據集中的訓練)。這只是一個文件夾,其中包含您要注釋的所有圖像。為源連接選擇圖像數據集的文件夾路徑后,然后可以選擇"目標連接"的輸出文件夾。您可以跳過"視頻設置",然后添加標簽(您希望在圖像中檢測到的任何對象):
保存項目后,將顯示"源連接"文件夾中的所有圖像,您可以開始按以下方法標記圖像:
完成標記后,可以轉到"導出"部分(左側工具欄上的第 4 個圖標),選擇"VoTT JSON"作為提供程序,選擇"僅標記資產"作為資產狀態(包括圖像是可選的)。當您點擊"保存導出設置"時,VoTT JSON 將在 VoTT 項目創建期間指定的"目標連接"文件夾中生成。
Vott Json 如下所示:
然后,您可以使用此 VoTT JSON 作為模型生成器中數據步驟的數據集輸入。
模型生成器目前只接受由 VoTT 生成的 JSON 格式,但我們計划在將來添加對更多格式的支持。如果要在模型生成器中看到受支持的對象檢測數據集格式,請將反饋留在 GitHub 上。
輸入數據並移動到模型生成器中的"訓練"步驟后,可以點擊"開始訓練",該訓練器將數據上傳到 Azure,然后開始使用 Azure ML 的訓練。訓練完成后,將下載 ML.NET模型,以便可以在本地測試。在"評估"步驟中,您可以查看模型的准確性,並預測測試圖像:
每個檢測到的界框上顯示的分數指示檢測到的對象的置信度。例如,在上面的屏幕截圖中,貓周圍的邊界框上的得分表示模型 77% 確信檢測到的對象是貓。
分數閾值(可以使用閾值滑塊增加或降低)將基於其分數添加和刪除檢測到的對象。例如,如果閾值為 .51,則模型將僅顯示分數/置信度為 .51 或以上的對象。增加閾值時,將看到檢測較少的對象;隨着閾值的降低,將看到更多檢測到的對象。
對模型的性能感到滿意后,可以在模型生成器中的"代碼"步驟中生成模型和消耗代碼,並將模型集成到最終用戶應用程序中。
在 CLI 中ML.NET分類
除了分類、回歸和建議之外,還可以使用 CLI 的跨平台 ML.NET 本地訓練自定義圖像分類模型。
此方案所需的只是要用於訓練的圖像數據集。例如,讓我們看看天氣示例,在其中要將圖像分類為雨、多雲或晴天。
首先,您需要確保圖像格式正確,這是一個文件夾,用於將照片組織成分隔的標記子文件夾,像這樣:
在這種情況下,每個文件夾包含 30 個相應天氣的圖像。獲得數據集后,可以使用 CLI 中的以下命令 ML.NET 開始訓練:
mlnet image-classification --dataset “Weather-Small”
訓練結束后,CLI 將輸出模型的准確性,並生成模型消耗和重新訓練所需的項目:
上個月,我們宣布 ML.NET 1.5.1版本,我們建議您跳過 1.5.1 並更新到 1.5.2。此版本還關閉了 30 多個報告的錯誤,並添加了 ONNX 增強功能,以支持 ONNX 導出的更多類型。你可以在1.5.2發行說明中看到更多。
入門和資源
開始學習ML.NET並了解有關 Microsoft 文檔中ML.NET模型生成器。