Ultralytics YOLO27:

Cấu hình#

Các thiết lập và siêu tham số YOLO đóng vai trò quan trọng đối với hiệu năng, tốc độ và độ chính xác của model. Các 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à dự đoán.



Watch: Mastering Ultralytics YOLO: Configuration

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.

Task#

Các model Ultralytics YOLO có thể thực hiện nhiều task thị giác máy tính, bao gồm:

  • Detect: Phát hiện đối tượng xác định và định vị các đối tượng trong ảnh hoặc video.
  • Segment: 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 class khác nhau.
  • Semantic segmentation (semantic): Phân đoạn ngữ nghĩa gán nhãn class cho từng pixel trong ảnh để hiểu cảnh ở cấp độ dày đặc.
  • Depth (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.
  • Classify: Phân loại ảnh dự đoán nhãn class của ảnh đầu vào.
  • Pose: Ước tính pose xác định các đối tượng và ước tính keypoint của chúng trong ảnh hoặc video.
  • OBB: Bounding box định hướng sử dụng các bounding box xoay, phù hợp với ảnh vệ tinh hoặc ảnh y tế.
Đối sốMặc địnhMô tả
task'detect'Chỉ định task 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 tính độ sâu đơn ảnh, classify cho phân loại, pose cho ước tính pose và obb cho bounding box định hướng. Mỗi task được thiết kế cho các đầu ra và bài toán cụ thể trong phân tích ảnh và video.

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

Mode#

Các model Ultralytics YOLO hoạt động ở nhiều mode khác nhau, mỗi mode đượ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: Validation một model YOLO đã được huấn luyện.
  • Predict: Sử dụng model YOLO đã huấn luyện để dự đoán trên ả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: Benchmark 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 mode hoạt động của model YOLO: train để huấn luyện model, val để validation, predict để inference, export để chuyển đổi sang các định dạng triển khai, track để theo dõi đối tượng và benchmark để đánh giá hiệu năng. Mỗi mode 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 các 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 bao gồm batch size, learning rate, momentum và weight decay. Lựa 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, hãy 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à tham số thiết yếu để định nghĩa 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 huấn luyện và validation, tên class và số lượng class. Với bài toán phân loại, tham số này nhận 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 biểu thị một lượt duyệt hoàn chỉnh qua toàn bộ dataset. Việc đ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 thiết lập, tham số này ghi đè đối số epochs, cho phép tự động dừng huấn luyện sau khoảng thời gian được chỉ định. Hữu ích trong các kịch bản huấn luyện bị giới hạn thời gian.
patienceint100Số epoch cần chờ khi không có cải thiện trong các 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 không còn cải thiện.
batchint hoặc float16Batch size, với ba mode: đặt dưới dạng số nguyên (ví dụ: batch=16), mode tự động sử dụng 60% bộ nhớ GPU (batch=-1) hoặc mode tự động với phân số mức sử dụng được chỉ định (batch=0.70).
imgszint640Kích thước ảnh mục tiêu cho quá trình huấn luyện. Ảnh được resize thành hình vuông với các cạnh bằng giá trị được chỉ định (nếu rect=False), bảo toàn tỷ lệ khung hình đối với model YOLO nhưng không áp dụng cho RT-DETR. Ảnh hưởng đến độ chính xác của model và độ phức tạp tính toán.
saveboolTrueBật việc 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, được chỉ đị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.
cacheboolFalseBật caching ảnh dataset trong bộ nhớ (True/ram), trên ổ đĩa (disk) hoặc tắt caching (False). Tăng tốc huấn luyện bằng cách giảm I/O ổ đĩa, nhưng làm tăng mức sử dụng bộ nhớ.
deviceint hoặc str hoặc listNoneChỉ định thiết bị tính toán cho quá trình 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), tự động chọn GPU đang rảnh (device=-1) hoặc nhiều GPU đang rảnh (device=[-1,-1]).
workersint8Số luồng worker để tải dữ liệu (trên mỗi RANK nếu huấn luyện Multi-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ác thiết lập multi-GPU.
projectstrNoneTên thư mục project nơi lưu các đầu ra 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ượt chạy huấn luyện. Được dùng để tạo thư mục con trong thư mục project, nơi lưu log và đầu ra huấn luyện.
exist_okboolFalseNếu là True, cho phép ghi đè thư mục project/name hiện có. Hữu ích cho việc thử nghiệm lặp lại mà không cần xóa thủ công các đầu ra trước đó.
save_dirstrNoneChỉ định chính xác thư mục nơi lưu đầu ra của lượt chạy, ghi đè tổ hợp project/name. Đường dẫn được sử dụng nguyên trạng mà không tự động tăng số, vì vậy các lượt chạy liên tiếp sẽ dùng lại cùng một 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 vào model mới tại những vị trí có tên class trùng khớp, để các class giao nhau giữ lại bias đã học và cả trọng số khi độ rộng của head không thay đổi. Áp dụng bất kể số lượng class khác nhau hay giống nhau nhưng có thứ tự class khác.
optimizerstr'auto'Lựa chọn optimizer cho quá trình huấn luyện. Các tùy chọn bao gồm SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp hoặc auto để chọn AdamW hoặc MuSGD dựa trên số vòng lặp huấn luyện. Ảnh hưởng đến tốc độ hội tụ và độ ổn định.
seedint0Thiết lập random seed cho quá trình huấn luyện, đảm bảo khả năng tái lập kết quả giữa các lượt chạy với cùng cấu hình.
deterministicboolTrueBuộc sử dụng các thuật toán deterministic, đả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ế các thuật toán non-deterministic.
verboseboolTrueBật đầu ra chi tiết trong quá trình huấn luyện, hiển thị progress bar, metric theo từng epoch và thông tin huấn luyện bổ sung trong console.
single_clsboolFalseXem tất cả class trong dataset multi-class là một class duy nhất trong quá trình huấn luyện. Hữu ích cho các task 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 class dùng để huấn luyện. Hữu ích để lọc bỏ và chỉ tập trung vào một số class nhất định trong quá trình huấn luyện.
rectboolFalseBật chiến lược padding tối thiểu—các ảnh trong một batch được padding tối thiểu để đạt kích thước chung, 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 có thể ảnh hưởng đến độ chính xác của model.
multi_scalefloat0.0Thay đổi ngẫu nhiên imgsz trong mỗi batch theo +/- 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 tắt huấn luyện multi-scale.
cos_lrboolFalseSử dụng scheduler learning rate cosine, điều chỉnh learning rate theo đường cong cosine qua các epoch. Giúp quản lý learning rate để đạt hội tụ tốt hơn.
close_mosaicint10Tắt data augmentation mosaic trong N epoch cuối để ổn định quá trình huấn luyện trước khi hoàn tất. Đặ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, cho phép tiếp tục huấn luyện liền mạch.
ampbool hoặc strTrueThiết lập độ 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Được đặt thành 8 (hoặc "int8") cho quá trình huấn luyện nhận biết lượng tử hóa (QAT) INT8, quá trình này tinh chỉnh với lượng tử hóa giả trong vòng lặp để trọng số chịu được việc xuất INT8. Xem Quantization-Aware Training.
fractionfloat, int hoặc list1.0Subset dataset dưới dạng tỷ lệ/số lượng hoặc danh sách [train, val, test]. 1 có nghĩa là toàn bộ split, các số nguyên lớn hơn 1 là số lượng ảnh, và chỉ mục test tùy chọn mới chấp nhận 0/0.0 với ý nghĩa không có dữ liệu. Các danh sách gồm hai phần tử vẫn giữ toàn bộ test.
profileboolFalseBật profiling tốc độ ONNX và TensorRT trong quá trình huấn luyện, hữu ích để tối ưu hóa 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 index hoặc tên module (23.cv2, không có model. ở đầu), làm giảm số lượng tham số có thể huấn luyện. Hữu ích cho fine-tuning hoặc transfer learning.
lr0float0.01Learning rate ban đầu (tức là SGD=1E-2, Adam=1E-3). Việc điều chỉnh giá trị này rất quan trọng đối với quá trình tối ưu hóa, ảnh hưởng đến tốc độ cập nhật trọng số model.
lrffloat0.01Learning rate cuối cùng dưới dạng phần của learning rate ban đầu = (lr0 * lrf), được sử dụng kết hợp với 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 việc đưa các gradient trước đó vào lần cập nhật hiện tại.
weight_decayfloat0.0005Hạng tử regularization L2, phạt các trọng số lớn để ngăn overfitting.
warmup_epochsfloat3.0Số epoch warmup learning rate, tăng dần learning rate 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, dần điều chỉnh đến momentum đã thiết lập 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 huấn luyện model ở các epoch đầu. Tự động đặt thành 0.0 theo optimizer='auto' mặc định, vì vậy hãy chỉ định rõ optimizer để sử dụng tham số này.
distill_modelstrNoneĐường dẫn đến checkpoint model teacher (ví dụ: yolo26x.pt) để knowledge distillation. Khi được thiết lập, model student được huấn luyện với một loss distillation bổ sung dưới sự hướng dẫn của teacher đã đóng băng.
disfloat6.0Trọng số của loss distillation được thêm vào các loss detection tiêu chuẩn. Giá trị cao hơn làm tăng ảnh hưởng của hướng dẫn feature từ teacher.
boxfloat7.5Trọng số của thành phần box loss trong hàm loss, ảnh hưởng đến mức độ tập trung vào việc dự đoán chính xác tọa độ bounding box.
clsfloat0.5Trọng số của classification loss trong tổng hàm loss, ảnh hưởng đến tầm quan trọng của việc dự đoán đúng class so với các thành phần khác.
cls_pwfloat0.0Lũy thừa dùng để gán trọng số class nhằm xử lý mất cân bằng class bằng tần suất class nghịch đảo. 0.0 tắt gán trọng số class, 1.0 áp dụng đầy đủ trọng số theo tần suất nghịch đảo. Các giá trị từ 0 đến 1 cung cấp mức gán trọng số một phần.
dflfloat1.5Trọng số của hạng tử hồi quy khoảng cách box: distribution focal loss (DFL) khi detection head sử dụng reg_max > 1, hoặc L1 loss trên khoảng cách box đã chuẩn hóa trong YOLO26 không có DFL (reg_max: 1).
posefloat12.0Trọng số của pose loss trong các model được huấn luyện cho ước tính pose, ảnh hưởng đến mức độ tập trung vào việc dự đoán chính xác keypoint pose.
kobjfloat1.0Trọng số của keypoint objectness loss trong các model ước tính pose, cân bằng độ tin cậy phát hiện với độ chính xác pose.
rlefloat1.0Trọng số của residual log-likelihood estimation loss trong các model ước tính pose, ảnh hưởng đến độ chính xác định vị keypoint.
anglefloat1.0Trọng số của angle loss trong các model obb, ảnh hưởng đến độ chính xác dự đoán góc của bounding box định hướng.
dlogfloat1.0Trọng số của loss scale-invariant logarithmic (SILog) trong các model ước tính độ sâu, là hạng tử chính chi phối độ chính xác độ sâu.
dgradfloat0.5Trọng số của gradient loss trong các model ước tính độ sâu, phạt lỗi tại các biên độ 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 vào phương sai của SILog loss trong các model ước tính độ sâu. 1.0 khiến loss hoàn toàn bất biến theo tỷ lệ, 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 các mask đối tượng thành một mask duy nhất khi huấn luyện hay giữ riêng cho từng đối tượng. Khi bị chồng lấn, mask nhỏ hơn sẽ được phủ lên trên mask lớn hơn trong quá trình gộp.
mask_ratioint4Tỷ lệ downsample 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.
dropoutfloat0.0Tỷ lệ dropout dùng để regularization trong các task phân loại, ngăn overfitting bằng cách ngẫu nhiên bỏ qua 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, tùy chọnNoneChọn phần đầu suy luận được sử dụng cho việc xác thực chu kỳ, lựa chọn điểm kiểm tra và dừng sớm. None hoặc True sử dụng một-nhiều với NMS; False sử dụng phần đầu không có NMS khi khả dụng. Cả hai phần đầu đều giữ lại tổn thất huấn luyện của chúng.
plotsboolTrueTạo và lưu các biểu đồ về metric training và validation, cũng như các ví dụ dự đoán, cung cấp thông tin trực quan về hiệu suất model và tiến trình học.
compilebool hoặc strFalseBật biên dịch graph PyTorch 2.x torch.compile với backend='inductor'. Chấp nhận True"default", False → tắt, hoặc một mode chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ chuyển về eager mode kèm cảnh báo.
channels_lastboolNoneSử dụng định dạng bộ nhớ channels_last (NHWC) cho các phép tích chập trong quá trình huấn luyện. None tự động bật tính năng này trên CUDA với PyTorch 1.11 trở lên, ngoại trừ trên Windows, nơi tính năng này cho tốc độ chậm hơn. False tắt tính năng này và True yêu cầu rõ ràng tính năng này. PyTorch 1.10 trở xuống, CPU và MPS vẫn giữ định dạng NCHW theo mặc định.
max_detint300Số lượng đối tượng phát hiện tối đa trên mỗi ảnh trong quá trình huấn luyện và xác thực. Đối với detect, segment, pose và OBB, giá trị mặc định là 300 sẽ tự động tăng lên bằng số lượng đối tượng được gán nhãn lớn nhất trong tập train/val chỉ khi số lượng đó vượt quá 300. Các giá trị khác được giữ nguyên; việc vượt quá giới hạn sẽ kích hoạt cảnh báo.
Lưu ý về cài đặt Batch size

Đối số batch cung cấp ba tùy chọn cấu hình:

  • Batch size cố định: Chỉ định số image trong mỗi batch bằng một số nguyên (ví dụ: batch=16).
  • Auto mode (60% bộ nhớ GPU): Sử dụng batch=-1 để tự động điều chỉnh mức sử dụng bộ nhớ CUDA lên khoảng 60%.
  • Auto mode với phân số mức sử dụng: Đặt một phân số (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 ra profile có thể sử dụng, AutoBatch sẽ raise một 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 huấn luyện

Cài đặt Predict#

Các cài đặt prediction cho model YOLO bao gồm hyperparameter và cấu hình ảnh hưởng đến hiệu suất, tốc độ và độ chính xác trong quá trình inference. Các cài đặt chính bao gồm ngưỡng confidence, ngưỡng Non-Maximum Suppression (NMS) và số lượng class. 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 prediction. Việc tinh chỉnh các cài đặt này là cần thiết để đạt hiệu suất tối ưu.

Các đối số inference:

Đối sốKiểuMặc địnhMô tả
sourcestr hoặc int hoặc NoneNoneChỉ định nguồn dữ liệu cho inference. Có thể là đường dẫn image, file video, thư mục, URL hoặc ID thiết bị cho luồng trực tiếp. Nếu bỏ qua, một cảnh báo sẽ được ghi log và model sẽ chuyển về các asset demo tích hợp sẵn (ultralytics/assets hoặc URL demo cho OBB). Hỗ trợ nhiều định dạng và nguồn khác nhau, cho phép ứng dụng linh hoạt trên các loại đầu vào khác nhau.
conffloat0.25Đặt ngưỡng confidence tối thiểu cho các detection. Các object đượ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 Intersection Over Union (IoU) cho Non-Maximum Suppression (NMS). Giá trị thấp hơn tạo ra ít detection hơn bằng cách loại bỏ các box chồng lấn, hữu ích để giảm các detection trùng lặp.
imgszint hoặc tuple640Đích letterbox. Một số nguyên tạo ra N×N hình vuông; một tuple tạo ra (height, width). Với rect=True, tensor thực tế có thể nhỏ hơn đích này do padding minimum-rectangle. Sử dụng rect=False cho kích thước cố định. Xem Fixed shape vs minimum rectangle.
rectboolTrueNếu True, sử dụng padding minimum-rectangle khi có thể (batch cùng shape và backend được hỗ trợ). Nếu False, luôn padding đến đầy đủ imgsz. Xem Fixed shape vs minimum rectangle.
quantizeint hoặc strNoneĐộ chính xác suy luận: 16/"fp16"32/"fp32"/chưa thiết lập chọn tính toán FP16 hoặc FP32 cho các model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác mà artifact và runtime của chúng chọn. Tại 16, OpenVINO vẫn làm tròn FP16 đầu vào ở phía client và mở rộng lại thành FP32, mà không làm thay đổi độ chính xác mà runtime 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 bằng cách tải model đã export. Thay thế cờ half đã lỗi thời.
devicestrNoneChỉ định thiết bị cho inference (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 các thiết bị tính toán khác để chạy model.
dnnboolFalseNếu True, sử dụng module DNN của OpenCV thay cho ONNX Runtime để inference model ONNX.
datastrNoneĐường dẫn đến YAML của dataset (ví dụ: coco8.yaml), chỉ được đọc để lấy names và chỉ khi model đã load không có tên class riêng: chẳng hạn export của bên thứ ba hoặc export Ultralytics bị tách khỏi metadata đi kèm. Nếu không, model như vậy sẽ báo cáo class0, class1 và tiếp tục như vậy.
batchint1Chỉ định batch size cho inference (chỉ hoạt động khi source là thư mục, file video hoặc file .txt). Batch size lớn hơn có thể cung cấp throughput cao hơn, rút ngắn tổng thời gian cần thiết cho inference.
max_detint300Số detection tối đa được phép trên mỗi image. Giới hạn tổng số object mà model có thể phát hiện trong một lần inference, ngăn output quá mức trong các cảnh dày đặc.
vid_strideint1Frame stride cho input video. Cho phép bỏ qua các frame trong video để tăng tốc xử lý, đánh đổi bằng độ phân giải theo thời gian. Giá trị 1 xử lý mọi frame; các giá trị cao hơn sẽ bỏ qua frame.
stream_bufferboolFalseXác định có xếp hàng các frame đến trong video stream hay không. Nếu False, các frame cũ sẽ bị loại bỏ để tiếp nhận frame mới (tối ưu cho ứng dụng real-time). Nếu True, các frame mới được xếp vào buffer, đảm bảo không bỏ qua frame nào nhưng sẽ gây latency nếu FPS inference thấp hơn FPS của stream.
visualizeboolFalseLưu heatmap kích hoạt class cạnh mỗi prediction, cho biết pixel nào làm tăng score của class được dự đoán. Tuân theo confclasses, vì vậy classes=[0] chỉ ánh xạ class đó. Chỉ khả dụng cho model PyTorch của Ultralytics.
augmentboolFalseBật test-time augmentation (TTA) cho prediction, có khả năng cải thiện độ robust của detection nhưng làm giảm tốc độ inference. Chỉ khả dụng cho model PyTorch của Ultralytics.
agnostic_nmsboolFalseBật Non-Maximum Suppression (NMS) không phân biệt lớp, giúp loại bỏ các hộp chồng lấp có điểm số thấp hơn trên các lớp khác nhau thay vì chỉ trong cùng một lớp. Hữu ích trong các kịch bản phát hiện đa lớp nơi hiện tượng chồng lấp lớp là phổ biến. Với suy luận không có NMS (nms=False trên YOLO26 hoặc YOLOv10), điều này chỉ ngăn cản cùng một phát hiện xuất hiện với nhiều nhãn lớp (bản sao IoU=1.0) chứ không thực hiện việc loại bỏ dựa trên ngưỡng IoU giữa các hộp riêng biệt.
classeslist[int]NoneLọc prediction theo một tập ID class. Chỉ các detection thuộc những class được chỉ định mới được trả về. Hữu ích khi tập trung vào các object liên quan trong tác vụ detection đa class.
retina_masksboolFalseTrả về mask segmentation độ phân giải cao. Nếu được bật, các mask trả về (masks.data) sẽ khớp với kích thước image gốc. Nếu bị tắt, chúng có kích thước image được sử dụng trong inference.
embedlist[int]NoneChỉ định các layer cần dùng để trích xuất vector đặc trưng hoặc embedding. Sử 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ụ downstream như clustering hoặc tìm kiếm tương đồng. Chỉ khả dụng cho model PyTorch của Ultralytics.
projectstrNoneTên thư mục project nơi output prediction được lưu nếu save được bật.
namestrNoneTên của prediction run. Được sử dụng để tạo thư mục con trong thư mục project, nơi lưu output prediction nếu save được bật.
streamboolFalseBật xử lý tiết kiệm bộ nhớ cho video dài hoặc số lượng lớn image bằng cách trả về một generator của các object Results thay vì load tất cả frame vào bộ nhớ cùng lúc.
verboseboolTrueKiểm soát việc hiển thị log inference chi tiết trong terminal, cung cấp phản hồi real-time về quá trình prediction.
compilebool hoặc strFalseBật biên dịch graph PyTorch 2.x torch.compile với backend='inductor'. Chấp nhận True"default", False → tắt, hoặc một mode chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ chuyển về eager mode kèm cảnh báo.
channels_lastboolNoneSử dụng định dạng bộ nhớ channels_last (NHWC) cho inference PyTorch native. None tự động bật trên CPU x86 Linux và Windows có oneDNN với PyTorch 1.13 trở lên, False tắt, còn True yêu cầu bật 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 vẫn không thay đổi.
nmsbool, tùy chọnNoneChạy suy luận một-nhiều với NMS theo mặc định (None hoặc True). Đặt False để sử dụng phần đầu một-một không có NMS khi khả dụng. Xem hướng dẫn Phát hiện Đầu-cuối để biết chi tiết.

Các đối số visualization:

Đối sốKiểuMặc địnhMô tả
showboolFalseNếu True, hiển thị image hoặc video đã được annotate 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 development hoặc testing.
saveboolFalse or TrueBật lưu image hoặc video đã được annotate vào file. Hữu ích cho documentation, phân tích thêm hoặc chia sẻ kết quả. Mặc định là True khi sử dụng CLI và False khi sử dụng trong Python.
save_framesboolFalseKhi xử lý video, lưu từng frame riêng lẻ dưới dạng image. Hữu ích để trích xuất các frame cụ thể hoặc phân tích chi tiết từng frame.
save_txtboolFalseLưu kết quả detection vào file text theo định dạng [class] [x_center] [y_center] [width] [height] [confidence]. Hữu ích để tích hợp với các công cụ phân tích khác.
save_confboolFalseBao gồm score confidence trong các file text đã lưu. Tăng mức độ chi tiết sẵn có cho post-processing và phân tích.
save_cropboolFalseLưu các image đã crop của detection. Hữu ích cho augmentation dataset, phân tích hoặc tạo dataset tập trung vào các object cụ thể.
show_labelsboolTrueHiển thị label cho mỗi detection trong output trực quan. Cung cấp nhận biết tức thì về các object được phát hiện.
show_confboolTrueHiển thị score confidence cho mỗi detection bên cạnh label. Cung cấp thông tin về mức độ chắc chắn của model đối với từng detection.
show_boxesboolTrueVẽ bounding box xung quanh các object được phát hiện. Đây là thành phần thiết yếu để nhận diện trực quan và xác định vị trí object trong image 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ẽ được tự động điều chỉnh dựa trên kích thước image. Cung cấp khả năng tùy chỉnh trực quan để tăng độ rõ ràng.

Hướng dẫn dự đoán

Cài đặt Validation#

Các cài đặt validation cho model YOLO bao gồm hyperparameter và cấu hình để đánh giá hiệu suất trên validation dataset. Những cài đặt này ảnh hưởng đến hiệu suất, tốc độ và độ chính xác. Các cài đặt phổ biến gồm batch size, tần suất validation và metric hiệu suất. Kích thước, thành phần của validation dataset 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 đó phải bao gồm đường dẫn đến dữ liệu validation. Với classification, thay vào đó sử dụng 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 image đầu vào. Tất cả image được resize về kích thước này trước khi xử lý. Kích thước lớn hơn có thể cải thiện độ chính xác đối với object nhỏ nhưng làm tăng thời gian tính toán.
batchint16Đặt số image trong mỗi batch. Giá trị cao hơn tận dụng bộ nhớ GPU hiệu quả hơn nhưng yêu cầu nhiều VRAM hơn. Điều chỉnh dựa trên tài nguyên phần cứng sẵn có.
save_jsonboolFalseNếu True, lưu kết quả vào một tệp JSON để phân tích thêm, tích hợp với các công cụ khác hoặc gửi lên các máy chủ đánh giá như COCO. Trên các tập dữ liệu phát hiện, tính năng này cũng đánh giá các dự đoán bằng faster-coco-eval và báo cáo mAP cho đối tượng nhỏ, trung bình và lớn, được ghi lại trong quá trình huấn luyện dưới dạng metrics/mAP_small(B), metrics/mAP_medium(B)metrics/mAP_large(B) trong results.csv.
conffloat0.001Đặt ngưỡng confidence tối thiểu cho các detection. Giá trị thấp hơn làm tăng recall nhưng có thể tạo thêm false positive. Các đường cong precision-recall mặc định sử dụng 0.001; confusion matrix của detection sử dụng giá trị conf rõ ràng hoặc 0.25 khi giá trị này bị bỏ qua. Precision và recall tổng quan sử dụng confidence max-F1, vì vậy 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. Kiểm soát việc loại bỏ detection trùng lặp.
max_detint300Giới hạn số lượng đối tượng phát hiện tối đa trên mỗi ảnh. Đối với detect, segment, pose và OBB, nếu để mặc định là 300, giá trị này sẽ được nâng lên bằng số lượng đối tượng được gán nhãn lớn nhất trong tập xác thực khi một ảnh vượt quá giới hạn đó, kèm theo cảnh báo; bất kỳ giá trị nào khác đều được giữ nguyên, kèm theo cảnh báo rằng chỉ số recall có thể bị giới hạn khi một ảnh vượt quá ngưỡng đó.
quantizeint hoặc strNoneĐộ chính xác xác thực: 16/"fp16"32/"fp32"/chưa thiết lập chọn tính toán FP16 hoặc FP32 cho các model PyTorch và TorchScript; các định dạng khác tính toán ở độ chính xác mà artifact và runtime của chúng chọn. Tại 16, OpenVINO vẫn làm tròn FP16 đầu vào ở phía client và mở rộng lại thành FP32, mà không làm thay đổi độ chính xác mà runtime 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 bằng cách xác thực model đã export. Thay thế cờ half đã lỗi thời.
devicestrNoneChỉ định thiết bị cho validation (cpu, cuda:0, npu, npu:0, v.v.). Khi là None, tự động chọn thiết bị tốt nhất hiện có. 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 cho inference model ONNX, cung cấp một phương án thay thế cho các phương thức inference bằng PyTorch.
plotsboolTrueKhi được đặt thành True, tạo và lưu các biểu đồ prediction so với ground truth, confusion matrix và đường cong PR để đánh giá trực quan hiệu suất 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 inference dạng chữ nhật cho batching, giảm padding và có khả năng tăng tốc độ cũng như hiệu quả bằng cách xử lý image theo aspect ratio gốc. Bị bỏ qua đối với validation depth, vốn kéo giãn mọi image thành một hình vuông imgsz cố định thay vì padding.
splitstr'val'Xác định split của dataset được sử dụng cho validation (val, test hoặc train). Cho phép linh hoạt lựa chọn phân đoạn dữ liệu để đánh giá hiệu suất.
fractionfloat, int hoặc list1.0Tập con của tập dữ liệu đã xác thực. Với danh sách [train, val, test], mục khớp với split sẽ được áp dụng (1 = toàn bộ tập, các số nguyên lớn hơn 1 = số lượng ảnh; các mục bị bỏ qua là toàn bộ). Một giá trị vô hướng chỉ áp dụng với split=train; khi đó valtest sử dụng toàn bộ tập dữ liệu.
projectstrNoneTên thư mục project nơi output validation được lưu. Giúp tổ chức kết quả từ các experiment hoặc model khác nhau.
namestrNoneTên của validation run. Được sử dụng để tạo thư mục con trong thư mục project, nơi lưu log và output 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 trình batch và thông tin debug bổ sung.
save_txtboolFalseNếu True, lưu kết quả detection vào các file text, mỗi image một file, hữu ích cho phân tích thêm, post-processing tùy chỉnh hoặc tích hợp với các hệ thống khác.
save_confboolFalseNếu True, bao gồm các giá trị confidence trong file text đã lưu khi save_txt được bật, cung cấp output chi tiết hơn cho việc phân tích và lọc.
workersint8Số worker thread dùng để load dữ liệu. Giá trị cao hơn có thể tăng tốc preprocessing dữ liệu nhưng có thể làm tăng mức sử dụng CPU. Đặt thành 0 sẽ sử dụng main thread, có thể ổn định hơn trong một số môi trường.
augmentboolFalseBật test-time augmentation (TTA) trong validation, có khả năng cải thiện độ chính xác detection nhưng làm giảm tốc độ inference bằng cách chạy inference trên các phiên bản đã biến đổi của input. Chỉ khả dụng cho model PyTorch của Ultralytics.
agnostic_nmsboolFalseBật Non-Maximum Suppression không phân biệt lớp, giúp loại bỏ các hộp chồng lấp có điểm số thấp hơn bất kể lớp được dự đoán của chúng là gì. Hữu ích cho các ứng dụng tập trung vào thực thể. Với suy luận không có NMS (nms=False trên YOLO26 hoặc YOLOv10), điều này chỉ ngăn cản cùng một phát hiện xuất hiện với nhiều nhãn lớp (bản sao IoU=1.0) chứ không thực hiện việc loại bỏ dựa trên ngưỡng IoU giữa các hộp riêng biệt.
single_clsboolFalseXem tất cả class như một class duy nhất trong quá trình validation. Hữu ích để đánh giá hiệu suất model trên các tác vụ detection nhị phân hoặc khi sự khác biệt giữa các class không quan trọng.
visualizeboolFalseTrực quan hóa ground truth, true positive, false positive và false negative cho từng image. Hữu ích cho debugging và diễn giải model.
show_labelsboolTrueHiển thị label class trong visualization validation khi visualize=True. Đặt thành False để có chế độ xem gọn hơn về các kết quả khớp và lỗi.
show_confboolTrueHiển thị score confidence trong visualization validation khi visualize=True. Đặt thành False để có chế độ xem gọn hơn về các kết quả khớp và lỗi.
compilebool hoặc strFalseBật biên dịch graph PyTorch 2.x torch.compile với backend='inductor'. Chấp nhận True"default", False → tắt, hoặc một mode chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ chuyển về eager mode kèm cảnh báo.
channels_lastboolNoneSử dụng định dạng bộ nhớ channels_last (NHWC) cho validation PyTorch native. None tự động bật trên CPU x86 Linux và Windows có oneDNN với PyTorch 1.13 trở lên, False tắt, còn True yêu cầu bật 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 vẫn không thay đổi; validation trong quá trình training vẫn giữ layout của model training.
nmsbool, tùy chọnNoneChạy suy luận một-nhiều với NMS theo mặc định (None hoặc True). Đặt False để sử dụng phần đầu một-một không có NMS khi khả dụng. Xem hướng dẫn Phát hiện Đầu-cuối để biết chi tiết.

Việc tinh chỉnh và thử nghiệm cẩn thận là yếu tố then chốt để đảm bảo hiệu suất tối ưu cũng như phát hiện và ngăn chặn overfitting.

Hướng dẫn đánh giá

Cài đặt Export#

Các cài đặt export cho model YOLO bao gồm cấu hình để lưu hoặc export model nhằm sử dụng trong những môi trường khác nhau. Những cài đặt này ảnh hưởng đến hiệu suất, kích thước và khả năng tương thích. Các cài đặt chính bao gồm định dạng file đã 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 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 đã export, chẳng hạn như 'onnx', 'torchscript', 'engine' (TensorRT) hoặc cá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 deployment khác nhau.
namestrNoneTên đích phần cứng cho các định dạng yêu cầu tên này: 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') hoặc target Qualcomm QNN HTP (mặc định là '73'). Khác với cặp đặt tên run project/name được các mode khác sử dụng.
imgszint hoặc tuple640Kích thước image mong muốn cho input của model. Có thể là số nguyên đối với image vuông (ví dụ: 640 cho 640×640) hoặc tuple (height, width) cho các kích thước cụ thể. Khi không được truyền vào, export sẽ sử dụng lại kích thước training được ghi trong checkpoint đã load: 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 fine-tune ghi lại giá trị imgsz mà model được training. Model được xây dựng từ YAML không có kích thước training được ghi lại và sử dụng 640.
kerasboolFalseBật export sang định dạng Keras cho TensorFlow SavedModel, cung cấp khả năng tương thích với TensorFlow serving và các API.
optimizeboolFalseBật tối ưu hóa compiler cao hơn cho DEEPX, giảm latency inference nhưng làm tăng thời gian compilation.
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 inference trên phần cứng được hỗ trợ) hoặc 8 (INT8/PTQ, nén model thêm với mức tổn thất accuracy tối thiểu, chủ yếu dành cho edge devices; cần hiệu chuẩn data/fraction); 32/không thiết lập là FP32. Checkpoint được train bằng quantize=8 luôn xuất INT8: onnxengine xuất từ các khoảng mà checkpoint đó mang theo mà không cần hiệu chuẩn, các định dạng hoặc độ chính xác khác sẽ bị từ chối. Các định dạng export hỗ trợ độ chính xác trọng số/activation hỗn hợp cũng chấp nhận ký hiệu 'w8a8'/'w16a16'/'w8a16'/'w8a32'. Thay thế các cờ half/int8 đã bị deprecated (half=True16, int8=True8, vẫn được chấp nhận kèm theo cảnh báo deprecation). Chỉ cho phép các độ chính xác được định dạng mục tiêu hỗ trợ (xem bên dưới).
dynamicboolFalseCho phép kích thước input động cho các export TorchScript, ONNX, OpenVINO, TensorRT và CoreML, tăng tính linh hoạt khi xử lý các kích thước image khác nhau.
simplifyboolTrueĐơn giản hóa graph ONNX trung gian bằng onnxslim đối với các export xây dựng graph này (xem Export Formats), có khả năng cải thiện hiệu suất và khả năng tương thích với các inference engine.
opsetintNoneChỉ định phiên bản ONNX opset cho các export xây dựng graph ONNX (xem Export Formats), nhằm tương thích với các parser và runtime ONNX khác nhau. Nếu không được đặt, sử dụng phiên bản mới nhất được hỗ trợ.
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 giữa mức sử dụng bộ nhớ và hiệu suất. Sử dụng None để TensorRT tự động cấp phát tối đa theo giới hạn của thiết bị.
nmsbool, tùy chọnNoneNone xuất các dự đoán thô một-nhiều cho NMS bên ngoài; True nhúng NMS nơi được hỗ trợ; False chọn phần đầu không có NMS khi khả dụng. NMS nhúng của CoreML hỗ trợ phát hiện, phân đoạn và tư thế với các hình dạng tĩnh. Xem hướng dẫn Phát hiện Đầu-cuối.
conffloatNoneNgưỡng confidence được sử dụng ở mọi nơi NMS tại thời điểm export được tạo: các export nms=True; các export detect không end-to-end của Hailo; và các export detect, pose và segment của IMX, vốn buộc sử dụng nms=True nội bộ. Mặc định là 0.25 khi không được đặt.
ioufloat0.7Ngưỡng IoU được sử dụng ở mọi nơi NMS tại thời điểm export được tạo: các export nms=True; các export detect không end-to-end của Hailo; và các export detect, pose và segment của IMX, vốn buộc sử dụng nms=True nội bộ.
max_detint300Số lượng phát hiện tối đa được giữ lại trong đầu ra của model đã xuất. Áp dụng cho các bản xuất nms=True trên mọi định dạng ngoại trừ phát hiện CoreML (vốn có pipeline NMS tự nhiên không giới hạn số lượng phát hiện), cùng với các bản xuất phát hiện end-to-end không dùng NMS (YOLO26, YOLOv10, được giới hạn ở số lượng anchor khả dụng) và các bản xuất detect, pose, segment của IMX.
agnostic_nmsboolFalseBật NMS không phụ thuộc class ở mọi nơi NMS tại thời điểm export được tạo thông qua pipeline nms=True tiêu chuẩn, bao gồm cả stage NMS riêng của CoreML, loại bỏ các box chồng lấn có score thấp hơn giữa các class khác nhau thay vì chỉ trong cùng một class. Không được áp dụng bởi cấu hình NMS riêng do Hailo hoặc IMX tạo ra; các cấu hình này không có tùy chọn không phụ thuộc class và vẫn nhận biết class bất kể flag này. Cũng được tích hợp sẵn trong các export end-to-end không cần NMS (YOLO26, YOLOv10), trong đó chỉ ngăn cùng một detection xuất hiện dưới nhiều nhãn class (các bản sao IoU=1.0), không thực hiện suppression theo ngưỡng IoU giữa các box riêng biệt.
batchint1Chỉ định kích thước batch khi inference của model xuất hoặc số lượng ảnh tối đa mà model đã xuất sẽ xử lý đồng thời ở chế độ predict. Đối với bản xuất Edge TPU, giá trị này tự động được đặt thành 1.
devicestrNoneChỉ định thiết bị dùng để xuất: GPU (device=0), CPU (device=cpu), MPS cho Apple silicon (device=mps), Huawei Ascend NPU (device=npu hoặc device=npu:0), hoặc DLA cho NVIDIA Jetson (device=dla:0 hoặc device=dla:1). Bản xuất TensorRT tự động sử dụng GPU, nhưng TensorRT 11.0 không hỗ trợ DLA.
verboseboolFalseNâng mức log của TensorRT builder lên mức VERBOSE trong quá trình xuất format='engine'. Các format xuất khác sẽ bỏ qua tùy chọn này.
datastrNoneĐường dẫn đến YAML của dataset, rất cần thiết cho việc hiệu chuẩn lượng tử hóa INT8; tác vụ classification thay vào đó nhận thư mục dataset hoặc tên dataset tích hợp sẵn. Nếu không được chỉ định khi bật INT8, Ultralytics sẽ chọn một dataset hiệu chuẩn dành riêng cho tác vụ khi cần thiết, hoặc quay về dataset mặc định cho tác vụ của model. Checkpoint được train bằng quantize=8 mang theo các khoảng INT8 của riêng checkpoint đó và không cần dữ liệu hiệu chuẩn.
splitstr'val'Split của dataset ('train', 'val' hoặc 'test') được dùng để xây dựng dataloader calibration lượng tử hóa INT8 từ data.
fractionfloat, int hoặc list1.0Subset của dataset được dùng cho calibration INT8: một tỷ lệ, số lượng ảnh hoặc các giá trị [train, val, test]. 1 nghĩa là toàn bộ split, các số nguyên lớn hơn 1 là số lượng ảnh, và chỉ entry test tùy chọn mới chấp nhận 0/0.0 với ý nghĩa không có ảnh. Các list gồm hai phần tử sẽ giữ nguyên toàn bộ test.

Cấu hình hợp lý đảm bảo model đã xuất được tối ưu cho use case và hoạt động hiệu quả trong môi trường mục tiêu.

Hướng dẫn export

Cài đặt Solutions#

Các cài đặt cấu hình Ultralytics Solutions cung cấp sự linh hoạt để tùy chỉnh model cho những task 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 cho phép dễ dàng điều chỉnh để tạo ra kết quả chính xác, hữu ích và phù hợp với nhu cầu cụ thể.

Đối sốKiểuMặc địnhMô tả
modelstrNoneĐường dẫn đến file model Ultralytics YOLO.
regionlist hoặc dictNoneCác điểm xác định vùng quan tâm, có thể là một list các tuple (x, y) hoặc một dictionary ánh xạ tên vùng với list điểm cho nhiều vùng (chỉ dành cho RegionCounter). Khi None, các solution yêu cầu vùng sẽ sử dụng vùng mặc định được định nghĩa sẵn.
show_inboolTrueCờ điều khiển việc hiển thị số lượng vào trên luồng video.
show_outboolTrueCờ điều khiển việc hiển thị số lượng ra trên luồng video.
analytics_typestr'line'Loại biểu đồ, tức là line, bar, area hoặc pie.
colormapintcv2.COLORMAP_DEEPGREENColormap dùng cho heatmap.
line_widthint2Độ dày đường kẻ cho các box, keypoint và số lượng mà solution vẽ.
verboseboolTrueBật log theo từng frame của solution, gồm kích thước input, số lượng class và tốc độ xử lý. Riêng lệnh tracking luôn ở chế độ im lặng.
json_filestrNoneĐường dẫn đến file JSON chứa toàn bộ dữ liệu tọa độ bãi đỗ xe.
up_anglefloat145.0Ngưỡng góc cho tư thế 'lên'.
kptslist[int]'[6, 8, 10]'List gồm ba chỉ số keypoint được 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ể, chẳng hạn như vai, khuỷu tay và cổ tay, cho các bài tập như chống đẩy, kéo xà, squat và tập cơ bụng.
down_angleint90Ngưỡng góc cho tư thế 'xuống'.
blur_ratiofloat0.5Điều chỉnh phần trăm cường độ làm mờ, với các giá trị trong khoảng 0.1 - 1.0.
crop_dirstr'cropped-detections'Tên thư mục dùng để lưu các detection đã crop.
recordsint5Tổng số detection cần đạt để kích hoạt email cùng hệ thống cảnh báo an ninh.
vision_pointtuple[int, int](20, 20)Điểm mà VisionEye Solution sẽ dùng để tracking đối tượng và vẽ path.
sourcestrNoneĐường dẫn đến nguồn input (video, RTSP, v.v.). Chỉ có thể sử dụng với giao diện dòng lệnh Solutions (CLI).
figsizetuple[float, float](12.8, 7.2)Kích thước figure cho các biểu đồ phân tích như heatmap hoặc graph.
fpsfloat30.0Số frame mỗi giây được dùng để tính tốc độ.
max_histint5Số điểm lịch sử tối đa cần tracking trên mỗi đối tượng để tính tốc độ/hướng.
meter_per_pixelfloat0.05Hệ số scale dùng để chuyển đổi khoảng cách pixel sang đơn vị thực tế.
max_speedint120Giới hạn tốc độ tối đa trong các lớp phủ trực quan (được dùng trong alert).
datastr'images'Đường dẫn đến thư mục ảnh được dùng cho tìm kiếm độ tương đồng.
imgszint640Kích thước ảnh input cho inference của model.

Hướng dẫn Solutions

Cài đặt Augmentation#

Các kỹ thuật data augmentation rất cần thiết để cải thiện độ robust và performance của model YOLO bằng cách đưa thêm sự biến thiên vào training data, giúp model tổng quát hóa tốt hơn trên dữ liệu chưa từng thấy. Bảng dưới đây trình bày mục đích và tác động của từng đối số augmentation:

Đối sốKiểuMặc địnhCác Task được hỗ trợPhạm viMô tả
hsv_hfloat0.015detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Điều chỉnh hue của ảnh theo một phần của color wheel, tạo ra sự biến thiên màu sắc. Giúp model tổng quát hóa trong các điều kiện ánh sáng khác nhau. Đối 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 saturation của ảnh theo một tỷ lệ, ảnh hưởng đến cường độ màu. Hữu ích để mô phỏng các điều kiện môi trường khác nhau. Đối 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 value (độ 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 ánh sáng. Đối 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 số độ được chỉ định, cải thiện khả năng nhận diện đối tượng ở nhiều hướng khác nhau.
translatefloat0.1detect, segment, semantic, depth, pose, obb0.0 - 1.0Dịch ảnh theo chiều ngang và chiều dọc theo một phần 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 rõ (không dành cho classify)Scale ảnh theo hệ số gain, mô phỏng các đối tượng ở những khoảng cách khác nhau so với camera.
shearfloat0detect, segment, semantic, depth, pose, obb-180 - +180Shear ả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 perspective ngẫu nhiên cho ảnh, nâng cao khả năng nhận biết đố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 ảnh hưởng đến đặc điểm của đối tượng.
fliplrfloat0.5detect, segment, semantic, depth, classify, pose, obb0.0 - 1.0Lật ảnh từ trái sang phải theo xác suất được chỉ định, hữu ích cho việc học 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 các channel của ảnh từ RGB sang BGR theo xác suất được chỉ định, hữu ích để tăng độ robust trước việc sắp xếp channel không chính xác.
mosaicfloat1detect, segment, semantic, pose, obb0.0 - 1.0Kết hợp bốn ảnh training thành một, mô phỏng các cách bố cục cảnh và tương tác đối tượng khác nhau. Đặc biệt hiệu quả cho 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 của chúng để tạo thành một ảnh tổng hợp. Cải thiện khả năng tổng quát hóa của model bằng cách đưa vào nhiễu nhãn và sự biến thiên trực quan.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Kết hợp các phần của hai ảnh, tạo ra sự pha trộn từng phần trong khi vẫn duy trì các vùng riêng biệt. Cải thiện độ robust của model bằng cách tạo ra các tình huống bị che khuất.
copy_pastefloat0segment, obb0.0 - 1.0Tỷ lệ các đối tượng đủ điều kiện được dán; flip phản chiếu chúng trong ảnh, trong khi mixup cũng sử dụng giá trị này làm xác suất áp dụng giữa các ảnh.
copy_paste_modestrflipsegment, obb-Chỉ định chiến lược copy-paste cần sử dụng. Các tùy chọn gồm 'flip''mixup'.
auto_augmentstrrandaugmentclassify-Áp dụng policy augmentation được định nghĩa sẵn ('randaugment', 'autoaugment' hoặc 'augmix') để cải thiện performance của model thông qua sự đa dạng về hình ảnh.
erasingfloat0.4classify0.0 - 1.0Xóa ngẫu nhiên các vùng trong ảnh trong quá trình training để 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 cho data augmentation nâng cao (chỉ dành cho Python API). Nhận một list các object transform cho những nhu cầu augmentation 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à task. Thử nghiệm với các giá trị khác nhau có thể giúp tìm ra strategy augmentation tối ưu nhằm đạt performance tốt nhất cho model.

Hướng dẫn tăng cường dữ liệu

Cài đặt Logging, Checkpoint và Plotting#

Logging, checkpoint, plotting và quản lý file rất quan trọng khi training model YOLO:

  • Logging: Theo dõi tiến trình của model và chẩn đoán vấn đề bằng các library như TensorBoard hoặc ghi vào file.
  • Checkpoint: Lưu model theo các khoảng thời gian đều đặn để tiếp tục training hoặc thử nghiệm với các cấu hình khác nhau.
  • Plotting: Trực quan hóa performance và tiến trình training bằng các library như Matplotlib hoặc TensorBoard.
  • Quản lý file: Sắp xếp các file được tạo trong quá trình training, chẳng hạn như checkpoint, file log và plot, để dễ dàng 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 trình, đồng thời đơn giản hóa việc debug và tối ưu hóa.

Đối sốMặc địnhMô tả
projectNoneChỉ định thư mục gốc để lưu các lần training. 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.
nameNoneXác định tên experiment. Nếu không chỉ định, YOLO sẽ sử dụng tên mode và tăng dần tên này cho mỗi lần chạy (ví dụ: train, train-2) để tránh ghi đè.
exist_okFalseĐiều khiển việc ghi đè thư mục experiment hiện có. True cho phép ghi đè; False ngăn chặn việc này.
plotsTrueĐiều khiển việc tạo và lưu các plot training và validation. Đặt thành True để tạo các plot như đường cong loss, đường cong precision-recall và các prediction mẫu nhằm trực quan hóa performance.
saveTrueBật việc lưu checkpoint training và weight cuối cùng của model. Đặt thành True để lưu state của model định kỳ, cho phép tiếp tục training hoặc deploy model.

File cấu hình tùy chỉnh#

Load một YAML đã lưu để sử dụng lại toàn bộ tập đối số mà không cần truyền inline. Đối số cfg ghi đè các giá trị từ default.yaml, trong khi các đối số bổ sung được truyền kèm vẫn được ưu tiên.

Đối sốMặc địnhMô tả
cfgNoneĐường dẫn đến file YAML có các giá trị thay thế cho các entry default.yaml. Xem Ghi đè File cấu hình mặc định để tham khảo ví dụ CLI hoàn chỉnh.

FAQ#

  • Cải thiện performance bằng cách tinh chỉnh các hyperparameter như batch size, learning rate, momentum và weight decay. Điều chỉnh các cài đặt data augmentation, chọn optimizer phù hợp và sử dụng các kỹ thuật như early stopping hoặc mixed precision. Để biết chi tiết, xem Hướng dẫn Train.

  • Các hyperparameter chính ảnh hưởng đến độ chính xác gồm:

    • Batch Size (batch): Kích thước lớn hơn có thể giúp training ổn định nhưng cần nhiều memory hơn.
    • Learning Rate (lr0): Learning rate nhỏ hơn cho phép điều chỉnh tinh vi 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.
    • Image Size (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 Train.

  • Learning rate (lr0) rất quan trọng; hãy bắt đầu với 0.01 cho SGD hoặc 0.001 cho Adam optimizer. Theo dõi các metric và điều chỉnh khi cần. Sử dụng cosine learning rate scheduler (cos_lr) hoặc warmup (warmup_epochs, warmup_momentum). Chi tiết có trong Hướng dẫn Train.

  • Các cài đặt mặc định gồm:

    • Confidence Threshold (conf=0.25): Mức confidence tối thiểu cho các detection.
    • IoU Threshold (iou=0.7): Dùng cho Non-Maximum Suppression (NMS).
    • Image Size (imgsz=640): Resize các ảnh input.
    • Thiết bị (device=None): Chọn CPU, GPU, Apple MPS hoặc Huawei Ascend NPU (npu).

    Để xem tổng quan đầy đủ, hãy tham khảo Cài đặt dự đoánHướng dẫn dự đoán.

  • Huấn luyện độ chính xác hỗn hợp (amp=True) giúp giảm mức sử dụng bộ nhớ và tăng tốc quá trình huấn luyện bằng cách sử dụng FP16 và FP32. Phương pháp này đặc biệt hữu ích cho các GPU hiện đại, cho phép sử dụng các model lớn hơn và thực hiện 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