使用ML.NET模型生成器來完成圖片性別識別

什麼是ML.NET?

ML.NET 使你能夠在聯機或脫機場景中將機器學習添加到 .NET 應用程序中。藉助此功能,可以使用應用程序的可用數據進行自動預測。機器學習應用程序利用數據中的模式來進行預測,而不需要進行顯式編程。

ML.NET 的核心是機器學習模型 。該模型指定將輸入數據轉換為預測所需的步驟。藉助 ML.NET,可以通過指定算法來訓練自定義模型,也可以導入預訓練的 TensorFlow 和 ONNX 模型。

ML.NET 支持在使用 .NET Core 的 Windows、Linux 和 macOS 或使用 .NET Framework 的 Windows 上運行。所有平臺均支持 64 位。Windows 支持 32 位,TensorFlow、LightGBM 和 ONNX 相關功能除外。

瞭解ML.NET模型生成器

ML.NET 模型生成器是一個直觀的圖形化 Visual Studio 擴展,用於生成、訓練和部署自定義機器學習模型。其使用自動化的機器學習 (AutoML) 來探索不同的機器學習算法和設置,以幫助找到最合適的方案。

使用模型生成器不需要具備機器學習的專業知識。只需要一些數據,和確定要解決的問題。模型生成器會生成將模型添加到 .NET 應用程序的代碼。

值得注意的是,目前ML.NET 模型生成器是屬於預覽版,需要先啟用此預覽功能:

使用ML.NET模型生成器來完成圖片性別識別

接下來,我們將使用此模型生成器來生成圖片性別生成的代碼。

生成圖片性別識別的代碼

主體步驟如下所示:

1、創建控制檯項目,然後添加【機器學習】

使用ML.NET模型生成器來完成圖片性別識別

2、選擇方案,這裡我們選擇【圖像分類】

當完成了第一步操作之後,我們將打開ML.NET模型生成器的UI界面。這裡我們選擇【圖像分類】方案:

使用ML.NET模型生成器來完成圖片性別識別

3、選擇訓練環境

4、添加數據

在此之前,我們需要先準備好數據。由於是做圖片分類,我們需要先準備圖片數據,並且以文件夾的形式分類,比如:

使用ML.NET模型生成器來完成圖片性別識別
使用ML.NET模型生成器來完成圖片性別識別

準備好圖片數據後,我們就可以在【數據】界面添加對應的文件夾了:

使用ML.NET模型生成器來完成圖片性別識別

添加完成後,就可以看到【數據預覽】:

使用ML.NET模型生成器來完成圖片性別識別

這裡筆者準備了5000多張學生圖片,由於涉及隱私,這些數據樣本不會公開,如需要訓練可以去國外很多AI網站下載數據樣本。

5、訓練

訓練是一個自動的過程,模型生成器通過該過程教模型如何回答方案相關的問題。訓練後,模型可以對其沒有見過的輸入數據進行預測。例如,在預測房價時,可以預測新上市的房屋銷售價。因為模型生成器使用自動機器學習 (AutoML),所以在訓練期間不需要任何人工輸入或微調操作。

使用ML.NET模型生成器來完成圖片性別識別

接下來,我們【開始訓練】:

使用ML.NET模型生成器來完成圖片性別識別

一般500M數據需要訓練大概半小時以上(具體還需視機器性能而定):

使用ML.NET模型生成器來完成圖片性別識別

6、評估

訓練結束後,我們就可以開始評估了。評估是衡量模型品質的過程。下面97.08的準確性已經是性能非常好的模型了,高於50%的準確性才是可以接受的模型。

使用ML.NET模型生成器來完成圖片性別識別

如果模型性能評分不符合預期,可以:

  • 延長訓練時間。有了更多時間,自動機器學習引擎可以體驗更多算法和設置。

  • 添加更多更精確的數據。有時,數據量不足以訓練高質量的機器學習模型。對於包含少量示例的數據集,尤其如此。

  • 均衡分配數據。對於分類任務,請確保在各個類別間均勻分配訓練集。例如,若有四個類別和100 個訓練示例,前兩類(標記 1 和標記 2)包含 90 個記錄,而剩下兩類(標記 3 和標記 4)只包含 10 個記錄,這就存在數據不均衡的問題,可能會導致模型很難正確預測標記 3 或標記 4。

回到剛才的主題,我們可以試用剛訓練出的模型。這裡筆者找了幾張數據樣本之外的圖片進行測試:

使用ML.NET模型生成器來完成圖片性別識別
使用ML.NET模型生成器來完成圖片性別識別

模型的準確性非常之高,我們用一張偏女性化的男性圖片進行測試:

使用ML.NET模型生成器來完成圖片性別識別

從上面的測試結果可以看出,準確性基本上取決於數據樣本的數量和質量!

7、添加代碼

完成評估階段後,模型生成器可以輸出一份模型文件和代碼,我們可以使用該代碼將模型添加到應用程序。ML.NET 模型保存為 zip 文件。用於加載和使用模型的代碼會以新項目的形式添加到解決方案中。模型生成器還會添加一個示例控制檯應用,可以運行該應用來查看工作狀態下的模型。

此外,模型生成器還會輸出生成模型的代碼,以便你能瞭解生成模型所使用的步驟。還可以通過模型訓練代碼使用新的數據重新訓練模型。添加代碼如下所示:

使用ML.NET模型生成器來完成圖片性別識別

【添加】之後,在解決方案中我們就可以相關代碼了:

使用ML.NET模型生成器來完成圖片性別識別

如上圖所示,ML.NET模型的zip文件也包含在解決方案中。

執行示例代碼

我們將【GenderRecognitionML.ConsoleApp】工程設置為啟動項目,打開示例代碼如下所示:

<code>using System;/<code><code>using GenderRecognitionML.Model;/<code><code>namespace GenderRecognitionML.ConsoleApp/<code><code>{/<code><code> class Program/<code><code> {/<code><code> static void Main(string[] args)/<code><code> {/<code><code> // Create single instance of sample data from first line of dataset formodel input/<code><code> ModelInput sampleData = new ModelInput/<code><code> {/<code><code> ImageSource =@"D:\workspace\AI\GenderRecognition\數據樣本\女\20200612180307_xxx.jpg",/<code><code> };/<code><code> // Make a single prediction on the sample data and print results/<code><code> var predictionResult = ConsumeModel.Predict(sampleData);/<code><code> Console.WriteLine("Using model to make single prediction --Comparing actual Label with predicted Label from sample data...\n\n");/<code><code> Console.WriteLine($"ImageSource: {sampleData.ImageSource}");/<code><code> Console.WriteLine($"\n\nPredicted Labelvalue {predictionResult.Prediction} \nPredicted Label scores:[{String.Join(",", predictionResult.Score)}]\n\n");/<code><code> Console.WriteLine("=============== End of process, hit any key tofinish ===============");/<code><code> Console.ReadKey;/<code><code> }/<code><code> }/<code><code>}/<code>

通過上面的示例代碼我們非常簡單瞭解瞭如何來使用模型,僅需傳入圖片路徑,即可使用模型輸出對應的圖像標籤(男、女)和準確性,我們可以運行起來,執行結果如下所示:

使用ML.NET模型生成器來完成圖片性別識別

至此,整個教程就完成了,是不是非常簡單呢?即使我們不具備機器學習的專業知識!

轉載是一種動力 分享是一種美德

使用ML.NET模型生成器來完成圖片性別識別

如果喜歡作者的文章,請關注【麥扣聊技術】訂閱號以便第一時間獲得最新內容。本文版權歸作者和湖南心萊信息科技有限公司共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

文檔官網:docs.xin-lai.com

編程交流群<85318032>

產品交流群<897857351>

使用ML.NET模型生成器來完成圖片性別識別


分享到:


相關文章: