Cấu hình#
Các thiết lập và hyperparameter của YOLO đóng vai trò then chốt đối với hiệu năng, tốc độ và độ chính xác của model. Những thiết lập này có thể ảnh hưởng đến hành vi của model ở nhiều giai đoạn, bao gồm huấn luyện, validation và prediction.
Xem: Làm chủ Ultralytics YOLO: Cấu hình
Các lệnh Ultralytics sử dụng cú pháp sau:
yolo TASK MODE ARGSTrong đó:
TASK(không bắt buộc) là một trong các tùy chọn (detect, segment, semantic, depth, classify, pose, obb)MODE(bắt buộc) là một trong các tùy chọn (train, val, predict, export, track, benchmark)ARGS(không bắt buộc) là các cặparg=valuenhưimgsz=640dùng để ghi đè giá trị mặc định.
Các giá trị ARG mặc định được định nghĩa trên trang này và lấy từ file cfg/default.yaml.
Tác vụ#
Các model Ultralytics YOLO có thể thực hiện nhiều tác vụ thị giác máy tính, bao gồm:
- Phát hiện: Phát hiện đối tượng xác định và định vị đối tượng trong ảnh hoặc video.
- Phân đoạn: Phân đoạn instance chia ảnh hoặc video thành các vùng tương ứng với những đối tượng hoặc lớp khác nhau.
- Phân đoạn ngữ nghĩa (
semantic): Phân đoạn ngữ nghĩa gán nhãn lớp cho từng pixel trong ảnh để hiểu cảnh một cách dày đặc. - Độ sâu (
depth): Ước tính độ sâu đơn ảnh dự đoán bản đồ độ sâu theo từng pixel, tính bằng mét, từ một ảnh RGB duy nhất. - Phân loại: Phân loại ảnh dự đoán nhãn lớp của ảnh đầu vào.
- Tư thế: Ước tính tư thế xác định đối tượng và ước tính các keypoint của đối tượng trong ảnh hoặc video.
- OBB: Hộp giới hạn định hướng sử dụng hộp giới hạn xoay, phù hợp với ảnh vệ tinh hoặc ảnh y tế.
| Đối số | Mặc định | Mô tả |
|---|---|---|
task | 'detect' | Chỉ định tác vụ YOLO: detect cho phát hiện đối tượng, segment cho phân đoạn instance, semantic cho phân đoạn ngữ nghĩa, depth cho ước lượng độ sâu đơn ảnh, classify cho phân loại, pose cho ước lượng tư thế và obb cho hộp giới hạn định hướng. Mỗi tác vụ được điều chỉnh cho các đầu ra và vấn đề cụ thể trong phân tích hình ảnh và video. |
Chế độ#
Các model Ultralytics YOLO hoạt động ở nhiều chế độ khác nhau, mỗi chế độ được thiết kế cho một giai đoạn cụ thể trong vòng đời của model:
- Train: Huấn luyện model YOLO trên dataset tùy chỉnh.
- Val: Đánh giá model YOLO đã huấn luyện.
- Predict: Sử dụng model YOLO đã huấn luyện để đưa ra dự đoán trên hình ảnh hoặc video mới.
- Export: Export model YOLO để triển khai.
- Track: Theo dõi đối tượng theo thời gian thực bằng model YOLO.
- Benchmark: Đánh giá tốc độ và độ chính xác của các bản export YOLO (ONNX, TensorRT, v.v.).
| Đối số | Mặc định | Mô tả |
|---|---|---|
mode | 'train' | Chỉ định chế độ hoạt động của model YOLO: train để huấn luyện model, val để xác thực, predict để suy luận, export để chuyển đổi sang định dạng triển khai, track để theo dõi đối tượng và benchmark để đánh giá hiệu năng. Mỗi chế độ hỗ trợ các giai đoạn khác nhau, từ phát triển đến triển khai. |
Thiết lập Train#
Các thiết lập huấn luyện cho model YOLO bao gồm siêu tham số và cấu hình ảnh hưởng đến hiệu năng, tốc độ và độ chính xác của model. Các thiết lập chính gồm batch size, learning rate, momentum và weight decay. Việc chọn optimizer, hàm loss và thành phần dataset cũng ảnh hưởng đến quá trình huấn luyện. Tinh chỉnh và thử nghiệm là yếu tố then chốt để đạt hiệu năng tối ưu. Để biết thêm chi tiết, xem hàm entrypoint của Ultralytics.
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Chỉ định file model dùng để huấn luyện. Chấp nhận đường dẫn đến model pretrained .pt hoặc file cấu hình .yaml. Đây là thiết lập thiết yếu để xác định cấu trúc model hoặc khởi tạo trọng số. |
data | str | None | Đường dẫn đến YAML của dataset (ví dụ: coco8.yaml), chứa đường dẫn đến dữ liệu validation và dữ liệu huấn luyện, tên lớp cùng số lượng lớp. Với phân loại, thay vào đó hãy cung cấp thư mục dataset hoặc tên dataset tích hợp sẵn (ví dụ: imagenet10). |
epochs | int | 100 | Tổng số epoch huấn luyện. Mỗi epoch là một lượt duyệt qua toàn bộ dataset. Điều chỉnh giá trị này có thể ảnh hưởng đến thời lượng huấn luyện và hiệu năng model. |
time | float | None | Thời gian huấn luyện tối đa tính bằng giờ. Nếu được đặt, giá trị này sẽ ghi đè đối số epochs, cho phép tự động dừng huấn luyện sau khoảng thời gian đã chỉ định. Hữu ích trong các tình huống bị giới hạn thời gian huấn luyện. |
patience | int | 100 | Số epoch chờ mà không có cải thiện về metric validation trước khi dừng sớm quá trình huấn luyện. Giúp ngăn overfitting bằng cách dừng huấn luyện khi hiệu năng chững lại. |
batch | int hoặc float | 16 | Batch size, với ba chế độ: đặt bằng số nguyên (ví dụ: batch=16), chế độ tự động sử dụng 60% bộ nhớ GPU (batch=-1), hoặc chế độ tự động với tỷ lệ sử dụng được chỉ định (batch=0.70). |
imgsz | int | 640 | Kích thước hình ảnh mục tiêu dùng cho huấn luyện. Hình ảnh được thay đổi kích thước thành hình vuông có cạnh bằng giá trị đã chỉ định (nếu rect=False), giữ nguyên tỷ lệ khung hình với model YOLO nhưng không áp dụng với RT-DETR. Ảnh hưởng đến độ chính xác và độ phức tạp tính toán của model. |
save | bool | True | Bật lưu checkpoint huấn luyện và trọng số model cuối cùng. Hữu ích để tiếp tục huấn luyện hoặc triển khai model. |
save_period | int | -1 | Tần suất lưu checkpoint model, tính theo epoch. Giá trị -1 sẽ tắt tính năng này. Hữu ích để lưu các model trung gian trong những phiên huấn luyện kéo dài. |
cache | bool hoặc str | False | Bật cache hình ảnh dataset trong bộ nhớ (True/ram), trên ổ đĩa (disk) hoặc tắt cache (False). Tăng tốc độ huấn luyện bằng cách giảm I/O ổ đĩa, đổi lại cần nhiều bộ nhớ hơn. |
device | int hoặc str hoặc list | None | Chỉ định (các) thiết bị tính toán dùng để huấn luyện: một GPU (device=0), nhiều GPU (device=[0,1]), CPU (device=cpu), MPS cho Apple silicon (device=mps), Huawei Ascend NPU (device=npu:0 hoặc device=npu:0,1), Intel XPU (device=xpu:0), hoặc tự động chọn GPU đang rảnh (device=-1) hay nhiều GPU đang rảnh (device=[-1,-1]). |
workers | int | 8 | Số luồng worker dùng để tải dữ liệu (cho mỗi RANK nếu huấn luyện đa GPU). Ảnh hưởng đến tốc độ tiền xử lý dữ liệu và đưa dữ liệu vào model; đặc biệt hữu ích trong cấu hình nhiều GPU. |
project | str | None | Tên thư mục project nơi lưu kết quả huấn luyện. Cho phép lưu trữ có tổ chức các thử nghiệm khác nhau. |
name | str | None | Tên lần chạy huấn luyện. Dùng để tạo thư mục con trong thư mục project, nơi lưu log và kết quả huấn luyện. |
exist_ok | bool | False | Nếu là True, cho phép ghi đè thư mục project/name hiện có. Hữu ích khi thử nghiệm lặp lại mà không cần xóa thủ công các kết quả trước đó. |
save_dir | str | None | Chỉ định chính xác thư mục lưu kết quả lần chạy, ghi đè tổ hợp project/name. Đường dẫn được sử dụng nguyên trạng, không tự động tăng số; vì vậy các lần chạy liên tiếp sẽ dùng lại cùng thư mục. |
pretrained | bool hoặc str | True | Xác định có bắt đầu huấn luyện từ trọng số pretrained hay không. Có thể là giá trị boolean hoặc đường dẫn dạng chuỗi đến trọng số cần tải. pretrained=False huấn luyện từ trọng số được khởi tạo ngẫu nhiên trong khi vẫn giữ nguyên kiến trúc model. |
cls_remap | bool | True | Khi fine-tune trên nhiều dataset, sao chép các hàng của classification head pretrained sang model mới ở những vị trí tên lớp trùng khớp, nhờ đó các lớp trùng nhau giữ lại bias đã học và cả trọng số nếu chiều rộng của head không đổi. Áp dụng khi số lượng lớp khác nhau, hoặc khi số lượng lớp giống nhau nhưng thứ tự lớp khác nhau. |
optimizer | str | 'auto' | Lựa chọn optimizer dùng để huấn luyện. Các tùy chọn gồm SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp hoặc auto để chọn AdamW hoặc MuSGD dựa trên số lần lặp huấn luyện. Ảnh hưởng đến tốc độ và độ ổn định hội tụ. |
seed | int | 0 | Đặt seed ngẫu nhiên cho quá trình huấn luyện, đảm bảo có thể tái lập kết quả giữa các lần chạy với cùng cấu hình. |
deterministic | bool | True | Buộc sử dụng thuật toán tất định, đảm bảo khả năng tái lập nhưng có thể ảnh hưởng đến hiệu năng và tốc độ do hạn chế sử dụng thuật toán không tất định. |
verbose | bool | True | Bật đầu ra chi tiết trong quá trình huấn luyện, hiển thị thanh tiến trình, metric theo từng epoch và thông tin huấn luyện bổ sung trong console. |
single_cls | bool | False | Coi tất cả lớp trong dataset đa lớp là một lớp duy nhất trong quá trình huấn luyện. Hữu ích cho các tác vụ phân loại nhị phân hoặc khi tập trung vào sự hiện diện của đối tượng thay vì phân loại. |
classes | list[int] | None | Chỉ định danh sách ID lớp cần huấn luyện. Hữu ích để lọc và chỉ tập trung vào một số lớp nhất định trong quá trình huấn luyện. |
rect | bool | False | Bật chiến lược padding tối thiểu — hình ảnh trong một batch được thêm padding ở mức tối thiểu để đạt cùng kích thước, với cạnh dài nhất bằng imgsz. Có thể cải thiện hiệu quả và tốc độ nhưng ảnh hưởng đến độ chính xác của model. |
multi_scale | float | 0.0 | Thay đổi ngẫu nhiên imgsz theo từng batch trong phạm vi +/- multi_scale (ví dụ: 0.25 -> 0.75x đến 1.25x), làm tròn theo bội số stride của model; 0.0 sẽ tắt huấn luyện đa tỷ lệ. |
cos_lr | bool | False | Sử dụng bộ lập lịch learning rate cosine, điều chỉnh learning rate theo đường cong cosine qua các epoch. Giúp quản lý learning rate để hội tụ tốt hơn. |
close_mosaic | int | 10 | Tắt mosaic data augmentation trong N epoch cuối để ổn định quá trình huấn luyện trước khi kết thúc. Đặt thành 0 để tắt tính năng này. |
resume | bool | False | Tiếp tục huấn luyện từ checkpoint được lưu gần nhất. Tự động tải trọng số model, trạng thái optimizer và số epoch để tiếp tục huấn luyện liền mạch. |
amp | bool hoặc str | True | Đặt độ chính xác huấn luyện: True hoặc "fp16" sử dụng FP16, "bf16" sử dụng BF16 trên các thiết bị CUDA được hỗ trợ, còn False hoặc "fp32" sử dụng FP32. |
quantize | int hoặc str | None | Đặt thành 8 (hoặc "int8") để thực hiện huấn luyện nhận biết lượng tử hóa INT8 (QAT), trong đó fine-tune với lượng tử hóa giả trong vòng lặp để trọng số tương thích với quá trình export INT8. Xem Huấn luyện nhận biết lượng tử hóa. |
fraction | float, int hoặc list | 1.0 | Tập con của dataset, biểu thị bằng tỷ lệ/số lượng hoặc danh sách [train, val, test]. 1 nghĩa là dùng toàn bộ split, số nguyên lớn hơn 1 là số lượng hình ảnh, và chỉ mục test tùy chọn mới chấp nhận 0/0.0 để biểu thị không dùng test. Danh sách hai phần tử sẽ giữ nguyên toàn bộ tập test. |
profile | bool | False | Bật profiling tốc độ ONNX và TensorRT trong quá trình huấn luyện, hữu ích để tối ưu triển khai model. |
freeze | int hoặc list | None | Đóng băng N layer đầu tiên của model hoặc các layer cụ thể theo chỉ số hay tên module (23.cv2, không có tiền tố model.), qua đó giảm số lượng tham số có thể huấn luyện. Hữu ích cho fine-tune hoặc transfer learning. |
lr0 | float | 0.01 | Learning rate ban đầu (tức SGD=1E-2, Adam=1E-3). Bị bỏ qua với optimizer='auto' mặc định; hãy chỉ định rõ optimizer để sử dụng giá trị này. |
lrf | float | 0.01 | Learning rate cuối cùng tính theo tỷ lệ của learning rate ban đầu = (lr0 * lrf), được dùng cùng với các scheduler để điều chỉnh learning rate theo thời gian. |
momentum | float | 0.937 | Hệ số momentum cho SGD hoặc beta1 cho optimizer Adam, ảnh hưởng đến mức độ gradient trước đó được đưa vào cập nhật hiện tại. |
weight_decay | float | 0.0005 | Thành phần regularization L2, phạt các trọng số lớn để ngăn overfitting. |
warmup_epochs | float | 3.0 | Số epoch warmup learning rate, trong đó learning rate tăng dần từ giá trị thấp lên learning rate ban đầu để ổn định quá trình huấn luyện ở giai đoạn đầu. |
warmup_momentum | float | 0.8 | Momentum ban đầu cho giai đoạn warmup, được điều chỉnh dần đến momentum đã đặt trong suốt thời gian warmup. |
warmup_bias_lr | float | 0.1 | Learning rate cho các tham số bias trong giai đoạn warmup, giúp ổn định quá trình huấn luyện model ở các epoch đầu. Tự động đặt thành 0.0 với optimizer='auto' mặc định; hãy chỉ định rõ optimizer để sử dụng giá trị này. |
distill_model | str | None | Đường dẫn đến checkpoint của model teacher (ví dụ: yolo26x.pt) để chưng cất tri thức. Khi được đặt, model student sẽ được huấn luyện với loss chưng cất bổ sung, dựa trên hướng dẫn từ model teacher đã đóng băng. |
dis | float | 6.0 | Trọng số của loss chưng cất được cộng vào các loss phát hiện tiêu chuẩn. Giá trị cao hơn làm tăng ảnh hưởng của hướng dẫn đặc trưng từ teacher. |
box | float | 7.5 | Trọng số của thành phần box loss trong hàm loss, quyết định mức độ ưu tiên cho việc dự đoán chính xác tọa độ bounding box. |
cls | float | 0.5 | Trọng số của classification loss trong hàm loss tổng thể, ảnh hưởng đến mức độ quan trọng của việc dự đoán đúng lớp so với các thành phần khác. |
cls_pw | float | 0.0 | Số mũ dùng để gán trọng số lớp nhằm xử lý mất cân bằng lớp dựa trên tần suất lớp nghịch đảo. 0.0 tắt việc gán trọng số lớp, còn 1.0 áp dụng đầy đủ trọng số tần suất nghịch đảo. Các giá trị từ 0 đến 1 áp dụng trọng số một phần. |
dfl | float | 1.5 | Trọng số của thành phần hồi quy khoảng cách box: distribution focal loss (DFL) khi detection head sử dụng reg_max > 1, hoặc loss L1 trên khoảng cách box chuẩn hóa với YOLO26 không dùng DFL (reg_max: 1). |
pose | float | 12.0 | Trọng số của pose loss trong các model được huấn luyện để ước lượng tư thế, ảnh hưởng đến mức độ ưu tiên cho việc dự đoán chính xác keypoint tư thế. |
kobj | float | 1.0 | Trọng số của keypoint objectness loss trong các model ước lượng tư thế, cân bằng độ tin cậy phát hiện với độ chính xác tư thế. |
rle | float | 1.0 | Trọng số của loss ước lượng log-likelihood phần dư trong các model ước lượng tư thế, ảnh hưởng đến độ chính xác khi định vị keypoint. |
angle | float | 1.0 | Trọng số của angle loss trong model OBB, ảnh hưởng đến độ chính xác của dự đoán góc hộp giới hạn định hướng. |
dlog | float | 1.0 | Trọng số của loss logarit bất biến tỷ lệ (SILog) trong các model ước lượng độ sâu, thành phần chính thúc đẩy độ chính xác độ sâu. |
dgrad | float | 0.5 | Trọng số của gradient loss trong các model ước lượng độ sâu, phạt lỗi tại các cạnh độ sâu và khuyến khích ranh giới bề mặt sắc nét hơn. |
dlam | float | 1.0 | Hệ số tập trung phương sai của SILog loss trong các model ước lượng độ sâu. 1.0 làm cho loss bất biến tỷ lệ hoàn toàn, trong khi 0.0 rút gọn loss thành log-RMSE thuần. |
nbs | int | 64 | Batch size danh nghĩa dùng để chuẩn hóa loss. |
overlap_mask | bool | True | Xác định có gộp mask của các đối tượng thành một mask duy nhất khi huấn luyện hay giữ riêng mask cho từng đối tượng. Nếu các mask chồng lấn, khi gộp thì mask nhỏ hơn sẽ được đặt lên trên mask lớn hơn. |
mask_ratio | int | 4 | Tỷ lệ giảm mẫu cho mask phân đoạn, ảnh hưởng đến độ phân giải của mask được sử dụng trong quá trình huấn luyện. Không làm thay đổi độ phân giải của mask dự đoán. |
dropout | float | 0.0 | Tỷ lệ dropout dùng để regularization trong các tác vụ phân loại, ngăn overfitting bằng cách ngẫu nhiên loại bỏ các unit trong quá trình huấn luyện. |
val | bool | True | Bật validation trong quá trình huấn luyện, cho phép đánh giá định kỳ hiệu năng model trên một dataset riêng. |
nms | bool, không bắt buộc | None | Chọn detection head dùng để suy luận khi validation theo epoch, chọn checkpoint và dừng sớm. None hoặc True sử dụng one-to-many với NMS; False sử dụng head không cần NMS nếu có. Cả hai head vẫn giữ nguyên các loss huấn luyện. |
plots | bool | True | Tạo và lưu biểu đồ metric huấn luyện và validation, cùng các ví dụ dự đoán, cung cấp thông tin trực quan về hiệu năng model và tiến trình học. |
compile | bool hoặc str | False | Bật biên dịch đồ thị torch.compile của PyTorch 2.x bằng backend='inductor'. Chấp nhận True → "default", False → tắt, hoặc chế độ dạng chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ chuyển về chế độ eager kèm cảnh báo. |
channels_last | bool | None | Sử dụng định dạng bộ nhớ channels_last (NHWC) cho convolution trong quá trình huấn luyện. None tự động bật định dạng này trên CUDA với PyTorch 1.11 trở lên, ngoại trừ Windows vì đo được tốc độ chậm hơn. False tắt định dạng này, còn True yêu cầu bật rõ ràng. Huấn luyện trên CPU hoặc MPS luôn dùng NCHW (True sẽ bị bỏ qua kèm cảnh báo). |
max_det | int | 300 | Số lượng detection tối đa trên mỗi hình ảnh trong quá trình validation huấn luyện. Với detect, segment, pose và OBB, giá trị mặc định 300 chỉ tăng lên bằng số đối tượng được gán nhãn lớn nhất trong train/val khi số lượng đó vượt quá 300. Các giá trị khác được giữ nguyên; nếu vượt giới hạn sẽ có cảnh báo. |
Đối số batch cung cấp ba tùy chọn cấu hình:
- Batch size cố định: Chỉ định số hình ảnh trong mỗi batch bằng một số nguyên (ví dụ:
batch=16). - Chế độ tự động (60% bộ nhớ GPU): Dùng
batch=-1để tự động điều chỉnh mức sử dụng bộ nhớ CUDA đến khoảng 60%. - Chế độ tự động với tỷ lệ sử dụng: Đặt một tỷ lệ (ví dụ:
batch=0.70) để điều chỉnh dựa trên mức sử dụng bộ nhớ GPU được chỉ định. - Không tìm thấy cấu hình phù hợp: Nếu không có batch size ứng viên nào tạo được profile khả dụng, AutoBatch sẽ đưa ra
RuntimeErrorrõ ràng thay vì âm thầm chuyển về một giá trị mặc định không liên quan.
Thiết lập Predict#
Các thiết lập dự đoán cho model YOLO bao gồm siêu tham số và cấu hình ảnh hưởng đến hiệu năng, tốc độ và độ chính xác trong quá trình suy luận. Các thiết lập chính gồm ngưỡng confidence, ngưỡng ức chế phi cực đại (NMS) và số lượng lớp. Kích thước, định dạng dữ liệu đầu vào và các tính năng bổ sung như mask cũng ảnh hưởng đến kết quả dự đoán. Tinh chỉnh các thiết lập này là điều cần thiết để đạt hiệu năng tối ưu.
Các đối số suy luận:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
source | str hoặc int hoặc None | None | Chỉ định nguồn dữ liệu dùng để suy luận. Có thể là đường dẫn hình ảnh, file video, thư mục, URL hoặc ID thiết bị dùng cho luồng trực tiếp. Nếu bỏ trống, hệ thống ghi log cảnh báo và model chuyển sang dùng tài nguyên demo tích hợp sẵn (ultralytics/assets hoặc URL demo dành cho OBB). Hỗ trợ nhiều định dạng và nguồn dữ liệu, cho phép ứng dụng linh hoạt với các loại đầu vào khác nhau. |
conf | float | 0.25 | Đặt ngưỡng confidence tối thiểu cho các detection. Những đối tượng được phát hiện với confidence thấp hơn ngưỡng này sẽ bị loại bỏ. Điều chỉnh giá trị này có thể giúp giảm false positive. |
iou | float | 0.7 | Ngưỡng giao trên hợp (IoU) cho ức chế phi cực đại (NMS). Giá trị thấp hơn dẫn đến ít detection hơn do loại bỏ các box chồng lấn, hữu ích để giảm dự đoán trùng lặp. |
imgsz | int hoặc tuple | 640 | Kích thước đích của letterbox. Một số nguyên xác định N×N hình vuông; một tuple xác định (height, width). Với rect=True, tensor thực tế có thể nhỏ hơn kích thước đích này do padding hình chữ nhật tối thiểu. Dùng rect=False để có kích thước cố định. Xem Kích thước cố định và hình chữ nhật tối thiểu. |
rect | bool | True | Nếu là True, sử dụng padding hình chữ nhật tối thiểu khi có thể (batch có cùng hình dạng và backend được hỗ trợ). Nếu là False, luôn padding đến imgsz đầy đủ. Xem Kích thước cố định và hình chữ nhật tối thiểu. |
quantize | int hoặc str | None | Độ chính xác suy luận: 16/"fp16" và 32/"fp32"/không đặt sẽ chọn phép tính FP16 hoặc FP32 cho model PyTorch và TorchScript; các định dạng khác thực hiện tính toán ở độ chính xác do artifact và runtime lựa chọn. Với 16, OpenVINO vẫn làm tròn đầu vào phía client về FP16 rồi chuyển lại thành FP32, nhưng không thay đổi độ chính xác mà runtime dùng để tính toán. Lượng tử hóa INT8/PTQ được cấu hình trong quá trình export, sau đó được sử dụng khi tải model đã export. Thay thế flag half đã lỗi thời. |
device | str | None | Chỉ định thiết bị dùng để suy luận (ví dụ: cpu, cuda:0, 0, npu hoặc npu:0). Cho phép người dùng chọn CPU, một GPU cụ thể, Huawei Ascend NPU hoặc thiết bị tính toán khác để thực thi model. |
dnn | bool | False | Nếu True, sử dụng module DNN của OpenCV thay vì ONNX Runtime để suy luận model ONNX. |
data | str | None | Đường dẫn đến YAML của dataset (ví dụ: coco8.yaml), chỉ đọc trường names và chỉ khi model đã tải không có tên class riêng: model được export bởi bên thứ ba hoặc model Ultralytics được export tách khỏi metadata đi kèm. Nếu không, model như vậy sẽ báo cáo class0, class1 và các giá trị tiếp theo. |
batch | int | 1 | Chỉ định batch size cho suy luận (chỉ hoạt động khi nguồn là thư mục, tệp video hoặc tệp .txt). Batch size lớn hơn có thể tăng thông lượng, rút ngắn tổng thời gian cần thiết cho suy luận. |
max_det | int | 300 | Số lượng detection tối đa cho phép trên mỗi ảnh. Giới hạn tổng số đối tượng mà model có thể phát hiện trong một lần suy luận, ngăn đầu ra quá nhiều trong các cảnh dày đặc. |
vid_stride | int | 1 | Bước nhảy frame cho đầu vào video. Cho phép bỏ qua frame trong video để tăng tốc xử lý, đổi lại giảm độ phân giải theo thời gian. Giá trị 1 xử lý mọi frame; giá trị cao hơn sẽ bỏ qua frame. |
stream_buffer | bool | False | Xác định có đưa frame mới nhận vào hàng đợi cho luồng video hay không. Nếu False, các frame cũ sẽ bị loại bỏ để nhường chỗ cho frame mới (tối ưu cho ứng dụng thời gian thực). Nếu True, frame mới được đưa vào buffer để bảo đảm không bỏ qua frame nào, nhưng sẽ gây độ trễ nếu FPS suy luận thấp hơn FPS của luồng. |
visualize | bool | False | Lưu heatmap kích hoạt class bên cạnh mỗi dự đoán, cho biết pixel nào làm tăng điểm số của class được dự đoán. Tuân theo conf và classes, vì vậy classes=[0] chỉ ánh xạ class đó. Chỉ khả dụng với model PyTorch của Ultralytics. |
augment | bool | False | Bật tăng cường lúc kiểm thử (TTA) cho dự đoán, có thể cải thiện độ vững chắc của detection nhưng làm giảm tốc độ suy luận. Chỉ khả dụng với model PyTorch của Ultralytics. |
agnostic_nms | bool | False | Bật Non-Maximum Suppression (NMS) không phụ thuộc class, loại bỏ các box chồng lấp có điểm thấp hơn giữa các class khác nhau thay vì chỉ trong cùng một class. Hữu ích trong các tình huống detection đa class thường có hiện tượng chồng lấp class. Với suy luận không dùng NMS (nms=False trên YOLO26 hoặc YOLOv10), tùy chọn này chỉ ngăn cùng một detection xuất hiện với nhiều nhãn class (các bản trùng IoU=1.0), không thực hiện loại bỏ dựa trên ngưỡng IoU giữa các box riêng biệt. |
classes | list[int] | None | Lọc dự đoán theo một tập ID class. Chỉ trả về các detection thuộc những class được chỉ định. Hữu ích khi cần tập trung vào các đối tượng liên quan trong tác vụ detection đa class. |
retina_masks | bool | False | Trả về mask phân đoạn độ phân giải cao. Nếu bật, các mask được trả về (masks.data) sẽ khớp với kích thước ảnh gốc. Nếu tắt, mask có kích thước ảnh được dùng trong quá trình suy luận. |
embed | list[int] | None | Chỉ định các layer dùng để trích xuất vector đặc trưng hoặc embedding. Dùng model.embed(source) cho embedding của layer áp chót hoặc model.predict(source, embed=[layer]) để chọn các layer cụ thể. Hữu ích cho các tác vụ tiếp theo như phân cụm hoặc tìm kiếm độ tương đồng. Chỉ khả dụng với model PyTorch của Ultralytics. |
project | str | None | Tên thư mục dự án nơi lưu đầu ra dự đoán nếu bật save. |
name | str | None | Tên lượt chạy dự đoán. Dùng để tạo thư mục con trong thư mục dự án, nơi lưu đầu ra dự đoán nếu bật save. |
stream | bool | False | Cho phép xử lý tiết kiệm bộ nhớ đối với video dài hoặc nhiều ảnh bằng cách trả về một generator gồm các đối tượng Results thay vì tải toàn bộ frame vào bộ nhớ cùng lúc. |
verbose | bool | True | Điều khiển việc hiển thị nhật ký suy luận chi tiết trong terminal, cung cấp phản hồi theo thời gian thực về quá trình dự đoán. |
compile | bool hoặc str | False | Bật biên dịch đồ thị torch.compile của PyTorch 2.x bằng backend='inductor'. Chấp nhận True → "default", False → tắt, hoặc chế độ dạng chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ chuyển về chế độ eager kèm cảnh báo. |
channels_last | bool | None | Sử dụng định dạng bộ nhớ channels_last (NHWC) cho suy luận PyTorch gốc. None tự động bật định dạng này trên CPU x86 chạy Linux và Windows có oneDNN, với PyTorch 1.13 trở lên; False tắt định dạng này; còn True yêu cầu sử dụng định dạng này trên CPU x86 hoặc thiết bị CUDA được hỗ trợ. ARM64, MPS, các phiên bản PyTorch cũ hơn, CPU không có oneDNN và các định dạng đã export như TensorRT và ONNX không thay đổi. |
nms | bool, không bắt buộc | None | Mặc định chạy suy luận một-nhiều với NMS (None hoặc True). Đặt False để dùng head một-một không có NMS khi khả dụng. Xem hướng dẫn Detection đầu-cuối để biết thêm chi tiết. |
Các tham số trực quan hóa:
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu True, hiển thị ảnh hoặc video đã được chú thích trong một cửa sổ. Hữu ích để nhận phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc kiểm thử. |
save | bool | False or True | Bật lưu ảnh hoặc video đã được chú thích thành tệp. Hữu ích cho tài liệu, phân tích thêm hoặc chia sẻ kết quả. Mặc định là True khi dùng CLI và False khi dùng trong Python. |
save_frames | bool | False | Khi xử lý video, lưu từng frame thành ảnh. Hữu ích để trích xuất frame cụ thể hoặc phân tích chi tiết từng frame. |
save_txt | bool | False | Lưu kết quả detection vào tệp văn bản theo định dạng [class] [x_center] [y_center] [width] [height] [confidence]. Hữu ích khi tích hợp với các công cụ phân tích khác. |
save_conf | bool | False | Đưa điểm confidence vào các tệp văn bản đã lưu. Tăng mức độ chi tiết dành cho hậu xử lý và phân tích. |
save_crop | bool | False | Lưu ảnh đã cắt của các detection. Hữu ích cho tăng cường dataset, phân tích hoặc tạo dataset tập trung vào các đối tượng cụ thể. |
show_labels | bool | True | Hiển thị nhãn cho mỗi detection trong đầu ra trực quan. Giúp nhận biết ngay các đối tượng được phát hiện. |
show_conf | bool | True | Hiển thị điểm confidence bên cạnh nhãn của mỗi detection. Cho biết mức độ chắc chắn của model đối với từng detection. |
show_boxes | bool | True | Vẽ bounding box quanh các đối tượng được phát hiện. Cần thiết để nhận diện trực quan và xác định vị trí đối tượng trong ảnh hoặc frame video. |
line_width | int or None | None | Chỉ định độ rộng đường viền của bounding box. Nếu None, độ rộng đường viền sẽ tự động điều chỉnh theo kích thước ảnh. Cho phép tùy chỉnh hiển thị để dễ quan sát. |
Cài đặt Validation#
Cài đặt validation cho model YOLO gồm các siêu tham số và cấu hình dùng để đánh giá hiệu năng trên dataset validation. Các cài đặt này ảnh hưởng đến hiệu năng, tốc độ và độ chính xác. Những cài đặt phổ biến gồm batch size, tần suất validation và các chỉ số hiệu năng. Kích thước, thành phần của dataset validation cùng với tác vụ cụ thể cũng ảnh hưởng đến quá trình này.
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
data | str | None | Chỉ định đường dẫn đến YAML của dataset (ví dụ: coco8.yaml), trong đó cần có đường dẫn đến dữ liệu validation. Với phân loại, thay vào đó, hãy cung cấp thư mục dataset hoặc tên dataset tích hợp sẵn (ví dụ: imagenet10). |
imgsz | int | 640 | Xác định kích thước ảnh đầu vào. Tất cả ả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 đối với 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 ảnh trong mỗi batch. Giá trị cao hơn tận dụng bộ nhớ GPU hiệu quả hơn nhưng cần nhiều VRAM hơn. Điều chỉnh theo tài nguyên phần cứng hiện có. |
save_json | bool | False | Nế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ông cụ khác hoặc gửi lên máy chủ đánh giá như COCO. Với dataset detection, tùy chọn này cũng đánh giá dự đoán bằng faster-coco-eval và báo cáo mAP cho đối tượng nhỏ, vừa và lớn; các chỉ số được ghi trong quá trình huấn luyện dưới dạng metrics/mAP_small(B), metrics/mAP_medium(B) và metrics/mAP_large(B) trong results.csv. |
conf | float | 0.001 | Đặt ngưỡng confidence tối thiểu cho detection. Giá trị thấp hơn làm tăng recall nhưng có thể tạo thêm false positive. Đường cong precision-recall, mAP và ma trận nhầm lẫn detection đều dùng giá trị này; conf cao hơn, chẳng hạn 0.25, tạo ma trận gần với đầu ra dự đoán hơn nhưng có thể làm giảm mAP. Precision và recall tóm tắt dùng confidence F1 tối đa, nên có thể khác với các giá trị suy ra từ confusion_matrix.png. Mặc định là 0.01 cho validation OBB để giảm mức sử dụng bộ nhớ. |
iou | float | 0.7 | Đặt ngưỡng Intersection Over Union cho Non-Maximum Suppression. Điều khiển việc loại bỏ detection trùng lặp. |
max_det | int | 300 | Giới hạn số lượng detection tối đa trên mỗi ảnh. Với detect, segment, pose và OBB, nếu giữ ở mức 300, giá trị này sẽ được tăng lên bằng số lượng đối tượng được gán nhãn lớn nhất trong tập dữ liệu validation khi một ảnh vượt quá giới hạn đó, kèm cảnh báo; mọi giá trị khác sẽ được giữ nguyên, đồng thời có cảnh báo rằng recall có thể bị giới hạn nếu ảnh vượt quá giá trị đó. |
quantize | int hoặc str | None | Độ chính xác validation: 16/"fp16" và 32/"fp32"/không đặt sẽ chọn phép tính FP16 hoặc FP32 cho model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác do artifact và runtime lựa chọn. Với 16, OpenVINO vẫn làm tròn đầu vào xuống FP16 ở phía client rồi chuyển lại thành FP32 mà không thay đổi độ chính xác runtime sử dụng để tính toán. Cấu hình lượng tử hóa INT8/PTQ trong quá trình export, sau đó dùng bằng cách validation model đã export. Thay thế flag half đã lỗi thời. |
device | str | None | Chỉ định thiết bị dùng cho validation (cpu, cuda:0, npu, npu:0, v.v.). Khi là None, thiết bị khả dụng tốt nhất sẽ được tự động chọ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. |
dnn | bool | False | Nếu True, sử dụng module DNN của OpenCV để suy luận model ONNX, cung cấp một phương án thay thế cho các phương thức suy luận PyTorch. |
plots | bool | True | Khi được đặt thành True, tạo và lưu 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 năng model. |
classes | list[int] | None | Chỉ định danh sách ID class cần đánh giá. Hữu ích để lọc và chỉ tập trung vào một số class 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 khi batching, giảm padding và có thể tăng tốc độ cũng như hiệu quả bằng cách xử lý ảnh theo tỷ lệ khung hình gốc. Bị bỏ qua khi validation depth, vốn kéo giãn mọi ảnh thành hình vuông imgsz cố định thay vì thêm padding. |
split | str | 'val' | Xác định phần chia dataset dùng cho validation (val, test hoặc train). Cho phép linh hoạt chọn phân đoạn dữ liệu để đánh giá hiệu năng. |
fraction | float, int hoặc list | 1.0 | Tập con của phần chia được validation. Với danh sách [train, val, test], áp dụng mục tương ứng với split (1 = toàn bộ phần chia, số nguyên lớn hơn 1 = số lượng ảnh; mục bị bỏ qua sẽ dùng toàn bộ). Giá trị đơn chỉ áp dụng cho split=train; khi đó val và test dùng toàn bộ phần chia. |
project | str | None | Tên thư mục dự án nơi lưu đầu ra validation. Giúp sắp xếp kết quả từ các thử nghiệm hoặc model khác nhau. |
name | str | None | Tên lượt chạy validation. Dùng để tạo thư mục con trong thư mục dự án, nơi lưu nhật ký và đầu ra validation. |
verbose | bool | True | Nếu True, hiển thị thông tin chi tiết trong quá trình validation, bao gồm metric theo từng class, tiến độ batch và thông tin gỡ lỗi bổ sung. |
save_txt | bool | False | Nếu True, lưu kết quả detection vào các tệp văn bản, mỗi ảnh một tệp; hữu ích cho phân tích thêm, hậu xử lý tùy chỉnh hoặc tích hợp với hệ thống khác. |
save_conf | bool | False | Nếu True, đưa giá trị confidence vào các tệp văn bản đã lưu khi bật save_txt, 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 dùng để tải dữ liệu. Giá trị cao hơn có thể tăng tốc tiền xử lý dữ liệu nhưng cũng có thể làm tăng mức sử dụng CPU. Đặt thành 0 sẽ dùng luồng chính, có thể ổn định hơn trong một số môi trường. |
augment | bool | False | Bật tăng cường lúc kiểm thử (TTA) trong quá trình validation, có thể cải thiện độ chính xác của detection nhưng làm giảm 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. Chỉ khả dụng với model PyTorch của Ultralytics. |
agnostic_nms | bool | False | Bật Non-Maximum Suppression không phụ thuộc class, loại bỏ các box chồng lấp có điểm thấp hơn bất kể class được dự đoán. Hữu ích cho các ứng dụng tập trung vào instance. Với suy luận không dùng NMS (nms=False trên YOLO26 hoặc YOLOv10), tùy chọn này chỉ ngăn cùng một detection xuất hiện với nhiều nhãn class (các bản trùng IoU=1.0), không thực hiện loại bỏ dựa trên ngưỡng IoU giữa các box riêng biệt. |
single_cls | bool | False | Coi tất cả class là một class duy nhất trong quá trình validation. Hữu ích để đánh giá hiệu năng model trên các tác vụ detection nhị phân hoặc khi không cần phân biệt class. |
visualize | bool | False | Trực quan hóa ground truth, true positive, false positive và false negative cho mỗi ảnh. Hữu ích cho việc gỡ lỗi và diễn giải model. |
show_labels | bool | True | Hiển thị nhãn class trong hình ảnh trực quan hóa validation khi visualize=True. Đặt thành False để dễ quan sát các trường hợp khớp và lỗi hơn. |
show_conf | bool | True | Hiển thị điểm confidence trong hình ảnh trực quan hóa validation khi visualize=True. Đặt thành False để dễ quan sát các trường hợp khớp và lỗi hơn. |
compile | bool hoặc str | False | Bật biên dịch đồ thị torch.compile của PyTorch 2.x bằng backend='inductor'. Chấp nhận True → "default", False → tắt, hoặc chế độ dạng chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ chuyển về chế độ eager kèm cảnh báo. |
channels_last | bool | None | Sử dụng định dạng bộ nhớ channels_last (NHWC) cho validation PyTorch gốc. None tự động bật định dạng này trên CPU x86 chạy Linux và Windows có oneDNN, với PyTorch 1.13 trở lên; False tắt định dạng này; còn True yêu cầu sử dụng định dạng này trên CPU x86 hoặc thiết bị CUDA được hỗ trợ. ARM64, MPS, các phiên bản PyTorch cũ hơn, CPU không có oneDNN và các định dạng đã export không thay đổi; quá trình validation trong khi huấn luyện giữ nguyên bố cục model huấn luyện. |
nms | bool, không bắt buộc | None | Mặc định chạy suy luận một-nhiều với NMS (None hoặc True). Đặt False để dùng head một-một không có NMS khi khả dụng. Xem hướng dẫn Detection đầu-cuối để biết thêm chi tiết. |
Việc tinh chỉnh và thử nghiệm cẩn thận rất quan trọng để bảo đảm hiệu năng tối ưu, đồng thời phát hiện và ngăn ngừa overfitting.
Cài đặt Export#
Cài đặt export cho model YOLO gồm các cấu hình để lưu hoặc export model nhằm sử dụng trong nhiều môi trường khác nhau. Các cài đặt này ảnh hưởng đến hiệu năng, kích thước và khả năng tương thích. Những cài đặt chính gồm định dạng tệp được export (ví dụ: ONNX, TensorFlow SavedModel), thiết bị đích (ví dụ: CPU, GPU) và các tính năng như mask. Tác vụ của model cùng với các ràng buộc của môi trường đích cũng ảnh hưởng đến quá trình export.
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'torchscript' | Định dạng đích cho model được export, chẳng hạn 'onnx', 'torchscript', 'engine' (TensorRT) hoặc định dạng khác. Mỗi định dạng cho phép tương thích với các môi trường triển khai khác nhau. |
name | str | None | Tên mục tiêu phần cứng cho các format yêu cầu tên mục tiêu: kiến trúc Hailo ('hailo8', 'hailo8l', 'hailo10h', 'hailo15h', 'hailo15l'; mặc định là 'hailo8l'), chip Rockchip RKNN (mặc định là 'rk3588'), SoC Huawei Ascend (một --soc_version CANN; mặc định là 'Ascend310B4'), mục tiêu Qualcomm QNN HTP (mặc định là '73'), hoặc thiết bị AMD Xilinx Versal AI Edge Series Gen 2 (mặc định là 've2-xc2ve3858', bộ kit đánh giá VEK385). Khác với cặp đặt tên lần chạy project/name được các mode khác sử dụng. |
imgsz | int hoặc tuple | 640 | Kích thước ảnh mong muốn cho đầu vào model. Có thể là số nguyên cho ảnh vuông (ví dụ: 640 cho kích thước 640×640) hoặc tuple (height, width) để chỉ định kích thước cụ thể. Nếu không truyền giá trị, quá trình export sẽ dùng lại kích thước huấn luyện được ghi trong checkpoint đã tải: các checkpoint YOLO26 chính thức ghi 768 cho depth, 224 cho classify, 1024 cho OBB và 640 cho các tác vụ khác, trong khi một model fine-tune ghi lại giá trị imgsz mà model được huấn luyện. Model được tạo từ YAML không có kích thước huấn luyện đã ghi nhận và dùng 640. |
optimize | bool | False | Bật tối ưu hóa trình biên dịch nâng cao cho DEEPX, giảm độ trễ suy luận nhưng tăng thời gian biên dịch. |
quantize | int hoặc str | None | Độ chính xác lượng tử hóa: 16 (FP16, giảm kích thước model và có thể tăng tốc suy luận trên phần cứng được hỗ trợ) hoặc 8 (INT8/PTQ, nén model thêm với mức giảm độ chính xác tối thiểu, chủ yếu dành cho thiết bị biên; cần calibration data/fraction); 32/không đặt tương ứng với FP32. Checkpoint được huấn luyện với quantize=8 luôn được export ở INT8: onnx và engine export từ các dải giá trị có sẵn mà không cần calibration, còn các định dạng hoặc độ chính xác khác sẽ bị từ chối. 'w8a8' và 'w16a16' là bí danh của 8 và 16; các độ chính xác hỗn hợp 'w8a16' (trọng số INT8 với activation 16-bit: CoreML, LiteRT, QNN) và 'w8a32' (INT8 động: LiteRT) chỉ được các định dạng đó chấp nhận. Thay thế các flag half/int8 đã lỗi thời (half=True → 16, int8=True → 8 vẫn được chấp nhận kèm cảnh báo lỗi thời). Chỉ cho phép các độ chính xác được định dạng đích hỗ trợ (xem bên dưới). |
dynamic | bool | False | Cho phép kích thước đầu vào động khi export TorchScript, ONNX, OpenVINO, TensorRT, CoreML và MNN, tăng tính linh hoạt khi xử lý ảnh có kích thước khác nhau. |
simplify | bool | True | Đơn giản hóa đồ thị ONNX trung gian bằng onnxslim cho các định dạng export có tạo đồ thị này (xem Các định dạng Export), có thể cải thiện hiệu năng và khả năng tương thích với các engine suy luận. |
opset | int | None | Chỉ định phiên bản opset ONNX cho các định dạng export tạo đồ thị ONNX (xem Các định dạng Export), nhằm bảo đảm khả năng tương thích với các trình phân tích cú pháp và runtime ONNX khác nhau. Nếu không đặt, phiên bản mới nhất được hỗ trợ sẽ được dùng. |
workspace | float hoặc None | None | Đặt kích thước workspace tối đa tính bằng GiB cho các tối ưu hóa TensorRT, cân bằng mức sử dụng bộ nhớ và hiệu năng. Dùng None để TensorRT tự động cấp phát tối đa theo giới hạn của thiết bị. |
nms | bool, không bắt buộc | None | None export dự đoán một-nhiều thô để dùng NMS bên ngoài; True tích hợp NMS khi được hỗ trợ; False chọn head không có NMS khi khả dụng. NMS tích hợp của CoreML hỗ trợ detect, segment và pose với shape tĩnh. Xem hướng dẫn Detection đầu-cuối. |
conf | float | None | Ngưỡng confidence được dùng ở mọi nơi tạo NMS trong quá trình export: các định dạng export nms=True; định dạng export detect không đầu-cuối của Hailo; và định dạng export detect, pose, segment của IMX, vốn buộc dùng nms=True nội bộ. Mặc định là 0.25 nếu không đặt. |
iou | float | 0.7 | Ngưỡng IoU được dùng ở mọi nơi tạo NMS trong quá trình export: các định dạng export nms=True; định dạng export detect không đầu-cuối của Hailo; và định dạng export detect, pose, segment của IMX, vốn buộc dùng nms=True nội bộ. |
max_det | int | 300 | Số lượng detection tối đa được giữ lại trong đầu ra của model đã export. Áp dụng cho các định dạng export nms=True trên mọi định dạng, ngoại trừ detection CoreML có pipeline NMS gốc không giới hạn số detection, cùng với các định dạng export detection đầu-cuối không dùng NMS (YOLO26, YOLOv10, giới hạn theo số anchor hiện có) và các định dạng export detect, pose, segment của IMX. |
agnostic_nms | bool | False | Bật NMS không phụ thuộc class ở mọi nơi tạo NMS trong quá trình export thông qua pipeline nms=True tiêu chuẩn, bao gồm cả giai đoạn NMS riêng của CoreML; tùy chọn này loại bỏ các box chồng lấp có điểm thấp hơn giữa các class khác nhau thay vì chỉ trong cùng một class. Không áp dụng với cấu hình NMS được tạo riêng của Hailo hoặc IMX; các cấu hình này không có tùy chọn không phụ thuộc class và vẫn xét class bất kể flag này. Tùy chọn này cũng được tích hợp sẵn trong các định dạng export đầu-cuối không dùng NMS (YOLO26, YOLOv10), tại đó nó chỉ ngăn cùng một detection xuất hiện dưới nhiều nhãn class (các bản trùng IoU=1.0), chứ không loại bỏ các box riêng biệt dựa trên ngưỡng IoU. |
batch | int | 1 | Chỉ định batch inference của model export hoặc số lượng ảnh tối đa mà model đã export xử lý đồng thời ở mode predict. Các format không có batch trong tham số export (Edge TPU, IMX500, DEEPX, Hailo, AMD Xilinx) sẽ export batch 1 và từ chối các giá trị khác. |
device | str | None | Chỉ định thiết bị dùng để export: GPU (device=0), CPU (device=cpu), MPS cho Apple silicon (device=mps), NPU Huawei Ascend (device=npu hoặc device=npu:0) hoặc DLA cho NVIDIA Jetson (device=dla:0 hoặc device=dla:1). Các định dạng export TensorRT tự động dùng GPU, nhưng TensorRT 11.0 không hỗ trợ DLA. |
verbose | bool | False | Tăng mức độ nhật ký của TensorRT builder lên VERBOSE trong quá trình export format='engine'. Các định dạng export khác bỏ qua tùy chọn này. |
data | str | None | Đường dẫn đến YAML của dataset, cần thiết để calibration lượng tử hóa INT8; với phân loại, thay vào đó hãy cung cấp thư mục dataset hoặc tên dataset tích hợp sẵn. Nếu không chỉ định khi bật INT8, Ultralytics sẽ chọn dataset calibration phù hợp với tác vụ khi cần hoặc dùng dataset mặc định cho tác vụ của model. Checkpoint được huấn luyện với quantize=8 có sẵn các dải giá trị INT8 riêng và không cần dữ liệu calibration. |
split | str | 'val' | Phần chia dataset ('train', 'val' hoặc 'test') dùng để tạo dataloader calibration lượng tử hóa INT8 từ data. |
fraction | float, int hoặc list | 1.0 | Tập con dataset dùng cho calibration INT8: tỷ lệ, số lượng ảnh hoặc các giá trị [train, val, test]. 1 có nghĩa là toàn bộ phần chia; số nguyên lớn hơn 1 là số lượng ảnh; chỉ mục test không bắt buộc mới chấp nhận 0/0.0 với nghĩa là không dùng mục nào. Danh sách hai mục sẽ giữ nguyên toàn bộ test. |
Cấu hình hợp lý bảo đảm model đã export được tối ưu cho trường hợp sử dụng và hoạt động hiệu quả trong môi trường đích.
Cài đặt Solutions#
Các cài đặt cấu hình Ultralytics Solutions cho phép linh hoạt tùy chỉnh model cho những tác vụ như đếm đối tượng, tạo heatmap, theo dõi bài tập, phân tích dữ liệu, theo dõi vùng, quản lý hàng đợi và đếm theo vùng. Các tùy chọn này giúp dễ dàng điều chỉnh để có kết quả chính xác và hữu ích, phù hợp với nhu cầu cụ thể.
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model Ultralytics YOLO. |
region | list hoặc dict | None | Các điểm xác định vùng quan tâm, dưới dạng danh sách tuple (x, y) hoặc từ điển ánh xạ tên vùng với danh sách điểm cho nhiều vùng (chỉ dùng RegionCounter). Khi là None, các giải pháp cần vùng sẽ dùng vùng mặc định được xác định trước. |
show_in | bool | True | Flag điều khiển việc hiển thị số lượt đi vào trên luồng video. |
show_out | bool | True | Flag điều khiển việc hiển thị số lượt đi ra trên luồng video. |
analytics_type | str | 'line' | Loại biểu đồ, tức là line, bar, area hoặc pie. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Bảng màu dùng cho heatmap. |
line_width | int | 2 | Độ dày đường viền của box, keypoint và số đếm mà giải pháp vẽ. |
verbose | bool | True | Bật nhật ký theo từng frame của giải pháp, gồm shape đầu vào, số lượng class và tốc độ xử lý. Bản thân lệnh gọi tracking luôn không ghi nhật ký. |
json_file | str | None | Đường dẫn đến tệp JSON chứa toàn bộ dữ liệu tọa độ chỗ đỗ xe. |
up_angle | float | 145.0 | Ngưỡng góc cho tư thế 'lên'. |
kpts | list[int] | [6, 8, 10] | Danh sách ba chỉ số keypoint dùng để theo dõi bài tập. Các keypoint này tương ứng với khớp hoặc bộ phận cơ thể như vai, khuỷu tay và cổ tay, dành cho các bài tập như chống đẩy, kéo xà, squat và bài tập cơ bụng. |
down_angle | float | 90.0 | Ngưỡng góc cho tư thế 'xuống'. |
blur_ratio | float | 0.5 | Điều chỉnh tỷ lệ cường độ làm mờ, với giá trị trong phạm vi 0.1 - 1.0. |
crop_dir | str | 'cropped-detections' | Tên thư mục dùng để lưu các đối tượng phát hiện đã cắt. |
records | int | 5 | Tổng số đối tượng phát hiện cần đạt để kích hoạt email cảnh báo từ hệ thống an ninh. |
vision_point | tuple[int, int] | (20, 20) | Điểm mà VisionEye Solution sẽ theo dõi đối tượng và vẽ đường đi. |
source | str | None | Đường dẫn đến nguồn đầu vào (video, RTSP, v.v.). Chỉ sử dụng được với giao diện dòng lệnh (CLI) của Solutions. |
figsize | tuple[float, float] | (12.8, 7.2) | Kích thước hình tính bằng inch cho biểu đồ Analytics; (12.8, 7.2) hiển thị khung hình 1280×720. |
fps | float | 30.0 | Số khung hình mỗi giây được dùng để tính tốc độ. |
max_hist | int | 5 | Số điểm lịch sử tối đa cần theo dõi cho mỗi đối tượng để tính tốc độ/hướng di chuyển. |
meter_per_pixel | float | 0.05 | Hệ số tỷ lệ dùng để chuyển đổi khoảng cách pixel sang đơn vị thực tế. |
max_speed | int | 120 | Tốc độ tối đa tính bằng km/h; các tốc độ ước tính cao hơn sẽ bị giới hạn ở giá trị này. |
data | str | 'images' | Đường dẫn đến thư mục ảnh dùng để tìm kiếm độ tương đồng. |
imgsz | int | 640 | Kích thước ảnh đầu vào dùng cho quá trình inference của model. |
Cài đặt tăng cường dữ liệu#
Các kỹ thuật tăng cường dữ liệu rất cần thiết để cải thiện độ bền vững và hiệu năng của model YOLO bằng cách tạo thêm biến thiên trong dữ liệu huấn luyện, giúp model khái quát hóa tốt hơn với dữ liệu chưa từng gặp. Bảng sau trình bày mục đích và tác động của từng tham số tăng cường:
| Đối số | Kiểu | Mặc định | Các tác vụ được hỗ trợ | Phạm vi | Mô tả |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Điều chỉnh sắc độ của ảnh theo một phần vòng màu, tạo ra biến thiên màu sắc. Giúp model khái quát hóa trong các điều kiện chiếu sáng khác nhau. Với classify, tùy chọn này chỉ áp dụng khi auto_augment=None. |
hsv_s | float | 0.7 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Thay đổi độ bão hòa của ảnh theo một tỷ lệ, ảnh hưởng đến cường độ màu sắc. Hữu ích để mô phỏng các điều kiện môi trường khác nhau. Với classify, tùy chọn này chỉ áp dụng khi auto_augment=None. |
hsv_v | float | 0.4 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Điều chỉnh giá trị (độ sáng) của ảnh theo một tỷ lệ, giúp model hoạt động tốt trong nhiều điều kiện chiếu sáng khác nhau. Với classify, tùy chọn này chỉ áp dụng khi auto_augment=None. |
degrees | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 180 | Xoay ngẫu nhiên ảnh trong phạm vi độ được chỉ định, cải thiện khả năng nhận diện đối tượng ở nhiều hướng khác nhau của model. |
translate | float | 0.1 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Dịch chuyển ảnh theo chiều ngang và chiều dọc một phần so với kích thước ảnh, hỗ trợ model học cách phát hiện các đối tượng chỉ hiển thị một phần. |
scale | float | tuple | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0 - 1 hoặc tuple (min, max) được chỉ định tường minh (không áp dụng cho classify). | Thay đổi tỷ lệ ảnh theo hệ số khuếch đại, mô phỏng đối tượng ở các khoảng cách khác nhau so với camera. |
shear | float | 0 | detect, segment, semantic, depth, pose, obb | -180 - +180 | Biến dạng xiên ảnh theo số độ được chỉ định, mô phỏng hiệu ứng khi quan sát đối tượng từ các góc khác nhau. |
perspective | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 0.001 | Áp dụng phép biến đổi phối cảnh ngẫu nhiên lên ảnh, cải thiện khả năng hiểu đối tượng trong không gian 3D của model. |
flipud | float | 0 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Lật ngược ảnh theo xác suất được chỉ định, tăng độ biến thiên của dữ liệu mà không làm thay đổi đặc điểm của đối tượng. |
fliplr | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Lật ảnh theo chiều ngang với xác suất được chỉ định, hữu ích để model học về các đối tượng đối xứng và tăng tính đa dạng của dataset. |
bgr | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Đảo thứ tự kênh ảnh từ RGB sang BGR với xác suất được chỉ định, hữu ích để tăng khả năng chống chịu khi thứ tự kênh không chính xác. |
mosaic | float | 1 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Kết hợp bốn ảnh huấn luyện thành một, mô phỏng các bố cục cảnh và tương tác giữa các đối tượng khác nhau. Đặc biệt hiệu quả trong việc hiểu các cảnh phức tạp. |
mixup | float | 0 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Trộn hai ảnh và nhãn tương ứng để tạo ảnh tổng hợp. Tăng khả năng khái quát hóa của model bằng cách tạo nhiễu nhãn và biến thiên thị giác. |
cutmix | float | 0 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Kết hợp các phần của hai ảnh, tạo hiệu ứng trộn một phần trong khi vẫn giữ các vùng riêng biệt. Tăng độ bền vững của model bằng cách tạo ra các tình huống che khuất. |
copy_paste | float | 0 | segment, semantic, obb | 0.0 - 1.0 | Tỷ lệ đối tượng đủ điều kiện được dán; flip phản chiếu chúng trong ảnh, còn mixup cũng dùng giá trị này làm xác suất áp dụng giữa các ảnh. |
copy_paste_mode | str | flip | segment, semantic, obb | - | Chỉ định chiến lược copy-paste cần sử dụng. Các tùy chọn gồm 'flip' và 'mixup'. |
auto_augment | str | randaugment | classify | - | Áp dụng chính sách tăng cường được xác định trước ('randaugment', 'autoaugment' hoặc 'augmix') để cải thiện hiệu năng model thông qua sự đa dạng thị giác. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Xóa ngẫu nhiên các vùng ảnh trong quá trình huấn luyện để khuyến khích model tập trung vào những đặc trưng ít rõ ràng hơn. |
augmentations | list | None | detect, segment, semantic, depth, pose, obb | - | Các phép biến đổi Albumentations tùy chỉnh để tăng cường dữ liệu nâng cao (chỉ dùng được qua Python API). Nhận danh sách các đối tượng transform cho nhu cầu tăng cường chuyên biệt. |
Điều chỉnh các cài đặt này để đáp ứng yêu cầu của dataset và tác vụ. Thử nghiệm với các giá trị khác nhau có thể giúp tìm ra chiến lược tăng cường tối ưu để model đạt hiệu năng tốt nhất.
Hướng dẫn về tăng cường dữ liệu
Cài đặt ghi log, checkpoint và biểu đồ#
Ghi log, checkpoint, biểu đồ và quản lý tệp rất quan trọng khi huấn luyện model YOLO:
- Ghi log: Theo dõi tiến độ của model và chẩn đoán sự cố bằng các thư viện như TensorBoard hoặc ghi vào tệp.
- Checkpoint: Lưu model định kỳ để tiếp tục huấn luyện hoặc thử nghiệm các cấu hình khác nhau.
- Biểu đồ: Trực quan hóa hiệu năng và tiến độ huấn luyện bằng các thư viện như Matplotlib hoặc TensorBoard.
- Quản lý tệp: Sắp xếp các tệp được tạo trong quá trình huấn luyện, chẳng hạn như checkpoint, tệp log và biểu đồ, để dễ truy cập và phân tích.
Quản lý hiệu quả các khía cạnh này giúp theo dõi tiến độ và đơn giản hóa việc gỡ lỗi cũng như tối ưu hóa.
| Đối số | Mặc định | Mô tả |
|---|---|---|
project | None | Chỉ định thư mục gốc để lưu các lần chạy huấn luyện. Nếu không chỉ định, các lần chạy sẽ được lưu trong runs/<task>. Mỗi lần chạy được lưu trong một thư mục con riêng. |
name | None | Đặt tên cho thử nghiệm. Nếu không chỉ định, YOLO sẽ dùng tên chế độ và tăng số thứ tự cho mỗi lần chạy (ví dụ: train, train-2) để tránh ghi đè. |
exist_ok | False | Xác định có ghi đè thư mục thử nghiệm hiện có hay không. True cho phép ghi đè; False ngăn việc này. |
plots | True | Kiểm soát việc tạo và lưu biểu đồ huấn luyện và xác thực. Đặt thành True để tạo các biểu đồ như đường cong loss, đường cong precision-recall và các dự đoán mẫu nhằm trực quan theo dõi hiệu năng. |
save | True | Cho phép lưu checkpoint huấn luyện và trọng số model cuối cùng. Đặt thành True để lưu trạng thái model định kỳ, cho phép tiếp tục huấn luyện hoặc triển khai model. |
Tệp cấu hình tùy chỉnh#
Tải YAML đã lưu để sử dụng lại toàn bộ bộ tham số mà không cần truyền trực tiếp. Tham số cfg ghi đè các giá trị trong default.yaml, trong khi các tham số bổ sung được truyền cùng vẫn được ưu tiên.
| Đối số | Mặc định | Mô tả |
|---|---|---|
cfg | None | Đường dẫn đến tệp YAML có các giá trị thay thế những mục default.yaml. Xem Ghi đè tệp cấu hình mặc định để biết ví dụ CLI thực tế. |
Câu hỏi thường gặp#
Cải thiện hiệu năng bằng cách tinh chỉnh siêu tham số như batch size, learning rate, momentum và weight decay. Điều chỉnh cài đặt tăng cường dữ liệu, chọn optimizer phù hợp và áp dụng các kỹ thuật như early stopping hoặc mixed precision. Để biết chi tiết, hãy xem Hướng dẫn huấn luyện.
Các siêu tham số chính ảnh hưởng đến độ chính xác gồm:
- Batch Size (
batch): Batch size lớn hơn có thể giúp ổn định quá trình huấn luyện nhưng cần nhiều bộ nhớ hơn. - Learning Rate (
lr0): Learning rate thấp hơn cho phép điều chỉnh tinh hơn nhưng hội tụ chậm hơn. - Momentum (
momentum): Tăng tốc các vector gradient, đồng thời giảm dao động. - Kích thước ảnh (
imgsz): Kích thước lớn hơn cải thiện độ chính xác nhưng làm tăng tải tính toán.
Điều chỉnh các giá trị này dựa trên dataset và phần cứng của bạn. Tìm hiểu thêm trong Cài đặt huấn luyện.
- Batch Size (
Learning rate (
lr0) rất quan trọng; hãy bắt đầu với0.01cho SGD hoặc0.001cho optimizer Adam, đồng thời đặt tường minhoptimizervìautomặc định bỏ qualr0. Theo dõi các chỉ số và điều chỉnh khi cần. Sử dụng bộ lập lịch learning rate cosine (cos_lr) hoặc warmup (warmup_epochs,warmup_momentum). Xem chi tiết trong Hướng dẫn huấn luyện.Các cài đặt mặc định gồm:
- Ngưỡng confidence (
conf=0.25): Confidence tối thiểu của các đối tượng được phát hiện. - Ngưỡng IoU (
iou=0.7): Dùng cho loại bỏ ngoài cực đại (NMS). - Kích thước ảnh (
imgsz=640): Thay đổi kích thước ảnh đầu vào. - Thiết bị (
device=None): Chọn CPU, CUDA GPU, Apple MPS, Intel XPU (xpu) hoặc Huawei Ascend NPU (npu).
Để xem tổng quan đầy đủ, hãy tham khảo Cài đặt predict và Hướng dẫn predict.
- Ngưỡng confidence (
Huấn luyện mixed precision (
amp=True) giảm mức sử dụng bộ nhớ và tăng tốc huấn luyện bằng cách sử dụng FP16 và FP32. Phương pháp này có lợi trên các GPU hiện đại, cho phép dùng model lớn hơn và tính toán nhanh hơn mà không làm giảm đáng kể độ chính xác. Tìm hiểu thêm trong Hướng dẫn huấn luyện.