Link to this sectionThông tin chi tiết về đánh giá và tinh chỉnh mô hình#
Sau khi training một model YOLO, bước tiếp theo là đo lường hiệu suất và tinh chỉnh (fine-tune) để thu hẹp các khoảng cách. Quá trình đánh giá sử dụng các metrics như mAP và IoU để định lượng độ chính xác, trong khi việc tinh chỉnh sẽ điều chỉnh các tham số training để củng cố các điểm yếu, giúp model đạt được mục tiêu của dự án. Hướng dẫn này giải thích các metrics đánh giá chính, cách đọc chúng và các kỹ thuật tinh chỉnh giúp nâng cao khả năng của model.
Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision
Đánh giá và tinh chỉnh nằm ở giai đoạn cuối của quy trình dự án computer vision, khi quá trình training đang diễn ra và bạn cần xác minh rằng model đảm bảo độ chính xác, hiệu quả và sẵn sàng để triển khai.
Link to this sectionCác metrics đánh giá chính#
Nhiều metrics khác nhau được dùng để đo lường hiệu suất của model. Những performance metrics này cung cấp thông tin chi tiết bằng số rõ ràng, giúp định hướng các cải tiến để đảm bảo model đáp ứng được các mục tiêu đã đề ra.
Link to this sectionĐiểm tin cậy (Confidence Score)#
Điểm tin cậy đại diện cho mức độ chắc chắn của mô hình rằng một đối tượng được phát hiện thuộc về một lớp cụ thể. Nó nằm trong khoảng từ 0 đến 1, với điểm số cao hơn biểu thị mức độ tự tin cao hơn. Điểm tin cậy giúp lọc các dự đoán; chỉ những phát hiện có điểm tin cậy trên một ngưỡng xác định mới được coi là hợp lệ.
Khi chạy inference, nếu bạn không thấy bất kỳ kết quả dự đoán nào và đã kiểm tra mọi thứ khác, hãy thử hạ thấp ngưỡng confidence threshold. Đôi khi ngưỡng quá cao khiến model bỏ qua các dự đoán hợp lệ. Việc giảm ngưỡng cho phép model cân nhắc nhiều khả năng hơn. Mặc dù đ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 gì và quyết định cách tinh chỉnh nó.
Link to this sectionIntersection over Union#
Intersection over Union (IoU) là một chỉ số trong nhận diện đối tượng đo lường mức độ trùng khớp của khung bao dự đoán với khung bao thực tế (ground truth). Các giá trị IoU nằm trong khoảng từ 0 đến 1, trong đó một đại diện cho sự trùng khớp hoàn hảo. IoU rất quan trọng vì nó đo lường mức độ gần gũi giữa các ranh giới dự đoán và ranh giới thực tế của đối tượng.
Link to this sectionMean Average Precision#
Mean Average Precision (mAP) đo lường hiệu suất tổng thể của một model object detection. Nó xem xét độ chính xác (precision) của việc phát hiện từng class đối tượng, tính trung bình các điểm số này và đưa ra một con số duy nhất cho thấy khả năng xác định và phân loại đối tượng chính xác đến mức nào.
Hai metrics mAP phổ biến nhất thường được báo cáo:
- mAP@.5: Đo lường độ chính xác trung bình ở một ngưỡng IoU đơn lẻ là 0.5. Metric này kiểm tra xem model có tìm thấy các đối tượng chính xác với yêu cầu khắt khe thấp hơn hay không. Nó tập trung vào việc đối tượng có nằm đúng vị trí một cách tương đối hay không mà không cần đặt chính xác hoàn hảo, và giúp kiểm tra xem model có thực sự tốt trong việc nhận diện đối tượng hay không.
- mAP@.5:.95: Lấy trung bình các giá trị mAP được tính toán tại nhiều ngưỡng IoU, từ 0,5 đến 0,95 với mức tăng 0,05. Chỉ số này chi tiết và nghiêm ngặt hơn. Nó cung cấp cái nhìn đầy đủ hơn về khả năng tìm kiếm đối tượng của mô hình ở các mức độ khắt khe khác nhau và đặc biệt hữu ích cho các ứng dụng cần nhận diện đối tượng chính xác.
Các chỉ số mAP khác bao gồm mAP@0.75, sử dụng ngưỡng IoU nghiêm ngặt hơn là 0,75, và mAP@small, medium, và large, giúp đánh giá độ chính xác trên các đối tượng có kích thước khác nhau.
Link to this sectionĐánh giá một model YOLO26#
Bạn có thể đánh giá một model YOLO26 đã được train bằng validation mode. Để tìm hiểu sâu hơn về cách tính toán và diễn giải từng metric, hãy xem hướng dẫn về YOLO26 performance metrics.
Link to this sectionXử lý kích thước ảnh biến đổi#
Việc đánh giá model trên các hình ảnh có kích thước khác nhau giúp bạn hiểu rõ hiệu suất của nó trên các bộ dữ liệu đa dạng. Tham số validation rect=true sẽ nhóm các hình ảnh theo tỷ lệ khung hình và padding từng batch về hình dạng nhỏ nhất có thể, nhờ đó các hình ảnh hình chữ nhật được đánh giá mà không cần phải ép về dạng hình vuông.
Tham số imgsz thiết lập kích thước hình ảnh được sử dụng trong quá trình validation, được áp dụng dưới dạng hình vuông. Nếu bạn 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 bất kỳ kích thước nào mà checkpoint tùy chỉnh đã được train). Với rect=true, YOLO26 sẽ giới hạn cạnh dài hơn theo imgsz và padding cạnh ngắn hơn thành bội số của stride, giúp bảo toàn tỷ lệ khung hình. Hãy điều chỉnh imgsz dựa trên kích thước của bộ dữ liệu và dung lượng GPU memory khả dụng.
Link to this sectionTruy cập các chỉ số YOLO26#
Để hiểu chi tiết về hiệu suất của model, bạn có thể truy cập các metrics đánh giá cụ thể bằng một vài dòng code Python. Đoạn mã dưới đây sẽ tải model, chạy validation và in ra các metrics 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 kèm dấu ngoặc đơn, trong khi các metrics như map, map50 và mp là các thuộc tính (properties) được truy cập trực tiếp.
Thuộc tính results.box.image_metrics là một dictionary theo từng hình ảnh, được khóa bằng tên tệp hình ảnh, chứa các giá trị precision, recall, f1, tp, fp và fn tại ngưỡng IoU 0.5 cho từng hình ảnh. Thời gian cho các bước tiền xử lý, inference, loss và hậu xử lý được báo cáo riêng trong dictionary results.speed. Tổng hợp lại, những thông tin này cho phép bạn xác định chính xác những hình ảnh nào mà model gặp khó khăn và tinh chỉnh cho phù hợp.
Link to this sectionTinh chỉnh (Fine-tuning) Model#
Tinh chỉnh là việc lấy một model đã được pretrained và điều chỉnh các tham số của nó để cải thiện hiệu suất trên một tác vụ hoặc bộ dữ liệu cụ thể. Còn được gọi là retraining model, quá trình này giúp model hiểu và dự đoán kết quả tốt hơn cho dữ liệu mà nó sẽ gặp trong các ứng dụng thực tế. Dựa trên kết quả đánh giá, bạn thực hiện retraining model để đạt kết quả tối ưu bằng cách chú ý đến một vài tham số và kỹ thuật chính.
Link to this sectionBắt đầu với tốc độ học cao hơn#
Trong quá trình training thông thường, learning rate bắt đầu ở mức thấp và tăng dần trong những epoch đầu tiên để ổn định các cập nhật ban đầu. Khi tinh chỉnh, model đã mang các đặc trưng hữu ích từ quá trình pretraining, vì vậy bạn có thể bỏ qua giai đoạn warmup này và bắt đầu thích ứng với dữ liệu mới ngay lập tức.
Thiết lập đối số training warmup_epochs thành 0 trong model.train() để vô hiệu hóa giai đoạn warmup. Khi đó quá trình training sẽ tiếp tục từ các pretrained weights tại learning rate cơ bản được cấu hình (lr0) thay vì tăng dần, từ đó điều chỉnh theo các đặc điểm của dữ liệu mới.
from ultralytics import YOLO
# Load a pretrained model
model = YOLO("yolo26n.pt")
# Fine-tune with the warmup phase disabled
model.train(data="coco8.yaml", epochs=10, warmup_epochs=0)Link to this sectionLát cắt hình ảnh cho các đối tượng nhỏ#
Image tiling (chia nhỏ ảnh) có thể cải thiện độ chính xác phát hiện đối với các đối tượng nhỏ. Bằng cách chia các hình ảnh lớn thành các phân đoạn nhỏ hơn, ví dụ như chia ảnh 1280x1280 thành nhiều phân đoạn 640x640, bạn bảo toàn được độ phân giải gốc và cho phép model học từ các mảnh ảnh có độ phân giải cao. Ultralytics hỗ trợ tính năng này tại thời điểm inference thông qua SAHI tiled inference. Khi train trên các hình ảnh đã được tiling, hãy đảm bảo điều chỉnh nhãn (labels) cho từng phân đoạn mới một cách chính xác.
Link to this sectionKết luận#
Đánh giá và tinh chỉnh là những gì biến một model đã train thành một model đáng tin cậy và có thể triển khai: các metrics như mAP và IoU bộc lộ các điểm yếu, và các thay đổi tham số có mục tiêu sẽ giải quyết chúng. Hãy bắt đầu với validation mode để đánh giá model của bạn, sau đó áp dụng các kỹ thuật tinh chỉnh ở trên và tiếp tục lặp lại với các tham số, kỹ thuật và bộ dữ liệu mới. Nếu có thắc mắc trong quá trình thực hiện, hãy hỏi cộng đồng trên Ultralytics GitHub repository hoặc Ultralytics Discord server.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionCác chỉ số chính để đánh giá hiệu suất mô hình YOLO26 là gì?#
Để đánh giá hiệu suất mô hình YOLO26, các chỉ số quan trọng bao gồm Điểm tin cậy, Intersection over Union (IoU) và Mean Average Precision (mAP). Điểm tin cậy đo lường mức độ chắc chắn của mô hình cho từng lớp đối tượng được phát hiện. IoU đánh giá mức độ trùng khớp của khung bao dự đoán với khung bao thực tế. Mean Average Precision (mAP) tổng hợp các điểm số độ chính xác trên các lớp, với mAP@.5 và mAP@.5:.95 là hai loại phổ biến cho các ngưỡng IoU khác nhau. Tìm hiểu thêm về các chỉ số này trong hướng dẫn chỉ số hiệu suất YOLO26 của chúng tôi.
Link to this sectionLàm cách nào để tinh chỉnh mô hình YOLO26 đã được đào tạo trước cho bộ dữ liệu cụ thể của tôi?#
Việc tinh chỉnh một model YOLO26 pretrained bao gồm việc điều chỉnh các tham số của nó để cải thiện hiệu suất trên một tác vụ hoặc bộ dữ liệu cụ thể. Hãy bắt đầu bằng cách đánh giá model với các metrics, sau đó đặt đối số training warmup_epochs thành 0 trong model.train() để learning rate bắt đầu ở giá trị cơ bản được cấu hình ngay lập tức thay vì tăng dần. Trong quá trình đánh giá, các tham số như rect=true giúp xử lý hiệu quả các kích thước hình ảnh đa dạng. Để có hướng dẫn chi tiết hơn, hãy tham khảo phần tinh chỉnh model của chúng tôi.
Link to this sectionLàm cách nào để xử lý kích thước ảnh biến đổi khi đánh giá mô hình YOLO26 của tôi?#
Để xử lý các kích thước hình ảnh biến đổi trong quá trình đánh giá, hãy sử dụng tham số rect=true trong YOLO26, tham số này sẽ nhóm các hình ảnh theo tỷ lệ khung hình và thực hiện padding từng batch thay vì ép mọi hình ảnh thành hình vuông. Tham số imgsz thiết lập kích thước hình ảnh cho validation; nếu bạn không ghi đè nó, 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ỉnh imgsz để phù hợp với bộ dữ liệu và GPU memory của bạn. Để biết thêm chi tiết, hãy truy cập phần xử lý kích thước hình ảnh biến đổi.
Link to this sectionTôi có thể thực hiện những bước thực tế nào để cải thiện mAP cho mô hình YOLO26 của mình?#
Cải thiện mean average precision (mAP) cho mô hình YOLO26 bao gồm một số bước:
- Điều chỉnh siêu tham số: Thử nghiệm với các tốc độ học, kích thước batch và tăng cường dữ liệu khác nhau.
- Tăng cường dữ liệu: Sử dụng các kỹ thuật như Mosaic và MixUp để tạo ra các mẫu đào tạo đa dạng.
- Image Tiling: Chia các hình ảnh lớn thành các ô nhỏ hơn để cải thiện độ chính xác phát hiện đối với các đối tượng nhỏ.
Tham khảo phần chi tiết của chúng tôi về tinh chỉnh model để biết các chiến lược cụ thể.
Link to this sectionLàm cách nào để truy cập các chỉ số đánh giá mô hình YOLO26 trong Python?#
Bạn có thể truy cập các metrics đánh giá model YOLO26 bằng Python sau khi chạy validation:
from 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)Việc phân tích các metrics này giúp bạn tinh chỉnh và tối ưu hóa model YOLO26 của mình. Để tìm hiểu sâu hơn, hãy xem hướng dẫn của chúng tôi về YOLO performance metrics.