Xác thực Mô hình với Ultralytics YOLO
Giới thiệu
Xác thực là một bước quan trọng trong quy trình học máy, cho phép bạn đánh giá chất lượng của các mô hình đã huấn luyện của mình. Chế độ Val trong Ultralytics YOLO11 cung cấp một bộ công cụ và số liệu mạnh mẽ để đánh giá hiệu suất của các mô hình phát hiện đối tượng của bạn. Hướng dẫn này đóng vai trò là một tài nguyên hoàn chỉnh để hiểu cách sử dụng hiệu quả chế độ Val để đảm bảo rằng các mô hình của bạn vừa chính xác vừa đáng tin cậy.
Xem: Hướng dẫn về Chế độ Ultralytics: Xác thực
Tại sao nên Xác thực bằng Ultralytics YOLO?
Dưới đây là lý do tại sao sử dụng chế độ Val của YOLO11 mang lại nhiều lợi ích:
- Độ chính xác: 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.
- Tiện lợi: Sử dụng các tính năng tích hợp sẵn giúp ghi nhớ cài đặt huấn luyện, đơn giản hóa quy trình xác thực.
- Linh hoạt: Xác thực mô hình của bạn với cùng bộ dữ liệu hoặc các bộ dữ liệu và kích thước ảnh khác nhau.
- Điều chỉnh siêu tham số: Sử dụng các số liệu xác thực để tinh chỉnh mô hình 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 đáng chú ý được cung cấp bởi chế độ Val của YOLO11:
- 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 trực tiếp.
- 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 về độ chính xác.
- CLI và Python API: Chọn từ giao diện dòng lệnh hoặc Python API 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 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 YOLO11 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ột 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=yolo11n.pt
hoặcmodel('yolo11n.pt').val()
Ví dụ sử dụng
Xác thực mô hình YOLO11n đã huấn luyện độ chính xác trên tập dữ liệu COCO8. Không cần đối số nào vì model
giữ lại quá trình huấn luyện data
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 để có danh sách đầy đủ các đối số xác thực.
Ví dụ
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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 contains map50-95 of each category
yolo detect val model=yolo11n.pt # val official model
yolo detect val model=path/to/best.pt # val custom model
Đối số để 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ý hàng loạt và ngưỡng hiệu suất. Dưới đây là phân tích chi tiết về từng đối số để giúp bạn tùy chỉnh cài đặt xác thực của mình một cách hiệu quả.
Đối số | Loại | Mặc định | Mô tả |
---|---|---|---|
data |
str |
None |
Chỉ định đường dẫn đến tệp cấu hình bộ dữ liệu (ví dụ: coco8.yaml ). Tệp này bao gồm các đường dẫn đến dữ liệu xác thực, tên lớp và số lượng lớp. |
imgsz |
int |
640 |
Xác định kích thước của hình ảnh đầu vào. Tất cả hình ảnh được thay đổi kích thước thành 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. |
batch |
int |
16 |
Đặt số lượng hình ảnh trên mỗi lô (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 có sẵn. |
save_json |
bool |
False |
Nếu True , lưu kết quả vào tệp JSON để phân tích sâu hơn, tích hợp với các công cụ khác hoặc gửi đến các máy chủ đánh giá như COCO. |
conf |
float |
0.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 độ nhạy nhưng có thể đưa vào nhiều kết quả dương tính giả hơn. Được sử dụng trong quá trình xác thực để tính toán đường cong độ chính xác-độ nhạy. |
iou |
float |
0.7 |
Đặt ngưỡng Intersection Over Union (IoU) cho Non-Maximum Suppression (NMS). Kiểm soát việc loại bỏ các phát hiện trùng lặp. |
max_det |
int |
300 |
Giới hạn số lượng phát hiện tối đa trên mỗi hình ảnh. Hữu ích trong các cảnh dày đặc để ngăn chặn các phát hiện quá mức và quản lý tài nguyên tính toán. |
half |
bool |
True |
Cho phép tính toán nửa độ chính xác (FP16), giảm mức sử dụng bộ nhớ và có khả năng tăng tốc độ với tác động tối thiểu đến độ chính xác. |
device |
str |
None |
Chỉ định thiết bị để xác thực (cpu , cuda:0 , v.v.). Khi None , tự động chọn thiết bị khả dụng tốt nhất. Có thể chỉ định nhiều thiết bị CUDA bằng cách phân tách bằng dấu phẩy. |
dnn |
bool |
False |
Nếu True , sử dụng OpenCV mô-đun DNN để suy luận mô hình ONNX, cung cấp một giải pháp thay thế cho PyTorch các phương pháp suy luận. |
plots |
bool |
False |
Khi đượ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 và đường cong PR để đánh giá trực quan hiệu suất của mô hình. |
classes |
list[int] |
None |
Chỉ định danh sách ID lớp để đào tạo. Hữu ích để lọc ra và chỉ tập trung vào một số lớp nhất định trong quá trình đánh giá. |
rect |
bool |
True |
Nếu True , sử dụng suy luận hình chữ nhật để tạo hàng loạt, giảm phần đệm và có khả năng tăng tốc độ và hiệu quả bằng cách xử lý hình ảnh theo tỷ lệ khung hình gốc của chúng. |
split |
str |
'val' |
Xác định phần chia tập dữ liệu để sử dụng cho quá trình xác thực (validation) (val , test , hoặc train ). Cho phép linh hoạt trong việc lựa chọn phân đoạn dữ liệu để đánh giá hiệu suất. |
project |
str |
None |
Tên của thư mục dự án nơi lưu trữ 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. |
name |
str |
None |
Tên của lần chạy xác thực. Được sử dụng để tạo thư mục con trong thư mục dự án, nơi lưu trữ nhật ký và đầu ra xác thực. |
verbose |
bool |
False |
Nếu 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 trên mỗi lớp, tiến trình lô và thông tin gỡ lỗi bổ sung. |
save_txt |
bool |
False |
Nếu True , lưu kết quả phát hiện trong các tệp văn bản, với một tệp cho mỗi hình ảnh, hữu ích cho phân tích sâu hơn, 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_conf |
bool |
False |
Nế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. |
workers |
int |
8 |
Số lượng luồng worker để tải dữ liệu. Giá trị cao hơn có thể tăng tốc quá trình 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, luồng này có thể ổn định hơn trong một số môi trường. |
augment |
bool |
False |
Cho phép tăng cường thời gian kiểm tra (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 với chi phí là tốc độ suy luận bằng cách chạy suy luận trên các phiên bản đã được chuyển đổi của đầu vào. |
agnostic_nms |
bool |
False |
Cho phép Triệt tiêu không tối đa không phân biệt lớp, hợp nhất các hộp chồng chéo bất kể lớp được dự đoán của chúng. Hữu ích cho các ứng dụng tập trung vào đối tượng. |
single_cls |
bool |
False |
Xem tất cả các lớp 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 giữa các lớp không quan trọng. |
visualize |
bool |
False |
Trự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 mô hình. |
Mỗi cài đặt này đóng một vai trò quan trọng trong quá trình validation, cho phép đánh giá các mô hình YOLO một cách tùy biến và hiệu quả. Điều chỉnh các tham số này theo nhu cầu và nguồn lực 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.
Xác thực Ví dụ với Đối số
Xem: Cách xuất kết quả xác thực mô hình sang CSV, JSON, SQL, Polars DataFrame và nhiều định dạng khác
Các ví dụ dưới đây trình bày validation 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("yolo11n.pt")
# Customize validation settings
metrics = model.val(data="coco8.yaml", imgsz=640, batch=16, conf=0.25, iou=0.6, device="0")
yolo val model=yolo11n.pt data=coco8.yaml imgsz=640 batch=16 conf=0.25 iou=0.6 device=0
Xuất ConfusionMatrix
Bạn cũng có thể lưu kết quả ConfusionMatrix ở nhiều định dạng khác nhau bằng cách sử dụng đoạn mã được cung cấp.
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
results = model.val(data="coco8.yaml", plots=True)
print(results.confusion_matrix.to_df())
Phương thức | Loại trả về | Mô tả |
---|---|---|
summary() |
List[Dict[str, Any]] |
Chuyển đổi kết quả xác thực sang từ điển tóm tắt. |
to_df() |
DataFrame |
Trả về kết quả xác thực dưới dạng Polars DataFrame có cấu trúc. |
to_csv() |
str |
Xuất kết quả xác thực ở định dạng CSV và trả về chuỗi CSV. |
to_json() |
str |
Xuấ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, xem DataExportMixin
tài liệu về class.
Câu hỏi thường gặp
Làm cách nào để xác thực mô hình YOLO11 của tôi bằng Ultralytics?
Để validate mô hình YOLO11 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 Python API, bạn có thể tải mô hình và chạy validation với:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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=yolo11n.pt
Để tùy chỉnh thêm, bạn có thể điều chỉnh các đối số khác nhau như imgsz
, batch
, và conf
trong cả hai chế độ Python và CLI. Kiểm tra Đối số để Xác thực Mô hình YOLO phần để biết 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 YOLO11?
Validation mô hình YOLO11 cung cấp một số chỉ số chính để đánh giá hiệu suất của mô hình. Chúng bao gồm:
- mAP50 (độ chính xác trung bình (mean Average Precision) tại ngưỡng IoU 0.5)
- mAP75 (độ chính xác trung bình (mean Average Precision) tại ngưỡng IoU 0.75)
- mAP50-95 (độ chính xác trung bình (mean Average Precision) 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 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
Để đánh giá hiệu suất hoàn chỉnh, điều quan trọng là phải xem xét tất cả các số liệu này. Để biết thêm chi tiết, tham khảo Các tính năng chính của Chế độ Val.
Những lợi thế của việc sử dụng Ultralytics YOLO để xác thực là gì?
Sử dụng Ultralytics YOLO để validation mang lại một số lợi thế:
- Độ chính xác: YOLO11 cung cấp các số liệu 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ác cài đặt huấn luyện của chúng, giúp cho việc validation trở nên đơn giản.
- Linh hoạt: Bạn có thể validate trên cùng một hoặc các tập dữ liệu và kích thước hình ảnh khác nhau.
- Điều chỉnh siêu tham số: Các số liệu validation giúp tinh chỉnh các mô hình để có 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 lợi thế này trong phần Tại sao nên Validate bằng Ultralytics YOLO.
Tôi có thể xác thực mô hình YOLO11 của mình bằng bộ dữ liệu tùy chỉnh không?
Có, bạn có thể xác thực mô hình YOLO11 của mình bằng cách sử dụng bộ dữ liệu tùy chỉnh. Chỉ định đối số data
với đường dẫn đến tệp cấu hình bộ dữ liệu của bạn. Tệp này phải bao gồm đường dẫn đến dữ liệu xác thực, tên lớp và các chi tiết liên quan khác.
Ví dụ trong Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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=yolo11n.pt data=path/to/your/custom_dataset.yaml
Để có thêm các tùy chọn tùy chỉnh trong quá trình xác thực, hãy xem phần Ví dụ Xác thực với Đối số.
Làm cách nào để lưu kết quả xác thực vào tệp JSON trong YOLO11?
Để lưu kết quả xác thực vào tệp JSON, bạn có thể đặt save_json
thành True
khi chạy xác thực. Điều này có thể được thực hiện trong cả Python API và CLI.
Ví dụ trong Python:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Save validation results to JSON
metrics = model.val(save_json=True)
Ví dụ sử dụng CLI:
yolo val model=yolo11n.pt save_json=True
Chức năng này đặc biệt hữu ích để phân tích sâu hơn hoặc tích hợp với các công cụ khác. Xem Đối số cho Xác thực Mô hình YOLO để biết thêm chi tiết.