Chuyển đến nội dung

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

Hệ sinh thái và tích hợp Ultralytics YOLO

Giới thiệu

Huấn luyện một mô hình học sâu bao gồm việc cung cấp dữ liệu cho nó và điều chỉnh các tham số của nó để nó có thể đưa ra các dự đoán chính xác. Chế độ Train trong Ultralytics YOLO11 được thiết kế để huấn luyện hiệu quả các mô hình phát hiện đối tượng, 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 mục đích bao gồm 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 bạn bằng bộ tính năng mạnh mẽ của YOLO11.



Xem: Cách huấn luyện mô hình YOLO trên bộ dữ liệu tùy chỉnh của bạn trong 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 YOLO11:

  • Hiệu quả: 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 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 các bộ dữ liệu có sẵn như COCO, VOC và ImageNet.
  • Thân thiện với người dùng: Giao diện CLI và Python đơn giản nhưng mạnh mẽ để có trải nghiệm huấn luyện trực quan.
  • Tính linh hoạt của siêu tham số: 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.

Các tính năng chính của Chế độ Huấn luyện

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

  • Tải xuống bộ dữ liệu tự động: Các bộ dữ liệu tiêu chuẩn như COCO, VOC và ImageNet được tải xuống tự động khi sử dụng lần đầu.
  • Hỗ trợ đa GPU: Mở rộng quy mô 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 các 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 số liệu huấn luyện và trực quan hóa quá trình học để hiểu rõ hơn.

Mẹo

  • Các bộ dữ liệu YOLO11 như COCO, VOC, ImageNet và nhiều bộ dữ liệu khác tự động tải xuống khi sử dụng lần đầu, ví dụ: yolo train data=coco.yaml

Ví dụ sử dụng

Huấn luyện YOLO11n trên bộ dữ liệu COCO8 cho 100 epochs ở 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 device đối số. Nếu không có đối số nào được truyền, GPU device=0 sẽ được sử dụng nếu có, nếu không device='cpu' sẽ được sử dụng. Xem phần Đối số bên dưới để có danh sách đầy đủ các đối số huấn luyện.

Lỗi Đa xử lý Windows

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

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 (thiết bị CUDA mặc định 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("yolo11n.yaml")  # build a new model from YAML
model = YOLO("yolo11n.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo11n.yaml").load("yolo11n.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Build a new model from YAML and start training from scratch
yolo detect train data=coco8.yaml model=yolo11n.yaml epochs=100 imgsz=640

# Start training from a pretrained *.pt model
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640

# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco8.yaml model=yolo11n.yaml pretrained=yolo11n.pt 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 có sẵn 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 huấn luyện đa GPU, hãy chỉ định 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 sử dụng các lệnh sau. Mở rộng ra các GPU bổ sung khi cần.

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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])
# Start training from a pretrained *.pt model using GPUs 0 and 1
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=0,1

# Use the two most idle GPUs
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 imgsz=640 device=-1,-1

Huấn luyện GPU nhàn rỗi

Huấn luyện GPU nhàn rỗi cho phép tự động chọn 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 số liệu sử dụng và dung lượng VRAM.

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

To automatically select and use the most idle GPU(s) for training, use the -1 tham số device. Điều này đặc biệt hữu ích trong các môi trường hoặc máy chủ điện toán dùng chung với nhiều người dùng.

from ultralytics import YOLO

# Load a model
model = YOLO("yolov8n.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])
# Start training using the single most idle GPU
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=-1

# Start training using the two most idle GPUs
yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 device=-1,-1

Thuật toán tự động chọn ưu tiên GPU với:

  1. Giảm tỷ lệ sử dụng hiện tại
  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 điện toán dùng chung 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 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 framework Metal Performance Shaders (MPS) mạnh mẽ. MPS cung cấp một phương pháp hiệu suất cao để thực hiện các tác vụ tính toán và xử lý hình ảnh 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à một 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ụ Huấn luyện MPS

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.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")
# Start training from a pretrained *.pt model using MPS
yolo detect train data=coco8.yaml model=yolo11n.pt 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ý hiệu quả hơn các tác vụ huấn luyệ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.

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 có thể пригодиться trong nhiều tình huống khác nhau, 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 một mô hình với dữ liệu mới hoặc trong nhiều epochs hơn.

Khi quá trình huấn luyện được tiếp tục, Ultralytics YOLO 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 trình tối ưu hóa, bộ lập lịch tốc độ học 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 nó đã 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ố mô hình đã được huấn luyện một phần.

Dưới đây là một 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ụ 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)
# Resume an interrupted training
yolo train resume model=path/to/last.pt

Bằng cách thiết lập resume=True, hàm train sẽ tiếp tục huấn luyện từ nơi nó đã dừng lại, 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 được đặt thành False, hàm train hàm sẽ bắt đầu một phiên huấn luyện mới.

Hãy nhớ rằng các điểm kiểm tra đượ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 quá trình huấn luyện.

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

Các cài đặt huấn luyện cho 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. Các 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ô, tốc độ học, quán tính và phân rã trọng số. Ngoài ra, việc lựa chọn trình tối ưu hóa, hàm mất mát và thành phần tập dữ liệu huấn luyện có thể ảnh hưởng đến quá trình huấn luyện. Việc điều 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.

Đố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 có thể được định cấu hình theo ba cách:

  • Kích Thước Batch Cố Định: Đặt một giá trị số nguyên (ví dụ: batch=16), chỉ định trực tiếp số lượng hình ảnh trên 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 để sử dụng khoảng 60% 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 batch dựa trên phân số được chỉ định của mức sử dụng bộ nhớ GPU.

Cài đặt Tăng cường Dữ liệu và Siêu tham số

Các kỹ thuật tăng cường dữ liệu (augmentation) rất 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 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 trình bày 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.

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ụ. 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, hãy xem phần tham khảo.

Ghi nhật ký

Trong quá trình huấn luyện một model YOLO11, 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 giá trị. Đây là lúc logging phát huy tác dụng. Ultralytics YOLO hỗ trợ ba loại logger - Comet, ClearMLTensorBoard.

Để sử dụng trình ghi nhật ký, hãy chọn nó từ menu thả xuống trong đoạn mã 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ã 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 của bạn. 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 bạn để ghi nhật ký các thử nghiệm của bạn.

ClearML

ClearML là một nền tảng mã nguồn mở, 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 tạo 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 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.

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 đồ thị TensorFlow, vẽ đồ thị các số liệu định lượng về việc thực thi đồ thị 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 bên dưới và xem kết quả tại http://localhost:6006/.

Ví dụ

tensorboard --logdir ultralytics/runs # replace with 'runs' directory

Thao tác này sẽ tải TensorBoard và hướng nó đến thư mục nơi lưu trữ 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 với quá trình 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 của mì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

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

Để huấn luyện mô hình phát hiện đối tượng bằng Ultralytics YOLO11, bạn có thể sử dụng Python API hoặc CLI. Dưới đây là một 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("yolo11n.pt")  # load a pretrained model (recommended for training)

# Train the model
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
yolo detect train data=coco8.yaml model=yolo11n.pt 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 của Ultralytics YOLO11 là gì?

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

  • Tự động Tải xuống Bộ dữ liệu: Tự động tải xuống các bộ 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 các số liệu huấn luyện theo thời gian thực để có được thông tin chi tiết tốt hơn.

Các tính năng này làm cho quá trình huấn luyệ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 YOLO11?

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

Ví dụ 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)
yolo train resume model=path/to/last.pt

Kiểm tra phần về Tiếp tục Huấn luyện Bị Gián đoạn để biết thêm thông tin.

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

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

Ví dụ Huấn luyện MPS

from ultralytics import YOLO

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

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

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

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

Ultralytics YOLO11 cho phép bạn định cấu hình nhiều cài đặt huấn luyện khác nhau, chẳng hạn như kích thước lô, tốc độ học, số lượng epochs, v.v. thông qua các đối số. Dưới đây là một cái nhìn tổng quan ngắn gọn:

Đối số Mặc định Mô tả
model None Đường dẫn đến tệp mô hình để huấn luyện.
data None Đường dẫn đến tệp cấu hình bộ dữ liệu (ví dụ: coco8.yaml).
epochs 100 Tổng số lượng epochs huấn luyện.
batch 16 Kích thước lô, có thể điều chỉnh dưới dạng số nguyên hoặc chế độ tự động.
imgsz 640 Kích thước ảnh mục tiêu để huấn luyện.
device None Thiết bị tính toán để huấn luyện, ví dụ: cpu, 0, 0,1, hoặc mps.
save 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.

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



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

Bình luận