Hướng dẫn train custom model Instance Segmentation hình ảnh tôm bằng YOLO v8

Shrimp-segmentation là bài toán phân đoạn (phân tách) hình ảnh là 1 ví dụ thuyết phục về tính ứng dụng của segmentation. Con tôm có hình dáng cong hoặc duỗi thẳng ngẫu nhiên, có thể nằm chồng lên nhau,… Vì vậy segmentation sẽ phù hợp cho bài toán đếm và xác định vị trí con tôm trong ảnh.

Các bạn làm theo bài Khám Phá YOLOv8: Bước Đột Phá Trong Phát Hiện Đối Tượng để cài đặt YOLO v8 trước khi training.

Bước 1: Chuẩn bị dataset

Trên website roboflow có sẵn dataset về con tôm đã được vẽ polygon, mọi người có thể download về để sử dụng.
https://universe.roboflow.com/search?q=shrimp


Tuy nhiên annotation chưa phù hợp với YOLO v8, do đó các bạn cần convert bằng tool: labelme2yolov8

Các bạn chỉnh dataset/shrimp/data.yaml cho phù hợp. Do chúng tôi chỉ train với 1 class là shrimp nên file config của chúng tôi như sau:

Dataset cũng đã commit sẵn trong folder dataset, giúp bạn tiết kiệm thời gian làm các bước trên.

Bước 2: Chuẩn bị môi trường

Yêu cầu cần thiết để train YOLOv8 segmentation tương tự như YOLOv8 detection. Các bạn xem qua tại mục Hướng dẫn sử dụng của bài viết Khám Phá YOLOv8: Bước Đột Phá Trong Phát Hiện Đối Tượng

Bước 3: Training shrimp-segmentation

Trong notebook shrimp-segmentation.ipynb các bạn ấn nút train, sau 300 epoch kết quả sẽ được lưu lại ở shrimp-segmentation\runs\segment\trainXXX\weights\best.pt Với XXX là số thứ tự lần training.

Trong repository cũng đã commit sẵn file best.ptshrimp-seg.onnx để các bạn có thể test thử mà không cần training.

Bước 3: Thử nghiệm độ chính xác

Các bạn có thể dùng đoạn code Python sau để test

Hoặc sử dụng phần mềm YOLOSEGMENT để test trực quan.

Repository

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

Leave a Reply