Thông tin chuyên sâu về Đánh giá và Tinh chỉnh Model#
Sau khi huấn luyện một model YOLO, bước tiếp theo là đo lường hiệu năng và tinh chỉnh model để khắc phục các điểm chưa tốt. Việc đánh giá sử dụng các metric như mAP và IoU để định lượng độ chính xác, trong khi tinh chỉnh điều chỉnh các tham số huấn luyện nhằm cải thiện những điểm yếu để model đáp ứng mục tiêu dự án của bạn. Hướng dẫn này giải thích các metric đánh giá chính, cách đọc chúng và cách hành động dựa trên kết quả.
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
Đánh giá và tinh chỉnh thường diễn ra gần cuối quy trình dự án computer vision, khi quá trình huấn luyện đã bắt đầu và bạn cần xác minh model chính xác, hiệu quả cũng như sẵn sàng để triển khai.
Các Metric Đánh giá Chính#
Nhiều metric khác nhau đo lường mức độ hiệu quả của model. Các metric hiệu năng này cung cấp thông tin chuyên sâu rõ ràng dưới dạng số, giúp định hướng cải tiến để bảo đảm model đạt được các mục tiêu đề ra.
Điểm Confidence#
Điểm confidence thể hiện mức độ chắc chắn của model rằng một object được phát hiện thuộc về một class cụ thể. Giá trị nằm trong khoảng từ 0 đến 1, trong đó điểm cao hơn cho thấy độ confidence lớn hơn. Điểm confidence giúp lọc các prediction; chỉ những detection có điểm confidence cao hơn một threshold được chỉ định mới được xem là hợp lệ.
Khi chạy inference, nếu bạn không thấy prediction nào và đã kiểm tra mọi yếu tố khác, hãy thử giảm threshold confidence. Đôi khi threshold quá cao khiến model bỏ qua các prediction hợp lệ. Việc giảm threshold cho phép model xem xét nhiều khả năng hơn. Điều này có thể không đáp ứng mục tiêu cuối cùng của dự án, nhưng là cách tốt để xem model có thể làm được gì và quyết định cách tinh chỉnh model.
Intersection over Union#
Intersection over Union (IoU) là một metric trong object detection, đo lường mức độ chồng lấp giữa bounding box được dự đoán và bounding box ground truth. Giá trị IoU nằm trong khoảng từ 0 đến 1, trong đó 1 biểu thị sự khớp hoàn hảo. IoU rất quan trọng vì đo lường mức độ đường biên được dự đoán khớp với đường biên thực tế của object.
Mean Average Precision#
Mean Average Precision (mAP) đo lường hiệu năng tổng thể của một model object detection. Metric này xét precision khi phát hiện từng class object, tính trung bình các điểm số đó và đưa ra một con số duy nhất thể hiện mức độ chính xác mà model có thể nhận diện và phân loại object.
Hai metric mAP thường được báo cáo nhất là:
- mAP@.5: Đo average precision tại một threshold IoU duy nhất là 0.5. Metric này kiểm tra liệu model có thể tìm đúng object với yêu cầu độ chính xác ít nghiêm ngặt hơn hay không. Metric tập trung vào việc object có nằm tương đối đúng vị trí hay không, không yêu cầu vị trí hoàn hảo, và giúp đánh giá liệu model có khả năng phát hiện object nói chung hay không.
- mAP@.5:.95: Tính trung bình các giá trị mAP được tính tại nhiều threshold IoU, từ 0.5 đến 0.95 với bước tăng 0.05. Đây là metric chi tiết và nghiêm ngặt hơn. Metric cung cấp cái nhìn đầy đủ hơn về mức độ chính xác mà model có thể đạt được khi tìm object ở các mức độ nghiêm ngặt khác nhau, đặc biệt hữu ích cho những ứng dụng yêu cầu object detection chính xác.
Các metric mAP khác bao gồm mAP@0.75, sử dụng threshold IoU nghiêm ngặt hơn là 0.75, và mAP@small, medium, large, đánh giá precision trên các object có kích thước khác nhau.
Đánh giá Model YOLO26#
Bạn có thể đánh giá một model YOLO26 đã huấn luyện bằng validation mode. Để tìm hiểu sâu hơn về cách tính và diễn giải từng metric, hãy xem hướng dẫn các metric hiệu năng YOLO26.
Xử lý Kích thước Ảnh Thay đổi#
Đánh giá model trên các ảnh có kích thước khác nhau giúp bạn hiểu hiệu năng của model trên các dataset đa dạng. Tham số validation rect=true nhóm ảnh theo tỷ lệ khung hình và padding từng batch đến shape nhỏ nhất phù hợp, nhờ đó các ảnh hình chữ nhật được đánh giá mà không bị ép thành hình vuông.
Tham số imgsz đặt kích thước ảnh được sử dụng trong quá trình validation và áp dụng dưới dạng hình vuông. Nếu không thiết lập rõ ràng, YOLO26 sẽ sử dụng lại giá trị được lưu trong cài đặt của model (640 đối với các model pretrained chính thức hoặc kích thước mà custom checkpoint đã được huấn luyện). Với rect=true, YOLO26 giới hạn cạnh dài hơn ở imgsz và padding cạnh ngắn hơn đến bội số của stride, giữ nguyên tỷ lệ khung hình. Điều chỉnh imgsz dựa trên kích thước dataset và dung lượng bộ nhớ GPU khả dụng.
Truy cập Metric YOLO26#
Để hiểu chi tiết hiệu năng của model, bạn có thể truy cập các metric đánh giá cụ thể chỉ với vài dòng Python. Đoạn code dưới đây tải model, chạy validation và in ra các metric hữu ích nhất.
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt")
# Run validation on your dataset
results = model.val(data="coco8.yaml")
# Overall metrics
print("mAP50-95:", results.box.map) # mAP at IoU 0.50:0.95
print("mAP50:", results.box.map50) # mAP at IoU 0.50
print("mAP75:", results.box.map75) # mAP at IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness()) # weighted score used for model selection
# Per-class metrics
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)
# Per-image precision, recall, F1, TP, FP, and FN
print("Per-image metrics:", results.box.image_metrics)
# Per-stage timing breakdown in milliseconds per image
print("Timing breakdown (ms/image):", results.speed)Lưu ý rằng fitness() là một method và phải được gọi bằng dấu ngoặc đơn, trong khi các metric như map, map50 và mp là các property được truy cập trực tiếp.
Attribute results.box.image_metrics là một dictionary theo từng ảnh, được đánh index bằng tên file ảnh, chứa precision, recall, f1, tp, fp và fn tại IoU 0.5 cho mỗi ảnh. Thời gian preprocessing, inference, loss và postprocessing được báo cáo riêng trong dictionary results.speed. Kết hợp lại, các thông tin này giúp bạn xác định chính xác những ảnh mà model gặp khó khăn và tinh chỉnh tương ứng.
Tinh chỉnh Model#
Tinh chỉnh sử dụng một model pretrained và điều chỉnh các tham số của model để cải thiện hiệu năng trên một task hoặc dataset cụ thể. Còn được gọi là retraining model, phương pháp này giúp model hiểu và dự đoán tốt hơn các kết quả đối với dữ liệu mà model sẽ gặp trong những ứng dụng thực tế. Dựa trên kết quả đánh giá, bạn huấn luyện lại model trên dữ liệu của mình và điều chỉnh các training argument được đề cập trong hướng dẫn tinh chỉnh.
Chia Tile Ảnh cho Object Nhỏ#
Chia tile ảnh có thể cải thiện độ chính xác detection đối với các object nhỏ. Bằng cách chia ảnh lớn thành các phân đoạn nhỏ hơn, chẳng hạn chia ảnh 1280x1280 thành nhiều phân đoạn 640x640, bạn giữ nguyên độ phân giải ban đầu và cho phép model học từ các mảnh có độ phân giải cao. Ultralytics hỗ trợ tính năng này trong thời gian inference thông qua SAHI tiled inference. Khi huấn luyện trên các ảnh đã chia tile, hãy bảo đảm điều chỉnh chính xác label cho từng phân đoạn mới.
Kết luận#
Đánh giá và tinh chỉnh là những bước biến một model đã huấn luyện thành model đáng tin cậy và có thể triển khai: các metric như mAP và IoU làm lộ ra điểm yếu, còn những thay đổi tham số có mục tiêu sẽ khắc phục chúng. Bắt đầu với validation mode để benchmark model, sau đó huấn luyện lại bằng các argument trong hướng dẫn tinh chỉnh và tiếp tục lặp lại với các tham số, kỹ thuật và dataset mới. Nếu phát sinh câu hỏi trong quá trình này, hãy hỏi cộng đồng trên repository Ultralytics GitHub hoặc server Ultralytics Discord.
FAQ#
Để đánh giá hiệu năng model YOLO26, các metric quan trọng bao gồm Điểm Confidence, Intersection over Union (IoU) và Mean Average Precision (mAP). Điểm Confidence đo lường mức độ chắc chắn của model đối với từng class object được phát hiện. IoU đánh giá mức độ bounding box được dự đoán chồng lấp với ground truth. Mean Average Precision (mAP) tổng hợp các điểm precision trên nhiều class, trong đó mAP@.5 và mAP@.5:.95 là hai loại phổ biến với các threshold IoU khác nhau. Tìm hiểu thêm về các metric này trong hướng dẫn metric hiệu năng YOLO26.
Tinh chỉnh một model YOLO26 pretrained bao gồm việc điều chỉnh các tham số của model để cải thiện hiệu năng trên một task hoặc dataset cụ thể. Hãy bắt đầu bằng cách đánh giá model với các metric, sau đó huấn luyện lại từ pretrained weights trên dataset của riêng bạn. Trong quá trình đánh giá, các tham số như
rect=truegiúp xử lý hiệu quả các kích thước ảnh khác nhau. Để biết các training argument cần điều chỉnh, hãy xem hướng dẫn tinh chỉnh.Để xử lý các kích thước ảnh thay đổi trong quá trình đánh giá, hãy sử dụng tham số
rect=truetrong YOLO26. Tham số này nhóm ảnh theo tỷ lệ khung hình và padding từng batch thay vì ép mọi ảnh thành hình vuông. Tham sốimgszđặt kích thước ảnh cho validation; nếu không ghi đè, YOLO26 sẽ sử dụng lại giá trị đã lưu của model (640 đối với các model pretrained chính thức). Điều chỉnhimgszđể phù hợp với dataset và bộ nhớ GPU. Để biết thêm chi tiết, hãy xem phần về xử lý các kích thước ảnh thay đổi.Cải thiện mean average precision (mAP) cho một model YOLO26 bao gồm một số bước:
- Tinh chỉnh Hyperparameter: Thử nghiệm với các learning rate, batch size và phép augmentation ảnh khác nhau.
- Data Augmentation: Sử dụng các kỹ thuật như Mosaic và MixUp để tạo ra các sample huấn luyện đa dạng.
- Chia Tile Ảnh: Chia ảnh lớn thành các tile nhỏ hơn để cải thiện độ chính xác detection đối với các object nhỏ.
Để biết các training argument đứng sau bước 1 và 2, hãy xem hướng dẫn tinh chỉnh; bước 3 được trình bày trong chia tile ảnh.
Bạn có thể truy cập metric đánh giá model YOLO26 bằng Python sau khi chạy validation:
Cách sử dụngfrom ultralytics import YOLO # Load a model model = YOLO("yolo26n.pt") # Run validation results = model.val(data="coco8.yaml") # Access key metrics print("Mean average precision at IoU=0.50:", results.box.map50) print("Mean average precision at IoU=0.50:0.95:", results.box.map) print("Mean recall:", results.box.mr) print("Class indices evaluated:", results.box.ap_class_index)Phân tích các metric này giúp bạn tinh chỉnh và tối ưu model YOLO26. Để tìm hiểu sâu hơn, hãy xem hướng dẫn về metric hiệu năng YOLO.