Meet YOLO26: next-gen vision AI.

Link to this sectionXác thực mô hình với Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionGiới thiệu#

Xác thực là một bước quan trọng trong quy trình machine learning, cho phép bạn đánh giá chất lượng của các mô hình đã huấn luyện. Chế độ Val trong Ultralytics YOLO26 cung cấp một bộ công cụ và chỉ số mạnh mẽ để đánh giá hiệu suất các mô hình object detection của bạn. Hướng dẫn này là nguồn tài liệu đầy đủ để hiểu cách sử dụng hiệu quả chế độ Val nhằm đảm bảo các mô hình của bạn vừa chính xác vừa đáng tin cậy.



Watch: Ultralytics Modes Tutorial: Validation

Link to this sectionTại sao nên xác thực với Ultralytics YOLO?#

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

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

Link to this sectionCác tính năng chính của chế độ Val#

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

  • Automated Settings: Các mô hình ghi nhớ cấu hình huấn luyện của chúng để xác thực dễ dàng.
  • Multi-Metric Support: Đánh giá mô hình của bạn dựa trên hàng loạt các chỉ số độ chính xác.
  • CLI and Python API: Chọn giữa giao diện dòng lệnh hoặc Python API dựa trên sở thích của bạn cho việc xác thực.
  • Data Compatibility: Hoạt động liền mạch 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 mô hình YOLO26 tự động ghi nhớ các cài đặt huấn luyện của chúng, vì vậy bạn có thể dễ dàng xác thực mô hình ở cùng kích thước ảnh và trên bộ dữ liệu gốc chỉ với yolo val model=yolo26n.pt hoặc YOLO("yolo26n.pt").val()

Link to this sectionVí dụ sử dụng#

Xác thực accuracy của mô hình YOLO26n đã huấn luyện trên bộ dữ liệu COCO8. Không cần đối số nào vì model lưu giữ data huấn luyện và các đối số dưới dạng thuộc tính của mô hình. Xem phần Đối số bên dưới để biết danh sách đầy đủ các đối số xác thực.

Lỗi đa tiến trình trên Windows

Trên Windows, bạn có thể gặp RuntimeError khi khởi chạy xác thực dưới dạng script. Thêm khối if __name__ == "__main__": trước mã xác thực 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

Link to this sectionCác đối số cho xác thực mô hình YOLO#

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

Đối sốLoạiMặc địnhMô tả
datastrNoneChỉ định đường dẫn đến tệp cấu hình bộ dữ liệu (ví dụ: coco8.yaml). Tệp này nên bao gồm đường dẫn đến validation data.
imgszint640Xác định kích thước ảnh đầu vào. Tất cả ảnh sẽ đượ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.
batchint16Đặt số lượng ảnh trên mỗi batch. Các 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. Hãy điều chỉnh dựa trên tài nguyên phần cứng có sẵn.
save_jsonboolFalseNếu True, lưu kết quả vào tệp 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. Các giá trị thấp hơn làm tăng recall nhưng có thể tạo ra nhiều kết quả dương tính giả (false positives). Được sử dụng trong quá trình validation để tính toán đường cong precision-recall. Mặc định là 0.01 cho xác thực OBB để 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 khung cảnh dày đặc để tránh các phát hiện quá mức và quản lý tài nguyên tính toán.
halfboolFalseCho phép tính toán nửa precision (FP16), giúp giảm mức sử dụng bộ nhớ và có khả năng tăng tốc độ mà ít ảnh hưởng đến accuracy.
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 hiện có. Nhiều thiết bị CUDA có thể được chỉ định bằng cách phân cách bằng dấu phẩy.
dnnboolFalseNếu True, sử dụng mô-đun OpenCV DNN cho suy luận mô hình ONNX, cung cấp một lựa chọn thay thế cho các phương pháp suy luận của PyTorch.
plotsboolTrueKhi được đặt thành True, tạo và lưu các biểu đồ dự đoán so với ground truth, ma trận nhầm lẫn (confusion matrices) và các đường cong PR để đánh giá trực quan hiệu suất mô hình.
classeslist[int]NoneChỉ định một danh sách các ID lớp để đánh giá. Hữu ích để 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 cho batch, giúp giảm padding và có khả năng tăng tốc độ cũng như hiệu suất bằng cách xử lý ảnh theo tỷ lệ khung hình gốc của chúng.
splitstr'val'Xác định tập dữ liệu phân tách (split) để sử dụng cho xác thực (val, test, hoặc train). Cho phép linh hoạt trong việc 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 mô hình khác nhau.
namestrNoneTên của lần chạy 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ữ nhật ký và kết quả xác thực.
verboseboolTrueNếu True, hiển thị thông tin chi tiết trong quá trình xác thực, bao gồm các chỉ số trên mỗi lớp, tiến trình theo batch và thông tin gỡ lỗi bổ sung.
save_txtboolFalseNếu True, lưu kết quả phát hiện vào các tệp văn bản, mỗi tệp cho một ảnh, hữu ích để phân tích thêm, xử lý hậu kỳ tùy chỉnh hoặc tích hợp với các hệ thống khác.
save_confboolFalseNếu True, bao gồm các giá trị độ tin cậy trong các tệp văn bản đã lưu khi save_txt được bật, cung cấp đầu ra chi tiết hơn để 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ể 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ăng cường dữ liệu trong khi suy luận (TTA) trong quá trình xác thực, 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 do chạy suy luận trên các phiên bản đã biến đổi của đầu vào.
agnostic_nmsboolFalseBật Non-Maximum Suppression bất kể lớp (class-agnostic), giúp hợp nhất các hộp chồng chéo bất kể lớp dự đoán của chúng. Hữu ích cho các ứng dụng tập trung vào instance. Đối với các mô hình end-to-end (YOLO26, YOLOv10), điều này chỉ ngăn chặn cùng một phát hiện xuất hiện với nhiều nhãn lớp (các bản sao IoU=1.0) và không thực hiện triệt tiêu dựa trên ngưỡng IoU giữa các hộp riêng biệt.
single_clsboolFalseXử lý tất cả các lớp thành một lớp duy nhất trong quá trình xác thực. Hữu ích để đánh giá hiệu suất mô hình trên các tác vụ phát hiện nhị phân hoặc khi sự khác biệt về lớp không quan trọng.
visualizeboolFalseHình ảnh hóa ground truth, true positives, false positives và false negatives cho mỗi ảnh. Hữu ích để gỡ lỗi và giải thích mô hình.
show_labelsboolTrueHiển thị nhãn lớp trong các hình ảnh trực quan xác thực khi visualize=True. Đặt thành False để có cái nhìn sạch sẽ hơn về các kết quả khớp và lỗi.
show_confboolTrueHiển thị điểm độ tin cậy trong các hình ảnh trực quan xác thực khi visualize=True. Đặt thành False để có cái nhìn sạch sẽ hơn về các kết quả 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 → vô hiệu hóa, hoặc một chế độ chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ quay lại chế độ eager kèm theo cảnh báo.
end2endboolNoneGhi đè chế độ end-to-end trong các mô hình YOLO hỗ trợ suy luận không cần NMS (YOLO26, YOLOv10). Thiết lập nó thành False cho phép bạn chạy xác thực bằng quy trình NMS truyền thống, đồng thời cho phép bạn sử 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 tùy biến và hiệu quả. 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.

Link to this sectionVí dụ xác thực với các đối 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 khác nhau trong Google Colab

Các ví dụ dưới đây minh họa việc xác thực mô hình YOLO với các đối 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())
Precision, Recall và F1 trên mỗi ảnh

Xác thực lưu trữ các chỉ số precision, 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. Truy cập chúng thông qua results.box.image_metrics cho phát hiện và OBB, results.seg.image_metrics cho phân đoạn, và results.pose.image_metrics cho pose sau khi xác thực 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 positives cho ảnh.
fpSố lượng false positives cho ảnh.
fnSố lượng false negatives cho ảnh.

Tính năng này khả dụng cho các tác vụ phát hiện, phân đoạn, pose và OBB.

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

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

Link to this sectionCâu hỏi thường gặp (FAQ)#

Link to this sectionLàm thế nào để kiểm thử mô hình YOLO26 của tôi với Ultralytics?#

Để kiểm thử mô hình YOLO26, bạn có thể sử dụng chế độ Val do Ultralytics cung cấp. Ví dụ, khi sử dụng Python API, bạn có thể tải mô hình và chạy kiểm thử 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 đối số khác nhau như imgsz, batchconf trong cả chế độ Python và CLI. Kiểm tra phần Đối số cho Kiểm thử Mô hình YOLO để biết danh sách đầy đủ các tham số.

Link to this sectionTôi có thể nhận được những chỉ số nào từ việc kiểm thử mô hình YOLO26?#

Kiểm thử mô hình YOLO26 cung cấp một số chỉ số chính để đánh giá hiệu suất của mô hình. Các chỉ số này bao gồm:

  • mAP50 (độ chính xác trung bình tại ngưỡng IoU 0.5)
  • mAP75 (độ chính xác trung bình tại ngưỡng IoU 0.75)
  • mAP50-95 (độ chính xác trung bình trên nhiều ngưỡng IoU từ 0.5 đến 0.95)

Sử dụng Python API, bạn có thể truy cập các chỉ số 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 chỉ số này là rất quan trọng. Để biết thêm chi tiết, hãy tham khảo phần Các Tính năng Chính của Chế độ Val.

Link to this sectionƯu điểm của việc sử dụng Ultralytics YOLO để kiểm thử là gì?#

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

  • Precision: YOLO26 cung cấp các chỉ số hiệu suất chính xác bao gồm mAP50, mAP75 và mAP50-95.
  • Tiện lợi: Các mô hình ghi nhớ cài đặt huấn luyện của chúng, giúp việc kiểm thử trở nên đơn giản.
  • Linh hoạt: Bạn có thể kiểm thử trên cùng một tập dữ liệu hoặc các tập dữ liệu và kích thước ảnh khác nhau.
  • Tinh chỉnh Siêu tham số: Các chỉ số kiểm thử 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 mô hình của bạn được đánh giá kỹ lưỡng và có thể được tối ưu hóa để có kết quả vượt trội. Tìm hiểu thêm về những ưu điểm này trong phần Tại sao nên Kiểm thử với Ultralytics YOLO.

Link to this sectionTôi có thể kiểm thử mô hình YOLO26 của mình bằng một tập dữ liệu tùy chỉnh không?#

Có, bạn có thể kiểm thử mô hình YOLO26 bằng một tập dữ liệu tùy chỉnh. Hãy chỉ định đối số data với đường dẫn đến tệp cấu hình tập dữ liệu của bạn. Tệp này phải bao gồm đường dẫn đến dữ liệu kiểm thử.

Lưu ý

Kiểm thử được thực hiện bằng cách sử dụng chính tên lớp của mô hình mà bạn có thể xem bằng model.names, và chúng có thể khác với tên được chỉ định trong tệp cấu hình tập dữ liệu.

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 tùy chỉnh trong quá trình kiểm thử, hãy xem phần Ví dụ Kiểm thử với Đối số.

Link to this sectionLàm thế nào để lưu kết quả kiểm thử vào tệp JSON trong YOLO26?#

Để lưu kết quả kiểm thử vào tệp JSON, bạn có thể đặt đối số save_json thành True khi chạy kiểm thử. Việc này có thể thực hiện được trong 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

Chức năng này đặc biệt hữu ích để phân tích thêm hoặc tích hợp với các công cụ khác. Kiểm tra phần Đối số cho Kiểm thử Mô hình YOLO để biết thêm chi tiết.

Bình luận