Hướng dẫn tích hợp YOLO v8 vào ứng dụng Windows Form

Hướng dẫn tích hợp YOLO v8 vào ứng dụng Windows Form để tạo ứng dụng thân thiện với người dùng. Với ứng dụng được viết bằng .NET framework thì ưu điểm là dễ triển khai đến khách hàng, dễ dàng lập trình giao diện và tích hợp thêm các thư viện khác.

Bài viết này hướng dẫn các bạn tích hợp thư viện YOLO C# đã đóng gói sẵn để tạo thành ứng dụng của riêng bạn.

.NET Framework.NET (thường gọi là .NET Core trước khi hợp nhất) đều là nền tảng phát triển phần mềm của Microsoft, nhưng chúng có những điểm khác biệt quan trọng. .NET Framework là phiên bản ra mắt từ năm 2002, chủ yếu hỗ trợ phát triển ứng dụng Windows và chỉ hoạt động trên hệ điều hành Windows. Trong khi đó, .NET là nền tảng hiện đại, đa nền tảng (Windows, macOS, Linux), cho phép phát triển ứng dụng đa dạng như web, desktop, và cloud. .NET cũng có hiệu suất cao hơn và hỗ trợ các công nghệ mới, linh hoạt hơn so với .NET Framework.

Nếu bạn muốn biết nhiều hơn về .NET thì hãy tìm hiểu về CEO Satya Nadella (hiện tại là chủ tịch – chairman của Microsoft). Bài viết này sử dụng .NET framework

Mục lục

  1. Những ưu điểm của chương trình viết bằng ngôn ngữ C# sủ dụng .NET framework
  2. Cài đặt Visual Studio 2022
  3. Download YOLOLYTIC
  4. Tạo project và reference YOLOv8 C#
  5. Gọi hàm từ YOLOv8 C#

1. Những ưu điểm của chương trình viết bằng ngôn ngữ C# sử dụng .NET framework

1. Tích hợp mạnh mẽ với hệ điều hành Windows
.NET Framework được Microsoft phát triển, vì vậy nó có sự tương thích rất tốt với hệ điều hành Windows. Các API hệ thống quan trọng của Windows như quản lý file, mạng, hoặc registry đều được truy cập dễ dàng thông qua các thư viện trong .NET. Ứng dụng Windows Forms hoặc Windows Presentation Foundation (WPF) cho phép xây dựng giao diện người dùng hiện đại, dễ dàng mà không cần phải viết code phức tạp.

2. Quản lý bộ nhớ tự động và an toàn
C# trong .NET Framework cung cấp cơ chế garbage collection (GC), tự động quản lý bộ nhớ, giúp giảm thiểu rủi ro rò rỉ bộ nhớ (leakmem), một vấn đề thường gặp trong C++ hoặc các ngôn ngữ không có cơ chế quản lý bộ nhớ tự động. Giúp giảm thiểu các vấn đề liên quan đến việc phân bổ và giải phóng bộ nhớ, đồng thời giảm thiểu các lỗi như Access Violation hoặc crash chương trình.

3. Hỗ trợ mạnh mẽ cho lập trình đa luồng và xử lý bất đồng bộ
.NET Framework cung cấp các API mạnh mẽ cho việc lập trình đa luồng và xử lý bất đồng bộ. Điều này giúp các ứng dụng xử lý được nhiều tác vụ song song, điều này cực kỳ quan trọng cho các ứng dụng đòi hỏi hiệu suất cao, VD như các phần mềm xử lý ảnh từ camera mà website thigiacmaytinh.com đang hướng dẫn.

Các ngôn ngữ khác như C++ hỗ trợ đa luồng, nhưng thường không có sự đơn giản như .NET Framework và C#. Lập trình bất đồng bộ trong C# vẫn giữ được logic rõ ràng, dễ đọc, giúp cải thiện năng suất của lập trình viên và dễ dàng bảo trì sau này.

4. Kho thư viện phong phú và khả năng mở rộng dễ dàng
.NET Framework có thư viện khổng lồ với rất nhiều chức năng từ quản lý file, đến xử lý dữ liệu số và thời gian,… Dễ dàng truy vấn và tương tác với cơ sở dữ liệu, giúp rút ngắn thời gian phát triển so với việc phải sử dụng các ngôn ngữ hay framework khác.

Hơn nữa, với hệ thống NuGet, các lập trình viên có thể dễ dàng tích hợp các gói thư viện bên ngoài vào dự án.

5. Hiệu suất và tối ưu hóa bộ nhớ
Ngôn ngữ C# hiện tại đã được tối ưu rất tốt, tốc độ thực thi nhanh, không kém cạnh các ngôn ngữ khác về tốc độ thực thi. Lập trình viên có thể viết các ứng dụng chạy mượt mà, phản hồi nhanh để tạo ấn tượng tốt với người dùng.

2.Cài đặt Visual Studio 2022

Vào thời điểm viết bài này thì Visual Studio 2022 đang là phiên bản mới nhất với rất nhiều ưu điểm. Trong đó việc gợi ý keyword là 1 ưu điểm mạnh, giúp cho lập trình viên viết code nhanh hơn. Đồng thời Copilot đã tích hợp sẵn vào Visual Studio, giúp lập trình viên có thể hỏi trực tiếp khi gặp vấn đề.

Download tại trang chủ: https://visualstudio.microsoft.com/

Đối với lập trình viên thông thường, sinh viên,… thì phiên bản Community là quá đủ để sử dụng.

Các bạn chọn .NET desktop developmentDesktop development with C++ như hình bên dưới. Ở panel bên phải, trong các mục của .NET desktop development nhớ chọn .NET 4.7.2

Cũng ở panel bên phải, mục Desktop development with C++ chọn MSVC v143

Ghi chú: bạn cần chọn MSVC v143 vì YOLO C# viết bằng C++

3. Download YOLOLYTIC

YOLOLYTIC là chương trình có mục đích chính là dùng để test model YOLOv8 training xong. Các bạn có thể reference YOLOv8_cs-x64.dll vào ứng dụng riêng của mình.

Trong bài viết đã có hướng dẫn chi tiết cách cài đặt và sử dụng chương trình: YOLOLYTIC – Phần mềm phát hiện vật thể mạnh mẽ sử dụng YOLO v8

4. Tạo project và reference YOLOv8 C#

Các bạn có thể làm theo các bước bên dưới hoặc xem video

Tạo 1 project mới bằng .NET framework

Tiếp theo là chọn .NET framework 4.7.2

Tạo mode x64 vì YOLO C# chỉ có phiên bản x64. Mở cửa số Configuration Manager lên chọn New để tạo platform

Các chương trình Deep Learning dù bất kỳ ngôn ngữ nào cũng chỉ có phiên bản x64 cho dù sử dụng CUDA hay không.

Chọn x64 như hình vẽ, nhớ chọn Create new project platform như hình dưới

Sau khi tạo đúng thì platform của project và solution đều là x64 như hình

Mỗi project có nhiều config như Debug, Release và nhiều platform như x64, x86 và ANY CPU. Tương tự solution cũng có nhiều config và platform, mỗi cặp config-platform của solution có thể chọn config của project riêng.

VD: solution có 2 project, project 1 là chương trình chính (exe), project 2 là lib (dll), solution đang config là Debug có thể chọn project1 (exe) là Debug, project2 (dll) là Release. Tương tự với mode, nhưng mode sẽ phức tạp hơn 1 chút.

VD: Project chính viết bằng C# mode x64, project lib có thể platform x64 hoặc ANY CPU. Tuy nhiên điều này rất dễ nhầm lẫn, dễ gây ra lỗi không compile được. Cho nên tất cả các project trong solution nên cùng platform.

Các bạn cần setup cho output path của mode Debug và Release chung folder, và các file dll đi kèm YOLOLYTIC cũng copy vào đây. Vào properties của project setup output của mode Debug & Release là folder bin

Ấn build project, chương trình sẽ build ra file exe trong folder bin. Các bạn copy tất cả file dll vào đó là được. Sau đó reference đến file YOLOv8_cs-x64.dll

5. Gọi hàm từ YOLOv8 C#

YOLOv8 C# cung cấp cho bạn 2 công cụ là detect segment. Detect sẽ trả về danh sách các bounding box hình chữ nhật, segment sẽ trả về danh sách các polygon.

Đoạn code bên dưới dùng để detect, các bạn bỏ vào form load cũng được.

Đoạn code này dùng để segment.

Download

Source code Example.sln trong folder YOLOLYTIC

Leave a Reply