Hướng dẫn phân đoạn 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

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

Bước 2: Training shrimp-segmentation

Do trong ví dụ này chỉ training 1 loại tôm nên chỉ có 1 class, các bạn sửa file “shrimp-segmentation\datasets\shrimp\data.yaml” thành 1 class shrimp là được.

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\train6\weights\best.pt

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.

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