Huấn luyện mô hình với Ultralytics YOLO

Ultralytics YOLO ecosystem and integrations

Giới thiệu

Huấn luyện một mô hình deep learning bao gồm việc cung cấp dữ liệu và điều chỉnh các tham số của nó để mô hình có thể đưa ra các dự đoán chính xác. Chế độ Train trong Ultralytics YOLO26 được thiết kế để huấn luyện các mô hình phát hiện đối tượng một cách hiệu quả và năng suất, tận dụng tối đa khả năng của phần cứng hiện đại. Hướng dẫn này nhằm bao quát tất cả các chi tiết bạn cần để bắt đầu huấn luyện các mô hình của riêng mình bằng cách sử dụng bộ tính năng mạnh mẽ của YOLO26.



Watch: How to Train a YOLO model on Your Custom Dataset in Google Colab.

Tại sao nên chọn Ultralytics YOLO để huấn luyện?

Dưới đây là một số lý do thuyết phục để chọn chế độ Train của YOLO26:

  • Hiệu suất: Tận dụng tối đa phần cứng của bạn, cho dù bạn đang sử dụng thiết lập một GPU hay mở rộng quy mô trên nhiều GPU.
  • Tính linh hoạt: Huấn luyện trên các bộ dữ liệu tùy chỉnh ngoài những bộ dữ liệu có sẵn như COCO, VOC và ImageNet.
  • Thân thiện với người dùng: Các giao diện CLI và Python đơn giản nhưng mạnh mẽ cho trải nghiệm huấn luyện trực quan.
  • Tính linh hoạt của Siêu tham số (Hyperparameter): Một loạt các siêu tham số có thể tùy chỉnh để tinh chỉnh hiệu suất mô hình. Để kiểm soát sâu hơn, bạn có thể tùy chỉnh bộ huấn luyện.
  • Huấn luyện trên đám mây: Huấn luyện trên các GPU đám mây thông qua Ultralytics Platform với các chỉ số theo thời gian thực và tự động lưu checkpoint.

Các tính năng chính của chế độ Train

Sau đây là một số tính năng đáng chú ý của chế độ Train trong YOLO26:

  • Tự động tải xuống bộ dữ liệu: Các bộ dữ liệu tiêu chuẩn như COCO, VOC và ImageNet được tải xuống tự động trong lần sử dụng đầu tiên.
  • Hỗ trợ đa GPU: Mở rộng quy mô các nỗ lực huấn luyện của bạn một cách liền mạch trên nhiều GPU để đẩy nhanh quá trình.
  • Cấu hình Siêu tham số: Tùy chọn sửa đổi siêu tham số thông qua các tệp cấu hình YAML hoặc các đối số CLI.
  • Trực quan hóa và Giám sát: Theo dõi thời gian thực các chỉ số huấn luyện và trực quan hóa quá trình học tập để có thông tin chi tiết tốt hơn.
Mẹo
  • Các bộ dữ liệu YOLO26 như COCO, VOC, ImageNet và nhiều bộ dữ liệu khác sẽ tự động tải xuống trong lần sử dụng đầu tiên, ví dụ: yolo train data=coco.yaml

Ví dụ sử dụng

Huấn luyện YOLO26n trên bộ dữ liệu COCO8 trong 100 epochs với kích thước ảnh 640. Thiết bị huấn luyện có thể được chỉ định bằng cách sử dụng đối số device. Nếu không có đối số nào được truyền, GPU device=0 sẽ được sử dụng khi có sẵn; nếu không, device='cpu' sẽ được sử dụng. Xem phần Đối số bên dưới để biết danh sách đầy đủ các đối số huấn luyện.

Lỗi đa xử lý (Multi-Processing) trên Windows

Trên Windows, bạn có thể nhận được RuntimeError khi khởi chạy huấn luyện dưới dạng tập lệnh. Hãy thêm khối if __name__ == "__main__": trước mã huấn luyện của bạn để giải quyết lỗi này.

Ví dụ về huấn luyện trên một GPU và CPU

Thiết bị được xác định tự động. Nếu có GPU, nó sẽ được sử dụng (mặc định là thiết bị CUDA 0); nếu không, quá trình huấn luyện sẽ bắt đầu trên CPU.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.yaml")  # build a new model from YAML
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n.yaml").load("yolo26n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Huấn luyện đa GPU

Huấn luyện đa GPU cho phép sử dụng hiệu quả hơn các tài nguyên phần cứng hiện có bằng cách phân phối tải huấn luyện trên nhiều GPU. Tính năng này khả dụng thông qua cả Python API và giao diện dòng lệnh. Để bật tính năng huấn luyện đa GPU, hãy chỉ định các ID thiết bị GPU bạn muốn sử dụng.

Ví dụ về huấn luyện đa GPU

Để huấn luyện với 2 GPU, các thiết bị CUDA 0 và 1, hãy sử dụng các lệnh sau. Mở rộng sang các GPU bổ sung nếu cần.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with 2 GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[0, 1])

# Train the model with the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])
Huấn luyện đa GPU với mã tùy chỉnh

Khi bạn chỉ định nhiều thiết bị (ví dụ: device=[0, 1]), Ultralytics sẽ tự động khởi tạo một instance bộ huấn luyện mới và thực thi torch.distributed.run trong nền. Điều này hoạt động liền mạch cho việc sử dụng CLI tiêu chuẩn và các tập lệnh Python không sửa đổi.

Tuy nhiên, nếu tập lệnh của bạn chứa các thành phần tùy chỉnh—chẳng hạn như bộ huấn luyện, bộ xác thực, bộ dữ liệu hoặc quy trình tăng cường (augmentation pipeline) tùy chỉnh—thì các đối tượng này không thể được tự động serialize và chuyển sang các tiến trình con DDP. Trong trường hợp này, bạn phải khởi chạy trực tiếp tập lệnh của mình bằng torch.distributed.run:

python -m torch.distributed.run --nproc_per_node 2 your_training_script.py

Huấn luyện trên GPU nhàn rỗi (Idle GPU)

Huấn luyện trên GPU nhàn rỗi cho phép tự động chọn các GPU ít được sử dụng nhất trong các hệ thống đa GPU, tối ưu hóa việc sử dụng tài nguyên mà không cần chọn GPU thủ công. Tính năng này xác định các GPU khả dụng dựa trên các chỉ số sử dụng và bộ nhớ VRAM khả dụng.

Ví dụ về huấn luyện trên GPU nhàn rỗi

Để tự động chọn và sử dụng (các) GPU nhàn rỗi nhất để huấn luyện, hãy sử dụng đối số thiết bị -1. Điều này đặc biệt hữu ích trong các môi trường điện toán chia sẻ hoặc các máy chủ có nhiều người dùng.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train using the single most idle GPU
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=-1)

# Train using the two most idle GPUs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device=[-1, -1])

Thuật toán tự động chọn ưu tiên các GPU có:

  1. Tỷ lệ sử dụng hiện tại thấp hơn
  2. Bộ nhớ khả dụng cao hơn (VRAM trống)
  3. Nhiệt độ và mức tiêu thụ điện năng thấp hơn

Tính năng này đặc biệt có giá trị trong các môi trường điện toán chia sẻ hoặc khi chạy nhiều tác vụ huấn luyện trên các mô hình khác nhau. Nó tự động thích ứng với các điều kiện hệ thống thay đổi, đảm bảo phân bổ tài nguyên tối ưu mà không cần can thiệp thủ công.

Huấn luyện MPS trên Apple Silicon

Với sự hỗ trợ cho các chip Apple silicon được tích hợp trong các mô hình Ultralytics YOLO, giờ đây bạn có thể huấn luyện các mô hình của mình trên các thiết bị sử dụng khung Metal Performance Shaders (MPS) mạnh mẽ. MPS cung cấp cách thực thi các tác vụ tính toán và xử lý hình ảnh hiệu năng cao trên chip silicon tùy chỉnh của Apple.

Để bật huấn luyện trên chip Apple silicon, bạn nên chỉ định 'mps' làm thiết bị của mình khi bắt đầu quy trình huấn luyện. Dưới đây là ví dụ về cách bạn có thể thực hiện việc này trong Python và thông qua dòng lệnh:

Ví dụ về huấn luyện MPS
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model with MPS
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Trong khi tận dụng sức mạnh tính toán của các chip Apple silicon, điều này cho phép xử lý hiệu quả hơn các tác vụ huấn luyện. Để biết hướng dẫn chi tiết hơn và các tùy chọn cấu hình nâng cao, vui lòng tham khảo tài liệu PyTorch MPS.

Tiếp tục huấn luyện bị gián đoạn

Tiếp tục huấn luyện từ trạng thái đã lưu trước đó là một tính năng quan trọng khi làm việc với các mô hình deep learning. Điều này hữu ích trong nhiều tình huống, như khi quá trình huấn luyện bị gián đoạn đột ngột, hoặc khi bạn muốn tiếp tục huấn luyện một mô hình với dữ liệu mới hoặc cho nhiều epoch hơn.

Khi việc huấn luyện được tiếp tục, Ultralytics YOLO sẽ tải các trọng số từ mô hình đã lưu cuối cùng và cũng khôi phục trạng thái bộ tối ưu hóa (optimizer), bộ lập lịch tỷ lệ học tập và số epoch. Điều này cho phép bạn tiếp tục quá trình huấn luyện một cách liền mạch từ điểm dừng trước đó.

Bạn có thể dễ dàng tiếp tục huấn luyện trong Ultralytics YOLO bằng cách đặt đối số resume thành True khi gọi phương thức train và chỉ định đường dẫn đến tệp .pt chứa các trọng số mô hình đã huấn luyện một phần.

Dưới đây là ví dụ về cách tiếp tục một quá trình huấn luyện bị gián đoạn bằng Python và thông qua dòng lệnh:

Ví dụ về Tiếp tục Huấn luyện
from ultralytics import YOLO

# Load a model
model = YOLO("path/to/last.pt")  # load a partially trained model

# Resume training
results = model.train(resume=True)

Bằng cách đặt resume=True, hàm train sẽ tiếp tục huấn luyện từ điểm dừng trước đó, sử dụng trạng thái được lưu trữ trong tệp 'path/to/last.pt'. Nếu đối số resume bị bỏ qua hoặc đặt thành False, hàm train sẽ bắt đầu một phiên huấn luyện mới.

Hãy nhớ rằng các checkpoint được lưu ở cuối mỗi epoch theo mặc định, hoặc theo các khoảng thời gian cố định bằng cách sử dụng đối số save_period, vì vậy bạn phải hoàn thành ít nhất 1 epoch để tiếp tục một lần huấn luyện.

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 nhiều siêu tham số và cấu hình khác nhau được sử dụng trong quá trình huấn luyện. Những cài đặt này ả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 huấn luyện chính bao gồm kích thước lô (batch size), tốc độ học tập, động lượng và phân rã trọng số. Ngoài ra, việc lựa chọn bộ tối ưu hóa, hàm mất mát và cấu phần bộ dữ liệu huấn luyện có thể ảnh hưởng đến quá trình huấn luyện. Việc tinh chỉnh và thử nghiệm cẩn thận với các cài đặt này là rất quan trọng để tối ưu hóa hiệu suất.

Bộ tối ưu hóa MuSGD

Trong YOLO26, MuSGD là một bộ tối ưu hóa lai kết hợp các cập nhật SGD tiêu chuẩn với các cập nhật trực giao kiểu Muon.

Nó được khuyến nghị cho các lần huấn luyện YOLO26 dài hơn và các bộ dữ liệu lớn hơn, nơi các cập nhật Muon trực giao có thể giúp ổn định quá trình tối ưu hóa.

Chỉ các tham số có param.ndim >= 2 (chẳng hạn như trọng số tích chập) mới nhận được cập nhật kiểu Muon cùng với SGD, trong khi các tham số có chiều thấp hơn như các lớp chuẩn hóa lô (batch normalization) và các thuật ngữ bias vẫn giữ nguyên SGD tiêu chuẩn.

Khi optimizer=auto được sử dụng, Ultralytics tự động chọn MuSGD cho các lần huấn luyện dài hơn (thường là khi số lần lặp > 10000). Đối với các lần chạy ngắn hơn, bộ huấn luyện sẽ quay lại AdamW.

Ví dụ sử dụng:

yolo train model=yolo26n.pt data=coco8.yaml optimizer=MuSGD

Xem triển khai trong ultralytics/optim/muon.py và logic tự động chọn bộ tối ưu hóa trong BaseTrainer.build_optimizer.

Tham sốLoạiMặc địnhMô tả
modelstrNoneChỉ định tệp mô hình để huấn luyện. Chấp nhận đường dẫn đến tệp mô hình đã huấn luyện trước đó .pt hoặc tệp cấu hình .yaml. Rất cần thiết để xác định cấu trúc mô hình hoặc khởi tạo trọng số.
datastrNoneĐường dẫn đến tệp cấu hình tập dữ liệu (ví dụ: coco8.yaml). Tệp này chứa các tham số cụ thể của tập dữ liệu, bao gồm đường dẫn đến dữ liệu huấn luyện và dữ liệu kiểm thử, tên lớp và số lượng lớp.
epochsint100Tổng số epoch huấn luyện. Mỗi epoch đại diện cho một lần truyền 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 mô hình.
timefloatNoneThời gian huấn luyện tối đa tính bằng giờ. Nếu được thiết lập, nó sẽ ghi đè lên tham số epochs, cho phép 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 về thời gian.
patienceint100Số lượng epoch chờ đợi mà không có sự cải thiện trong các chỉ số kiểm thử trước khi dừng huấn luyện sớm. Giúp ngăn chặn hiện tượng quá khớp bằng cách dừng huấn luyện khi hiệu suất đạt trạng thái bão hòa.
batchint hoặc float16Kí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 tỷ lệ sử dụng được chỉ định (batch=0.70).
imgszint640Kích thước hình ảnh mục tiêu cho huấn luyện. Hình ảnh được thay đổ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 rect=False), bảo toàn tỷ lệ khung hình cho các mô hình 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 mô hình.
saveboolTrueCho phép lưu các checkpoint 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_periodint-1Tần suất lưu checkpoint mô hình, được tính bằng số epoch. Giá trị -1 sẽ vô hiệu hóa tính năng này. Hữu ích để lưu các mô hình trung gian trong các phiên huấn luyện dài.
cacheboolFalseCho phép lưu bộ nhớ đệm hình ảnh tập dữ liệu vào RAM (True/ram), trên ổ đĩa (disk), hoặc vô hiệu hóa nó (False). Cải thiện tốc độ huấn luyện bằng cách giảm I/O đĩa nhưng đánh đổi bằng việc tăng mức sử dụng bộ nhớ.
deviceint hoặc str hoặc listNoneChỉ định (các) thiết bị tính toán để 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 hoặc device=npu:0), hoặc tự động chọn GPU rảnh nhất (device=-1) hay nhiều GPU rảnh (device=[-1,-1])
workersint8Số lượng worker thread để tải dữ liệu (theo RANK nếu huấn luyện đa GPU). Ảnh hưởng đến tốc độ tiền xử lý dữ liệu và cung cấp cho mô hình, đặc biệt hữu ích trong các thiết lập đa GPU.
projectstrNoneTê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.
namestrNoneTên của phiên huấn luyệ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ữ nhật ký huấn luyện và đầu ra.
exist_okboolFalseNếu là True, cho phép ghi đè lên thư mục dự án/tên hiện có. Hữu ích cho việc thử nghiệm lặp lại mà không cần phải xóa thủ công các đầu ra trước đó.
pretrainedbool hoặc strTrueXác định xem có bắt đầu huấn luyện từ trọng số đã được huấn luyện trước đó hay không. Có thể là một giá trị boolean hoặc đường dẫn chuỗi đến trọng số để tải. pretrained=False sẽ huấn luyện từ trọng số khởi tạo ngẫu nhiên trong khi vẫn giữ cấu trúc mô hình.
optimizerstr'auto'Lựa chọn bộ tối ưu hóa cho 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 chọn dựa trên cấu hình mô hình. Ảnh hưởng đến tốc độ hội tụ và độ ổn định.
seedint0Đặt hạt giống ngẫu nhiên (random seed) cho huấn luyện, đảm bảo khả năng tái lập kết quả giữa các lần chạy với cùng các cấu hình.
deterministicboolTrueBuộc sử dụng thuật toán tất định, đảm bảo tính tái lập nhưng có thể ảnh hưởng đến hiệu suất và tốc độ do hạn chế các thuật toán không tất định.
verboseboolTrueCho phép đầu ra chi tiết trong quá trình huấn luyện, hiển thị thanh tiến trình, các chỉ số theo từng epoch và thông tin huấn luyện bổ sung trong bảng điều khiển.
single_clsboolFalseXử lý tất cả các lớp trong tập 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.
classeslist[int]NoneChỉ định danh sách các ID lớp để huấn luyện. 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 huấn luyện.
rectboolFalseCho phép chiến lược đệm tối thiểu—hình ảnh trong một batch được đệm 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 mô hình.
multi_scalefloat0.0Thay đổi ngẫu nhiên imgsz mỗi batch theo +/- multi_scale (ví dụ: 0.25 -> 0.75x đến 1.25x), làm tròn theo bội số bước của mô hình; 0.0 vô hiệu hóa huấn luyện đa tỷ lệ.
cos_lrboolFalseSử dụng bộ lập lịch learning rate kiểu 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_mosaicint10Vô hiệu hóa mosaic data augmentation trong N epoch cuối cùng để ổn định quá trình huấn luyện trước khi hoàn tất. Thiết lập bằng 0 sẽ vô hiệu hóa tính năng này.
resumeboolFalseTiếp tục huấn luyện từ checkpoint đã lưu gần nhất. Tự động tải trọng số model, trạng thái optimizer và số lượng epoch, giúp tiếp tục huấn luyện một cách liền mạch.
ampboolTrueKích hoạt huấn luyện Mixed Precision (AMP) tự động, giúp 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.
fractionfloat1.0Xác định tỷ lệ tập dữ liệu được 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ộ dữ liệu, hữu ích cho các thử nghiệm hoặc khi tài nguyên bị hạn chế.
profileboolFalseKích hoạt tạo profile tốc độ của 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.
freezeint hoặc listNoneĐóng băng N lớp đầu tiên của model hoặc các lớp được chỉ định theo chỉ số, làm giảm số lượng tham số cần huấn luyện. Hữu ích cho việc fine-tuning hoặc transfer learning.
lr0float0.01Learning rate ban đầu (ví dụ: SGD=1E-2, Adam=1E-3). Việc điều chỉnh giá trị này là 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ố model.
lrffloat0.01Learning rate cuối cùng dưới dạng tỷ lệ của tỷ lệ 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 learning rate theo thời gian.
momentumfloat0.937Hệ số momentum cho SGD hoặc beta1 cho các Adam optimizers, ảnh hưởng đến việc kết hợp các gradient trong quá khứ vào cập nhật hiện tại.
weight_decayfloat0.0005Số hạng regularization L2, phạt các trọng số lớn để tránh overfitting.
warmup_epochsfloat3.0Số lượng epoch cho quá trình warmup learning rate, tăng dần learning rate từ giá trị thấp đến learning rate ban đầu để ổn định việc huấn luyện ngay từ đầu.
warmup_momentumfloat0.8Momentum ban đầu cho giai đoạn warmup, điều chỉnh dần về mức 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 việc huấn luyện model trong các epoch đầu tiên.
boxfloat7.5Trọng số của thành phần box loss trong loss function, ả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.
clsfloat0.5Trọng số của classification loss trong tổng loss function, ả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.0Số mũ cho việc trọng số hóa class để xử lý sự mất cân bằng class bằng cách sử dụng tần suất nghịch đảo của class. 0.0 vô hiệu hóa trọng số hóa class, 1.0 áp dụng trọng số hóa tần suất nghịch đảo đầy đủ. Các giá trị từ 0 đến 1 cung cấp trọng số hóa một phần.
dflfloat1.5Trọng số của distribution focal loss, được sử dụng trong một số phiên bản YOLO cho việc phân loại chi tiết.
posefloat12.0Trọng số của pose loss trong các model được huấn luyện cho pose estimation, ảnh hưởng đến sự nhấn mạnh vào việc dự đoán chính xác các keypoint tư thế.
kobjfloat1.0Trọng số của keypoint objectness loss trong các model pose estimation, cân bằng giữa độ tin cậy phát hiện và độ chính xác của tư thế.
rlefloat1.0Trọng số của residual log-likelihood estimation loss trong các model pose estimation, ảnh hưởng đến độ chính xác của việc xác định vị trí keypoint.
anglefloat1.0Trọng số của angle loss trong các model obb, ảnh hưởng đến độ chính xác của các dự đoán góc bounding box có hướng.
nbsint64Batch size danh nghĩa để chuẩn hóa loss.
overlap_maskboolTrueXác định xem mask đối tượng có nên được gộp vào 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 lấp, mask nhỏ hơn sẽ được đặt đè lên mask lớn hơn trong quá trình gộp.
mask_ratioint4Tỷ lệ downsample cho các segmentation mask, ảnh hưởng đến độ phân giải của mask được sử dụng trong khi huấn luyện.
dropoutfloat0.0Tỷ lệ dropout cho regularization trong các tác vụ phân loại, ngăn chặn overfitting bằng cách loại bỏ ngẫu nhiên các đơn vị trong khi huấn luyện.
valboolTrueKích hoạt xác thực trong khi huấn luyện, cho phép đánh giá định kỳ hiệu suất của model trên một tập dữ liệu riêng biệt.
plotsboolTrueTạo và lưu các biểu đồ về chỉ số huấn luyện và xác thực, cũng như các ví dụ dự đoán, cung cấp cái nhìn trực quan về hiệu suất của model và quá trình học.
compilebool hoặc strFalseKích hoạt biên dịch đồ thị PyTorch 2.x torch.compile với backend='inductor'. Chấp nhận True"default", False → vô hiệu hóa, hoặc một mode dạng chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Sẽ quay lại chế độ eager với một cảnh báo nếu không được hỗ trợ.
max_detint300Xác đị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.
Lưu ý về cài đặt Batch-size

Đối số batch có thể được cấu hình theo ba cách:

  • Kích thước lô cố định: Đặt một giá trị số nguyên (ví dụ: batch=16), chỉ định trực tiếp số lượng ảnh trên mỗi lô.
  • Chế độ Tự động (60% bộ nhớ GPU): Sử dụng batch=-1 để tự động điều chỉnh kích thước lô cho 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 giá trị phân số (ví dụ: batch=0.70) để điều chỉnh kích thước lô dựa trên phân số cụ thể của mức sử dụng bộ nhớ GPU.
  • OOM Tự động thử lại: Nếu lỗi hết bộ nhớ CUDA (out-of-memory) xảy ra trong epoch đầu tiên, bộ huấn luyện sẽ tự động giảm một nửa kích thước lô và thử lại (tối đa 3 lần). Điều này chỉ áp dụng cho huấn luyện một GPU; huấn luyện đa GPU (DDP) sẽ đưa ra lỗi ngay lập tức.

Cài đặt Tăng cường (Augmentation) và Siêu tham số

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

Tham sốLoạiMặc địnhTác vụ được hỗ trợPhạm viMô tả
hsv_hfloat0.015detect, segment, pose, obb, classify0.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 tròn màu, tạo ra sự biến đổi màu sắc. Giúp mô hình tổng quát hóa tốt hơn trong các điều kiện ánh sáng khác nhau.
hsv_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0Thay đổi độ bão hòa (saturation) của hình ảnh theo một phần, ảnh hưởng đến cường độ của các màu sắc. Hữu ích để mô phỏng các điều kiện môi trường khác nhau.
hsv_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0Sửa đổi giá trị (độ sáng) của hình ảnh theo một phần, giúp mô hình hoạt động tốt trong các điều kiện ánh sáng khác nhau.
degreesfloat0detect, segment, pose, obb0.0 - 180Xoay hình ảnh ngẫu nhiên trong phạm vi độ đã chỉ định, cải thiện khả năng nhận diện đối tượng ở các hướng khác nhau của mô hình.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0Dịch chuyển hình ảnh theo chiều ngang và chiều dọc theo một phần kích thước hình ả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.
scalefloat0.5detect, segment, pose, obb, classify0 - 1Thay đổi quy mô hình ảnh theo hệ số tăng, mô phỏng các đối tượng ở các khoảng cách khác nhau từ camera.
shearfloat0detect, segment, pose, obb-180 - +180Làm nghiêng (shear) hình ảnh theo một độ nhất định, mô phỏng hiệu ứng của các đối tượng được nhìn từ các góc khác nhau.
perspectivefloat0detect, segment, pose, obb0.0 - 0.001Áp dụng biến đổi phối cảnh ngẫu nhiên cho hình ả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.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0Lật ngược hình ảnh với xác suất đã chỉ định, tăng tính biến đổi dữ liệu mà không ảnh hưởng đến các đặc điểm của đối tượng.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0Lật hình ảnh từ trái sang phải với xác suất đã 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 của bộ dữ liệu.
bgrfloat0detect, segment, pose, obb0.0 - 1.0Lật các kênh hình ảnh từ RGB sang BGR với xác suất đã chỉ định, hữu ích cho việc tăng cường sự mạnh mẽ đối với việc sắp xếp kênh không chính xác.
mosaicfloat1detect, segment, pose, obb0.0 - 1.0Kết hợp bốn hình ảnh huấn luyện thành một, mô phỏng các bố cục cảnh và tương tác vật thể khác nhau. Rất hiệu quả để hiểu các cảnh phức tạp.
mixupfloat0detect, segment, pose, obb0.0 - 1.0Trộn hai hình ảnh và nhãn của chúng, tạo ra một hình ảnh tổng hợp. Tăng cường 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 thiên hình ảnh.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Kết hợp các phần của hai hình ảnh, tạo ra một bản trộn một phần trong khi vẫn giữ nguyên các vùng riêng biệt. Tăng cường độ bền vững của mô hình bằng cách tạo ra các kịch bản che khuất.
copy_pastefloat0segment0.0 - 1.0Sao chép và dán các đối tượng qua các hình ảnh để tăng số lượng thực thể đối tượng.
copy_paste_modestrflipsegment-Chỉ định chiến lược copy-paste để sử dụng. Các tùy chọn bao gồm 'flip''mixup'.
auto_augmentstrrandaugmentclassify-Á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 mô hình thông qua tính đa dạng về hình ảnh.
erasingfloat0.4classify0.0 - 1.0Xóa ngẫu nhiên các vùng của hình ảnh trong quá trình huấn luyện để khuyến khích mô hình tập trung vào các đặc trưng ít rõ ràng hơn.
augmentationslist``detect, segment, 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ỉ dành cho 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.

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

Thông tin

Để biết thêm thông tin về các hoạt động tăng cường huấn luyện, xem phần tham khảo.

Ghi nhật ký

Trong khi huấn luyện một mô hình YOLO26, bạn có thể thấy hữu ích khi theo dõi hiệu suất của mô hình theo thời gian. Đây là lúc việc ghi nhật ký phát huy tác dụng. Ultralytics YOLO hỗ trợ ba loại trình ghi nhật ký - Comet, ClearML, và TensorBoard.

Để sử dụng trình ghi nhật ký, hãy chọn nó từ menu thả xuống trong đoạn mã phía trên và chạy nó. Trình ghi nhật ký đã chọn sẽ được cài đặt và khởi tạo.

Comet

Comet là một nền tảng cho phép các nhà khoa học dữ liệu và nhà phát triển theo dõi, so sánh, giải thích và tối ưu hóa các thử nghiệm và mô hình. Nó cung cấp các chức năng như số liệu thời gian thực, sự khác biệt mã nguồn và theo dõi siêu tham số.

Để sử dụng Comet:

Ví dụ
# pip install comet_ml
import comet_ml

comet_ml.init()

Hãy nhớ đăng nhập vào tài khoản Comet của bạn trên trang web của họ và lấy khóa API. Bạn sẽ cần thêm khóa này vào các biến môi trường hoặc tập lệnh của mình để ghi lại các thử nghiệm.

ClearML

ClearML là một nền tảng mã nguồn mở giúp tự động hóa việc theo dõi các thử nghiệm và hỗ trợ chia sẻ tài nguyên hiệu quả. Nó được thiết kế để giúp các nhóm quản lý, thực thi và tái lập công việc ML của họ hiệu quả hơn.

Để sử dụng ClearML:

Ví dụ
# pip install clearml
import clearml

clearml.browser_login()

Sau khi chạy tập lệnh này, bạn sẽ cần đăng nhập vào tài khoản ClearML của mình trên trình duyệt và xác thực phiên làm việc.

TensorBoard

TensorBoard là một bộ công cụ trực quan hóa cho TensorFlow. Nó cho phép bạn trực quan hóa biểu đồ TensorFlow, vẽ các số liệu định lượng về việc thực thi biểu đồ của bạn và hiển thị dữ liệu bổ sung như hình ảnh đi qua nó.

Để sử dụng TensorBoard trong Google Colab:

Ví dụ
load_ext tensorboard
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Để sử dụng TensorBoard cục bộ, hãy chạy lệnh dưới đây và xem kết quả tại localhost:6006.

Ví dụ
tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Lệnh này sẽ tải TensorBoard và hướng nó đến thư mục nơi lưu nhật ký huấn luyện của bạn.

Sau khi thiết lập trình ghi nhật ký, bạn có thể tiếp tục huấn luyện mô hình của mình. Tất cả các số liệu huấn luyện sẽ được tự động ghi lại trên nền tảng bạn đã chọn, và bạn có thể truy cập các nhật ký này để theo dõi hiệu suất mô hình theo thời gian, so sánh các mô hình khác nhau và xác định các lĩnh vực cần cải thiện.

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

Tôi có thể huấn luyện mà không cần GPU cục bộ không?

Có. Ultralytics Platform hỗ trợ huấn luyện trên đám mây với tín dụng miễn phí để bắt đầu. Tải tập dữ liệu của bạn lên, chọn một mô hình và GPU, và huấn luyện trực tiếp từ trình duyệt. Xem hướng dẫn huấn luyện trên đám mây để biết chi tiết.

Làm cách nào để huấn luyện mô hình phát hiện đối tượng bằng Ultralytics YOLO26?

Để huấn luyện mô hình phát hiện đối tượng bằng Ultralytics YOLO26, bạn có thể sử dụng Python API hoặc CLI. Dưới đây là ví dụ cho cả hai:

Ví dụ về huấn luyện trên một GPU và CPU
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Để biết thêm chi tiết, hãy tham khảo phần Cài đặt huấn luyện.

Các tính năng chính của chế độ huấn luyện (Train mode) của Ultralytics YOLO26 là gì?

Các tính năng chính của chế độ huấn luyện của Ultralytics YOLO26 bao gồm:

  • Tự động tải tập dữ liệu: Tự động tải xuống các tập dữ liệu tiêu chuẩn như COCO, VOC và ImageNet.
  • Hỗ trợ đa GPU: Mở rộng quy mô huấn luyện trên nhiều GPU để xử lý nhanh hơn.
  • Cấu hình siêu tham số: Tùy chỉnh các siêu tham số thông qua tệp YAML hoặc đối số CLI.
  • Trực quan hóa và Giám sát: Theo dõi thời gian thực các số liệu huấn luyện để có thông tin chi tiết hơn.

Những tính năng này giúp việc huấn luyện trở nên hiệu quả và có thể tùy chỉnh theo nhu cầu của bạn. Để biết thêm chi tiết, hãy xem phần Các tính năng chính của chế độ huấn luyện.

Làm cách nào để tiếp tục huấn luyện từ một phiên bị gián đoạn trong Ultralytics YOLO26?

Để tiếp tục huấn luyện từ một phiên bị gián đoạn, hãy đặt đối số resume thành True và chỉ định đường dẫn đến điểm kiểm tra (checkpoint) được lưu cuối cùng.

Ví dụ về Tiếp tục Huấn luyện
from ultralytics import YOLO

# Load the partially trained model
model = YOLO("path/to/last.pt")

# Resume training
results = model.train(resume=True)

Xem phần Tiếp tục huấn luyện bị gián đoạn để biết thêm thông tin.

Làm cách nào để huấn luyện một mô hình trên tập dữ liệu mất cân bằng?

Sự mất cân bằng lớp xảy ra khi một số lớp có ít ví dụ hơn đáng kể so với các lớp khác trong dữ liệu huấn luyện của bạn. Điều này có thể khiến mô hình hoạt động kém trên các lớp hiếm. Ultralytics YOLO hỗ trợ trọng số lớp thông qua đối số cls_pw để giải quyết vấn đề này.

Đối số cls_pw kiểm soát sức mạnh trọng số lớp dựa trên tần suất lớp nghịch đảo:

  • cls_pw=0.0 (mặc định): Tắt trọng số lớp
  • cls_pw=1.0: Áp dụng trọng số tần suất nghịch đảo đầy đủ
  • Các giá trị từ 0.0 đến 1.0: Cung cấp trọng số một phần cho sự mất cân bằng trung bình

Trọng số lớp được tính là (1.0 / class_counts) ^ cls_pw và được chuẩn hóa sao cho trung bình của chúng bằng 1.0.

Huấn luyện trên tập dữ liệu mất cân bằng
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train with full class weighting for severely imbalanced data
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=1.0)

# Or use partial weighting (0.25) for moderate imbalance
results = model.train(data="custom.yaml", epochs=100, imgsz=640, cls_pw=0.25)
Mẹo

Bắt đầu với cls_pw=0.25 cho các tập dữ liệu mất cân bằng trung bình và tăng lên 1.0 nếu các lớp hiếm vẫn hoạt động kém. Bạn có thể kiểm tra trọng số lớp đã tính trong nhật ký huấn luyện để xác minh sự phân phối trọng số.

Tôi có thể huấn luyện các mô hình YOLO26 trên chip Apple silicon không?

Có, Ultralytics YOLO26 hỗ trợ huấn luyện trên chip Apple silicon bằng cách sử dụng framework Metal Performance Shaders (MPS). Hãy chỉ định 'mps' làm thiết bị huấn luyện của bạn.

Ví dụ về huấn luyện MPS
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model on Apple silicon chip (M1/M2/M3/M4)
results = model.train(data="coco8.yaml", epochs=100, imgsz=640, device="mps")

Để biết thêm chi tiết, hãy tham khảo phần Huấn luyện trên Apple Silicon MPS.

Các cài đặt huấn luyện phổ biến là gì và làm cách nào để cấu hình chúng?

Ultralytics YOLO26 cho phép bạn cấu hình nhiều cài đặt huấn luyện như kích thước batch, tốc độ học (learning rate), số epoch và nhiều cài đặt khác thông qua các đối số. Dưới đây là tổng quan ngắn gọn:

Tham sốMặc địnhMô tả
modelNoneĐường dẫn đến tệp mô hình để huấn luyện.
dataNoneĐường dẫn đến tệp cấu hình tập dữ liệu (ví dụ: coco8.yaml).
epochs100Tổng số epoch huấn luyện.
batch16Kích thước batch, có thể điều chỉnh dưới dạng số nguyên hoặc chế độ tự động.
imgsz640Kích thước hình ảnh mục tiêu để huấn luyện.
deviceNone(Các) thiết bị tính toán để huấn luyện như cpu, 0, 0,1, hoặc mps.
saveTrueCho 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.

Để có hướng dẫn chuyên sâu về các cài đặt huấn luyện, hãy xem phần Cài đặt huấn luyện.

Bình luận