Cấu hình#
Các cài đặt và siêu tham số của YOLO đóng vai trò quan trọng đối với hiệu suất, tốc độ và độ chính xác của model. Các cài đặt này có thể ảnh hưởng đến hành vi của model ở nhiều giai đoạn khác nhau, bao gồm huấn luyện (training), xác thực (validation) và dự đoán (prediction).
Watch: Mastering Ultralytics YOLO: Configuration
Các lệnh của Ultralytics sử dụng cú pháp sau:
yolo TASK MODE ARGSTrong đó:
TASK(tùy chọn) là một trong các mục (detect, segment, semantic, depth, classify, pose, obb)MODE(bắt buộc) là một trong các mục (train, val, predict, export, track, benchmark)ARGS(tùy chọn) là các cặparg=valuegiống nhưimgsz=640để ghi đè các giá trị mặc định.
Các giá trị ARG mặc định được định nghĩa trên trang này và lấy từ tệp 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 khác nhau, bao gồm:
- Detect: Phát hiện đối tượng xác định và định vị các đối tượng trong một hình ảnh hoặc video.
- Segment: Phân đoạn thực thể chia một hình ảnh hoặc video thành các vùng tương ứng với các đối tượng hoặc lớp (class) 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 hình ảnh nhằm hiểu sâu về cảnh. - Độ sâu (
depth): Ước tính độ sâu đơn mắt dự đoán bản đồ độ sâu tính theo mét cho từng pixel từ một hình ảnh RGB duy nhất. - Classify: Phân loại hình ảnh dự đoán nhãn lớp của hình ảnh đầu vào.
- Pose: Ước tính tư thế xác định các đối tượng và ước tính các điểm mốc (keypoint) của chúng trong hình ảnh hoặc video.
- OBB: Hộp bao có định hướng sử dụng các hộp bao được xoay, phù hợp cho ảnh vệ tinh hoặc ảnh y tế.
| Đối số | Mặc định | Mô tả |
|---|---|---|
task | 'detect' | Chỉ định tác vụ YOLO: detect cho phát hiện đối tượng, segment cho phân đoạn thực thể, semantic cho phân đoạn ngữ nghĩa, depth cho ước tính độ sâu đơn mắt, classify cho phân loại, pose cho ước tính tư thế và obb cho hộp bao có định hướng. Mỗi tác vụ được thiết kế riêng cho các đầu ra và bài toán cụ thể trong phân tích hình ảnh và video. |
Các Chế độ (Modes)#
Các model Ultralytics YOLO hoạt động ở các 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 tập dữ liệu tùy chỉnh.
- Val: Kiểm thử (validate) một model YOLO đã huấn luyện.
- Predict: Sử dụng model YOLO đã huấn luyện để thực hiện dự đoán trên ảnh hoặc video mới.
- Export: Xuất model YOLO để triển khai.
- Track: Theo dõi các đối tượng trong 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 xuất YOLO (ONNX, TensorRT, v.v.).
| Đối số | Mặc định | Mô tả |
|---|---|---|
mode | 'train' | Chỉ định chế độ hoạt động của model YOLO: train để huấn luyện model, val để xác thực, predict để suy luận (inference), export để chuyển đổi sang định dạng triển khai, track để theo dõi đối tượng và benchmark để đánh giá hiệu suất. Mỗi chế độ hỗ trợ các giai đoạn khác nhau, từ phát triển đến triển khai. |
Cài đặt huấn luyện#
Các cài đặt 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 suất, tốc độ và độ chính xác của model. Các cài đặt chính bao gồm kích thước batch, tốc độ học, độ động lượng (momentum) và suy giảm trọng số (weight decay). Việc lựa chọn trình tối ưu hóa (optimizer), hàm mất mát và thành phần tập dữ liệu cũng ảnh hưởng đến quá trình huấn luyện. Tinh chỉnh và thử nghiệm là rất quan trọng để đạt hiệu suất tối ưu. Để biết thêm chi tiết, hãy xem hàm điểm đầu vào của Ultralytics.
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Chỉ định file model dùng để huấn luyện. Chấp nhận đường dẫn đến model được huấn luyện sẵn .pt hoặc file cấu hình .yaml. Rất cần thiết để xác định cấu trúc model hoặc khởi tạo trọng số. |
data | str | None | Đường dẫn đến file cấu hình tập dữ liệu (ví dụ: coco8.yaml). File này chứa các tham số dành riêng cho tập dữ liệu, bao gồm đường dẫn đến dữ liệu xác thực và dữ liệu huấn luyện, tên các lớp và số lượng lớp. |
epochs | int | 100 | Tổng số epoch huấn luyện. Mỗi epoch đại diện cho một lần duyệt qua toàn bộ tập dữ liệu. Điều chỉnh giá trị này có thể ảnh hưởng đến thời gian huấn luyện và hiệu suất của model. |
time | float | None | Thờ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 sẽ ghi đè đối số epochs, cho phép quá trình huấn luyện tự động dừng sau khoảng thời gian chỉ định. Hữu ích cho các kịch bản huấn luyện bị giới hạn thời gian. |
patience | int | 100 | Số lượng epoch chờ đợi mà không có sự cải thiện trong các số liệu xác thực trước khi dừng sớm (early stopping) quá trình huấn luyện. Giúp ngăn chặn hiện tượng quá khớp (overfitting) bằng cách dừng huấn luyện khi hiệu suất chững lại. |
batch | int hoặc float | 16 | Kích thước batch với ba chế độ: đặt dưới dạng số nguyên (ví dụ: batch=16), chế độ tự động cho 60% mức sử dụng bộ nhớ GPU (batch=-1) hoặc chế độ tự động với phân số sử dụng được chỉ định (batch=0.70). |
imgsz | int | 640 | Kích thước ảnh mục tiêu để huấn luyện. Ảnh được đổi kích thước thành hình vuông với các cạnh bằng giá trị đã chỉ định (nếu là rect=False), giữ nguyên tỷ lệ khung hình đối với các model YOLO nhưng không áp dụng cho RT-DETR. Ảnh hưởng đến độ chính xác và độ phức tạp tính toán của model. |
save | bool | True | Cho phép lưu các điểm kiểm tra (checkpoint) huấn luyện và trọng số model cuối cùng. Hữu ích cho việc tiếp tục huấn luyện hoặc triển khai model. |
save_period | int | -1 | Tần suất lưu checkpoint model, được chỉ định theo epoch. Giá trị -1 sẽ vô hiệu hóa tính năng này. Hữu ích để lưu các model trung gian trong các phiên huấn luyện dài. |
cache | bool | False | Cho phép lưu đệm (cache) ảnh tập dữ liệu vào bộ nhớ (True/ram), trên đĩa (disk) hoặc tắt tính năng này (False). Cải thiện tốc độ huấn luyện bằng cách giảm thao tác I/O đĩa đổi lại việc tăng mức sử dụng bộ nhớ. |
device | int hoặc str hoặc list | None | Chỉ định (các) thiết bị tính toán cho việc huấn luyện: một GPU đơn (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) hoặc tự động chọn GPU đang rảnh (device=-1) hoặc nhiều GPU đang rảnh (device=[-1,-1]). |
workers | int | 8 | Số luồng worker để nạp dữ liệu (trên 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à nạp vào model, đặc biệt hữu ích trong các thiết lập đa GPU. |
project | str | None | Tên của thư mục dự án nơi lưu trữ kết quả huấn luyện. Cho phép lưu trữ có tổ chức các thử nghiệm khác nhau. |
name | str | None | Tên của lần chạy huấn luyện. Được sử dụng để tạo thư mục con bên trong thư mục dự án, nơi lưu trữ nhật ký huấn luyện và các kết quả đầu ra. |
exist_ok | bool | False | Nếu True, cho phép ghi đè thư mục dự án/tên hiện có. Hữu ích cho việc thử nghiệm lặp đi lặp lại mà không cần xóa các kết quả trước đó theo cách thủ công. |
save_dir | str | None | Chỉ định thư mục chính xác nơi lưu các kết quả 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ố thứ tự, do đó các lần chạy liên tiếp sẽ sử dụng lại cùng một thư mục. |
pretrained | bool hoặc str | True | Xác định xem có bắt đầu huấn luyện từ trọng số được huấn luyện sẵn hay không. Có thể là giá trị boolean hoặc đường dẫn chuỗi tới trọng số cần tải. pretrained=False tiến hành huấn luyện từ các trọng số được khởi tạo ngẫu nhiên trong khi vẫn giữ nguyên kiến trúc model. |
cls_remap | bool | True | Khi fine-tune trên các dataset khác nhau, sao chép các hàng head phân loại đã pretrained vào model mới bất cứ khi nào tên class khớp nhau, do đó các class trùng lặp giữ nguyên độ lệch đã học cùng với trọng số của chúng khi chiều rộng head không đổi. Áp dụng cho dù số lượng class khác nhau hay trùng khớp với thứ tự class khác. |
optimizer | str | 'auto' | Lựa chọn trình tối ưu hóa (optimizer) cho việc huấn luyện. Các tùy chọn bao gồm SGD, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp hoặc auto để tự động lựa chọn dựa trên cấu hình model. Ảnh hưởng đến tốc độ hội tụ và độ ổn định. |
seed | int | 0 | Đặt hạt giống ngẫu nhiên cho huấn luyện, đảm bảo khả năng tái lập kết quả qua các lần chạy với cùng cấu hình. |
deterministic | bool | True | Buộc sử dụng thuật toán tất định, đảm bảo khả năng tái lập nhưng có thể ảnh hưởng đến hiệu suất và tốc độ do hạn chế đối với các thuật toán phi tất định. |
verbose | bool | True | Bật đầu ra chi tiết trong quá trình huấn luyện, hiển thị thanh tiến trình, các số liệu theo từng epoch và thông tin huấn luyện bổ sung trong bảng điều khiển. |
single_cls | bool | False | Xử lý tất cả các lớp trong bộ dữ liệu đa lớp thành một lớp duy nhất trong quá trình huấn luyện. Hữu ích cho các tác vụ phân loại nhị phân hoặc khi tập trung vào sự hiện diện của đối tượng thay vì phân loại. |
classes | list[int] | None | Chỉ định danh sách ID các lớp để huấn luyện. Hữu ích để lọc và chỉ tập trung vào một số lớp nhất định trong quá trình huấn luyện. |
rect | bool | False | Bật chiến lược padding tối thiểu — 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 suất và tốc độ nhưng có thể ảnh hưởng đến độ chính xác của model. |
multi_scale | float | 0.0 | Biến đổi ngẫu nhiên imgsz cho mỗi batch bằng +/- multi_scale (ví dụ: 0.25 -> 0.75x đến 1.25x), làm tròn thành các bội số của sải bước (stride) model; 0.0 tắt tính năng huấn luyện đa tỷ lệ (multi-scale). |
cos_lr | bool | False | Sử dụng bộ lập lịch tốc độ học theo đường cong cosine, điều chỉnh tốc độ học theo đường cong cosine qua các epoch. Giúp quản lý tốc độ học để đạt độ hội tụ tốt hơn. |
close_mosaic | int | 10 | Tắt tăng cường dữ liệu mosaic trong N epoch cuối cùng để ổn định quá trình huấn luyện trước khi hoàn tất. Đặt giá trị thành 0 sẽ tắt tính năng này. |
resume | bool | False | Tiếp tục huấn luyện từ checkpoint được lưu gần nhất. Tự động tải trọng số model, trạng thái bộ tối ưu hóa và số epoch, giúp quá trình huấn luyện tiếp diễn liền mạch. |
amp | bool | True | Bật huấn luyện Hỗn hợp độ chính xác tự động (AMP), giúp giảm mức sử dụng bộ nhớ và có khả năng tăng tốc độ huấn luyện với tác động tối thiểu đến độ chính xác. |
fraction | float | 1.0 | Chỉ định tỷ lệ của bộ dữ liệu để sử dụng cho việc huấn luyện. Cho phép huấn luyện trên một tập hợp con của toàn bộ dữ liệu, hữu ích cho các thử nghiệm hoặc khi tài nguyên bị giới hạn. |
profile | bool | False | Bật tính năng profiling tốc độ ONNX và TensorRT trong quá trình huấn luyện, hữu ích cho việc tối ưu hóa triển khai model. |
freeze | int hoặc list | None | Đóng băng (freeze) N lớp đầu tiên của model hoặc các lớp được chỉ định theo chỉ mục, làm giảm số lượng tham số có thể huấn luyện. Hữu ích cho việc tinh chỉnh (fine-tuning) hoặc học chuyển giao (transfer learning). |
lr0 | float | 0.01 | Tốc độ học ban đầu (tức là SGD=1E-2, Adam=1E-3). Điều chỉnh giá trị này là tối 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. |
lrf | float | 0.01 | Tốc độ học cuối cùng dưới dạng phân số của tốc độ ban đầu = (lr0 * lrf), được sử dụng kết hợp với các bộ lập lịch để điều chỉnh tốc độ học theo thời gian. |
momentum | float | 0.937 | Hệ số động lượng (momentum) cho SGD hoặc beta1 cho các trình tối ưu hóa Adam, ảnh hưởng đến việc kết hợp các gradient trước đó vào bản cập nhật hiện tại. |
weight_decay | float | 0.0005 | Thành phần điều chuẩn (regularization) L2, xử phạt các trọng số lớn để ngăn chặn hiện tượng quá khớp. |
warmup_epochs | float | 3.0 | Số lượng epoch cho quá trình khởi động (warmup) tốc độ học, tăng dần tốc độ học từ một giá trị thấp lên tốc độ học ban đầu để ổn định quá trình huấn luyện ngay từ đầu. |
warmup_momentum | float | 0.8 | Động lượng ban đầu cho giai đoạn khởi động, điều chỉnh dần dần về động lượng đã thiết lập trong suốt thời gian khởi động. |
warmup_bias_lr | float | 0.1 | Tốc độ học cho các tham số bias trong giai đoạn khởi động, giúp ổn định quá trình huấn luyện model trong các epoch đầu tiên. |
distill_model | str | None | Đường dẫn đến điểm kiểm tra của model giáo viên (ví dụ: yolo26x.pt) phục vụ chưng cất kiến thức (knowledge distillation). Khi được thiết lập, model học sinh sẽ được huấn luyện với một tổn thất chưng cất bổ sung được dẫn dắt bởi model giáo viên đã đóng băng. |
dis | float | 6.0 | Trọng số của hàm mất mát chưng cất được thêm vào các hàm mất mát phát hiện tiêu chuẩn. Các giá trị cao hơn sẽ làm tăng ảnh hưởng từ sự dẫn dắt đặc trưng của giáo viên. |
box | float | 7.5 | Trọng số của thành phần tổn thất hộp trong hàm mất mát, ảnh hưởng đến mức độ tập trung vào việc dự đoán chính xác tọa độ hộp bao (bounding box). |
cls | float | 0.5 | Trọng số của loss phân loại trong hàm loss tổng, ảnh hưởng đến tầm quan trọng của việc dự đoán đúng lớp so với các thành phần khác. |
cls_pw | float | 0.0 | Số mũ cho trọng số lớp nhằm xử lý mất cân bằng lớp bằng cách sử dụng tần suất lớp nghịch đảo. 0.0 tắt trọng số lớp, 1.0 áp dụng trọng số tần suất nghịch đảo hoàn toàn. Các giá trị từ 0 đến 1 cung cấp trọng số một phần. |
dfl | float | 1.5 | Trọng số của distribution focal loss (DFL), một thành phần định vị bounding box giúp hồi quy khoảng cách các cạnh của hộp. |
pose | float | 12.0 | Trọng số của loss pose trong các model được huấn luyện cho tác vụ ước tính tư thế (pose estimation), ảnh hưởng đến sự chú trọng vào việc dự đoán chính xác các điểm mấu chốt của tư thế. |
kobj | float | 1.0 | Trọng số của loss objectness cho keypoint trong các model ước tính tư thế, cân bằng độ tin cậy phát hiện với độ chính xác của tư thế. |
rle | float | 1.0 | Trọng số của loss ước tính log-likelihood thặng dư trong các model ước tính tư thế, ảnh hưởng đến độ chính xác của việc định vị điểm mấu chốt. |
angle | float | 1.0 | Trọng số của loss góc trong các model obb, ảnh hưởng đến độ chính xác của các dự đoán góc bounding box xoay. |
dlog | float | 1.0 | Trọng số của hàm loss logarithmic bất biến theo tỷ lệ (SILog) trong các model ước lượng độ sâu, thuật ngữ chính thúc đẩy độ chính xác độ sâu. |
dgrad | float | 0.5 | Trọng số của hàm loss gradient trong các model ước lượng độ sâu, phạt các lỗi ở biên độ sâu và khuyến khích ranh giới bề mặt sắc nét hơn. |
dlam | float | 1.0 | Hệ số tập trung phương sai của tổn thất SILog trong các model ước tính độ sâu. 1.0 làm cho tổn thất bất biến theo tỷ lệ hoàn toàn, trong khi 0.0 rút gọn nó thành log-RMSE thông thường. |
nbs | int | 64 | Kích thước batch danh định cho việc chuẩn hóa loss. |
overlap_mask | bool | True | Xác định xem các mask đối tượng nên được hợp nhất thành một mask duy nhất cho việc huấn luyện hay giữ riêng biệt cho từng đối tượng. Trong trường hợp chồng chéo, mask nhỏ hơn sẽ được phủ lên trên mask lớn hơn trong quá trình hợp nhất. |
mask_ratio | int | 4 | Tỷ lệ downsample cho các mask phân đoạn, ảnh hưởng đến độ phân giải của các mask được sử dụng trong quá trình huấn luyện. |
dropout | float | 0.0 | Tỷ lệ dropout cho regularization trong các tác vụ phân loại, ngăn chặn quá khớp bằng cách loại bỏ ngẫu nhiên các đơn vị trong quá trình huấn luyện. |
val | bool | True | Bật tính năng xác thực (validation) trong quá trình huấn luyện, cho phép đánh giá định kỳ hiệu suất của model trên một bộ dữ liệu riêng biệt. |
plots | bool | True | Tạo và lưu các biểu đồ về số liệu huấn luyện và xác thực, cũng như các ví dụ dự đoán, cung cấp thông tin trực quan về hiệu suất của model và tiến trình học tập. |
compile | bool hoặc str | False | Bật biên dịch đồ thị torch.compile của PyTorch 2.x với backend='inductor'. Chấp nhận True → "default", False → tắt, hoặc chế độ chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Chuyển về chế độ eager kèm theo cảnh báo nếu không được hỗ trợ. |
channels_last | bool | False | Sử dụng định dạng bộ nhớ channels_last (NHWC) cho các phép tích chập trong quá trình training, giúp tăng tốc các GPU CUDA Tensor Core mà không làm thay đổi kết quả. Tự động bỏ qua trên CPU và MPS, nơi định dạng này không mang lại lợi ích. |
max_det | int | 300 | Chỉ định số lượng đối tượng tối đa được giữ lại trong giai đoạn xác thực của quá trình huấn luyện. |
Đối số batch cung cấp ba tùy chọn cấu hình:
- Kích thước batch cố định: Chỉ định số lượng ảnh cho mỗi batch bằng một số nguyên (ví dụ:
batch=16). - Chế độ tự động (60% bộ nhớ GPU): Sử dụng
batch=-1để tự động điều chỉnh đến khoảng 60% mức sử dụng bộ nhớ CUDA. - Chế độ tự động với phân số 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.
Cài đặt Dự đoán (Predict Settings)#
Các cài đặt dự đoán cho model YOLO bao gồm các siêu tham số và cấu hình ảnh hưởng đến hiệu suất, tốc độ và độ chính xác trong quá trình suy luận. Các cài đặt chính bao gồm ngưỡng độ tin cậy, ngưỡng Tri tiêu cực phi tối đa - Non-Maximum Suppression (NMS) và số lượng lớp. Kích thước dữ liệu đầu vào, định dạng và các tính năng bổ trợ như mặt nạ (mask) cũng ảnh hưởng đến kết quả dự đoán. Tinh chỉnh các cài đặt này là rất cần thiết để đạt hiệu suất tối ưu.
Các đối số suy luận:
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
source | str hoặc int hoặc None | None | Chỉ định nguồn dữ liệu để suy luận. Có thể là đường dẫn ảnh, file video, thư mục, URL hoặc ID thiết bị cho các luồng trực tiếp. Nếu bỏ qua, một cảnh báo sẽ được ghi lại và model sẽ chuyển về sử dụng tài nguyên demo tích hợp sẵn (ultralytics/assets, hoặc URL demo cho OBB). Hỗ trợ nhiều loại định dạng và nguồn dữ liệu, cho phép ứng dụng linh hoạt trên các loại đầu vào khác nhau. |
conf | float | 0.25 | Thiết lập ngưỡng tin cậy tối thiểu cho các lần phát hiện. Các đối tượng được phát hiện với độ tin cậy dưới ngưỡng này sẽ bị loại bỏ. Điều chỉnh giá trị này có thể giúp giảm các trường hợp dương tính giả. |
iou | float | 0.7 | Ngưỡng Intersection Over Union (IoU) cho Non-Maximum Suppression (NMS). Giá trị thấp hơn dẫn đến ít phát hiện hơn bằng cách loại bỏ các hộp chồng chéo, hữu ích để giảm các mục bị trùng lặp. |
imgsz | int hoặc tuple | 640 | Mục tiêu Letterbox. Một số nguyên cho ra hình vuông N×N; một tuple cho ra (height, width). Với rect=True, tensor thực tế có thể nhỏ hơn mục tiêu này do padding hình chữ nhật tối thiểu. Sử dụng rect=False cho kích thước cố định. Xem Hình dạng cố định so với hình chữ nhật tối thiểu. |
rect | bool | True | Nếu là True, hãy sử dụng padding hình chữ nhật tối thiểu khi có thể (batch cùng hình dạng và backend được hỗ trợ). Nếu là False, luôn padding đến toàn bộ imgsz. Xem Hình dạng cố định so với hình chữ nhật tối thiểu. |
quantize | int hoặc str | None | Độ chính xác suy luận: 16/"fp16" bật suy luận FP16 trên các GPU được hỗ trợ; 32/"fp32"/bỏ trống là FP32. Lượng tử hóa INT8/PTQ được cấu hình trong quá trình xuất model, sau đó được sử dụng bằng cách tải model đã xuất. Thay thế cờ half đã lỗi thời. |
device | str | None | Chỉ định thiết bị để suy luận (ví dụ: cpu, cuda:0, 0, npu hoặc npu:0). Cho phép người dùng lựa chọn giữa CPU, một GPU cụ thể, Huawei Ascend NPU hoặc các thiết bị tính toán khác để thực thi model. |
batch | int | 1 | Chỉ định kích thước batch cho suy luận (chỉ hoạt động khi nguồn là thư mục, file video hoặc file .txt). Kích thước batch lớn hơn có thể cung cấp thông lượng cao hơn, rút ngắn tổng thời gian cần thiết cho suy luận. |
max_det | int | 300 | Số lượng phát hiện 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, tránh đầu ra quá mức trong các cảnh dày đặc đối tượng. |
vid_stride | int | 1 | Bước nhảy khung hình (frame stride) cho đầu vào video. Cho phép bỏ qua các khung hình trong video để tăng tốc độ xử lý với cái giá là độ phân giải thời gian. Giá trị 1 xử lý mọi khung hình, giá trị cao hơn sẽ bỏ qua khung hình. |
stream_buffer | bool | False | Xác định xem có xếp hàng đợi các khung hình đến đối với luồng video hay không. Nếu là False, các khung hình cũ sẽ bị loại bỏ để nhường chỗ cho khung hình mới (được tối ưu hóa cho các ứng dụng thời gian thực). Nếu là True, xếp hàng đợi các khung hình mới vào một bộ đệm, đảm bảo không có khung hình nào bị bỏ qua, nhưng sẽ gây ra độ trễ nếu FPS suy luận thấp hơn FPS của luồng. |
visualize | bool | False | Lưu một bản đồ nhiệt kích hoạt lớp (class activation heatmap) cạnh mỗi dự đoán, hiển thị những pixel nào làm tăng điểm số lớp được dự đoán. Tuân theo conf và classes, do đó classes=[0] chỉ ánh xạ lớp đó. Chỉ khả dụng cho các model PyTorch. |
augment | bool | False | Kích hoạt tăng cường dữ liệu khi kiểm thử (TTA) cho các dự đoán, có khả năng cải thiện độ ổn định khi phát hiện nhưng làm giảm tốc độ suy luận. |
agnostic_nms | bool | False | Kích hoạt Non-Maximum Suppression (NMS) không phụ thuộc vào lớp, giúp gộp các hộp chồng lấp của các lớp khác nhau. Hữu ích trong các kịch bản phát hiện đa lớp nơi các lớp thường chồng lấp. Đối với các model end-to-end (YOLO26, YOLOv10), điều này chỉ ngăn chặn việc cùng một kết quả phát hiện xuất hiện với nhiều nhãn lớp (trùng lặp IoU=1.0) và không thực hiện triệt tiêu dựa trên ngưỡng IoU giữa các hộp riêng biệt. |
classes | list[int] | None | Lọc các dự đoán theo một tập hợp ID lớp. Chỉ các kết quả phát hiện thuộc các lớp được chỉ định mới được trả về. Hữu ích để tập trung vào các đối tượng liên quan trong các tác vụ phát hiện đa lớp. |
retina_masks | bool | False | Trả về các mặt nạ phân đoạn độ phân giải cao. Các mặt nạ được trả về (masks.data) sẽ khớp với kích thước ảnh gốc nếu được bật. Nếu bị tắt, chúng có kích thước ảnh được sử dụng trong quá trình suy luận. |
embed | list[int] | None | Chỉ định các lớp từ đó trích xuất vector đặc trưng hoặc embedding. Sử dụng model.embed(source) cho embedding lớp áp chót, hoặc model.predict(source, embed=[layer]) để chọn các lớp cụ thể. Hữu ích cho các tác vụ hạ nguồn như gom cụm (clustering) hoặc tìm kiếm độ tương đồng. |
project | str | None | Tên thư mục dự án nơi lưu trữ các kết quả dự đoán nếu save được bật. |
name | str | None | Tên của lần chạy dự đoán. Được sử dụng để tạo một thư mục con bên trong thư mục dự án, nơi lưu trữ các kết quả dự đoán nếu save được bật. |
stream | bool | False | Kích hoạt xử lý hiệu quả bộ nhớ cho các video dài hoặc nhiều hình ảnh bằng cách trả về một generator các đối tượng Results thay vì tải tất cả các khung hình vào bộ nhớ cùng lúc. |
verbose | bool | True | Kiểm soát việc hiển thị nhật ký suy luận chi tiết trong terminal, cung cấp phản hồi thời gian thực về quá trình dự đoán. |
compile | bool hoặc str | False | Bật biên dịch đồ thị torch.compile của PyTorch 2.x với backend='inductor'. Chấp nhận True → "default", False → tắt, hoặc chế độ chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Chuyển về chế độ eager kèm theo cảnh báo nếu không được hỗ trợ. |
channels_last | bool | False | Sử dụng định dạng bộ nhớ channels_last (NHWC) cho các phép tích chập trong quá trình inference, giúp tăng tốc các GPU CUDA Tensor Core mà không làm thay đổi kết quả. Chỉ áp dụng cho các model PyTorch gốc; bị bỏ qua đối với CPU, MPS và các định dạng được xuất ra như TensorRT và ONNX. |
end2end | bool | None | Ghi đè chế độ end-to-end trong các model YOLO hỗ trợ suy luận không cần NMS (YOLO26, YOLOv10). Đặt giá trị thành False cho phép bạn chạy dự đoán sử dụng pipeline NMS truyền thống, đồng thời cho phép bạn tận dụng đối số iou. Xem Hướng dẫn Phát hiện End-to-End để biết chi tiết. |
Các đối số trực quan hóa:
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
show | bool | False | Nếu là True, hiển thị các hình ảnh hoặc video đã được chú thích trong một cửa sổ. Hữu ích để nhận phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc kiểm thử. |
save | bool | False or True | Kích hoạt lưu các ảnh hoặc video đã được chú thích vào tệp. Hữu ích cho việc ghi tài liệu, phân tích thêm hoặc chia sẻ kết quả. Mặc định là True khi sử dụng CLI & False khi sử dụng trong Python. |
save_frames | bool | False | Khi xử lý video, lưu từng khung hình dưới dạng hình ảnh. Hữu ích để trích xuất các khung hình cụ thể hoặc phân tích chi tiết từng khung hình. |
save_txt | bool | False | Lưu kết quả phát hiện vào một file văn bản theo định dạng [class] [x_center] [y_center] [width] [height] [confidence]. Hữu ích cho việc tích hợp với các công cụ phân tích khác. |
save_conf | bool | False | Bao gồm các điểm số tin cậy trong các tệp văn bản đã lưu. Tăng cường thông tin chi tiết cho việc hậu xử lý và phân tích. |
save_crop | bool | False | Lưu các ảnh cắt của các kết quả phát hiện. Hữu ích cho việc tăng cường dữ liệu, phân tích hoặc tạo tập dữ liệu tập trung cho các đối tượng cụ thể. |
show_labels | bool | True | Hiển thị nhãn cho mỗi phát hiện trong đầu ra hình ảnh. Cung cấp khả năng nhận biết tức thì các đối tượng được phát hiện. |
show_conf | bool | True | Hiển thị điểm số tin cậy (confidence score) cho mỗi phát hiện cùng với nhãn. Cung cấp thông tin chi tiết về độ chắc chắn của model đối với từng phát hiện. |
show_boxes | bool | True | Vẽ các hộp bao quanh các đối tượng được phát hiện. Cần thiết cho việc nhận diện trực quan và xác định vị trí của đối tượng trong ảnh hoặc khung hình video. |
line_width | int or None | None | Chỉ định độ dày đường viền của các hộp bao. Nếu là None, độ dày đường viền được tự động điều chỉnh dựa trên kích thước ảnh. Cung cấp khả năng tùy chỉnh trực quan để dễ quan sát. |
Cài đặt Kiểm thử (Validation Settings)#
Các cài đặt xác thực cho model YOLO bao gồm các siêu tham số và cấu hình để đánh giá hiệu suất trên tập dữ liệu xác thực. Các 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 bao gồm kích thước batch, tần suất xác thực và các số liệu hiệu suất. Kích thước và thành phần của tập dữ liệu xác thực, cùng với tác vụ cụ thể, cũng ảnh hưởng đến quá trình này.
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
data | str | None | Chỉ định đường dẫn đến file cấu hình tập dữ liệu (ví dụ: coco8.yaml). File này phải bao gồm đường dẫn đến dữ liệu xác thực. |
imgsz | int | 640 | Xác định kích thước của ảnh đầu vào. Tất cả ảnh được thay đổi kích thước về kích thước này trước khi xử lý. Kích thước lớn hơn có thể cải thiện độ chính xác cho các đối tượng nhỏ nhưng làm tăng thời gian tính toán. |
batch | int | 16 | Thiết lập số lượng ảnh trên mỗi batch. Giá trị cao hơn sử dụng bộ nhớ GPU hiệu quả hơn nhưng yêu cầu nhiều VRAM hơn. Điều chỉnh dựa trên tài nguyên phần cứng sẵn có. |
save_json | bool | False | Nếu là True, lưu kết quả vào một file 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. |
conf | float | 0.001 | Đặt ngưỡng độ tin cậy tối thiểu cho các phát hiện. Giá trị thấp hơn làm tăng khả năng hồi tưởng (recall) nhưng có thể sinh ra nhiều kết quả dương tính giả hơn. Được sử dụng trong quá trình xác thực để tính toán đường cong độ chính xác - hồi tưởng (precision-recall curve). Mặc định là 0.01 cho việc xác thực OBB nhằm giảm mức sử dụng bộ nhớ. |
iou | float | 0.7 | Đặt ngưỡng Intersection Over Union cho Non-Maximum Suppression. Kiểm soát việc loại bỏ các phát hiện trùng lặp. |
max_det | int | 300 | Giới hạn số lượng phát hiện tối đa trên mỗi ảnh. Hữu ích trong các cảnh dày đặc đối tượng để ngăn chặn quá nhiều kết quả phát hiện và quản lý tài nguyên tính toán. |
quantize | int hoặc str | None | Độ chính xác xác thực: 16/"fp16" bật xác thực FP16 trên các GPU được hỗ trợ; 32/"fp32"/bỏ trống là FP32. Lượng tử hóa INT8/PTQ được cấu hình trong quá trình xuất model, sau đó được sử dụng bằng cách xác thực model đã xuất. Thay thế cờ half đã lỗi thời. |
device | str | None | Chỉ định thiết bị để xác thực (cpu, cuda:0, npu, npu:0, v.v.). Khi là None, tự động chọn thiết bị tốt nhất có sẵn. Có thể chỉ định nhiều thiết bị CUDA bằng cách phân tách bằng dấu phẩy. |
dnn | bool | False | Nếu là True, sử dụng mô-đun DNN của OpenCV để suy luận model ONNX, cung cấp một giải pháp thay thế cho các phương pháp suy luận PyTorch. |
plots | bool | True | Khi được đặt thành True, tạo và lưu các biểu đồ so sánh dự đoán với nhãn thực tế (ground truth), ma trận nhầm lẫn (confusion matrix) và đường cong PR để đánh giá trực quan hiệu suất của model. |
classes | list[int] | None | Chỉ định danh sách các ID lớp để đánh giá. Hữu ích cho việc lọc và chỉ tập trung vào một số lớp nhất định trong quá trình đánh giá. |
rect | bool | True | Nếu là True, sử dụng suy luận theo hình chữ nhật để gom batch, làm giảm padding và có khả năng tăng tốc độ cũng như hiệu suất bằng cách xử lý ảnh theo tỷ lệ khung hình gốc của chúng. |
split | str | 'val' | Xác định phân chia tập dữ liệu được sử dụng để xác thực (val, test hoặc train). Mang lại sự linh hoạt trong việc lựa chọn phân đoạn dữ liệu để đánh giá hiệu suất. |
project | str | None | Tên của thư mục dự án nơi lưu các đầu ra xác thực. Giúp sắp xếp kết quả từ các thử nghiệm hoặc model khác nhau. |
name | str | None | Tên của lượt xác thực. Được sử dụng để tạo thư mục con bên trong thư mục dự án, nơi lưu trữ các log và kết quả xác thực. |
verbose | bool | True | Nếu là True, hiển thị thông tin chi tiết trong quá trình xác thực, bao gồm các số liệu theo từng lớp, tiến độ batch và thông tin gỡ lỗi bổ sung. |
save_txt | bool | False | Nếu là True, lưu kết quả phát hiện vào các file văn bản, với mỗi file tương ứng một ảnh, hữu ích cho việc phân tích thêm, hậu xử lý tùy chỉnh hoặc tích hợp với các hệ thống khác. |
save_conf | bool | False | Nếu là True, bao gồm các giá trị độ tin cậy trong các file văn bản đã lưu khi save_txt được bật, cung cấp đầu ra chi tiết hơn cho việc phân tích và lọc. |
workers | int | 8 | Số lượng luồng worker để tải dữ liệu. Các giá trị cao hơn có thể tăng tốc độ tiền xử lý dữ liệu nhưng có thể làm tăng mức sử dụng CPU. Đặt thành 0 sẽ sử dụng luồng chính, có thể ổn định hơn trong một số môi trường. |
augment | bool | False | Bật tăng cường thời gian kiểm thử (TTA - test-time augmentation) trong quá trình xác thực, có khả năng cải thiện độ chính xác phát hiện nhưng đánh đổi bằng tốc độ suy luận (inference) do chạy suy luận trên các phiên bản đã biến đổi của đầu vào. |
agnostic_nms | bool | False | Bật Non-Maximum Suppression bất chấp lớp, tính năng này hợp nhất các hộp chồng chéo bất kể lớp được dự đoán của chúng. Hữu ích cho các ứng dụng tập trung vào thực thể. Đối với các model end-to-end (YOLO26, YOLOv10), điều này chỉ ngăn chặn cùng một phát hiện xuất hiện với nhiều nhãn lớp (các bản sao có IoU=1.0) chứ không thực hiện tri tiêu chuẩn dựa trên ngưỡng IoU giữa các hộp riêng biệt. |
single_cls | bool | False | Xem tất cả các lớp là một lớp duy nhất trong quá trình xác thực. Hữu ích để đánh giá hiệu suất model trên các tác vụ phát hiện nhị phân hoặc khi sự phân biệt lớp không quan trọng. |
visualize | bool | False | Trực quan hóa ground truth, true positive, false positive và false negative cho mỗi hình ảnh. Hữu ích cho việc gỡ lỗi và diễn giải model. |
show_labels | bool | True | Hiển thị nhãn lớp trong các hình ảnh trực quan hóa xác thực khi là visualize=True. Đặt thành False để có góc nhìn rõ ràng hơn về các điểm khớp và lỗi. |
show_conf | bool | True | Hiển thị điểm số độ tin cậy trong các hình ảnh trực quan hóa xác thực khi là visualize=True. Đặt thành False để có góc nhìn rõ ràng hơn về các điểm khớp và lỗi. |
compile | bool hoặc str | False | Bật biên dịch đồ thị torch.compile của PyTorch 2.x với backend='inductor'. Chấp nhận True → "default", False → tắt, hoặc chế độ chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Chuyển về chế độ eager kèm theo cảnh báo nếu không được hỗ trợ. |
channels_last | bool | False | Sử dụng định dạng bộ nhớ channels_last (NHWC) cho các phép tích chập trong quá trình validation, giúp tăng tốc các GPU CUDA Tensor Core mà không làm thay đổi kết quả. Chỉ áp dụng cho các model PyTorch gốc; bị bỏ qua đối với CPU, MPS và các định dạng đã xuất như TensorRT và ONNX. |
end2end | bool | None | Ghi đè chế độ end-to-end trong các model YOLO hỗ trợ suy luận không cần NMS (YOLO26, YOLOv10). Đặt giá trị thành False cho phép bạn chạy xác thực sử dụng pipeline NMS truyền thống, đồng thời cho phép bạn tận dụng đối số iou. |
Tinh chỉnh cẩn thận và thử nghiệm là rất quan trọng để đảm bảo hiệu suất tối ưu cũng như phát hiện và ngăn chặn hiện tượng quá khớp (overfitting).
Cài đặt xuất (Export)#
Cài đặt xuất cho các model YOLO bao gồm các cấu hình để lưu hoặc xuất model nhằm sử dụng trong các môi trường khác nhau. Các cài đặt này ảnh hưởng đến hiệu suất, kích thước và tính tương thích. Các cài đặt chính bao gồm định dạng tệp xuất (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 và các ràng buộc của môi trường đích cũng ảnh hưởng đến quá trình xuất.
| Đối số | Loại | Mặc định | Mô tả |
|---|---|---|---|
format | str | 'torchscript' | Định dạng mục tiêu cho model được xuất, chẳng hạn như 'onnx', 'torchscript', 'engine' (TensorRT) hoặc các định dạng khác. Mỗi định dạng mang lại khả năng tương thích với các môi trường triển khai khác nhau. |
imgsz | int hoặc tuple | 640 | Kích thước ảnh mong muốn cho đầu vào của model. Có thể là một số nguyên cho ảnh vuông (ví dụ: 640 cho 640×640) hoặc một tuple (height, width) cho các kích thước cụ thể. |
keras | bool | False | Bật xuất 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. |
optimize | bool | False | Cho phép tối ưu hóa trình biên dịch cao hơn cho DEEPX, giúp giảm độ trễ inference trong khi tăng thời gian biên dịch. |
quantize | int hoặc str | None | Độ chính xác lượng tử hóa: 16 (FP16, giảm kích thước model và có thể tăng tốc độ suy luận trên phần cứng được hỗ trợ) hoặc 8 (INT8/PTQ, nén model hơn nữa với mức suy giảm độ chính xác tối thiểu, chủ yếu cho thiết bị biên (edge device); cần hiệu chuẩn data/fraction); 32/bỏ trống là FP32. Các định dạng xuất 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 đã lỗi thời (half=True → 16, int8=True → 8, vẫn được chấp nhận kèm theo cảnh báo lỗi thời). Chỉ cho phép các mức độ chính xác được hỗ trợ bởi định dạng mục tiêu (xem bên dưới). |
dynamic | bool | False | Cho phép kích thước đầu vào động đối với các định dạng xuất TorchScript, ONNX, OpenVINO, TensorRT và CoreML, giúp tăng tính linh hoạt khi xử lý các kích thước ảnh khác nhau. |
simplify | bool | True | Đơn giản hóa đồ thị ONNX trung gian với onnxslim đối với các bản xuất có tạo đồ thị này (xem Định dạng Xuất), có khả năng cải thiện hiệu suất và khả năng tương thích với các công cụ suy luận. |
opset | int | None | Chỉ định phiên bản ONNX opset cho các bản xuất tạo đồ thị ONNX (xem Định dạng Xuất), nhằm tương thích với các bộ phân tích cú pháp và runtime ONNX khác nhau. Nếu không được đặt, sử dụng phiên bản được hỗ trợ mới nhất. |
workspace | float hoặc None | None | Đặt kích thước vùng làm việc tối đa tính bằng GiB cho các tối ưu hóa TensorRT, cân bằng giữa việc sử dụng bộ nhớ và hiệu suất. Sử dụng None để TensorRT tự động phân bổ lên đến mức tối đa của thiết bị. |
nms | bool | False | Thêm Non-Maximum Suppression (NMS) vào model được xuất khi được hỗ trợ (xem Định dạng Xuất), giúp cải thiện hiệu quả hậu xử lý phát hiện. Không khả dụng cho các model end2end. Đối với CoreML, chỉ được hỗ trợ cho các model phát hiện. |
batch | int | 1 | Chỉ định kích thước suy luận batch của model xuất hoặc số lượng ảnh tối đa mà model được xuất sẽ xử lý đồng thời ở chế độ predict. Đối với các bản xuất Edge TPU, giá trị này được tự động đặt thành 1. |
device | str | None | Chỉ định thiết bị để 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). Các bản xuất TensorRT tự động sử dụng GPU, nhưng TensorRT 11.0 không hỗ trợ DLA. |
data | str | None | Đường dẫn đến file cấu hình tập dữ liệu, rất quan trọng cho việc hiệu chuẩn lượng tử hóa INT8. Nếu không được chỉ định trong khi INT8 được bật, Ultralytics sẽ chọn một tập dữ liệu hiệu chuẩn dành riêng cho tác vụ khi cần thiết, hoặc quay về sử dụng tập dữ liệu mặc định cho tác vụ của model. |
fraction | float | 1.0 | Chỉ định phân đoạn của dataset để sử dụng cho hiệu chuẩn lượng tử hóa INT8. Cho phép hiệu chuẩn trên một tập hợp con của toàn bộ dataset, hữu ích cho các thử nghiệm hoặc khi tài nguyên hạn chế. Nếu không được chỉ định trong khi INT8 đã được bật, toàn bộ dataset sẽ được sử dụng. |
end2end | bool | None | Ghi đè chế độ end-to-end trong các model YOLO hỗ trợ suy luận không cần NMS (YOLO26, YOLOv10). Đặt giá trị thành False cho phép bạn xuất các model này để tương thích với pipeline hậu xử lý dựa trên NMS truyền thống. Xem Hướng dẫn Phát hiện End-to-End để biết chi tiết. |
Cấu hình chu đáo đảm bảo model đã xuất được tối ưu hóa cho trường hợp sử dụng của nó và hoạt động hiệu quả trong môi trường đích.
Cài đặt giải pháp#
Các cài đặt cấu hình Ultralytics Solutions cung cấp sự linh hoạt để tùy chỉnh các model cho các tác vụ như đếm đối tượng, tạo bản đồ nhiệt, theo dõi tập luyện, phân tích dữ liệu, theo dõi vùng, quản lý hàng đợi và đếm dựa trên khu vực. Các tùy chọn này cho phé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ố | Loại | Mặc định | Mô tả |
|---|---|---|---|
model | str | None | Đường dẫn đến tệp model Ultralytics YOLO. |
region | list hoặc dict | None | Các điểm xác định vùng quan tâm (ROI), có thể là một danh sách các tuple (x, y) hoặc một từ điển ánh xạ tên vùng tới danh sách điểm cho nhiều vùng (chỉ áp dụng cho RegionCounter). Khi là None, các giải pháp yêu cầu một vùng sẽ quay về sử dụng giá trị mặc định được định nghĩa sẵn. |
show_in | bool | True | Cờ để kiểm soát việc hiển thị số lượng đếm vào trên luồng video. |
show_out | bool | True | Cờ để kiểm soát việc hiển thị số lượng đếm ra trên luồng video. |
analytics_type | str | 'line' | Loại đồ thị, tức là line, bar, area hoặc pie. |
colormap | int | cv2.COLORMAP_DEEPGREEN | Bản đồ màu (colormap) để sử dụng cho bản đồ nhiệt. |
json_file | str | None | Đường dẫn đến tệp JSON chứa tất cả dữ liệu tọa độ bãi đỗ xe. |
up_angle | float | 145.0 | Ngưỡng góc cho tư thế 'lên'. |
kpts | list[int] | '[6, 8, 10]' | Danh sách ba chỉ số điểm then chốt được sử dụng để giám sát tập luyện. Các điểm then chốt này tương ứng với các khớp hoặc bộ phận cơ thể, như vai, khuỷu tay và cổ tay, cho các bài tập như hít đất, hít xà, squat và tập bụng. |
down_angle | int | 90 | Ngưỡng góc cho tư thế 'xuống'. |
blur_ratio | float | 0.5 | Điều chỉnh tỷ lệ phần trăm cường độ làm mờ, với các giá trị nằm trong khoảng 0.1 - 1.0. |
crop_dir | str | 'cropped-detections' | Tên thư mục để lưu trữ các phát hiện đã cắt. |
records | int | 5 | Tổng số lượng phát hiện để kích hoạt email với hệ thống báo động an ninh. |
vision_point | tuple[int, int] | (20, 20) | Điểm mà tại đó thị giác sẽ theo dõi các đối tượng và vẽ đường đi sử dụng Giải pháp VisionEye. |
source | str | None | Đường dẫn đến nguồn đầu vào (video, RTSP, v.v.). Chỉ có thể sử dụng với giao diện dòng lệnh (CLI) của Solutions. |
figsize | tuple[float, float] | (12.8, 7.2) | Kích thước hình ảnh cho các biểu đồ phân tích như bản đồ nhiệt hoặc đồ thị. |
fps | float | 30.0 | Số khung hình trên giây được sử dụng cho các tính toán tốc độ. |
max_hist | int | 5 | Số điểm lịch sử tối đa để theo dõi cho mỗi đối tượng cho các tính toán tốc độ/hướng. |
meter_per_pixel | float | 0.05 | Hệ số tỷ lệ được sử dụng để chuyển đổi khoảng cách pixel sang đơn vị thực tế. |
max_speed | int | 120 | Giới hạn tốc độ tối đa trong các lớp phủ trực quan (được sử dụng trong các cảnh báo). |
data | str | 'images' | Đường dẫn đến thư mục hình ảnh được sử dụng để tìm kiếm tương đồng. |
imgsz | int | 640 | Kích thước hình ảnh đầu vào cho suy luận model. |
Cài đặt tăng cường (Augmentation)#
Các kỹ thuật tăng cường dữ liệu là rất cần thiết để cải thiện tính mạnh mẽ (robustness) và hiệu suất của model YOLO bằng cách đưa tính biến đổi vào dữ liệu huấn luyện, giúp model tổng quát hóa tốt hơn đối với dữ liệu chưa từng thấy. Bảng sau đây phác họa mục đích và hiệu quả của từng đối số tăng cường:
| Đối số | Loại | Mặc định | Các tác vụ được hỗ trợ | Phạm vi | Mô tả |
|---|---|---|---|---|---|
hsv_h | float | 0.015 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Điều chỉnh màu sắc (hue) của hình ảnh theo một phần của vòng màu, đưa vào sự biến đổi về 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. |
hsv_s | float | 0.7 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Thay đổi độ bão hòa (saturation) của hình ảnh theo một tỷ lệ, ảnh hưởng đến cường độ của màu sắc. Hữu ích để mô phỏng các điều kiện môi trường khác nhau. |
hsv_v | float | 0.4 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Thay đổi giá trị (độ sáng - brightness) của hình ảnh theo một tỷ lệ, giúp model hoạt động tốt trong các điều kiện ánh sáng khác nhau. |
degrees | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 180 | Xoay ảnh ngẫu nhiên trong phạm vi độ được chỉ định, giúp cải thiện khả năng nhận diện đối tượng của model ở các hướng khác nhau. |
translate | float | 0.1 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Dịch chuyển ảnh theo chiều ngang và dọc dựa trên một phần kích thước ảnh, hỗ trợ việc học cách phát hiện các đối tượng bị che khuất một phần. |
scale | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0 - 1 | Thay đổi tỷ lệ ảnh theo hệ số tăng, mô phỏng các đối tượng ở những khoảng cách khác nhau so với camera. |
shear | float | 0 | detect, segment, semantic, depth, pose, obb | -180 - +180 | Cắt nghiêng ảnh theo một độ nhất định, bắt chước hiệu ứng khi đối tượng được quan sát từ các góc độ khác nhau. |
perspective | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 0.001 | Áp dụng biến đổi phối cảnh ngẫu nhiên lên ảnh, nâng cao khả năng hiểu các đối tượng trong không gian 3D của model. |
flipud | float | 0 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Lật ngược ảnh theo chiều dọc với xác suất được chỉ định, giúp tăng độ biến thiên dữ liệu mà không làm ảnh hưởng đến đặc điểm của đối tượng. |
fliplr | float | 0.5 | detect, segment, semantic, depth, classify, pose, obb | 0.0 - 1.0 | Lật ảnh từ trái sang phải với 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 sự đa dạng cho tập dữ liệu. |
bgr | float | 0 | detect, segment, semantic, depth, pose, obb | 0.0 - 1.0 | Đổi kênh màu của ảnh từ RGB sang BGR với xác suất được chỉ định, hữu ích để tăng tính ổn định đối với các trường hợp thứ tự kênh không chính xác. |
mosaic | float | 1 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Kết hợp bốn ảnh huấn luyện thành một, mô phỏng các bố cục cảnh và tương tác đối tượng khác nhau. Rất hiệu quả cho việc hiểu các cảnh phức tạp. |
mixup | float | 0 | detect, segment, semantic, pose, obb | 0.0 - 1.0 | Trộn hai ảnh và nhãn tương ứng của chúng để tạo thành một ảnh hỗn hợp. Cải thiện khả năng khái quát hóa của model bằng cách đưa vào nhiễu nhãn và biến thiên hình ảnh. |
cutmix | float | 0 | detect, segment, pose, obb | 0.0 - 1.0 | Kết hợp các phần của hai ảnh, tạo ra một sự trộn lẫn cục bộ trong khi vẫn duy trì các vùng riêng biệt. Nâng cao độ bền của model bằng cách tạo ra các tình huống che khuất. |
copy_paste | float | 0 | segment | 0.0 - 1.0 | Sao chép và dán các đối tượng qua lại giữa các ảnh để tăng số lượng đối tượng hiện diện. |
copy_paste_mode | str | flip | segment | - | Chỉ định chiến lược copy-paste cần sử dụng. Các tùy chọn bao gồm 'flip' và 'mixup'. |
auto_augment | str | randaugment | classify | - | Áp dụng một chính sách tăng cường dữ liệu được xác định trước ('randaugment', 'autoaugment' hoặc 'augmix') để nâng cao hiệu suất model thông qua sự đa dạng trực quan. |
erasing | float | 0.4 | classify | 0.0 - 1.0 | Xóa ngẫu nhiên các vùng của ảnh trong quá trình huấn luyện để khuyến khích model tập trung vào các đặc trưng ít rõ ràng hơn. |
augmentations | list | None | detect, segment, semantic, pose, obb | - | Các phép biến đổi Albumentations tùy chỉnh cho việc tăng cường dữ liệu nâng cao (chỉ hỗ trợ Python API). Chấp nhận một danh sách các đối tượng biến đổi cho các nhu cầu tăng cường chuyên biệt. |
Điều chỉnh các cài đặt này để đáp ứng các yêu cầu về 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 để có hiệu suất model tốt nhất.
Cài đặt Ghi log, Checkpoint và Vẽ biểu đồ#
Ghi log, checkpoint, vẽ biểu đồ và quản lý tệp là rất quan trọng khi đào tạo một model YOLO:
- Logging: Theo dõi tiến trình của model và chẩn đoán sự cố bằng cách sử dụng các thư viện như TensorBoard hoặc bằng cách ghi vào một tệp.
- Checkpoint: Lưu model ở các khoảng thời gian đều đặn để tiếp tục đào tạo hoặc thử nghiệm với các cấu hình khác nhau.
- Vẽ biểu đồ: Trực quan hóa hiệu suất và tiến trình đào tạo bằng cách sử dụng các thư viện như Matplotlib hoặc TensorBoard.
- Quản lý tệp: Tổ chức các tệp được tạo trong quá trình đào tạo, chẳng hạn như checkpoint, tệp log và biểu đồ để dễ dàng truy cập và phân tích.
Việc quản lý hiệu quả các khía cạnh này giúp theo dõi tiến trình và giúp việc gỡ lỗi và tối ưu hóa trở nên dễ dàng hơn.
| Đối số | Mặc định | Mô tả |
|---|---|---|
project | None | Chỉ định thư mục gốc để lưu các lần chạy huấn luyện. Nếu không được chỉ định, các lần chạy sẽ được lưu dưới runs/<task>. Mỗi lần chạy được lưu trong một thư mục con riêng biệt. |
name | None | Xác định tên thí nghiệm. Nếu không được chỉ định, YOLO sử dụng tên mode và tăng dần cho mỗi lần chạy (ví dụ: train, train-2) để tránh ghi đè. |
exist_ok | False | Xác định có ghi đè lên thư mục thí nghiệm hiện có hay không. True cho phép ghi đè; False ngăn chặn việc đó. |
plots | True | Kiểm soát việc tạo và lưu các biểu đồ huấn luyện và validation. Đặ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 để theo dõi hiệu suất trực quan. |
save | True | Cho phép lưu các 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 một YAML đã lưu để sử dụng lại toàn bộ tập hợp đối số mà không cần chuyển chúng trực tiếp. Đối số cfg ghi đè lên các giá trị từ default.yaml, trong khi các đối số bổ sung được truyền kèm theo vẫn được ưu tiên.
| Đối số | Mặc định | Mô tả |
|---|---|---|
cfg | None | Đường dẫn đến tệp YAML có các giá trị thay thế cho các mục default.yaml. Xem Overriding Default Config File để có ví dụ CLI thực tế. |
Câu hỏi thường gặp#
Làm thế nào để tôi cải thiện hiệu suất model YOLO của mình trong quá trình đào tạo?#
Cải thiện hiệu suất bằng cách tinh chỉnh các siêu tham số như batch size, learning rate, momentum, và weight decay. Điều chỉnh các thiết lập 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, hãy xem Train Guide.
Các siêu tham số chính cho độ chính xác của model YOLO là gì?#
Các siêu tham số chính ảnh hưởng đến độ chính xác bao gồm:
- Batch Size (
batch): Kích thước lớn hơn có thể làm ổn định quá trình huấn luyện nhưng cần nhiều bộ nhớ hơn. - Learning Rate (
lr0): Tốc độ nhỏ hơn cung cấp các điều chỉnh chi tiết nhưng độ hội tụ chậm hơn. - Momentum (
momentum): Tăng tốc các véc-tơ gradient, làm 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 thông số này dựa trên tập dữ liệu và phần cứng của bạn. Tìm hiểu thêm trong Train Settings.
Làm thế nào để tôi đặt learning rate cho việc đào tạo model YOLO?#
Learning rate (lr0) rất quan trọng; bắt đầu với 0.01 cho SGD hoặc 0.001 cho Adam optimizer. Theo dõi các số liệu và điều chỉnh khi cần thiết. Sử dụng bộ lập lịch learning rate dạng cosine (cos_lr) hoặc warmup (warmup_epochs, warmup_momentum). Chi tiết có trong Train Guide.
Các cài đặt suy luận mặc định cho các model YOLO là gì?#
Các cài đặt mặc định bao gồm:
- Confidence Threshold (
conf=0.25): Độ tin cậy tối thiểu cho các phát hiện. - IoU Threshold (
iou=0.7): Dành cho Non-Maximum Suppression (NMS). - Image Size (
imgsz=640): Thay đổi kích thước hình ảnh đầu vào. - Device (
device=None): Chọn CPU, GPU, Apple MPS hoặc Huawei Ascend NPU (npu).
Để có cái nhìn tổng quan đầy đủ, hãy xem Predict Settings và Predict Guide.
Tại sao nên sử dụng đào tạo với độ chính xác hỗn hợp (mixed precision) với các model YOLO?#
Huấn luyện mixed precision (amp=True) làm 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. Tính năng này có lợi cho các GPU hiện đại, cho phép các model lớn hơn và tính toán nhanh hơn mà không làm mất đi độ chính xác đáng kể. Tìm hiểu thêm trong Train Guide.