libreyolo doctor

Chạy một loạt kiểm tra sức khỏe trên một dataset phát hiện đối tượng và báo cáo những gì sẽ gây hại cho một lần huấn luyện: tệp bị thiếu, nhãn hỏng, ảnh lỗi, rò rỉ giữa các split và mất cân bằng lớp đối tượng.

Lệnh
libreyolo doctor
Bắt buộc
data
Đầu ra
Báo cáo các phát hiện trên stdout. Thoát với mã 1 khi tìm thấy lỗi

Cú pháp

bash
libreyolo doctor <data.yaml> [key=value ...]

Dataset là tham số vị trí, và data=<path> cũng được chấp nhận như một cách viết thay thế. Đưa cả hai với giá trị khác nhau sẽ thoát với config_conflict. Mọi thứ còn lại là các cặp key=value, và dạng POSIX cũng dùng được, nên imgsz=1024--imgsz 1024 là cùng một tham số.

Tham số

Tham sốMặc địnhÝ nghĩa
dataTham số vị trí. Tệp YAML mô tả dataset theo định dạng phát hiện đối tượng của YOLO, ví dụ coco8.yaml. Bắt buộc
imgsz640Kích thước ảnh huấn luyện, dùng cho các kiểm tra dựa trên pixel như vật thể quá nhỏ
fastfalseBỏ qua việc giải mã ảnh, kéo theo bỏ luôn các kiểm tra ảnh lỗi, trùng lặp và rò rỉ
skipDanh sách id kiểm tra hoặc nhóm cần bỏ qua, phân tách bằng dấu phẩy, ví dụ images,labels.tiny_object
onlyDanh sách id kiểm tra hoặc nhóm chỉ chạy riêng những mục đó, phân tách bằng dấu phẩy
strictfalseCảnh báo cũng làm mã thoát báo lỗi, dùng cho các cổng chặn CI
downloadfalseCho phép tải dataset qua URL nếu chưa có. Không bao giờ chạy script
jsonfalseXuất JSON ra stdout
quietfalseTắt stderr
help_jsonfalseIn schema của lệnh dưới dạng JSON rồi thoát

Các nhóm kiểm tra

skiponly nhận cả id kiểm tra đầy đủ lẫn tiền tố nhóm, nên images sẽ chọn mọi kiểm tra images.*.

NhómBao gồm
configBản thân tệp YAML của dataset: thiếu names, nc so với names, thiếu split, path không phân giải được, tên lớp đối tượng trùng nhau
filesViệc ghép cặp ảnh và nhãn: thiếu nhãn, thiếu ảnh, nhãn mồ côi, phần mở rộng không được hỗ trợ, xung đột chữ hoa chữ thường
labelsNội dung nhãn: cú pháp, dòng polygon, id lớp đối tượng ngoài phạm vi, tọa độ ngoài phạm vi, box suy biến, vật thể quá nhỏ, box quá lớn, tỷ lệ cạnh cực đoan, box trùng lặp, ảnh quá dày đặc đối tượng, tệp giống hệt nhau
imagesDữ liệu pixel: tệp hỏng, hướng EXIF, chế độ màu bất thường, kích thước quá nhỏ hoặc cực đoan, ảnh đồng nhất một màu, trùng lặp chính xác và gần giống
splitsRò rỉ giữa các split, chính xác và gần giống
balancePhân bố lớp đối tượng: lớp đối tượng không có hoặc có rất ít thực thể, mất cân bằng, độ phủ theo split, tỷ lệ ảnh nền, lệch giữa các split

Ví dụ

Cơ bản
# download=true cho phép coco8.yaml đi kèm tải ảnh về nếu thiếulibreyolo doctor coco8.yaml download=true
Chạy nhanh, không giải mã ảnh
libreyolo doctor coco8.yaml download=true fast=true
Chặn CI theo các kiểm tra đã chọn
libreyolo doctor coco8.yaml download=true strict=true json=true \  only=labels,files,config

Ghi chú

Mã thoát

0 khi không tìm thấy lỗi nào, 1 khi có bất kỳ phát hiện nào là lỗi. Với strict=true, cảnh báo cũng đẩy mã thoát lên 1, và đó là thiết lập mà một cổng chặn CI cần.

Các lỗi khi dùng lệnh có mã riêng: 2 cho id kiểm tra hoặc nhóm không tồn tại trong skip hay only, 3 khi không tìm thấy dataset, và 3 khi dataset không có dạng phát hiện đối tượng.

Việc chọn kiểm tra được phân giải trước khi quét

skiponly được phân giải dựa trên registry các kiểm tra trước khi đọc bất cứ thứ gì từ đĩa, nên một lỗi gõ sai sẽ báo hỏng ngay lập tức thay vì sau một lượt quét ảnh kéo dài. Một bộ chọn không khớp với gì cả là lỗi, và thông báo sẽ liệt kê các nhóm đã biết.

Nếu tổ hợp skip, onlyfast khiến không còn kiểm tra nào để chạy, đó cũng là lỗi chứ không phải một lần chạy qua im lặng.

Tải về

Dataset sẽ không được tải về trừ khi download=true, và chỉ tải qua URL. Script tải về bằng Python nhúng trong tệp YAML của dataset không bao giờ được lệnh này thực thi, dù cờ được đặt thế nào.

Phạm vi

Các kiểm tra được viết cho dataset phát hiện đối tượng. Dataset có nhãn ở dạng ước lượng tư thế, phân đoạn hoặc hộp xoay sẽ bị nhận diện và từ chối với data_invalid thay vì bị chấm theo bộ quy tắc sai.

Đầu ra

Báo cáo cho người đọc được in ra stdout, còn json=true thay nó bằng một đối tượng có cấu trúc chứa các số liệu tổng hợp, thống kê của dataset, mọi phát hiện, và danh sách các kiểm tra đã bị bỏ qua.

Liên quan: libreyolo train, lần chạy mà lệnh này được thiết kế để chạy trước.

Đã kiểm chứng với LibreYOLO v1.5.0.