Chuyển đến nội dung

Cấu hình

Các cài đặt và siêu tham số YOLO đóng một vai trò quan trọng trong hiệu suất, tốc độ và độ chính xác của mô hình. Các cài đặt này có thể ảnh hưởng đến hành vi của mô hình ở các giai đoạn khác nhau, bao gồm huấn luyện, xác thực và dự đoán.

Xem: Làm chủ Ultralytics YOLO: Cấu hình



Xem: Làm chủ Ultralytics YOLO: Cấu hình

Các lệnh Ultralytics sử dụng cú pháp sau:

Ví dụ

yolo TASK MODE ARGS
from ultralytics import YOLO

# Load a YOLO model from a pre-trained weights file
model = YOLO("yolo11n.pt")

# Run MODE mode using the custom arguments ARGS (guess TASK)
model.MODE(ARGS)

Trong đó:

Mặc định ARG các giá trị được định nghĩa trên trang này và đến từ cfg/defaults.yaml tệp.

Nhiệm vụ

Các mô hình 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:

Đố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, classify cho phân loại, pose cho ước tính tư thế, và obb cho các hộp giới hạn theo hướng. Mỗi tác vụ được điều chỉnh cho các đầu ra và vấn đề cụ thể trong phân tích hình ảnh và video.

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

Chế độ

Các mô hình 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ể của vòng đời mô hình:

  • Huấn luyện: Huấn luyện mô hình YOLO trên một bộ dữ liệu tùy chỉnh.
  • Val: Xác thực mô hình YOLO đã được huấn luyện.
  • Dự đoán: Sử dụng mô hình YOLO đã được huấn luyện để đưa ra dự đoán trên hình ảnh hoặc video mới.
  • Xuất: Xuất mô hình YOLO để triển khai.
  • Theo dõi: Theo dõi các đối tượng trong thời gian thực bằng mô hình YOLO.
  • Điểm chuẩn: Đánh giá tốc độ và độ chính xác của các định dạng xuất YOLO (ONNX, TensorRT, v.v.).
Đối số Mặc định Mô tả
mode 'train' Chỉ định chế độ hoạt động của mô hình YOLO: train cho việc huấn luyện mô hình, val cho việc xác thực, predict để suy luận, export để chuyển đổi sang các định dạng triển khai, track cho việc 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.

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

Cài đặt Huấn luyện

Các cài đặt huấn luyện cho các mô hình 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 mô hình. Các cài đặt chính bao gồm kích thước lô, tốc độ học, quán tính và giảm trọng lượng. Việc lựa chọn trình tối ưu hóa, hàm mất mát và thành phần bộ dữ liệu cũng ảnh hưởng đến quá trình huấn luyện. Điều chỉnh và thử nghiệm là rất quan trọng để có hiệu suất tối ưu. Để biết thêm chi tiết, hãy xem hàm điểm vào Ultralytics.

Đối số Loại Mặc định Mô tả
model str None Chỉ định tệp mô hình để huấn luyện. Chấp nhận một đường dẫn đến một mô hình đã được huấn luyện trước hoặc một tệp cấu hình YOLO. Cần thiết để xác định cấu trúc mô hình hoặc khởi tạo trọng số. .pt đã được huấn luyện trước .yaml cấu hình.
data str None Đường dẫn đến tệp cấu hình bộ dữ liệu (ví dụ: coco8.yaml). Tệp này chứa các tham số cụ thể của bộ dữ liệu, bao gồm đường dẫn đến dữ liệu huấn luyện và dữ liệu xác thực, tên lớp và số lượng lớp.
epochs int 100 Tổng số lượng epochs huấn luyện. Mỗi epoch đại diện cho một lần duyệt đầy đủ trên toàn bộ bộ 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 mô hình.
time float None Thời gian huấn luyện tối đa tính bằng giờ. Nếu được đặt, giá trị này sẽ ghi đè đối số epochs , cho phép quá trình huấn luyện tự động dừng sau khoảng thời gian được chỉ định. Hữu ích cho các tình huống huấn luyện bị giới hạn về thời gian.
patience int 100 Số lượng epochs chờ đợi mà không có sự cải thiện nào về các số liệu xác thực trước khi dừng sớm quá trình huấn luyện. Giúp ngăn ngừa tình trạ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 làm một số nguyên (ví dụ: batch=16), chế độ tự động để sử dụng 60% bộ nhớ GPU (batch=-1), hoặc chế độ tự động với 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 thay đổi kích thước thành hình vuông với các cạnh bằng giá trị được chỉ định (nếu rect=False), giữ nguyên tỷ lệ khung hình cho các mô hình YOLO nhưng không áp dụng cho RTDETR. Ảnh hưởng đến mô hình độ chính xác và độ phức tạp tính toán.
save bool True Cho phép lưu các điểm kiểm tra huấn luyện và trọng số mô hình cuối cùng. Hữu ích để tiếp tục huấn luyện hoặc triển khai mô hình.
save_period int -1 Tần suất lưu các điểm kiểm tra mô hình, được chỉ định bằng epochs. Giá trị -1 sẽ tắt tính năng này. Hữu ích để lưu các mô hình tạm thời trong các phiên huấn luyện dài.
cache bool False Cho phép lưu trữ hình ảnh bộ dữ liệu vào bộ nhớ (True/ram), trên đĩa (disk), hoặc tắt nó (False). Cải thiện tốc độ huấn luyện bằng cách giảm I/O đĩa với chi phí 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 quá trình huấn luyện: một GPU duy nhất (device=0), nhiều GPU (device=[0,1]), CPU (device=cpu), MPS cho Apple silicon (device=mps), hoặc tự động chọn GPU đang nhàn rỗi nhất (device=-1) hoặc nhiều GPU nhàn rỗi (device=[-1,-1])
workers int 8 Số lượng 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 vào mô hình, đặc biệt hữu ích trong các thiết lập nhiều GPU.
project str None Tên của thư mục dự án nơi lưu trữ 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.
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 trong thư mục dự án, nơi lưu trữ nhật ký và kết quả huấn luyện.
exist_ok bool False Nếu là True, cho phép ghi đè lên thư mục project/name hiện có. Hữu ích cho thử nghiệm lặp đi lặp lại mà không cần xóa thủ công các kết quả trước đó.
pretrained bool hoặc str True Xác định xem có bắt đầu huấn luyện từ một mô hình được huấn luyện trước hay không. Có thể là giá trị boolean hoặc đường dẫn chuỗi đến một mô hình cụ thể để tải trọng số. Nâng cao hiệu quả huấn luyện và hiệu suất mô hình.
optimizer str 'auto' Lựa chọn trình tối ưu hóa để huấn luyện. Các tùy chọn bao gồm SGD, Adam, AdamW, NAdam, RAdam, RMSProp v.v., hoặc auto để tự động lựa chọn dựa trên cấu hình mô hình. Ảnh hưởng đến tốc độ hội tụ và tính ổn định.
seed int 0 Đặt seed ngẫu nhiên cho quá trình huấn luyện, đảm bảo khả năng tái tạo kết quả trên 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 tạo 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 không tất định.
single_cls bool False Xử lý tất cả các lớp trong bộ dữ liệu đa lớp 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 hơn là phân loại.
classes list[int] None Chỉ định danh sách ID 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 Cho phép sử dụng chiến lược đệm tối thiểu—ảnh trong một lô được đệm tối thiểu để đạt được 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 mô hình.
multi_scale bool False Cho phép huấn luyện đa tỷ lệ bằng cách tăng/giảm imgsz lên đến một hệ số là 0.5 trong quá trình huấn luyện. Huấn luyện mô hình để chính xác hơn với nhiều imgsz trong quá trình suy luận.
cos_lr bool False Sử dụng bộ lập lịch tốc độ học cosine, điều chỉnh tốc độ học theo đường cong cosine qua các epochs. Giúp quản lý tốc độ học để hội tụ tốt hơn.
close_mosaic int 10 Tắt mosaic tăng cường dữ liệu trong N epochs cuối cùng để ổn định quá trình huấn luyện trước khi hoàn thành. Đặt thành 0 để tắt tính năng này.
resume bool False Tiếp tục huấn luyện từ checkpoint đã lưu cuối cùng. Tự động tải trọng số mô hình, trạng thái trình tối ưu hóa và số lượng epoch, tiếp tục huấn luyện liền mạch.
amp bool True Cho phép huấn luyện Độ chính xác hỗn hợp (AMP) tự động, giảm mức sử dụng bộ nhớ và có thể 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ệ phần trăm của bộ dữ liệu sẽ sử dụng để 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ộ bộ dữ liệu, hữu ích cho các thử nghiệm hoặc khi tài nguyên bị hạn chế.
profile bool False Cho phép lập hồ sơ tốc độ ONNX và TensorRT trong quá trình huấn luyện, hữu ích để tối ưu hóa việc triển khai mô hình.
freeze int hoặc list None Đóng băng N lớp đầu tiên của mô hình hoặc các lớp được chỉ định theo chỉ mục, giảm số lượng tham số có thể huấn luyện. Hữu ích cho tinh chỉnh hoặc chuyển giao học tập.
lr0 float 0.01 Tốc độ học ban đầu (ví dụ: SGD=1E-2, Adam=1E-3). Điều chỉnh giá trị này rất quan trọng cho quá trình tối ưu hóa, ảnh hưởng đến tốc độ cập nhật trọng số của mô hình.
lrf float 0.01 Tốc độ học cuối cùng là một phần của tốc độ ban đầu = (lr0 * lrf), được sử dụng kết hợp với 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 cho SGD hoặc beta1 cho bộ tối ưu hóa Adam, ảnh hưởng đến việc kết hợp các gradient trong quá khứ vào bản cập nhật hiện tại.
weight_decay float 0.0005 Số hạng điều chuẩn L2, phạt các trọng số lớn để ngăn ngừa overfitting.
warmup_epochs float 3.0 Số lượng epochs để khởi động tốc độ học, tăng dần tốc độ học từ giá trị thấp đến tốc độ học ban đầu để ổn định quá trình huấn luyện sớm.
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 đến động lượng đã đặt trong giai đoạn khởi động.
warmup_bias_lr float 0.1 Tỷ lệ học (learning rate) cho các tham số bias trong giai đoạn khởi động (warmup phase), giúp ổn định quá trình huấn luyện mô hình trong các epoch ban đầu.
box float 7.5 Trọng số của thành phần loss box trong hàm loss, ảnh hưởng đến mức độ nhấn mạnh vào việc dự đoán chính xác tọa độ bounding box.
cls float 0.5 Trọng số của classification loss trong hàm loss tổng thể, ảnh hưởng đến 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.
dfl float 1.5 Trọng số của distribution focal loss, được sử dụng trong một số phiên bản YOLO nhất định để phân loại chi tiết.
pose float 12.0 Trọng số của pose loss trong các mô hình được huấn luyện để ước tính tư thế (pose estimation), ảnh hưởng đến mức độ nhấn mạnh vào việc dự đoán chính xác các keypoint tư thế.
kobj float 2.0 Trọng số của keypoint objectness loss trong các mô hình ướ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ế.
nbs int 64 Kích thước batch danh định để chuẩn hóa loss.
overlap_mask bool True Xác định xem mặt nạ đối tượng nên được hợp nhất thành một mặt nạ duy nhất để huấn luyện hay giữ riêng cho từng đối tượng. Trong trường hợp chồng chéo, mặt nạ nhỏ hơn sẽ được phủ lên trên mặt nạ lớn hơn trong quá trình hợp nhất.
mask_ratio int 4 Tỷ lệ downsample cho mặt nạ phân đoạn (segmentation mask), ảnh hưởng đến độ phân giải của mặt nạ được sử dụng trong quá trình huấn luyện.
dropout float 0.0 Tỷ lệ dropout để điều chuẩn (regularization) trong các tác vụ phân loại, ngăn ngừa overfitting 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 Cho phép 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 mô hình trên một tập dữ liệu riêng biệt.
plots bool False 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 mô hình và tiến trình học.

Lưu ý về Cài đặt Kích thước Batch

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

  • Kích thước lô cố định: Chỉ định số lượng hình ảnh trên 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 tỷ lệ (ví dụ: batch=0.70) để điều chỉnh dựa trên mức sử dụng bộ nhớ GPU được chỉ định.

Hướng dẫn Huấn luyện

Cài đặt Dự đoán

Các cài đặt dự đoán cho các mô hình 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 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ổ sung như mặt nạ cũng ảnh hưởng đến dự đoán. Điều chỉnh các cài đặt này là rất cần thiết để có 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 'ultralytics/assets' Chỉ định nguồn dữ liệu cho suy luận. Có thể là đường dẫn hình ảnh, tệp video, thư mục, URL hoặc ID thiết bị cho các nguồn cấp dữ liệu trực tiếp. 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.
conf float 0.25 Đặt ngưỡng độ tin cậy tối thiểu cho các 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ị bỏ qua. Điều chỉnh giá trị này có thể giúp giảm các phát hiện sai.
iou float 0.7 Ngưỡng Intersection Over Union (IoU) cho Non-Maximum Suppression (NMS). Các 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 trùng lặp.
imgsz int hoặc tuple 640 Xác định kích thước hình ảnh cho suy luận. Có thể là một số nguyên duy nhất 640 để thay đổi kích thước hình vuông hoặc một bộ (chiều cao, chiều rộng). Định cỡ thích hợp có thể cải thiện khả năng phát hiện độ chính xác và tốc độ xử lý.
rect bool True Nếu được bật, sẽ thêm phần đệm tối thiểu vào cạnh ngắn hơn của ảnh cho đến khi chia hết cho bước tiến để cải thiện tốc độ suy luận. Nếu tắt, sẽ thêm phần đệm vào ảnh thành hình vuông trong quá trình suy luận.
half bool False Cho phép suy luận nửa độ chính xác (FP16), có thể tăng tốc độ suy luận mô hình trên các GPU được hỗ trợ với tác động tối thiểu đến độ chính xác.
device str None Chỉ định thiết bị cho suy luận (ví dụ: cpu, cuda:0 hoặc 0). Cho phép người dùng lựa chọn giữa CPU, một GPU cụ thể hoặc các thiết bị tính toán khác để thực thi mô hình.
batch int 1 Chỉ định kích thước lô cho suy luận (chỉ hoạt động khi nguồn là một thư mục, tệp video hoặc .txt tệp). 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 quá trình suy luận.
max_det int 300 Số lượng phát hiện tối đa được phép trên mỗi hình ảnh. Giới hạn tổng số đối tượng mà mô hình có thể phát hiện trong một lần suy luận, ngăn chặn đầu ra quá mức trong các cảnh dày đặc.
vid_stride int 1 Bước nhảy khung hình cho dữ liệu đầu vào video. Cho phép bỏ qua các khung hình trong video để tăng tốc độ xử lý, đánh đổi bằng độ 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 chờ các khung hình đến cho luồng video hay không. Nếu False, các khung hình cũ bị loại bỏ để nhường chỗ cho các khung hình mới (được tối ưu hóa cho các ứng dụng thời gian thực). Nếu True, xếp hàng các khung hình mới vào bộ đệm, đảm bảo không bỏ qua khung hình nào, nhưng sẽ gây ra độ trễ nếu FPS suy luận thấp hơn FPS luồng.
visualize bool False Kích hoạt trực quan hóa các đặc trưng của mô hình trong quá trình suy luận, cung cấp thông tin chi tiết về những gì mô hình đang "nhìn thấy". Hữu ích cho việc gỡ lỗi và diễn giải mô hình.
augment bool False Cho phép tăng cường dữ liệu lúc kiểm thử (TTA) để dự đoán, có khả năng cải thiện độ mạnh mẽ của việc phát hiện nhưng phải trả giá bằng tốc độ suy luận.
agnostic_nms bool False Cho phép loại bỏ chồng lấp không phân biệt lớp (NMS), giúp hợp nhất các hộp chồng lấp của các lớp khác nhau. Hữu ích trong các tình huống phát hiện đa lớp, nơi sự chồng lấp lớp là phổ biến.
classes list[int] None Lọc các dự đoán theo một tập hợp ID lớp. Chỉ các 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 có liên quan trong các tác vụ phát hiện đa lớp.
retina_masks bool False Trả về mặt nạ phân đoạn có độ phân giải cao. Các mặt nạ được trả về (masks.data) sẽ khớp với kích thước hình ảnh gốc nếu được bật. Nếu tắt, chúng sẽ có kích thước hình ảnh được sử dụng trong quá trình suy luận.
embed list[int] None Chỉ định các lớp để trích xuất vectơ đặc trưng hoặc nhúng. Hữu ích cho các tác vụ hạ nguồn như phân cụm hoặc tìm kiếm tương tự.
project str None Tên của thư mục dự án nơi lưu trữ đầu ra 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 thư mục con bên trong thư mục dự án, nơi lưu trữ đầu ra dự đoán nếu save được bật.
stream bool False Cho phép xử lý tiết kiệm bộ nhớ cho các video dài hoặc nhiều hình ảnh bằng cách trả về một trình tạo các đối tượng Kết quả thay vì tải tất cả các khung hình vào bộ nhớ cùng một 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 theo thời gian thực về quá trình dự đoán.

Các đối số trực quan hóa:

Đối số Loại Mặc định Mô tả
show bool False Nếu True, hiển thị hình ảnh hoặc video đã chú thích trong một cửa sổ. Hữu ích để có phản hồi trực quan ngay lập tức trong quá trình phát triển hoặc thử nghiệm.
save bool False or True Cho phép lưu hình ảnh hoặc video đã chú thích vào tệp. Hữu ích cho việc lập 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 các khung hình riêng lẻ 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 trong một tệp 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 điểm tin cậy trong các tệp văn bản đã lưu. Nâng cao chi tiết có sẵn để xử lý và phân tích hậu kỳ.
save_crop bool False Lưu hình ảnh đã cắt của các phát hiện. Hữu ích cho việc tăng cường tập 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 lần phát hiện trong đầu ra trực quan. Cung cấp sự hiểu biết ngay lập tức về các đối tượng được phát hiện.
show_conf bool True Hiển thị điểm tin cậy cho mỗi lần phát hiện cùng với nhãn. Cung cấp cái nhìn sâu sắc về độ chắc chắn của mô hình cho mỗi lần phát hiện.
show_boxes bool True Vẽ các hộp giới hạn xung quanh các đối tượng được phát hiện. Cần thiết cho việc xác định trực quan và vị trí của các đối tượng trong hình ảnh hoặc khung hình video.
line_width None or int None Chỉ định độ rộng đường của hộp giới hạn. Nếu None, độ rộng đường kẻ được tự động điều chỉnh dựa trên kích thước hình ảnh. Cung cấp tùy chỉnh trực quan để rõ ràng hơn.

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

Cài đặt xác thực

Các cài đặt validation (kiểm định) cho các mô hình YOLO bao gồm các siêu tham số và cấu hình để đánh giá hiệu suất trên một validation dataset (tập dữ liệu kiểm định). Các cài đặt này ảnh hưởng đến hiệu suất, tốc độ và accuracy (độ chính xác). Các cài đặt phổ biến bao gồm batch size (kích thước lô), tần suất validation (kiểm định) và các số liệu hiệu suất. Kích thước và thành phần của validation dataset (tập dữ liệu kiểm định), cùng với nhiệm vụ cụ thể, cũng ảnh hưởng đến quá trình.

Đối số Loại Mặc định Mô tả
data str None Chỉ định đường dẫn đến tệp cấu hình bộ dữ liệu (ví dụ: coco8.yaml). Tệp này bao gồm các đường dẫn đến dữ liệu xác thực, tên lớp và số lượng lớp.
imgsz int 640 Xác định kích thước của hình ảnh đầu vào. Tất cả hình ảnh được thay đổi kích thước thành kích thước này trước khi xử lý. Kích thước lớn hơn có thể cải thiện độ chính xác cho các đối tượng nhỏ nhưng làm tăng thời gian tính toán.
batch int 16 Đặt số lượng hình ảnh trên mỗi lô (batch). Giá trị cao hơn sử dụng bộ nhớ GPU hiệu quả hơn nhưng yêu cầu nhiều VRAM hơn. Điều chỉnh dựa trên tài nguyên phần cứng có sẵn.
save_json bool False Nếu True, lưu kết quả vào tệp JSON để phân tích sâu hơn, tích hợp với các công cụ khác hoặc gửi đến các máy chủ đánh giá như COCO.
conf float 0.001 Đặt ngưỡng tin cậy tối thiểu cho các phát hiện. Giá trị thấp hơn làm tăng độ nhạy nhưng có thể đưa vào nhiều kết quả dương tính giả hơn. Được sử dụng trong quá trình xác thực để tính toán đường cong độ chính xác-độ nhạy.
iou float 0.7 Đặt ngưỡng Intersection Over Union (IoU) cho Non-Maximum Suppression (NMS). Kiểm soát việc loại bỏ các phát hiện trùng lặp.
max_det int 300 Giới hạn số lượng phát hiện tối đa trên mỗi hình ảnh. Hữu ích trong các cảnh dày đặc để ngăn chặn các phát hiện quá mức và quản lý tài nguyên tính toán.
half bool True Cho phép tính toán nửa độ chính xác (FP16), giảm mức sử dụng bộ nhớ và có khả năng tăng tốc độ với tác động tối thiểu đến độ chính xác.
device str None Chỉ định thiết bị để xác thực (cpu, cuda:0, v.v.). Khi None, tự động chọn thiết bị khả dụng tốt nhất. Có thể chỉ định nhiều thiết bị CUDA bằng cách phân tách bằng dấu phẩy.
dnn bool False Nếu True, sử dụng OpenCV mô-đun DNN để suy luận mô hình ONNX, cung cấp một giải pháp thay thế cho PyTorch các phương pháp suy luận.
plots bool False Khi được đặt thành True, tạo và lưu các biểu đồ dự đoán so với ground truth, ma trận nhầm lẫn và đường cong PR để đánh giá trực quan hiệu suất của mô hình.
classes list[int] None Chỉ định danh sách ID lớp để đào tạo. Hữu ích để lọc ra và chỉ tập trung vào một số lớp nhất định trong quá trình đánh giá.
rect bool True Nếu True, sử dụng suy luận hình chữ nhật để tạo hàng loạt, giảm phần đệm và có khả năng tăng tốc độ và hiệu quả bằng cách xử lý hình ảnh theo tỷ lệ khung hình gốc của chúng.
split str 'val' Xác định phần chia tập dữ liệu để sử dụng cho quá trình xác thực (validation) (val, test, hoặc train). Cho phép linh hoạt trong việc lựa chọn phân đoạn dữ liệu để đánh giá hiệu suất.
project str None Tên của thư mục dự án nơi lưu trữ các đầu ra xác thực. Giúp sắp xếp kết quả từ các thử nghiệm hoặc mô hình khác nhau.
name str None Tên của lần chạy xác thực. Được sử dụng để tạo thư mục con trong thư mục dự án, nơi lưu trữ nhật ký và đầu ra xác thực.
verbose bool False Nếu True, hiển thị thông tin chi tiết trong quá trình xác thực, bao gồm các số liệu trên mỗi lớp, tiến trình lô và thông tin gỡ lỗi bổ sung.
save_txt bool False Nếu True, lưu kết quả phát hiện trong các tệp văn bản, với một tệp cho mỗi hình ảnh, hữu ích cho phân tích sâu hơn, xử lý hậu kỳ tùy chỉnh hoặc tích hợp với các hệ thống khác.
save_conf bool False Nếu True, bao gồm các giá trị tin cậy trong các tệp văn bản đã lưu khi save_txt được bật, cung cấp đầu ra chi tiết hơn để phân tích và lọc.
workers int 8 Số lượng luồng worker để tải dữ liệu. Giá trị cao hơn có thể tăng tốc quá trình tiền xử lý dữ liệu nhưng có thể làm tăng mức sử dụng CPU. Đặt thành 0 sẽ sử dụng luồng chính, luồng này có thể ổn định hơn trong một số môi trường.
augment bool False Cho phép tăng cường thời gian kiểm tra (TTA) trong quá trình xác thực, có khả năng cải thiện độ chính xác phát hiện với chi phí là tốc độ suy luận bằng cách chạy suy luận trên các phiên bản đã được chuyển đổi của đầu vào.
agnostic_nms bool False Cho phép Triệt tiêu không tối đa không phân biệt lớp, hợp nhất các hộp chồng chéo bất kể lớp được dự đoán của chúng. Hữu ích cho các ứng dụng tập trung vào đối tượng.
single_cls bool False Xem tất cả các lớp như một lớp duy nhất trong quá trình xác thực. Hữu ích để đánh giá hiệu suất mô hình trên các tác vụ phát hiện nhị phân hoặc khi sự khác biệt giữa các lớp không quan trọng.
visualize bool False Trực quan hóa ground truth, true positive, false positive và false negative cho mỗi hình ảnh. Hữu ích cho việc gỡ lỗi và diễn giải mô hình.

Việc điều chỉnh và thử nghiệm cẩn thận là rất quan trọng để đảm bảo hiệu suất tối ưu, đồng thời phát hiện và ngăn chặn tình trạng quá khớp (overfitting).

Hướng dẫn Val

Cài đặt xuất

Cài đặt xuất cho các mô hình YOLO bao gồm các cấu hình để lưu hoặc xuất mô hình để 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à khả năng 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ư mặt nạ. Nhiệm vụ của mô hình 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 mô hình đã 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 cho phép khả năng tương thích với các môi trường triển khai.
imgsz int hoặc tuple 640 Kích thước hình ảnh mong muốn cho đầu vào của mô hình. Có thể là một số nguyên cho hình ả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 Cho phép 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 Áp dụng tối ưu hóa cho thiết bị di động khi xuất sang TorchScript, có khả năng giảm kích thước mô hình và cải thiện hiệu suất suy luận. Không tương thích với định dạng NCNN hoặc thiết bị CUDA.
half bool False Cho phép lượng tử hóa FP16 (nửa độ chính xác), giảm kích thước mô hình và có khả năng tăng tốc độ suy luận trên phần cứng được hỗ trợ. Không tương thích với lượng tử hóa INT8 hoặc xuất chỉ CPU cho ONNX.
int8 bool False Kích hoạt lượng tử hóa INT8, nén thêm mô hình và tăng tốc suy luận với mức giảm độ chính xác tối thiểu, chủ yếu dành cho các thiết bị biên. Khi được sử dụng với TensorRT, sẽ thực hiện lượng tử hóa sau huấn luyện (PTQ).
dynamic bool False Cho phép kích thước đầu vào động cho các định dạng xuất ONNX, TensorRT và OpenVINO, tăng cường tính linh hoạt trong việc xử lý các kích thước ảnh khác nhau. Tự động được đặt thành True Khi sử dụng TensorRT với INT8.
simplify bool True Đơn giản hóa đồ thị mô hình cho xuất ONNX với onnxslim, 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 để tương thích với các trình phân tích cú pháp và thời gian chạy ONNX khác nhau. Nếu không được đặt, sẽ 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 không gian làm việc tối đa tính bằng GiB cho TensorRT tối ưu hóa, cân bằng 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 mô hình đã xuất khi được hỗ trợ (xem Định dạng xuất), cải thiện hiệu quả xử lý hậu kỳ phát hiện. Không khả dụng cho các mô hình end2end.
batch int 1 Chỉ định kích thước lô suy luận của mô hình xuất hoặc số lượng hình ảnh tối đa mà mô hình đã xuất sẽ xử lý đồng thời trong predict mode. Đối với xuất Edge TPU, giá trị này tự động được đặ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) hoặc DLA cho NVIDIA Jetson (device=dla:0 hoặc device=dla:1). Xuất TensorRT tự động sử dụng GPU.
data str 'coco8.yaml' Đường dẫn đến tập dữ liệu tệp cấu hình (mặc định: coco8.yaml), cần thiết cho việc hiệu chỉnh lượng tử hóa INT8. Nếu không được chỉ định khi bật INT8, một tập dữ liệu mặc định sẽ được chỉ định.
fraction float 1.0 Chỉ định tỷ lệ phần trăm của tập dữ liệu được sử dụng để hiệu chỉnh lượng tử hóa INT8. Cho phép hiệu chỉnh trên một tập hợp con của toàn bộ tập dữ liệu, hữu ích cho các thử nghiệm hoặc khi tài nguyên bị hạn chế. Nếu không được chỉ định khi bật INT8, toàn bộ tập dữ liệu sẽ được sử dụng.

Cấu hình chu đáo đảm bảo mô hình đã 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 mục tiêu.

Hướng dẫn Xuất

Cài đặt giải pháp

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

Đối số Loại Mặc định Mô tả
model str None Đường dẫn đến Tệp Mô hình Ultralytics YOLO.
region list '[(20, 400), (1260, 400)]' Danh sách các điểm xác định vùng đếm.
show_in bool True Cờ để kiểm soát việc có hiển thị số lượng trong luồng video hay không.
show_out bool True Cờ để kiểm soát việc có hiển thị số lượng đối tượng đếm được trên luồng video hay không.
analytics_type str line Loại biểu đồ, ví dụ: line, bar, area, hoặc pie.
colormap int cv2.COLORMAP_JET Bảng màu để 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 độ đỗ xe.
up_angle float 145.0 Ngưỡng góc cho tư thế 'lên'.
kpts list[int, int, int] '[6, 8, 10]' Danh sách các điểm chính được sử dụng để theo dõi quá trình tập luyện. Các điểm chính này tương ứng với các 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, tập cơ bụng.
down_angle float 90.0 Ngưỡng góc cho tư thế 'xuống'.
blur_ratio float 0.5 Điều chỉnh tỷ lệ phần trăm cường độ mờ, với các giá trị trong phạm vi 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ần 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ầm nhìn sẽ theo dõi các đối tượng và vẽ đường dẫn bằ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[int, int] (12.8, 7.2) Kích thước hì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 để tính toán tốc độ.
max_hist int 5 Số điểm lịch sử tối đa để theo dõi trên mỗi đối tượng để 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 thành đơn vị thế giới thực.
max_speed int 120 Giới hạn tốc độ tối đa trong lớp phủ trực quan (được sử dụng trong cảnh báo).
data str 'images' Đường dẫn đến thư mục hình ảnh được sử dụng cho tìm kiếm tương tự.

Hướng dẫn giải pháp

Cài đặt tăng cường dữ liệu

Các kỹ thuật tăng cường dữ liệu rất cần thiết để cải thiện tính mạnh mẽ và hiệu suất của mô hình YOLO bằng cách đưa sự thay đổi vào dữ liệu huấn luyện, giúp mô hình khái quát hóa tốt hơn cho dữ liệu chưa thấy. Bảng sau đây phác thảo mục đích và hiệu quả của từng đối số tăng cường:

Đối số Loại Mặc định Phạm vi Mô tả
hsv_h float 0.015 0.0 - 1.0 Điều chỉnh màu sắc của hình ảnh theo một phần của bánh xe màu, tạo ra sự thay đổi màu sắc. Giúp mô hình khái quát hóa trong các điều kiện ánh sáng khác nhau.
hsv_s float 0.7 0.0 - 1.0 Thay đổi độ bão hòa của ảnh theo một tỷ lệ nhất định, ảnh hưởng đến cường độ màu sắc. Hữu ích để mô phỏng các điều kiện môi trường khác nhau.
hsv_v float 0.4 0.0 - 1.0 Điều chỉnh giá trị (độ sáng) của ảnh theo một tỷ lệ nhất định, giúp mô hình hoạt động tốt trong các điều kiện ánh sáng khác nhau.
degrees float 0.0 0.0 - 180 Xoay ảnh ngẫu nhiên trong phạm vi độ được chỉ định, cải thiện khả năng nhận diện đối tượng ở nhiều hướng khác nhau của mô hình.
translate float 0.1 0.0 - 1.0 Tịnh tiến ảnh theo chiều ngang và chiều dọc theo một tỷ lệ 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 >=0.0 Thay đổi tỷ lệ ảnh theo hệ số усиление, mô phỏng các đối tượng ở các khoảng cách khác nhau từ máy ảnh.
shear float 0.0 -180 - +180 Xén ảnh theo một độ được chỉ định, mô phỏng hiệu ứng của các đối tượng được xem từ các góc khác nhau.
perspective float 0.0 0.0 - 0.001 Áp dụng phép biến đổi phối cảnh ngẫu nhiên cho ảnh, tăng cường khả năng hiểu các đối tượng trong không gian 3D của mô hình.
flipud float 0.0 0.0 - 1.0 Lật ngược ảnh với xác suất được chỉ định, tăng tính biến đổi của dữ liệu mà không ảnh hưởng đến các đặc điểm của đối tượng.
fliplr float 0.5 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 tính đa dạng của tập dữ liệu.
bgr float 0.0 0.0 - 1.0 Lật các kênh hình ảnh từ RGB sang BGR với xác suất được chỉ định, hữu ích để tăng cường khả năng chống chịu với việc sắp xếp kênh không chính xác.
mosaic float 1.0 0.0 - 1.0 Kết hợp bốn ảnh huấn luyện thành một, mô phỏng các thành phần cảnh và tương tác đối tượng khác nhau. Rất hiệu quả để hiểu các cảnh phức tạp.
mixup float 0.0 0.0 - 1.0 Trộn hai ảnh và nhãn của chúng, tạo ra một ảnh tổng hợp. Nâng cao khả năng khái quát hóa của mô hình bằng cách đưa vào nhiễu nhãn và tính biến đổi trực quan.
cutmix float 0.0 0.0 - 1.0 Kết hợp các phần của hai ảnh, tạo ra sự pha trộn một phần trong khi vẫn duy trì các vùng riêng biệt. Tăng cường tính mạnh mẽ của mô hình bằng cách tạo ra các tình huống che khuất.
copy_paste float 0.0 0.0 - 1.0 Chỉ phân đoạn. Sao chép và dán các đối tượng trên các hình ảnh để tăng số lượng đối tượng.
copy_paste_mode str flip - Chỉ phân vùng (Segmentation only). Chỉ định copy-paste chiến lược để sử dụng. Các tùy chọn bao gồm 'flip''mixup'.
auto_augment str randaugment - Chỉ phân loại. Áp dụng chính sách tăng cường được xác định trước ('randaugment', 'autoaugment', hoặc 'augmix') để nâng cao hiệu suất mô hình thông qua sự đa dạng trực quan.
erasing float 0.4 0.0 - 0.9 Chỉ phân loại. Xóa ngẫu nhiên các vùng của hình ảnh trong quá trình đào tạo để khuyến khích mô hình tập trung vào các đặc điểm ít rõ ràng hơn.

Điều chỉnh các cài đặt này để đáp ứng các yêu cầu của tập dữ liệu 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 dữ liệu tối ưu để có hiệu suất mô hình tốt nhất.

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

Cài đặt ghi log, điểm kiểm tra và vẽ đồ thị

Ghi nhật ký, điểm kiểm tra, vẽ đồ thị và quản lý tệp là rất quan trọng khi huấn luyện mô hình YOLO:

  • Ghi nhật ký: Theo dõi tiến trình của mô hình và chẩn đoán các vấn đề 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 tin.
  • Điểm kiểm tra (Checkpoints): Lưu mô hình theo các khoảng thời gian đều đặn để tiếp tục huấn luyện hoặc thử nghiệm với các cấu hình khác nhau.
  • Vẽ đồ thị: Trực quan hóa hiệu suất và tiến trình huấn luyện bằng cách sử dụng các thư viện như matplotlib hoặc TensorBoard.
  • Quản lý tập tin: Sắp xếp các tập tin được tạo trong quá trình huấn luyện, chẳng hạn như điểm kiểm tra, tập tin nhật ký và biểu đồ, để 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 độ và giúp gỡ lỗi và tối ưu hóa dễ dàng hơn.

Đối số Mặc định Mô tả
project 'runs' Chỉ định thư mục gốc để lưu các lần chạy huấn luyện. Mỗi lần chạy được lưu trong một thư mục con riêng biệt.
name 'exp' Xác định tên của thử nghiệm. Nếu không được chỉ định, YOLO sẽ tăng tên này cho mỗi lần chạy (ví dụ: exp, exp2) để tránh ghi đè.
exist_ok False Xác định xem 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 nó.
plots False Kiểm soát việc tạo và lưu các đồ thị huấn luyện và xác thực. Đặt thành True để tạo các biểu đồ như đường cong mất mát, độ chính xác-độ chính xác đường cong và các dự đoán mẫu để theo dõi trực quan hiệu suất.
save False Cho phép lưu các điểm kiểm tra huấn luyện và trọng số mô hình cuối cùng. Đặt thành True để lưu trạng thái mô hình định kỳ, cho phép tiếp tục huấn luyện hoặc triển khai mô hình.

Câu hỏi thường gặp

Làm cách nào để cải thiện hiệu suất của mô hình YOLO trong quá trình huấn luyện?

Cải thiện hiệu suất bằng cách điều chỉnh các siêu tham số như kích thước lô, tốc độ học, quán tính và hệ số phân rã trọng số. Điều chỉnh cài đặt tăng cường dữ liệu, chọn trình tối ưu hóa phù hợp và sử dụng các kỹ thuật như dừng sớm hoặc độ chính xác hỗn hợp. Để biết chi tiết, hãy xem Hướng dẫn huấn luyện.

Các siêu tham số chính cho độ chính xác của mô hình YOLO là gì?

Các siêu tham số chính ảnh hưởng đến độ chính xác bao gồm:

  • Kích thước lô (batch): Kích thước lớn hơn có thể ổn định quá trình huấn luyện nhưng cần nhiều bộ nhớ hơn.
  • Tỷ lệ học (Learning Rate) (lr0): Tỷ lệ nhỏ hơn cung cấp các điều chỉnh tốt nhưng hội tụ chậm hơn.
  • Động lượng (Momentum) (momentum): Tăng tốc các vectơ gradient, giảm dao động.
  • Kích thước ảnh (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 Cài đặt huấn luyện.

Làm cách nào để thiết lập tốc độ học cho việc huấn luyện mô hình YOLO?

Tỷ lệ học (learning rate) (lr0) là rất quan trọng; hãy bắt đầu với 0.01 cho SGD hoặc 0.001 cho Trình tối ưu hóa Adam. Theo dõi các chỉ số và điều chỉnh khi cần thiết. Sử dụng bộ lập lịch tốc độ học cosine (cos_lr) hoặc warmup (warmup_epochs, warmup_momentum). Chi tiết có trong Hướng dẫn Huấn luyện.

Các cài đặt suy luận mặc định cho các mô hình YOLO là gì?

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

  • Ngưỡng tin cậy (Confidence Threshold) (conf=0.25)): Mức độ tin cậy tối thiểu cho các phát hiện.
  • Ngưỡng IoU (IoU Threshold) (iou=0.7): Cho Triệt tiêu phi cực đại (NMS).
  • Kích thước ảnh (Image Size) (imgsz=640): Thay đổi kích thước hình ảnh đầu vào.
  • Thiết bị (Device) (device=None): Chọn CPU hoặc GPU.

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

Tại sao nên sử dụng huấn luyện độ chính xác hỗn hợp với các mô hình YOLO?

Độ chính xác hỗn hợp đang huấn luyện (amp=True) giúp 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. Nó có lợi cho các GPU hiện đại, cho phép các mô hình lớn hơn và tính toán nhanh hơn mà không làm giảm đáng kể độ chính xác. Tìm hiểu thêm trong Hướng dẫn Huấn luyện.



📅 Đã tạo 1 năm trước ✏️ Cập nhật 2 tháng trước

Bình luận