YOLO Vision 2026:

Xác thực mô hình với Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Giới thiệu#

Validation là một bước quan trọng trong pipeline machine learning, cho phép bạn đánh giá chất lượng của các model đã được train. Chế độ Val trong Ultralytics YOLO26 cung cấp một bộ công cụ và metric mạnh mẽ để đánh giá hiệu suất của các model object detection. Hướng dẫn này là một tài liệu đầy đủ giúp bạn hiểu cách sử dụng hiệu quả chế độ Val để đảm bảo các model của bạn vừa chính xác vừa đáng tin cậy.



Watch: Ultralytics Modes Tutorial: Validation

Tại sao nên xác thực bằng Ultralytics YOLO?#

Dưới đây là lý do tại sao việc sử dụng chế độ Val của YOLO26 lại có lợi:

  • Độ chính xác (Precision): Nhận các số liệu chính xác như mAP50, mAP75 và mAP50-95 để đánh giá toàn diện mô hình của bạn.
  • Sự thuận tiện: Tận dụng các tính năng tích hợp sẵn ghi nhớ các cài đặt huấn luyện, giúp đơn giản hóa quy trình xác thực.
  • Tính linh hoạt: Xác thực mô hình của bạn với cùng một bộ dữ liệu hoặc bộ dữ liệu khác và kích thước hình ảnh khác nhau.
  • Hyperparameter Tuning: Sử dụng các metric validation để tinh chỉnh model của bạn nhằm đạt hiệu suất tốt hơn.

Các tính năng chính của chế độ Val#

Đây là các chức năng nổi bật được cung cấp bởi chế độ Val của YOLO26:

  • Cài đặt tự động: Các mô hình ghi nhớ cấu hình huấn luyện của chúng để xác thực đơn giản.
  • Hỗ trợ đa số liệu: Đánh giá mô hình của bạn dựa trên một loạt các số liệu độ chính xác.
  • API Python và CLI: Chọn giữa giao diện dòng lệnh hoặc API Python dựa trên sở thích của bạn để xác thực.
  • Khả năng tương thích dữ liệu: Hoạt động trơn tru với các bộ dữ liệu được sử dụng trong giai đoạn huấn luyện cũng như các bộ dữ liệu tùy chỉnh.
Mẹo
  • Các model YOLO26 tự động ghi nhớ các cài đặt training của chúng, vì vậy bạn có thể validate model ở cùng kích thước ảnh và trên dataset ban đầu một cách dễ dàng chỉ với yolo val model=yolo26n.pt hoặc YOLO("yolo26n.pt").val()

Ví dụ Sử dụng#

Validate độ chính xác của một model YOLO26n đã được train trên dataset COCO8. Không cần tham số nào vì model giữ lại data và các tham số training của nó làm thuộc tính của model. Xem phần Tham số bên dưới để biết danh sách đầy đủ các tham số validation.

Lỗi đa xử lý trên Windows

Trên Windows, bạn có thể nhận được một RuntimeError khi khởi chạy quá trình validation dưới dạng script. Thêm một khối if __name__ == "__main__": trước mã validation của bạn để khắc phục.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95
metrics.box.map50  # map50
metrics.box.map75  # map75
metrics.box.maps  # a list containing mAP50-95 for each category
metrics.box.image_metrics  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Các tham số để xác thực mô hình YOLO#

Khi xác thực các mô hình YOLO, một số tham số có thể được tinh chỉnh để tối ưu hóa quy trình đánh giá. Các tham số này kiểm soát các khía cạnh như kích thước hình ảnh đầu vào, xử lý theo lô (batch) và ngưỡng hiệu suất. Dưới đây là phân tích chi tiết về từng tham số để giúp bạn tùy chỉnh các cài đặt xác thực của mình một cách hiệu quả.

Đối sốLoạiMặc địnhMô tả
datastrNoneChỉ định đường dẫn đến YAML của tập dữ liệu (ví dụ: coco8.yaml), trong đó phải bao gồm đường dẫn đến dữ liệu kiểm định. Tác vụ phân loại thay vào đó sẽ nhận một thư mục tập dữ liệu hoặc tên tập dữ liệu có sẵn (ví dụ: imagenet10).
imgszint640Xác định kích thước của ảnh đầu vào. Tất cả ảnh được thay đổi kích thước về kích thước này trước khi xử lý. Kích thước lớn hơn có thể cải thiện độ chính xác cho các đối tượng nhỏ nhưng làm tăng thời gian tính toán.
batchint16Thiết lập số lượng ảnh trên mỗi batch. Giá trị cao hơn sử dụng bộ nhớ GPU hiệu quả hơn nhưng yêu cầu nhiều VRAM hơn. Điều chỉnh dựa trên tài nguyên phần cứng sẵn có.
save_jsonboolFalseNếu là True, lưu kết quả vào một file JSON để phân tích thêm, tích hợp với các công cụ khác hoặc gửi lên các máy chủ đánh giá như COCO.
conffloat0.001Đặt ngưỡng độ tin cậy tối thiểu cho các phát hiện. Giá trị thấp hơn làm tăng độ thu hồi nhưng có thể tạo ra nhiều kết quả dương tính giả hơn. Các đường cong độ chính xác-độ thu hồi mặc định sử dụng 0.001; các ma trận nhầm lẫn phát hiện sử dụng giá trị conf rõ ràng, hoặc 0.25 khi bỏ qua giá trị này. Độ chính xác và độ thu hồi tóm tắt sử dụng độ tin cậy max-F1, do đó chúng có thể khác với các giá trị được suy ra từ confusion_matrix.png. Mặc định là 0.01 cho quá trình xác thực OBB nhằm giảm mức sử dụng bộ nhớ.
ioufloat0.7Đặt ngưỡng Intersection Over Union cho Non-Maximum Suppression. Kiểm soát việc loại bỏ các phát hiện trùng lặp.
max_detint300Giới hạn số lượng phát hiện tối đa trên mỗi ảnh. Hữu ích trong các cảnh dày đặc đối tượng để ngăn chặn quá nhiều kết quả phát hiện và quản lý tài nguyên tính toán.
quantizeint hoặc strNoneĐộ chính xác xác thực: 16/"fp16" bật xác thực FP16 trên các GPU được hỗ trợ; 32/"fp32"/bỏ trống là FP32. Lượng tử hóa INT8/PTQ được cấu hình trong quá trình xuất model, sau đó được sử dụng bằng cách xác thực model đã xuất. Thay thế cờ half đã lỗi thời.
devicestrNoneChỉ định thiết bị để xác thực (cpu, cuda:0, npu, npu:0, v.v.). Khi là None, tự động chọn thiết bị tốt nhất có sẵn. Có thể chỉ định nhiều thiết bị CUDA bằng cách phân tách bằng dấu phẩy.
dnnboolFalseNếu là True, sử dụng mô-đun DNN của OpenCV để suy luận model ONNX, cung cấp một giải pháp thay thế cho các phương pháp suy luận PyTorch.
plotsboolTrueKhi được đặt thành True, tạo và lưu các biểu đồ so sánh dự đoán với nhãn thực tế (ground truth), ma trận nhầm lẫn (confusion matrix) và đường cong PR để đánh giá trực quan hiệu suất của model.
classeslist[int]NoneChỉ định danh sách các ID lớp để đánh giá. Hữu ích cho việc lọc và chỉ tập trung vào một số lớp nhất định trong quá trình đánh giá.
rectboolTrueNếu True, sử dụng suy luận hình chữ nhật để gom nhóm (batching), giúp giảm phần đệm (padding) và có khả năng tăng tốc độ cũng như hiệu suất bằng cách xử lý các hình ảnh theo tỷ lệ khung hình gốc của chúng. Bị bỏ qua đối với quá trình xác thực depth, vốn kéo giãn mọi hình ảnh thành một hình vuông imgsz cố định thay vì thêm phần đệm.
splitstr'val'Xác định phân chia tập dữ liệu được sử dụng để xác thực (val, test hoặc train). Mang lại sự linh hoạt trong việc lựa chọn phân đoạn dữ liệu để đánh giá hiệu suất.
projectstrNoneTên của thư mục dự án nơi lưu các đầu ra xác thực. Giúp sắp xếp kết quả từ các thử nghiệm hoặc model khác nhau.
namestrNoneTên của lượt xác thực. Được sử dụng để tạo thư mục con bên trong thư mục dự án, nơi lưu trữ các log và kết quả xác thực.
verboseboolTrueNếu là True, hiển thị thông tin chi tiết trong quá trình xác thực, bao gồm các số liệu theo từng lớp, tiến độ batch và thông tin gỡ lỗi bổ sung.
save_txtboolFalseNếu là True, lưu kết quả phát hiện vào các file văn bản, với mỗi file tương ứng một ảnh, hữu ích cho việc phân tích thêm, hậu xử lý tùy chỉnh hoặc tích hợp với các hệ thống khác.
save_confboolFalseNếu là True, bao gồm các giá trị độ tin cậy trong các file văn bản đã lưu khi save_txt được bật, cung cấp đầu ra chi tiết hơn cho việc phân tích và lọc.
workersint8Số lượng luồng worker để tải dữ liệu. Các giá trị cao hơn có thể tăng tốc độ tiền xử lý dữ liệu nhưng có thể làm tăng mức sử dụng CPU. Đặt thành 0 sẽ sử dụng luồng chính, có thể ổn định hơn trong một số môi trường.
augmentboolFalseBật tính năng tăng cường thời gian kiểm tra (TTA) trong quá trình xác thực (validation), có khả năng cải thiện độ chính xác phát hiện nhưng đánh đổi bằng tốc độ suy luận bằng cách chạy suy luận trên các phiên bản biến đổi của đầu vào. Chỉ khả dụng cho các model PyTorch của Ultralytics.
agnostic_nmsboolFalseBật Non-Maximum Suppression bất chấp lớp, triệt tiêu các hộp chồng chéo có điểm số thấp hơn bất kể lớp được dự đoán của chúng là gì. Hữu ích cho các ứng dụng tập trung vào đối tượng. Đối với các mô hình đầu cuối (YOLO26, YOLOv10), tính năng này chỉ ngăn chặn cùng một kết quả phát hiện xuất hiện với nhiều nhãn lớp (các bản sao có IoU=1.0) và không thực hiện việc triệt tiêu dựa trên ngưỡng IoU giữa các hộp riêng biệt.
single_clsboolFalseXem tất cả các lớp là một lớp duy nhất trong quá trình xác thực. Hữu ích để đánh giá hiệu suất model trên các tác vụ phát hiện nhị phân hoặc khi sự phân biệt lớp không quan trọng.
visualizeboolFalseTrực quan hóa ground truth, true positive, false positive và false negative cho mỗi hình ảnh. Hữu ích cho việc gỡ lỗi và diễn giải model.
show_labelsboolTrueHiển thị nhãn lớp trong các hình ảnh trực quan hóa xác thực khi là visualize=True. Đặt thành False để có góc nhìn rõ ràng hơn về các điểm khớp và lỗi.
show_confboolTrueHiển thị điểm số độ tin cậy trong các hình ảnh trực quan hóa xác thực khi là visualize=True. Đặt thành False để có góc nhìn rõ ràng hơn về các điểm khớp và lỗi.
compilebool hoặc strFalseBật biên dịch đồ thị torch.compile của PyTorch 2.x với backend='inductor'. Chấp nhận True"default", False → tắt, hoặc chế độ chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Chuyển về chế độ eager kèm theo cảnh báo nếu không được hỗ trợ.
channels_lastboolFalseSử dụng định dạng bộ nhớ channels_last (NHWC) cho các phép tích chập trong quá trình validation, giúp tăng tốc các GPU CUDA Tensor Core mà không làm thay đổi kết quả. Chỉ áp dụng cho các model PyTorch gốc; bị bỏ qua đối với CPU, MPS và các định dạng đã xuất như TensorRT và ONNX.
end2endboolNoneGhi đè chế độ end-to-end trong các model YOLO hỗ trợ suy luận không cần NMS (YOLO26, YOLOv10). Đặt giá trị thành False cho phép bạn chạy xác thực sử dụng pipeline NMS truyền thống, đồng thời cho phép bạn tận dụng đối số iou.

Mỗi cài đặt này đóng một vai trò quan trọng trong quy trình xác thực, cho phép đánh giá các mô hình YOLO một cách hiệu quả và có thể tùy chỉnh. Việc điều chỉnh các tham số này theo nhu cầu và tài nguyên cụ thể của bạn có thể giúp đạt được sự cân bằng tốt nhất giữa độ chính xác và hiệu suất.

Ví dụ về xác thực với các tham số#



Watch: How to Export Model Validation Results in CSV, JSON, SQL, Polars DataFrame & More

Khám phá việc xác thực mô hình và các phương pháp xuất dữ liệu khác nhau trong Google Colab

Các ví dụ dưới đây giới thiệu việc xác thực mô hình YOLO với các tham số tùy chỉnh trong Python và CLI.

Ví dụ
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.7, device="0")
Xuất ConfusionMatrix

Bạn cũng có thể lưu kết quả ConfusionMatrix ở các định dạng khác nhau bằng cách sử dụng mã được cung cấp.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")

results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Độ chính xác (Precision), Recall và F1 trên mỗi ảnh

Validation lưu trữ các metric độ chính xác (precision), độ thu hồi (recall), F1, TP, FP và FN trên mỗi ảnh (tại ngưỡng IoU 0.5) cho tất cả các tác vụ ngoại trừ phân loại (classification). Truy cập chúng thông qua results.box.image_metrics cho detection và OBB, results.seg.image_metrics cho segmentation và results.pose.image_metrics cho pose sau khi quá trình validation hoàn tất.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate and access per-image metrics
results = model.val(data="coco8.yaml")

# image_metrics is a dictionary with image filenames as keys
print(results.box.image_metrics)
# Output: {'image1.jpg': {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}, ...}

# Access metrics for a specific image
results.box.image_metrics["image1.jpg"]  # {'precision': 0.85, 'recall': 0.92, 'f1': 0.88, 'tp': 17, 'fp': 3, 'fn': 1}

Mỗi mục trong image_metrics chứa các khóa sau:

KhóaMô tả
precisionĐiểm Precision cho ảnh (tp / (tp + fp)).
recallĐiểm Recall cho ảnh (tp / (tp + fn)).
f1Trung bình điều hòa của precision và recall.
tpSố lượng true positive cho hình ảnh.
fpSố lượng false positive cho hình ảnh.
fnSố lượng false negative cho hình ảnh.

Tính năng này khả dụng cho các tác vụ detection, segmentation, pose và OBB.

Phương thứcKiểu trả vềMô tả
summary()List[Dict[str, Any]]Chuyển đổi kết quả xác thực thành một dictionary tóm tắt.
to_df()DataFrameTrả về kết quả xác thực dưới dạng một Polars DataFrame có cấu trúc.
to_csv()strXuất kết quả xác thực ở định dạng CSV và trả về chuỗi CSV.
to_json()strXuất kết quả xác thực ở định dạng JSON và trả về chuỗi JSON.

Để biết thêm chi tiết, hãy xem tài liệu lớp DataExportMixin.

Các bước tiếp theo#

Hài lòng với các metric? Export model sang một định dạng triển khai. Nếu độ chính xác chưa đạt, hãy quay lại và train lại với các hyperparameter khác hoặc nhiều dữ liệu training hơn.

Câu hỏi thường gặp#

Làm cách nào để xác thực mô hình YOLO26 của tôi với Ultralytics?#

Để xác thực mô hình YOLO26 của bạn, bạn có thể sử dụng chế độ Val được cung cấp bởi Ultralytics. Ví dụ, sử dụng API Python, bạn có thể tải một mô hình và chạy xác thực với:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate the model
metrics = model.val()
print(metrics.box.map)  # map50-95

Ngoài ra, bạn có thể sử dụng giao diện dòng lệnh (CLI):

yolo val model=yolo26n.pt

Để tùy chỉnh thêm, bạn có thể điều chỉnh các tham số khác nhau như imgsz, batchconf ở cả chế độ Python và CLI. Kiểm tra phần Arguments for YOLO Model Validation để xem danh sách đầy đủ các tham số.

Tôi có thể nhận được những số liệu nào từ việc xác thực mô hình YOLO26?#

Quá trình xác thực mô hình YOLO26 cung cấp một số số liệu chính để đánh giá hiệu suất mô hình. Bao gồm:

  • mAP50 (mean Average Precision tại ngưỡng IoU 0.5)
  • mAP75 (mean Average Precision tại ngưỡng IoU 0.75)
  • mAP50-95 (mean Average Precision trên nhiều ngưỡng IoU từ 0.5 đến 0.95)

Sử dụng API Python, bạn có thể truy cập các số liệu này như sau:

metrics = model.val()  # assumes `model` has been loaded
print(metrics.box.map)  # mAP50-95
print(metrics.box.map50)  # mAP50
print(metrics.box.map75)  # mAP75
print(metrics.box.maps)  # list of mAP50-95 for each category
print(metrics.box.image_metrics)  # per-image metrics dictionary with precision, recall, F1, TP, FP, and FN

Để đánh giá hiệu suất hoàn chỉnh, việc xem xét tất cả các metric này là rất quan trọng. Để biết thêm chi tiết, hãy tham khảo phần Key Features of Val Mode.

Sử dụng Ultralytics YOLO để xác thực có những ưu điểm gì?#

Sử dụng Ultralytics YOLO để xác thực mang lại một số ưu điểm:

  • Precision: YOLO26 cung cấp các metric hiệu suất chính xác bao gồm mAP50, mAP75 và mAP50-95.
  • Sự thuận tiện: Các mô hình ghi nhớ cài đặt huấn luyện của chúng, giúp việc xác thực trở nên đơn giản.
  • Tính linh hoạt: Bạn có thể xác thực với cùng một bộ dữ liệu hoặc các bộ dữ liệu khác nhau và kích thước hình ảnh khác nhau.
  • Tinh chỉnh siêu tham số: Các số liệu xác thực giúp tinh chỉnh các mô hình để đạt hiệu suất tốt hơn.

Những lợi ích này đảm bảo rằng các model của bạn được đánh giá kỹ lưỡng và có thể được tối ưu hóa để đạt kết quả vượt trội. Tìm hiểu thêm về những ưu điểm này trong phần Why Validate with Ultralytics YOLO.

Tôi có thể xác thực mô hình YOLO26 của mình bằng bộ dữ liệu tùy chỉnh không?#

Có, bạn có thể validate model YOLO26 của mình bằng cách sử dụng một custom dataset. Chỉ định tham số data với đường dẫn đến file YAML dataset của bạn, nơi nên bao gồm đường dẫn đến validation data. Riêng phần classification sẽ nhận một thư mục dataset hoặc một tên dataset có sẵn (ví dụ: imagenet10).

Lưu ý

Quá trình validation được thực hiện bằng cách sử dụng các class name của chính model, mà bạn có thể xem bằng cách dùng model.names, và các tên này có thể khác với những gì bản thân dataset định nghĩa.

Ví dụ trong Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Validate with a custom dataset
metrics = model.val(data="path/to/your/custom_dataset.yaml")
print(metrics.box.map)  # map50-95

Ví dụ sử dụng CLI:

yolo val model=yolo26n.pt data=path/to/your/custom_dataset.yaml

Để biết thêm các tùy chọn có thể tùy chỉnh trong quá trình validation, hãy xem phần Example Validation with Arguments.

Làm cách nào để lưu kết quả xác thực vào tệp JSON trong YOLO26?#

Để lưu kết quả validation vào một file JSON, bạn có thể thiết lập tham số save_json thành True khi chạy validation. Việc này có thể thực hiện được ở cả Python API và CLI.

Ví dụ trong Python:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Save validation results to JSON
metrics = model.val(save_json=True)

Ví dụ sử dụng CLI:

yolo val model=yolo26n.pt save_json=True

Tính năng này cực kỳ hữu ích cho việc phân tích thêm hoặc tích hợp với các công cụ khác. Kiểm tra Arguments for YOLO Model Validation để biết thêm chi tiết.

Bình luận