Ultralytics YOLO27:
Get Started

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:

Ví dụ
yolo TASK MODE ARGS

Trong đó:

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 địnhMô 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.

Hướng dẫn về tác vụ

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 địnhMô 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.

Hướng dẫn về chế độ

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ểuMặc địnhMô tả
modelstrNoneChỉ đị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ố.
datastrNoneĐườ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).
epochsint100Tổ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.
timefloatNoneThờ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.
patienceint100Số 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.
batchint hoặc float16Batch 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).
imgszint640Kí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.
saveboolTrueBậ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_periodint-1Tầ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.
cachebool hoặc strFalseBậ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.
deviceint hoặc str hoặc listNoneChỉ đị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]).
workersint8Số 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.
projectstrNoneTê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.
namestrNoneTê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_okboolFalseNế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_dirstrNoneChỉ đị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.
pretrainedbool hoặc strTrueXá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_remapboolTrueKhi 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.
optimizerstr'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ụ.
seedint0Đặ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.
deterministicboolTrueBuộ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.
verboseboolTrueBậ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_clsboolFalseCoi 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.
classeslist[int]NoneChỉ đị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.
rectboolFalseBậ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_scalefloat0.0Thay đổ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_lrboolFalseSử 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_mosaicint10Tắ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.
resumeboolFalseTiế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.
ampbool hoặc strTrueĐặ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.
quantizeint hoặc strNoneĐặ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.
fractionfloat, int hoặc list1.0Tậ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.
profileboolFalseBậ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.
freezeint hoặc listNoneĐó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.
lr0float0.01Learning 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.
lrffloat0.01Learning 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.
momentumfloat0.937Hệ 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_decayfloat0.0005Thành phần regularization L2, phạt các trọng số lớn để ngăn overfitting.
warmup_epochsfloat3.0Số 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_momentumfloat0.8Momentum 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_lrfloat0.1Learning 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_modelstrNoneĐườ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.
disfloat6.0Trọ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.
boxfloat7.5Trọ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.
clsfloat0.5Trọ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_pwfloat0.0Số 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.
dflfloat1.5Trọ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).
posefloat12.0Trọ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ế.
kobjfloat1.0Trọ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ế.
rlefloat1.0Trọ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.
anglefloat1.0Trọ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.
dlogfloat1.0Trọ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.
dgradfloat0.5Trọ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.
dlamfloat1.0Hệ 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.
nbsint64Batch size danh nghĩa dùng để chuẩn hóa loss.
overlap_maskboolTrueXá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_ratioint4Tỷ 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.
dropoutfloat0.0Tỷ 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.
valboolTrueBậ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.
nmsbool, không bắt buộcNoneChọ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.
plotsboolTrueTạ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.
compilebool hoặc strFalseBậ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_lastboolNoneSử 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_detint300Số 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.
Lưu ý về thiết lập batch size

Đố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 RuntimeError rõ ràng thay vì âm thầm chuyển về một giá trị mặc định không liên quan.

Hướng dẫn Train

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ểuMặc địnhMô tả
sourcestr hoặc int hoặc NoneNoneChỉ đị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.
conffloat0.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.
ioufloat0.7Ngưỡ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.
imgszint hoặc tuple640Kí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.
rectboolTrueNế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.
quantizeint hoặc strNoneĐộ 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.
devicestrNoneChỉ đị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.
dnnboolFalseNếu True, sử dụng module DNN của OpenCV thay vì ONNX Runtime để suy luận model ONNX.
datastrNoneĐườ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.
batchint1Chỉ đị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_detint300Số 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_strideint1Bướ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_bufferboolFalseXá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.
visualizeboolFalseLư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.
augmentboolFalseBậ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_nmsboolFalseBậ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.
classeslist[int]NoneLọ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_masksboolFalseTrả 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.
embedlist[int]NoneChỉ đị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.
projectstrNoneTên thư mục dự án nơi lưu đầu ra dự đoán nếu bật save.
namestrNoneTê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.
streamboolFalseCho 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.
verboseboolTrueĐ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.
compilebool hoặc strFalseBậ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_lastboolNoneSử 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.
nmsbool, không bắt buộcNoneMặ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ểuMặc địnhMô tả
showboolFalseNế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ử.
saveboolFalse or TrueBậ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_framesboolFalseKhi 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_txtboolFalseLư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_confboolFalseĐư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_cropboolFalseLư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_labelsboolTrueHiể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_confboolTrueHiể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_boxesboolTrueVẽ 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_widthint or NoneNoneChỉ đị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.

Hướng dẫn Predict

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ểuMặc địnhMô tả
datastrNoneChỉ đị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).
imgszint640Xá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.
batchint16Đặ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_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ô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.
conffloat0.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ớ.
ioufloat0.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_detint300Giớ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ị đó.
quantizeint hoặc strNoneĐộ 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.
devicestrNoneChỉ đị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.
dnnboolFalseNế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.
plotsboolTrueKhi đượ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.
classeslist[int]NoneChỉ đị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á.
rectboolTrueNế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.
splitstr'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.
fractionfloat, int hoặc list1.0Tậ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.
projectstrNoneTê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.
namestrNoneTê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.
verboseboolTrueNế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_txtboolFalseNế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_confboolFalseNế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.
workersint8Số 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.
augmentboolFalseBậ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_nmsboolFalseBậ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_clsboolFalseCoi 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.
visualizeboolFalseTrự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_labelsboolTrueHiể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_confboolTrueHiể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.
compilebool hoặc strFalseBậ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_lastboolNoneSử 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.
nmsbool, không bắt buộcNoneMặ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.

Hướng dẫn Val

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ểuMặc địnhMô tả
formatstr'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.
namestrNoneTê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.
imgszint hoặc tuple640Kí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.
optimizeboolFalseBậ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.
quantizeint hoặc strNoneĐộ 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).
dynamicboolFalseCho 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.
simplifyboolTrueĐơ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.
opsetintNoneChỉ đị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.
workspacefloat hoặc NoneNoneĐặ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ị.
nmsbool, không bắt buộcNoneNone 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.
conffloatNoneNgưỡ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.
ioufloat0.7Ngưỡ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_detint300Số 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_nmsboolFalseBậ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.
batchint1Chỉ đị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.
devicestrNoneChỉ đị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.
verboseboolFalseTă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.
datastrNoneĐườ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.
splitstr'val'Phần chia dataset ('train', 'val' hoặc 'test') dùng để tạo dataloader calibration lượng tử hóa INT8 từ data.
fractionfloat, int hoặc list1.0Tậ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.

Hướng dẫn Export

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ểuMặc địnhMô tả
modelstrNoneĐường dẫn đến tệp model Ultralytics YOLO.
regionlist hoặc dictNoneCá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_inboolTrueFlag điều khiển việc hiển thị số lượt đi vào trên luồng video.
show_outboolTrueFlag điều khiển việc hiển thị số lượt đi ra trên luồng video.
analytics_typestr'line'Loại biểu đồ, tức là line, bar, area hoặc pie.
colormapintcv2.COLORMAP_DEEPGREENBảng màu dùng cho heatmap.
line_widthint2Độ dày đường viền của box, keypoint và số đếm mà giải pháp vẽ.
verboseboolTrueBậ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_filestrNoneĐường dẫn đến tệp JSON chứa toàn bộ dữ liệu tọa độ chỗ đỗ xe.
up_anglefloat145.0Ngưỡng góc cho tư thế 'lên'.
kptslist[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_anglefloat90.0Ngưỡng góc cho tư thế 'xuống'.
blur_ratiofloat0.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_dirstr'cropped-detections'Tên thư mục dùng để lưu các đối tượng phát hiện đã cắt.
recordsint5Tổ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_pointtuple[int, int](20, 20)Điểm mà VisionEye Solution sẽ theo dõi đối tượng và vẽ đường đi.
sourcestrNoneĐườ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.
figsizetuple[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.
fpsfloat30.0Số khung hình mỗi giây được dùng để tính tốc độ.
max_histint5Số đ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_pixelfloat0.05Hệ số tỷ lệ dùng để chuyển đổi khoảng cách pixel sang đơn vị thực tế.
max_speedint120Tố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.
datastr'images'Đường dẫn đến thư mục ảnh dùng để tìm kiếm độ tương đồng.
imgszint640Kích thước ảnh đầu vào dùng cho quá trình inference của model.

Hướng dẫn về Solutions

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ểuMặc địnhCác tác vụ được hỗ trợPhạm viMô tả
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.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_sfloat0.7detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Thay đổ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_vfloat0.4detect, segment, semantic, depth, classify, pose, obb0.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.
degreesfloat0detect, segment, semantic, depth, pose, obb0.0 - 180Xoay 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.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Dị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.
scalefloat | tuple0.5detect, segment, semantic, depth, classify, pose, obb0 - 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.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Biế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.
perspectivefloat0detect, segment, semantic, depth, pose, obb0.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.
flipudfloat0detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Lậ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.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Lậ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.
bgrfloat0detect, segment, semantic, depth, pose, obb0.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.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Kế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.
mixupfloat0detect, segment, semantic, pose, obb0.0 - 1.0Trộ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.
cutmixfloat0detect, segment, semantic, pose, obb0.0 - 1.0Kế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_pastefloat0segment, semantic, obb0.0 - 1.0Tỷ 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_modestrflipsegment, 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_augmentstrrandaugmentclassify-Á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.
erasingfloat0.4classify0.0 - 1.0Xó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.
augmentationslistNonedetect, 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 địnhMô tả
projectNoneChỉ đị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.
nameNoneĐặ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_okFalseXá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.
plotsTrueKiể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.
saveTrueCho 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 địnhMô tả
cfgNoneĐườ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.

  • Learning rate (lr0) rất quan trọng; hãy bắt đầu với 0.01 cho SGD hoặc 0.001 cho optimizer Adam, đồng thời đặt tường minh optimizer vì auto mặc định bỏ qua lr0. 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.

  • 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.

Bình luận