Trong bài trước mình đã giới thiệu chương trình Darknet Analytics /để test YOLO Darknet.
Bài này mình sẽ hướng dẫn cách tích hợp TGMTdarknet vào chương trình C# để demo.
TGMTdarknet được build bằng YOLO Darknet và wrapper qua ngôn ngữ C#. Mục đích để hỗ trợ các bạn sinh viên dễ dàng tích hợp vào các phần mềm viết giao diện bằng C# trên .NET framework
Phần mềm và các bước cần thiết
- Visual Studio 2017 trở lên
- Clone code tại https://github.com/thigiacmaytinh/DarknetAnalytics
- Chuẩn bị file Config, Weights và Names (classes)
Mở solution lên các bạn sẽ thấy các keyword quan trọng:
- TGMTcs: namespace chứa TGMTdarknet
- TGMTdarknet: class xử lý chính
- DarknetObj: object chứa kết quả nhận diện, mỗi ảnh sẽ có thể chứa nhiều object nên kết quả trả về là List
Khi load weights thì các bạn cần truyền 3 tham số là file Config, Weights và Names. Nếu load thành công thì darknet.IsLoaded() sẽ bằng true.
1 2 |
TGMTdarknet darknet; darknet = new TGMTdarknet(cb_classes.Text, cb_config.Text, cb_weight.Text); |
Hàm Detect nhận vào 2 tham số, tham số đầu tiên là ảnh hoặc đường dẫn ảnh, tham số thứ 2 là probability. Object nào có probability lớn hơn giá trị truyền vào thì mới trả về.
1 |
List<DarknetObj> objects = darknet.Detect(fileName, probability); |
DarknetObj có các properties sau:
- classID: giá trị từ 0-n theo file annotation
- className: tương ứng với file *.names đã loads
- rect: tọa độ object
- probability: xác suất của object
Ảnh thử nghiệm
Một số lưu ý
- Chương trình chỉ chạy trên x64
- Rectangle có giá trị là X Y Width Height còn annotation là Center-X Center-Y Width và Height