Tự xây dựng phần mềm phân loại hình ảnh (Machine Learning) trên C# với ML.NET

Bài viết này sẽ hướng dẫn các bạn xây dựng một phần mềm cơ bản bằng ML.NET của Microsoft.

là gì?

Học máy (Machine Learning) là một lĩnh vực trí tuệ nhân tạo liên quan đến nghiên cứu, xây dựng các kĩ thuật cho phép các hệ thống “học” tự động từ dữ liệu để giải quyết những vấn đề cụ thể. Ví dụ như các máy có thể “học” cách phân loại thư điện tử xem có phải thư rác hay không và tự động xếp thư vào thư mục tương ứng. (Theo Wikipedia.)

Những thứ bạn cần chuẩn bị để xây dựng phần mềm phân loại hình ảnh.

Đầu tiên, các bạn truy cập: https://dotnet.microsoft.com/learn/ml-dotnet/get-started-tutorial/install để tải và cài đặt công cụ ML.NET Model Builder cho Visual Studio.

Tiếp đến, các bạn mở Visual Studio và tạo một Proeject .NET Core.

  1. Chọn Create a new project (VS 2019). Hoặc File > New > Project (VS 2017)
  2. Sau đó, bạn chọn mẫu C# Console App (.NET Core) 
  3. Đổi tên Project của bạn thành myMLApp (hoặc tên khác tuỳ ý).
  4. Bạn phải chắc rằng đã bỏ chọn Place solution and project in the same directory trong VS 2019, hoặc là chọn Create directory for solution trong VS 2017.
  5. Cuối cùng, bạn bấm Create.

Bắt đầu xây dựng

Để bắt đầu sử dụng ML.NET Model Builder, các bạn làm như sau: Click chuột phải lên Project của bạn là myMLApp (hay tên tuỳ ý của bạn đã tạo ở bước trên) trong Solution Explorer và chọn Add > .

Add Machine Learning C#

Cửa sổ ML.NET Model Builder sẽ được mở ra trong VS. Như hình dưới đây:

Tại đây, có rất nhiều ứng dụng của ML.NET nhưng trong bài viết này mình chỉ hướng dẫn các bạn tạo phần mềm phân loại hình ảnh với Machine Learning. Vì vậy, các bạn chọn Image Classification

Chương trình sẽ yêu cầu bạn nhập một thư mục chứa các ảnh cần phân loại, ví dụ: Thư mục Images sẽ chứa thư mục con là Dogs, trong Dogs sẽ chứa tất cả các ảnh về chó và tương tự với thư mục Cats. Lưu ý mỗi thư mục phải có các ảnh tương đương về số lượng nếu không kết quả có thể bị chênh lệch.

Thư mục ảnh mẫu, các bạn có thể tải tại đây: https://github.com/nhannt201/Classify_Images_MachineLearning/tree/master/Animals

Ở đây mình chọn thư mục Animals gồm có Cats và Dogs:

Tiếp đến, các bạn tiến hành bấm Train để dạy cho máy.

Tại đây, các bạn có 2 tuỳ chọn trên Azure hoặc trên máy, do mình không có Azure nên mình chọn Local nhé!

Sau đó, các bạn bấm Start trainning và máy bắt đầu học, các bạn ngồi đợi nhé dữ nhiều càng nhiều thì thời gian máy học càng lâu, trong lúc máy học sẽ chiếm nhiều CPU và RAM.

Sau khi máy học thành công sẽ trả về kết quả sau:

Các bạn ấn vào Evaluate:

Đây là kết quả dạy nhận diện được 100% chó và mèo

Tại đây, các bạn có thể đưa một ảnh chó hoặc mèo vào để test thử

Tiến hành code

Tiếp đến, các bạn kéo xuống và bấm vào Code để thêm vào Project của bạn.

Các bạn ấn Add Projects là xong bước xây dựng dữ liệu nha!

Như hướng dẫn, các bạn mở Program.cs trong Solution Explorer và thêm dòng code sau để chạy

Lúc các bạn thêm Add Projects, nó sẽ tạo ra thêm một <tên project của bạn>.ConsoleApp. Tại đây cũng có program.cs và code mẫu hoặc các bạn tham khảo code của mình:

input.ImageSource = “đường dẫn ảnh của bạn”;

Đừng quên thêm using <tên project của bạn>.Model;

Bậy giờ, chúng ta tiến hành chạy thử!

Kết quả

Kết quả trả về là con mèo.

Xem thêm và tham khảo:

Github: https://github.com/nhannt201/Classify_Images_MachineLearning

CodeProject: https://www.codeproject.com/Articles/5266071/Classify-Images-Machine-Learning

Chúc các bạn thành công!

 

Bình luận Facebook