Meet YOLO26: next-gen vision AI.

Link to this sectionHuấn luyện Model với Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionGiới thiệu#

Việc huấn luyện một model deep learning bao gồm cung cấp dữ liệu và điều chỉnh các tham số để model có thể đưa ra dự đoán chính xác. Chế độ Train trong Ultralytics YOLO26 được thiết kế cho việc huấn luyện các model nhận diện vật thể một cách hiệu quả, tận dụng triệt để năng lực phần cứng hiện đại. Hướng dẫn này bao gồm tất cả các chi tiết cần thiết để bạn bắt đầu huấn luyện model của riêng mình bằ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.

Link to this sectionTại sao 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, bất kể bạn đang sử dụng thiết lập đơn GPU hay mở rộng 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 bên cạnh các 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ẽ mang lại trải nghiệm huấn luyện trực quan.
  • Tính linh hoạt của Hyperparameter: Một loạt các hyperparameter có thể tùy chỉnh để tinh chỉnh hiệu suất model. Để kiểm soát sâu hơn, bạn có thể tùy chỉnh trình huấn luyện của riêng mình.
  • 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 số liệu theo thời gian thực và tự động lưu checkpoint.

Link to this sectionCác tính năng chính của chế độ Train#

Dưới đây là một số tính năng nổi bật của chế độ Train trên YOLO26:

  • Tự động tải bộ dữ liệu: Các bộ dữ liệu tiêu chuẩn như COCO, VOC và ImageNet được tự động tải xuống trong lần sử dụng đầu tiên.
  • Hỗ trợ đa GPU: Mở rộng 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 Hyperparameter: Tùy chọn sửa đổi các hyperparameter thông qua 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 số liệu huấn luyện theo thời gian thực 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ộ khác sẽ tự động tải xuống trong lần đầu sử dụng, ví dụ: yolo train data=coco.yaml

Link to this sectionVí 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 đối số device. Nếu không có đối số nào được truyền vào, GPU device=0 sẽ được sử dụng nếu có; nếu không, device='cpu' sẽ được 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ý trên Windows

Trên Windows, bạn có thể gặp RuntimeError khi khởi chạy quá trình 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 đơn GPU và CPU

Thiết bị được xác định tự động. Nếu có sẵn 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)

Link to this sectionHuấn luyện đa GPU#

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

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

Để huấn luyện với 2 GPU, thiết bị CUDA 0 và 1, hãy sử dụng các lệnh sau. Mở rộng ra 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ẽ nội bộ khởi tạo một instance huấn luyện mới và thực thi torch.distributed.run. Đ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 thay đổ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—như trình huấn luyện, validator, bộ dữ liệu hoặc đường ống tăng cường dữ liệu tùy chỉnh—các đối tượng này không thể được tự động tuần tự hóa và chuyển đến 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

Link to this sectionHuấn luyện trên GPU nhàn rỗi#

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 số liệu sử dụng và dung lượng VRAM còn trố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 cho quá trình huấn luyện, hãy sử dụng tham số thiết bị -1. Điều này đặc biệt hữu ích trong môi trường máy tính dùng chung 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. Phần trăm 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 môi trường tính toán dùng chung hoặc khi chạy nhiều tác vụ huấn luyện trên các model khác nhau. Nó tự động thích nghi với các điều kiện thay đổi của hệ thống, đảm bảo phân bổ tài nguyên tối ưu mà không cần can thiệp thủ công.

Link to this sectionHuấn luyện trên Apple Silicon MPS#

Với sự hỗ trợ cho chip Apple silicon được tích hợp trong các model Ultralytics YOLO, giờ đây bạn có thể huấn luyện model 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 hiệu suất cao để thực thi các tác vụ tính toán và xử lý hình ảnh trên silicon tùy chỉnh của Apple.

Để kích hoạ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 quá trình huấn luyện. Dưới đây là ví dụ về cách bạn có thể thực hiện điều 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 chip Apple silicon, điều này cho phép xử lý các tác vụ huấn luyện hiệu quả hơn. Để có 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.

Link to this sectionTiế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 model deep learning. Điều này rất hữu ích trong nhiều trường hợp, chẳng hạn như khi quá trình huấn luyện bị gián đoạn bất ngờ, hoặc khi bạn muốn tiếp tục huấn luyện model với dữ liệu mới hoặc thêm nhiều epoch hơn.

Khi quá trình huấn luyện được tiếp tục, Ultralytics YOLO sẽ tải trọng số từ model đã lưu cuối cùng và cũng khôi phục trạng thái trình tối ưu hóa, bộ lập lịch learning rate 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ừ nơi đã dừng lại.

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 trọng số model đã huấn luyện một phần.

Dưới đây là ví dụ về cách tiếp tục 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, sử dụng trạng thái được lưu 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 vào 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 để có thể tiếp tục quá trình huấn luyện.

Link to this sectionCài đặt huấn luyện#

Các cài đặt huấn luyện cho các model YOLO bao gồm nhiều hyperparameter và cấu hình đượ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 model. Các cài đặt huấn luyện chính bao gồm batch size, learning rate, momentum và weight decay. Ngoài ra, việc lựa chọn trình tối ưu hóa, loss function và thành phần của 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 cẩn thận và thử nghiệm với các cài đặt này là rất quan trọng để tối ưu hóa hiệu suất.

Link to this sectionTrình tối ưu hóa MuSGD#

Trong YOLO26, MuSGD là một trình 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 quá trình 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 (như trọng số tích chập) mới nhận 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ư lớp batch normalization và các giá trị bias vẫn sử dụng SGD tiêu chuẩn.

Khi sử dụng optimizer=auto, Ultralytics sẽ tự động chọn MuSGD cho các quá trình 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, trình huấn luyện sẽ quay lại sử dụng 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 trình tối ưu hóa trong BaseTrainer.build_optimizer.

Đối sốLoạiMặc địnhMô tả
modelstrNoneChỉ định tệp model để huấn luyện. Chấp nhận đường dẫn đến tệp model đã 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 model hoặc khởi tạo trọng số.
datastrNoneĐườ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 các đường dẫn đến dữ liệu huấn luyện và dữ liệu kiểm chứng, 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 duyệt toàn bộ qua toàn bộ bộ dữ liệu. Việc đ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.
timefloatNoneThời gian huấn luyện tối đa tính bằng giờ. Nếu được đặt, nó sẽ ghi đè đối số epochs, cho phép quá trình huấn luyện tự động dừng sau 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.
patienceint100Số lượng epoch cần đợi mà không có sự cải thiện trong các số liệu kiểm chứng trước khi dừng huấn luyện sớm. Giúp ngăn ngừa quá khớp bằng cách dừng huấn luyện khi hiệu suất đạt đến trạng thái bão hòa.
batchint hoặc float16Batch size, 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 ảnh mục tiêu cho 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ị đã chỉ định (nếu rect=False), giữ nguyên tỷ lệ khung hình cho 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.
saveboolTrueCho phép lưu các 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_periodint-1Tầ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.
cacheboolFalseCho phép lưu đệm các ảnh của bộ dữ liệu trong bộ nhớ (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, đổi lại sẽ làm 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 nhàn rỗi nhất (device=-1) hoặc nhiều GPU nhàn rỗi (device=[-1,-1])
workersint8Số lượng luồng worker để 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à nạp dữ liệu vào model, đặ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 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_okboolFalseNế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.
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à giá trị boolean hoặc đường dẫn chuỗi đến trọng số cần 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ữ nguyên kiến trúc model.
optimizerstr'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, MuSGD, Adam, Adamax, AdamW, NAdam, RAdam, RMSProp, hoặc auto để chọn tự động dựa trên cấu hình model. Ảnh hưởng đến tốc độ hội tụ và độ ổn định.
seedint0Đặ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.
deterministicboolTrueBuộc sử dụng thuật toán tất định, đảm bảo khả năng tái lập nhưng có thể ảnh hưởng đến hiệu suất và tốc độ do hạn chế đối với các thuật toán phi tất định.
verboseboolTrueBật đầu ra chi tiết trong quá trình huấn luyện, hiển thị thanh tiến trình, 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_clsboolFalseXử 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.
classeslist[int]NoneChỉ đị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.
rectboolFalseBật chiến lược đệm tối thiểu—hình ảnh trong một batch được đệm tối thiểu để đạt đến 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_scalefloat0.0Thay đổi ngẫu nhiên imgsz cho mỗi batch theo +/- multi_scale (ví dụ: 0.25 -> 0.75x đến 1.25x), làm tròn đến bội số của bước nhảy (stride) của model; 0.0 sẽ tắt tính năng huấn luyện đa quy mô (multi-scale).
cos_lrboolFalseSử dụng bộ lập lịch learning rate cosin, điều chỉnh tốc độ học theo đường cong cosin qua các epoch. Giúp quản lý tốc độ học để đạt được sự hội tụ tốt hơn.
close_mosaicint10Tắt tính năng data augmentation mosaic trong N epoch cuối để ổn định quá trình huấn luyện trước khi hoàn tất. Thiết lập bằng 0 sẽ tắt tính năng này.
resumeboolFalseTiếp tục huấn luyện từ checkpoint được lưu gần nhất. Tự động tải trọng số model, trạng thái 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.
ampboolTrueBật huấn luyện Mixed Precision tự động (AMP), giúp giảm mức sử dụng bộ nhớ và có thể tăng tốc quá trình huấn luyện với tác động tối thiểu đến độ chính xác.
fractionfloat1.0Chỉ đị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.
profileboolFalseBậ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.
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ỉ mục, giúp 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 transfer learning.
lr0float0.01Tốc độ học ban đầu (ví dụ: SGD=1E-2, Adam=1E-3). Việc điều chỉnh giá trị này rất quan trọng đối với quá trình tối ưu hóa, ảnh hưởng đến tốc độ cập nhật trọng số của model.
lrffloat0.01Tốc độ học cuối cùng dưới dạng tỷ lệ 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.
momentumfloat0.937Hệ số động lượng (momentum) cho SGD hoặc beta1 cho 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.0005Thuật ngữ regularization L2, xử phạt các trọng số lớn để ngăn chặn hiện tượng quá khớp (overfitting).
warmup_epochsfloat3.0Số 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_momentumfloat0.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_lrfloat0.1Tố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.
boxfloat7.5Trọng số của thành phần loss cho box trong loss function, ảnh hưởng đến mức độ ưu tiên đặt vào việc dự đoán chính xác tọa độ bounding box.
clsfloat0.5Trọ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_pwfloat0.0Số mũ cho trọng số lớp để xử lý tình trạng 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 tính năng trọng số lớp, 1.0 áp dụng trọng số tần suất nghịch đảo đầy đủ. Các giá trị từ 0 đến 1 cung cấp trọng số một phần.
dflfloat1.5Trọng số của loss tiêu điểm phân phối (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 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ế.
kobjfloat1.0Trọ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ế.
rlefloat1.0Trọ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.
anglefloat1.0Trọ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.
nbsint64Kích thước batch danh định cho việc chuẩn hóa loss.
overlap_maskboolTrueXá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_ratioint4Tỷ 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.
dropoutfloat0.0Tỷ 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.
valboolTrueBậ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.
plotsboolTrueTạ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.
compilebool hoặc strFalseBật tính năng 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 một chế độ dạng chuỗi như "default", "reduce-overhead", "max-autotune-no-cudagraphs". Nếu không được hỗ trợ, sẽ tự động quay lại chế độ thực thi eager kèm theo cảnh báo.
max_detint300Chỉ đị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:

  • Batch Size cố định: Đặt một giá trị số nguyên (ví dụ: batch=16), chỉ định trực tiếp số lượng ảnh mỗi batch.
  • Chế độ Tự động (60% bộ nhớ GPU): Sử dụng batch=-1 để tự động điều chỉnh kích thước batch cho khoảng 60% mức sử dụng bộ nhớ CUDA.
  • Chế độ Tự động với Tỷ lệ sử dụng: Đặt một giá trị tỷ lệ (ví dụ: batch=0.70) để điều chỉnh kích thước batch dựa trên tỷ lệ sử dụng bộ nhớ GPU được chỉ định.
  • Tự động thử lại khi OOM: Nếu xảy ra lỗi hết bộ nhớ CUDA trong epoch đầu tiên, trainer sẽ tự động giảm một nửa kích thước batch và thử lại (tối đa 3 lần). Điều này chỉ áp dụng cho huấn luyện single-GPU; huấn luyện multi-GPU (DDP) sẽ báo lỗi ngay lập tức.

Link to this sectionCài đặt Augmentation và Siêu tham số#

Các kỹ thuật augmentation rất cần thiết để cải thiện độ bền bỉ và hiệu suất của các model YOLO bằng cách đưa sự 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 với dữ liệu chưa từng thấy. Bảng sau đây nêu rõ mục đích và tác dụng của từng đối số augmentation:

Đối sốLoạiMặc địnhCác tá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 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_sfloat0.7detect, segment, pose, obb, classify0.0 - 1.0Thay đổ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_vfloat0.4detect, segment, pose, obb, classify0.0 - 1.0Thay đổ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.
degreesfloat0detect, segment, pose, obb0.0 - 180Xoay ả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.
translatefloat0.1detect, segment, pose, obb0.0 - 1.0Dị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.
scalefloat0.5detect, segment, pose, obb, classify0 - 1Thay đổ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.
shearfloat0detect, segment, pose, obb-180 - +180Cắ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.
perspectivefloat0detect, segment, pose, obb0.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.
flipudfloat0detect, segment, pose, obb, classify0.0 - 1.0Lậ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.
fliplrfloat0.5detect, segment, pose, obb, classify0.0 - 1.0Lậ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.
bgrfloat0detect, segment, pose, obb0.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.
mosaicfloat1detect, segment, pose, obb0.0 - 1.0Kết hợp bốn ảnh huấn luyện thành một, mô phỏng các bố cục cảnh và tương tác đối tượng khác nhau. Rất hiệu quả cho việc hiểu các cảnh phức tạp.
mixupfloat0detect, segment, pose, obb0.0 - 1.0Trộ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.
cutmixfloat0detect, segment, pose, obb0.0 - 1.0Kế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_pastefloat0segment0.0 - 1.0Sao 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_modestrflipsegment-Xác định chiến lược copy-paste cần 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 định sẵn ('randaugment', 'autoaugment', hoặc 'augmix') để nâng cao hiệu suất model thông qua sự đa dạng hình ảnh.
erasingfloat0.4classify0.0 - 1.0Xó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.
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ỉ 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.

Những 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ụ hiện tại. 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 nhất mang lại hiệu suất model tốt nhất.

Thông tin

Để biết thêm thông tin về các thao tác tăng cường trong huấn luyện, hãy xem phần tham chiếu.

Link to this sectionGhi nhật ký (Logging)#

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

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

Link to this sectionComet#

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à model. Nó cung cấp các chức năng như chỉ số thời gian thực, so sánh mã nguồn (code diffs), và theo dõi các 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ọ để lấy API key. Bạn sẽ cần thêm key này vào các biến môi trường hoặc script của mình để ghi nhật ký các thử nghiệm.

Link to this sectionClearML#

ClearML là một nền tảng mã nguồn mở giúp tự động hóa việc theo dõi 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 tạo công việc ML của họ một cách hiệu quả hơn.

Để sử dụng ClearML:

Ví dụ
# pip install clearml
import clearml

clearml.browser_login()

Sau khi chạy script 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.

Link to this sectionTensorBoard#

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

Để 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 bên dưới 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à trỏ nó đến thư mục nơi các nhật ký huấn luyện của bạn được lưu.

Sau khi thiết lập công cụ ghi nhật ký, bạn có thể tiến hành huấn luyện model. Tất cả các chỉ số 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 của model theo thời gian, so sánh các model khác nhau, và xác định các lĩnh vực cần cải thiện.

Link to this sectionCâu hỏi thường gặp#

Link to this sectionTô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 các khoản tín dụng miễn phí để bắt đầu. Tải lên tập dữ liệu của bạn, chọn model và GPU, rồi 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.

Link to this sectionLàm thế nào để tôi huấn luyện một model phát hiện đối tượng bằng Ultralytics YOLO26?#

Để huấn luyện một model phát hiện đối tượng sử dụ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 đơn 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 (Train Settings).

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

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

  • Tự động tải xuống 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ợ nhiều 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 các tham 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 để có thông tin chi tiết tố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.

Link to this sectionLàm thế nào để tôi 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 tham số resume thành True và chỉ định đường dẫn đến 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)

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

Link to this sectionLàm thế nào để tôi huấn luyện một model trên tập dữ liệu bị mất cân bằng?#

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 model hoạt động kém hiệu quả trên các lớp hiếm gặp. Ultralytics YOLO hỗ trợ trọng số lớp thông qua tham số cls_pw để giải quyết vấn đề này.

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

  • 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 mức độ trung bình

Trọng số lớp được tính toán dưới dạng (1.0 / class_counts) ^ cls_pw và được chuẩn hóa để giá trị 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

Hãy bắt đầu với cls_pw=0.25 cho các tập dữ liệu bị mất cân bằng mức độ trung bình và tăng dần 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 toán trong nhật ký huấn luyện để xác minh sự phân bổ trọng số.

Link to this sectionTôi có thể huấn luyện model YOLO26 trên chip Apple silicon không?#

Có, Ultralytics YOLO26 hỗ trợ huấn luyện trên các chip Apple silicon 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 bằng MPS.

Link to this sectionCác cài đặt huấn luyện phổ biến là gì, và làm thế nào để tôi 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 khác nhau 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 tham số. Dưới đây là tổng quan ngắn gọn:

Đối sốMặc địnhMô tả
modelNoneĐường dẫn đến tệp model để 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 ả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 lại các checkpoint huấn luyện và trọng số model 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 (Train Settings).

Bình luận