Meet YOLO26: next-gen vision AI.

Link to this sectionTăng cường dữ liệu sử dụng Ultralytics YOLO#

YOLO data augmentation examples showing original and augmented images for training

Link to this sectionGiới thiệu#

Tăng cường dữ liệu là một kỹ thuật quan trọng trong thị giác máy tính, giúp mở rộng tập dữ liệu huấn luyện của bạn một cách nhân tạo bằng cách áp dụng nhiều phép biến đổi khác nhau lên các hình ảnh hiện có. Khi huấn luyện các mô hình deep learning như Ultralytics YOLO, tăng cường dữ liệu giúp cải thiện độ ổn định của mô hình, giảm hiện tượng quá khớp (overfitting) và tăng cường khả năng tổng quát hóa trong các tình huống thực tế.



Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀

Link to this sectionTại sao Tăng cường dữ liệu lại quan trọng#

Tăng cường dữ liệu phục vụ nhiều mục đích thiết yếu trong việc huấn luyện các mô hình thị giác máy tính:

  • Mở rộng tập dữ liệu: Bằng cách tạo ra các biến thể của hình ảnh hiện có, bạn có thể tăng hiệu quả quy mô tập dữ liệu huấn luyện mà không cần thu thập thêm dữ liệu mới.
  • Cải thiện khả năng tổng quát hóa: Mô hình học cách nhận diện đối tượng trong các điều kiện khác nhau, giúp chúng trở nên ổn định hơn trong các ứng dụng thực tế.
  • Giảm quá khớp (overfitting): Bằng cách đưa sự biến đổi vào dữ liệu huấn luyện, mô hình ít có khả năng ghi nhớ các đặc điểm hình ảnh cụ thể.
  • Nâng cao hiệu suất: Các mô hình được huấn luyện với quá trình tăng cường phù hợp thường đạt độ chính xác tốt hơn trên các tập validation và test.

Việc triển khai của Ultralytics YOLO cung cấp một bộ kỹ thuật tăng cường toàn diện, mỗi kỹ thuật phục vụ những mục đích cụ thể và đóng góp vào hiệu suất mô hình theo những cách khác nhau. Hướng dẫn này sẽ khám phá chi tiết từng tham số tăng cường, giúp bạn hiểu khi nào và làm thế nào để sử dụng chúng một cách hiệu quả trong các dự án của mình.

Link to this sectionVí dụ Cấu hình#

Bạn có thể tùy chỉnh từng tham số bằng Python API, giao diện dòng lệnh (CLI) hoặc file cấu hình. Dưới đây là các ví dụ về cách thiết lập tăng cường dữ liệu theo từng phương pháp.

Ví dụ về Cấu hình
import albumentations as A

from ultralytics import YOLO

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

# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training without any augmentations (disabled values omitted for clarity)
model.train(
    data="coco.yaml",
    epochs=100,
    hsv_h=0.0,
    hsv_s=0.0,
    hsv_v=0.0,
    translate=0.0,
    scale=0.0,
    fliplr=0.0,
    mosaic=0.0,
    erasing=0.0,
    auto_augment=None,
)

# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)

Link to this sectionSử dụng một file cấu hình#

Bạn có thể xác định tất cả các tham số huấn luyện, bao gồm cả tăng cường, trong một file cấu hình YAML (ví dụ: train_custom.yaml). Tham số mode chỉ bắt buộc khi sử dụng CLI. File YAML mới này sẽ ghi đè lên file mặc định nằm trong gói ultralytics.

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

Sau đó, khởi chạy huấn luyện với Python API:

Ví dụ về Training
from ultralytics import YOLO

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

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")

Link to this sectionTăng cường không gian màu#

Link to this sectionĐiều chỉnh Hue (hsv_h)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0.015
  • Cách sử dụng: Dịch chuyển màu sắc hình ảnh trong khi vẫn bảo toàn mối quan hệ giữa chúng. Siêu tham số hsv_h xác định độ lớn dịch chuyển, với mức điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng -hsv_h đến hsv_h. Ví dụ, với hsv_h=0.3, mức dịch chuyển được chọn ngẫu nhiên từ -0.3 đến 0.3. Đối với các giá trị trên 0.5, việc dịch chuyển hue sẽ lặp lại vòng quanh bánh xe màu, đó là lý do tại sao các hình thức tăng cường trông giống nhau giữa 0.5-0.5.
  • Mục đích: Đặc biệt hữu ích cho các tình huống ngoài trời nơi điều kiện ánh sáng có thể ảnh hưởng đáng kể đến diện mạo đối tượng. Ví dụ, một quả chuối có thể trông vàng hơn dưới ánh nắng chói chang nhưng lại hơi xanh hơn khi ở trong nhà.
  • Cách triển khai của Ultralytics: RandomHSV
-0.5-0.250.00.250.5
Hue shift -0.5 augmentationHue shift -0.25 augmentationOriginal image without augmentationHue shift 0.25 augmentationHue shift -0.5 augmentation

Link to this sectionĐiều chỉnh độ bão hòa (Saturation) (hsv_s)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0.7
  • Cách sử dụng: Thay đổi cường độ màu sắc trong hình ảnh. Siêu tham số hsv_s xác định độ lớn dịch chuyển, với mức điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng -hsv_s đến hsv_s. Ví dụ, với hsv_s=0.7, cường độ được chọn ngẫu nhiên từ -0.7 đến 0.7.
  • Mục đích: Giúp các mô hình xử lý các điều kiện thời tiết và cài đặt camera khác nhau. Ví dụ, biển báo giao thông màu đỏ có thể trông rất sống động vào một ngày nắng nhưng lại trông xỉn màu và nhạt nhòa trong điều kiện sương mù.
  • Cách triển khai của Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Saturation -1.0 grayscale augmentationSaturation -0.5 augmentationOriginal image without augmentationSaturation 0.5 augmentationSaturation 1.0 vivid augmentation

Link to this sectionĐiều chỉnh độ sáng (Brightness) (hsv_v)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0.4
  • Cách sử dụng: Thay đổi độ sáng của hình ảnh. Siêu tham số hsv_v xác định độ lớn dịch chuyển, với mức điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng -hsv_v đến hsv_v. Ví dụ, với hsv_v=0.4, cường độ được chọn ngẫu nhiên từ -0.4 đến 0.4.
  • Mục đích: Cần thiết để huấn luyện các mô hình cần hoạt động trong các điều kiện ánh sáng khác nhau. Ví dụ, một quả táo đỏ có thể trông sáng dưới ánh mặt trời nhưng tối hơn nhiều trong bóng râm.
  • Cách triển khai của Ultralytics: RandomHSV
-1.0-0.50.00.51.0
Brightness -1.0 dark augmentationBrightness -0.5 augmentationOriginal image without augmentationBrightness 0.5 augmentationBrightness 1.0 bright augmentation

Link to this sectionBiến đổi hình học#

Link to this sectionXoay (degrees)#

  • Phạm vi: 0.0 đến 180
  • Mặc định: 0
  • Cách sử dụng: Xoay hình ảnh ngẫu nhiên trong phạm vi chỉ định. Siêu tham số degrees xác định góc xoay, với mức điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng -degrees đến degrees. Ví dụ, với degrees=10.0, góc xoay được chọn ngẫu nhiên từ -10.0 đến 10.0.
  • Mục đích: Rất quan trọng cho các ứng dụng nơi các đối tượng có thể xuất hiện ở các hướng khác nhau. Ví dụ, trong ảnh chụp từ flycam, các phương tiện có thể được định hướng theo bất kỳ hướng nào, đòi hỏi mô hình phải nhận diện được đối tượng bất kể góc xoay của chúng.
  • Cách triển khai của Ultralytics: RandomPerspective
-180-900.090180
Rotation -180 degrees augmentationRotation -90 degrees augmentationOriginal image without augmentationRotation 90 degrees augmentationRotation 180 degrees augmentation

Link to this sectionDịch chuyển (Translation) (translate)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0.1
  • Cách sử dụng: Dịch chuyển hình ảnh theo chiều ngang và chiều dọc theo một tỷ lệ ngẫu nhiên của kích thước hình ảnh. Siêu tham số translate xác định độ lớn dịch chuyển, với mức điều chỉnh cuối cùng được chọn ngẫu nhiên hai lần (một lần cho mỗi trục) trong phạm vi -translatetranslate. Ví dụ, với translate=0.5, phép dịch chuyển được chọn ngẫu nhiên trong khoảng -0.5 đến 0.5 trên trục x, và một giá trị ngẫu nhiên độc lập khác được chọn trong cùng phạm vi trên trục y.
  • Mục đích: Giúp các mô hình học cách phát hiện các đối tượng hiển thị một phần và cải thiện độ ổn định đối với vị trí đối tượng. Ví dụ, trong các ứng dụng đánh giá thiệt hại phương tiện, các bộ phận của xe có thể xuất hiện đầy đủ hoặc một phần trong khung hình tùy thuộc vào vị trí và khoảng cách của nhiếp ảnh gia, tăng cường dịch chuyển sẽ dạy mô hình nhận diện các đặc điểm này bất kể mức độ đầy đủ hay vị trí của chúng.
  • Cách triển khai của Ultralytics: RandomPerspective
  • Lưu ý: Để đơn giản hóa, các phép dịch chuyển được áp dụng dưới đây là giống nhau mỗi lần cho cả hai trục xy. Các giá trị -1.01.0 không được hiển thị vì chúng sẽ dịch chuyển hình ảnh hoàn toàn ra ngoài khung hình.
-0.5-0.250.00.250.5
Translation -0.5 shift augmentationTranslation -0.25 shift augmentationOriginal image without augmentationTranslation 0.25 shift augmentationTranslation 0.5 shift augmentation

Link to this sectionTỷ lệ (Scale) (scale)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0.5
  • Cách sử dụng: Thay đổi kích thước hình ảnh theo hệ số ngẫu nhiên trong phạm vi chỉ định. Siêu tham số scale xác định hệ số thu phóng, với mức điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng 1-scale1+scale. Ví dụ, với scale=0.5, tỷ lệ được chọn ngẫu nhiên trong khoảng 0.5 đến 1.5.
  • Mục đích: Cho phép các mô hình xử lý đối tượng ở các khoảng cách và kích thước khác nhau. Ví dụ, trong các ứng dụng lái xe tự động, các phương tiện có thể xuất hiện ở các khoảng cách khác nhau so với camera, đòi hỏi mô hình phải nhận diện chúng bất kể kích thước nào.
  • Cách triển khai của Ultralytics: RandomPerspective
  • Lưu ý:
    • Giá trị -1.0 không được hiển thị vì nó sẽ làm hình ảnh biến mất, trong khi 1.0 đơn giản là dẫn đến việc phóng to 2x.
    • Các giá trị hiển thị trong bảng dưới đây là những giá trị được áp dụng thông qua siêu tham số scale, không phải hệ số tỷ lệ cuối cùng.
    • Nếu scale lớn hơn 1.0, hình ảnh có thể rất nhỏ hoặc bị lật, vì hệ số tỷ lệ được chọn ngẫu nhiên trong khoảng 1-scale1+scale. Ví dụ, với scale=3.0, tỷ lệ được chọn ngẫu nhiên trong khoảng -2.0 đến 4.0. Nếu một giá trị âm được chọn, hình ảnh sẽ bị lật.
-0.5-0.250.00.250.5
Scale 0.5x zoom out augmentationScale 0.75x zoom out augmentationOriginal image without augmentationScale 1.25x zoom in augmentationScale 1.5x zoom in augmentation

Link to this sectionShear (shear)#

  • Phạm vi: -180 đến +180
  • Mặc định: 0
  • Cách sử dụng: Giới thiệu một phép biến đổi hình học làm lệch hình ảnh dọc theo cả trục x và trục y, thực hiện việc chuyển đổi các phần của hình ảnh theo một hướng trong khi vẫn giữ các đường song song. Siêu tham số shear xác định góc shear, với mức điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng -shear đến shear. Ví dụ, với shear=10.0, mức shear được chọn ngẫu nhiên trong khoảng -10 đến 10 trên trục x, và một giá trị ngẫu nhiên độc lập khác được chọn trong cùng phạm vi trên trục y.
  • Mục đích: Giúp các mô hình tổng quát hóa tốt hơn với các biến thể về góc nhìn do các góc nghiêng nhẹ hoặc góc nhìn xiên. Ví dụ, trong giám sát giao thông, các đối tượng như xe hơi và biển báo đường bộ có thể trông bị nghiêng do cách lắp đặt camera không vuông góc. Áp dụng tăng cường shear đảm bảo mô hình học được cách nhận diện đối tượng bất chấp những biến dạng lệch này.
  • Cách triển khai của Ultralytics: RandomPerspective
  • Lưu ý:
    • Các giá trị shear có thể làm biến dạng hình ảnh nhanh chóng, vì vậy khuyến nghị nên bắt đầu với các giá trị nhỏ và tăng dần chúng.
    • Không giống như các phép biến đổi phối cảnh, shear không tạo ra chiều sâu hoặc điểm tụ mà thay vào đó làm biến dạng hình dạng của đối tượng bằng cách thay đổi các góc trong khi vẫn giữ các cạnh đối diện song song.
-10-50.0510
Shear -10 degrees augmentationShear -5 degrees augmentationOriginal image without augmentationShear 5 degrees augmentationShear 10 degrees augmentation

Link to this sectionPhối cảnh (perspective)#

  • Phạm vi: 0.0 - 0.001
  • Mặc định: 0
  • Cách dùng: Áp dụng phép biến đổi phối cảnh toàn phần dọc theo cả trục x và trục y, mô phỏng cách các đối tượng xuất hiện khi được nhìn từ các độ sâu hoặc góc độ khác nhau. Siêu tham số perspective xác định mức độ phối cảnh, với mức điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng từ -perspective đến perspective. Ví dụ, với perspective=0.001, phối cảnh sẽ được chọn ngẫu nhiên trong khoảng từ -0.001 đến 0.001 trên trục x, và một giá trị ngẫu nhiên độc lập khác sẽ được chọn trong cùng phạm vi đó trên trục y.
  • Mục đích: Phép tăng cường dữ liệu phối cảnh là rất quan trọng để xử lý các thay đổi góc nhìn cực đoan, đặc biệt trong các tình huống mà đối tượng xuất hiện bị rút ngắn hoặc biến dạng do thay đổi phối cảnh. Ví dụ, trong hệ thống phát hiện đối tượng bằng máy bay không người lái (drone), các tòa nhà, đường sá và phương tiện có thể trông bị kéo dài hoặc nén lại tùy thuộc vào độ nghiêng và độ cao của drone. Bằng cách áp dụng các phép biến đổi phối cảnh, các model học được cách nhận diện đối tượng bất chấp những biến dạng do phối cảnh gây ra, từ đó cải thiện tính mạnh mẽ của chúng trong các triển khai thực tế.
  • Cách triển khai của Ultralytics: RandomPerspective
-0.001-0.00050.00.00050.001
Perspective -0.001 transformationPerspective -0.0005 transformationOriginal image without augmentationPerspective 0.0005 transformationPerspective 0.001 transformation

Link to this sectionLật dọc (flipud)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0
  • Usage: Performs a vertical flip by inverting the image along the y-axis. This transformation mirrors the entire image upside-down but preserves all spatial relationships between objects. The flipud hyperparameter defines the probability of applying the transformation, with a value of flipud=1.0 ensuring that all images are flipped and a value of flipud=0.0 disabling the transformation entirely. For example, with flipud=0.5, each image has a 50% chance of being flipped upside-down.
  • Mục đích: Hữu ích cho các tình huống mà đối tượng có thể xuất hiện ngược đầu. Ví dụ, trong các hệ thống thị giác robot, các đối tượng trên băng chuyền hoặc cánh tay robot có thể được gắp và đặt ở nhiều hướng khác nhau. Lật dọc giúp model nhận diện đối tượng bất kể vị trí trên dưới của chúng.
  • Triển khai của Ultralytics: RandomFlip
Tắt flipudBật flipud
Original image without augmentationVertical flip augmentation enabled

Link to this sectionLật ngang (fliplr)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0.5
  • Cách dùng: Thực hiện lật ngang bằng cách soi gương ảnh theo trục x. Phép biến đổi này hoán đổi hai bên trái và phải trong khi vẫn duy trì tính nhất quán không gian, giúp model tổng quát hóa tốt hơn với các đối tượng xuất hiện ở các hướng soi gương. Siêu tham số fliplr xác định xác suất áp dụng phép biến đổi, với giá trị fliplr=1.0 đảm bảo tất cả ảnh đều được lật và giá trị fliplr=0.0 vô hiệu hóa hoàn toàn. Ví dụ, với fliplr=0.5, mỗi ảnh có 50% cơ hội được lật ngang.
  • Mục đích: Lật ngang được sử dụng rộng rãi trong phát hiện đối tượng, ước tính tư thế và nhận diện khuôn mặt để cải thiện khả năng chống chịu đối với các biến thể trái-phải. Ví dụ, trong lái xe tự động, phương tiện và người đi bộ có thể xuất hiện ở bất kỳ bên nào của đường, và lật ngang giúp model nhận diện chúng tốt như nhau ở cả hai hướng.
  • Triển khai của Ultralytics: RandomFlip
Tắt fliplrBật fliplr
Original image without augmentationHorizontal flip augmentation enabled

Link to this sectionHoán đổi kênh BGR (bgr)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0
  • Cách dùng: Hoán đổi các kênh màu của ảnh từ RGB sang BGR, thay đổi thứ tự thể hiện màu sắc. Siêu tham số bgr xác định xác suất áp dụng phép biến đổi, với bgr=1.0 đảm bảo tất cả ảnh đều trải qua quá trình hoán đổi kênh và bgr=0.0 vô hiệu hóa nó. Ví dụ, với bgr=0.5, mỗi ảnh có 50% cơ hội được chuyển đổi từ RGB sang BGR.
  • Mục đích: Tăng cường khả năng chống chịu đối với các thứ tự kênh màu khác nhau. Ví dụ, khi huấn luyện các model phải hoạt động trên nhiều hệ thống camera và thư viện hình ảnh nơi định dạng RGB và BGR có thể được sử dụng không nhất quán, hoặc khi triển khai các model vào môi trường mà định dạng màu đầu vào có thể khác với dữ liệu huấn luyện.
  • Triển khai của Ultralytics: Format
Tắt bgrBật bgr
Original image without augmentationBGR channel swap augmentation

Link to this sectionMosaic (mosaic)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 1
  • Cách dùng: Kết hợp bốn ảnh huấn luyện thành một. Siêu tham số mosaic xác định xác suất áp dụng phép biến đổi, với mosaic=1.0 đảm bảo tất cả ảnh đều được kết hợp và mosaic=0.0 vô hiệu hóa phép biến đổi. Ví dụ, với mosaic=0.5, mỗi ảnh có 50% cơ hội được kết hợp với ba ảnh khác.
  • Mục đích: Rất hiệu quả để cải thiện khả năng phát hiện đối tượng nhỏ và hiểu ngữ cảnh. Ví dụ, trong các dự án bảo tồn động vật hoang dã nơi động vật có thể xuất hiện ở các khoảng cách và tỷ lệ khác nhau, tăng cường Mosaic giúp model học cách nhận diện cùng một loài qua các kích thước khác nhau, các phần bị che khuất và các ngữ cảnh môi trường khác nhau bằng cách tạo ra các mẫu huấn luyện đa dạng một cách nhân tạo từ dữ liệu hạn chế.
  • Triển khai của Ultralytics: Mosaic
  • Lưu ý:
    • Ngay cả khi tăng cường mosaic làm cho model mạnh mẽ hơn, nó cũng có thể khiến quá trình huấn luyện trở nên khó khăn hơn.
    • Tăng cường mosaic có thể được tắt vào giai đoạn cuối của quá trình huấn luyện bằng cách đặt close_mosaic thành số lượng epoch trước khi kết thúc cần tắt nó. Ví dụ, nếu epochs được đặt là 200close_mosaic được đặt là 20, thì tăng cường mosaic sẽ bị vô hiệu hóa sau 180 epoch. Nếu close_mosaic được đặt là 0, tăng cường mosaic sẽ được bật trong suốt quá trình huấn luyện.
    • Tâm của mosaic được tạo ra được xác định bằng các giá trị ngẫu nhiên, và có thể nằm bên trong ảnh hoặc bên ngoài ảnh.
    • Triển khai hiện tại của tăng cường mosaic kết hợp 4 ảnh được chọn ngẫu nhiên từ tập dữ liệu. Nếu tập dữ liệu nhỏ, cùng một ảnh có thể được sử dụng nhiều lần trong cùng một mosaic.
Tắt mosaicBật mosaic
Original image without augmentationMosaic 4-image augmentation enabled

Link to this sectionMixup (mixup)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0
  • Cách dùng: Pha trộn hai ảnh và các nhãn của chúng với xác suất cho trước. Siêu tham số mixup xác định xác suất áp dụng phép biến đổi, với mixup=1.0 đảm bảo tất cả ảnh đều được trộn và mixup=0.0 vô hiệu hóa phép biến đổi. Ví dụ, với mixup=0.5, mỗi ảnh có 50% cơ hội được trộn với một ảnh khác.
  • Mục đích: Cải thiện độ mạnh mẽ của model và giảm tình trạng quá khớp (overfitting). Ví dụ, trong các hệ thống nhận diện sản phẩm bán lẻ, Mixup giúp model học được các đặc trưng mạnh mẽ hơn bằng cách pha trộn các hình ảnh của các sản phẩm khác nhau, dạy cho nó cách xác định các mặt hàng ngay cả khi chúng bị che khuất một phần hoặc bởi các sản phẩm khác trên kệ hàng đông đúc.
  • Triển khai của Ultralytics: Mixup
  • Lưu ý:
    • Tỷ lệ mixup là một giá trị ngẫu nhiên được chọn từ phân phối beta np.random.beta(32.0, 32.0), có nghĩa là mỗi ảnh đóng góp khoảng 50%, với những thay đổi nhỏ.
Ảnh đầu tiên, tắt mixupẢnh thứ hai, tắt mixupBật mixup
First image for MixUp blendingSecond image for MixUp blendingMixUp blending augmentation enabled

Link to this sectionCutMix (cutmix)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0
  • Cách dùng: Cắt một vùng hình chữ nhật từ ảnh này và dán nó lên ảnh khác với xác suất cho trước. Siêu tham số cutmix xác định xác suất áp dụng phép biến đổi, với cutmix=1.0 đảm bảo tất cả ảnh đều trải qua phép biến đổi này và cutmix=0.0 vô hiệu hóa nó hoàn toàn. Ví dụ, với cutmix=0.5, mỗi ảnh có 50% cơ hội có một vùng được thay thế bằng một mảng từ ảnh khác.
  • Mục đích: Nâng cao hiệu suất model bằng cách tạo ra các tình huống che khuất thực tế trong khi vẫn duy trì tính toàn vẹn của các đặc trưng cục bộ. Ví dụ, trong các hệ thống lái xe tự động, CutMix giúp model học cách nhận diện phương tiện hoặc người đi bộ ngay cả khi chúng bị che khuất một phần bởi các đối tượng khác, cải thiện độ chính xác phát hiện trong các môi trường thực tế phức tạp với các đối tượng chồng lấp.
  • Triển khai của Ultralytics: CutMix
  • Lưu ý:
    • Kích thước và vị trí của vùng cắt được xác định ngẫu nhiên cho mỗi lần áp dụng.
    • Không giống như Mixup pha trộn giá trị pixel trên toàn cục, cutmix duy trì cường độ pixel gốc trong các vùng được cắt, bảo toàn các đặc trưng cục bộ.
    • Một vùng chỉ được dán vào ảnh mục tiêu nếu nó không chồng lấp với bất kỳ bbox nào hiện có. Ngoài ra, chỉ những bbox giữ lại được ít nhất 0.1 (10%) diện tích gốc của chúng trong vùng được dán mới được bảo toàn.
    • Ngưỡng diện tích bbox tối thiểu này không thể thay đổi với triển khai hiện tại và được đặt mặc định là 0.1.
Ảnh đầu tiên, tắt cutmixẢnh thứ hai, tắt cutmixBật cutmix
First image for CutMixSecond image for CutMixCutMix augmentation enabled

Link to this sectionTăng cường đặc thù cho Segmentation#

Link to this sectionCopy-Paste (copy_paste)#

  • Phạm vi: 0.0 - 1.0
  • Mặc định: 0
  • Cách dùng: Chỉ hoạt động cho các tác vụ phân đoạn (segmentation), phép tăng cường này sao chép các đối tượng trong hoặc giữa các ảnh dựa trên một xác suất được chỉ định, được kiểm soát bởi copy_paste_mode. Siêu tham số copy_paste xác định xác suất áp dụng phép biến đổi, với copy_paste=1.0 đảm bảo tất cả ảnh đều được sao chép và copy_paste=0.0 vô hiệu hóa phép biến đổi. Ví dụ, với copy_paste=0.5, mỗi ảnh có 50% cơ hội có các đối tượng được sao chép từ một ảnh khác.
  • Mục đích: Đặc biệt hữu ích cho các tác vụ phân đoạn cá thể (instance segmentation) và các lớp đối tượng hiếm. Ví dụ, trong phát hiện lỗi công nghiệp nơi một số loại lỗi xuất hiện không thường xuyên, tăng cường Copy-Paste có thể làm tăng tần suất xuất hiện của các lỗi hiếm này một cách nhân tạo bằng cách sao chép chúng từ ảnh này sang ảnh khác, giúp model học tốt hơn các trường hợp ít được đại diện này mà không yêu cầu thêm các mẫu lỗi.
  • Triển khai của Ultralytics: CopyPaste
  • Lưu ý:
    • Như hình minh họa trong gif bên dưới, tăng cường copy_paste có thể được sử dụng để sao chép đối tượng từ ảnh này sang ảnh khác.
    • Khi một đối tượng được sao chép, bất kể copy_paste_mode, giá trị Intersection over Area (IoA) của nó sẽ được tính toán với tất cả đối tượng trong ảnh nguồn. Nếu tất cả các IoA đều dưới 0.3 (30%), đối tượng sẽ được dán vào ảnh mục tiêu. Nếu chỉ một trong số các IoA trên 0.3, đối tượng sẽ không được dán vào ảnh mục tiêu.
    • Ngưỡng IoA không thể thay đổi với triển khai hiện tại và được đặt mặc định là 0.3.
Tắt copy_pasteBật copy_paste với copy_paste_mode=flipTrực quan hóa quy trình copy_paste
Original image without augmentationCopy-paste augmentation enabledCopy-paste augmentation animated demo

Link to this sectionChế độ Copy-Paste (copy_paste_mode)#

  • Tùy chọn: 'flip', 'mixup'
  • Mặc định: 'flip'
  • Cách dùng: Xác định phương pháp được sử dụng cho tăng cường copy-paste. Nếu được đặt thành 'flip', các đối tượng sẽ đến từ cùng một ảnh, trong khi 'mixup' cho phép sao chép các đối tượng từ các ảnh khác nhau.
  • Mục đích: Cho phép sự linh hoạt trong cách tích hợp các đối tượng đã sao chép vào ảnh mục tiêu.
  • Triển khai của Ultralytics: CopyPaste
  • Lưu ý:
    • Nguyên tắc IoA là giống nhau cho cả copy_paste_mode, nhưng cách các đối tượng được sao chép là khác nhau.
    • Tùy thuộc vào kích thước ảnh, các đối tượng đôi khi có thể được sao chép một phần hoặc hoàn toàn ra ngoài khung hình.
    • Tùy thuộc vào chất lượng của chú thích đa giác (polygon), các đối tượng được sao chép có thể có những biến đổi nhỏ về hình dạng so với các đối tượng gốc.
Ảnh tham chiếuẢnh được chọn cho copy_pasteBật copy_paste với copy_paste_mode=mixup
Second image for MixUp blendingOriginal image without augmentationCopy-paste with MixUp mode

Link to this sectionTăng cường đặc thù cho Classification#

Link to this sectionAuto Augment (auto_augment)#

  • Tùy chọn: 'randaugment', 'autoaugment', 'augmix', None
  • Mặc định: 'randaugment'
  • Cách sử dụng: Áp dụng các chính sách tăng cường dữ liệu tự động cho phân loại. Tùy chọn 'randaugment' sử dụng RandAugment, 'autoaugment' sử dụng AutoAugment, và 'augmix' sử dụng AugMix. Thiết lập thành None để vô hiệu hóa tăng cường dữ liệu tự động.
  • Mục đích: Tối ưu hóa các chiến lược tăng cường dữ liệu tự động cho các tác vụ phân loại. Sự khác biệt cụ thể như sau:
    • AutoAugment: Chế độ này áp dụng các chính sách tăng cường được xác định trước, học từ các tập dữ liệu như ImageNet, CIFAR10, và SVHN. Người dùng có thể chọn các chính sách hiện có này nhưng không thể huấn luyện các chính sách mới trong Torchvision. Để khám phá các chiến lược tăng cường tối ưu cho các tập dữ liệu cụ thể, cần sử dụng các thư viện bên ngoài hoặc các triển khai tùy chỉnh. Tham khảo bài báo AutoAugment.
    • RandAugment: Áp dụng lựa chọn ngẫu nhiên các phép biến đổi với cường độ đồng nhất. Cách tiếp cận này giảm nhu cầu cho giai đoạn tìm kiếm mở rộng, giúp tăng hiệu quả tính toán trong khi vẫn cải thiện độ bền vững của mô hình. Tham khảo bài báo RandAugment.
    • AugMix: AugMix là một phương pháp tăng cường dữ liệu giúp nâng cao độ bền vững của mô hình bằng cách tạo ra các biến thể hình ảnh đa dạng thông qua sự kết hợp ngẫu nhiên các phép biến đổi đơn giản. Tham khảo bài báo AugMix.
  • Triển khai của Ultralytics: classify_augmentations()
  • Lưu ý:
    • Về cơ bản, sự khác biệt chính giữa ba phương pháp là cách các chính sách tăng cường được định nghĩa và áp dụng.
    • Bạn có thể tham khảo bài viết này so sánh chi tiết ba phương pháp trên.

Link to this sectionXóa ngẫu nhiên (erasing)#

  • Phạm vi: 0.0 - 0.9
  • Mặc định: 0.4
  • Cách sử dụng: Xóa ngẫu nhiên các phần của hình ảnh trong quá trình huấn luyện phân loại. Siêu tham số erasing xác định xác suất áp dụng phép biến đổi, với erasing=0.9 đảm bảo hầu hết các hình ảnh đều bị xóa và erasing=0.0 vô hiệu hóa phép biến đổi. Ví dụ, với erasing=0.5, mỗi hình ảnh có 50% cơ hội bị xóa một phần.
  • Mục đích: Giúp mô hình học các đặc trưng bền vững và ngăn ngừa việc quá phụ thuộc vào các vùng hình ảnh cụ thể. Ví dụ, trong các hệ thống nhận diện khuôn mặt, xóa ngẫu nhiên giúp mô hình trở nên bền vững hơn với các vật cản một phần như kính mát, khẩu trang hoặc các vật thể khác có thể che khuất các đặc điểm trên khuôn mặt. Điều này cải thiện hiệu suất thực tế bằng cách buộc mô hình nhận diện cá nhân dựa trên nhiều đặc điểm khuôn mặt thay vì chỉ phụ thuộc vào các đặc điểm nổi bật dễ bị che khuất.
  • Triển khai của Ultralytics: classify_augmentations()
  • Lưu ý:
    • Phép tăng cường erasing đi kèm với các siêu tham số scale, ratio, và value không thể thay đổi với triển khai hiện tại. Các giá trị mặc định của chúng là (0.02, 0.33), (0.3, 3.3), và 0 như được nêu trong tài liệu của PyTorch.
    • Giới hạn trên của siêu tham số erasing được đặt là 0.9 để tránh áp dụng phép biến đổi lên tất cả các hình ảnh.
Tắt erasingBật erasing (ví dụ 1)Bật erasing (ví dụ 2)Bật erasing (ví dụ 3)
Original image without augmentationRandom erasing example 1Random erasing example 2Random erasing example 3

Link to this sectionCác tính năng tăng cường nâng cao#

Link to this sectionBiến đổi Albumentations tùy chỉnh (augmentations)#

  • Loại: list các phép biến đổi Albumentations
  • Mặc định: None
  • Cách sử dụng: Cho phép bạn cung cấp các phép biến đổi Albumentations tùy chỉnh để tăng cường dữ liệu thông qua Python API. Tham số này chấp nhận một danh sách các đối tượng biến đổi Albumentations sẽ được áp dụng trong quá trình huấn luyện thay vì các phép biến đổi Albumentations mặc định.
  • Mục đích: Cung cấp khả năng kiểm soát chi tiết các chiến lược tăng cường dữ liệu bằng cách tận dụng thư viện phong phú của Albumentations. Điều này đặc biệt hữu ích khi bạn cần các phép tăng cường chuyên biệt ngoài các tùy chọn YOLO tích hợp sẵn, chẳng hạn như điều chỉnh màu sắc nâng cao, thêm nhiễu hoặc các phép biến đổi đặc thù theo miền dữ liệu.
  • Triển khai của Ultralytics: Albumentations
Ví dụ về Albumentations tùy chỉnh
import albumentations as A

from ultralytics import YOLO

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

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]

# Train with custom Albumentations transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=custom_transforms,  # Pass custom transforms
    imgsz=640,
)

Các điểm chính:

  • Chỉ dành cho Python API: Các phép biến đổi Albumentations tùy chỉnh hiện chỉ được hỗ trợ qua Python API. Chúng không thể được chỉ định thông qua CLI hoặc tệp cấu hình YAML.
  • Thay thế các biến đổi mặc định: Khi bạn cung cấp các phép biến đổi tùy chỉnh qua tham số augmentations, chúng sẽ thay thế hoàn toàn các phép biến đổi Albumentations mặc định. Các phép tăng cường YOLO mặc định (như mosaic, hsv_h, hsv_s, degrees, v.v.) vẫn hoạt động và được áp dụng độc lập.
  • Khả năng tương thích với BBox: Hãy thận trọng khi sử dụng các phép biến đổi không gian (các phép làm thay đổi hình học của ảnh). Ultralytics tự động xử lý việc điều chỉnh BBox, nhưng một số phép biến đổi phức tạp có thể yêu cầu cấu hình bổ sung.
  • Thư viện phong phú: Albumentations cung cấp hơn 70 phép biến đổi khác nhau. Hãy khám phá tài liệu Albumentations để tìm hiểu tất cả các tùy chọn có sẵn.
  • Xem xét hiệu suất: Thêm quá nhiều phép tăng cường hoặc sử dụng các phép biến đổi tốn kém về tính toán có thể làm chậm quá trình huấn luyện. Hãy bắt đầu với một tập hợp nhỏ và theo dõi tốc độ huấn luyện.

Các trường hợp sử dụng phổ biến:

  • Ảnh y tế: Áp dụng các phép biến đổi chuyên biệt như biến dạng đàn hồi hoặc biến dạng lưới để tăng cường dữ liệu X-quang hoặc MRI
  • Ảnh hàng không/vệ tinh: Sử dụng các phép biến đổi được tối ưu hóa cho góc nhìn từ trên cao
  • Điều kiện thiếu sáng: Áp dụng điều chỉnh nhiễu và độ sáng để mô phỏng điều kiện chiếu sáng khó khăn
  • Kiểm tra công nghiệp: Thêm các kiểu lỗi hoặc biến thể kết cấu cho các ứng dụng kiểm soát chất lượng

Ghi chú tương thích:

  • Yêu cầu Albumentations phiên bản 1.0.3 trở lên
  • Tương thích với tất cả các tác vụ phát hiện và phân đoạn của YOLO
  • Không áp dụng cho các tác vụ phân loại (phân loại sử dụng quy trình tăng cường khác)

Để biết thêm thông tin về Albumentations và các phép biến đổi có sẵn, hãy truy cập tài liệu chính thức của Albumentations.

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

Link to this sectionCó quá nhiều phép tăng cường để lựa chọn. Làm thế nào để biết nên dùng cái nào?#

Việc lựa chọn các phép tăng cường phù hợp phụ thuộc vào trường hợp sử dụng cụ thể và tập dữ liệu của bạn. Dưới đây là một vài hướng dẫn chung để giúp bạn quyết định:

  • Trong hầu hết các trường hợp, sự thay đổi nhỏ về màu sắc và độ sáng đều có lợi. Các giá trị mặc định cho hsv_h, hsv_s, và hsv_v là điểm khởi đầu tốt.
  • Nếu góc nhìn của camera nhất quán và không thay đổi sau khi triển khai mô hình, bạn có thể bỏ qua các phép biến đổi hình học như rotation, translation, scale, shear, hoặc perspective. Tuy nhiên, nếu góc camera có thể thay đổi và bạn cần mô hình bền vững hơn, tốt hơn là nên giữ các phép tăng cường này.
  • Chỉ sử dụng phép tăng cường mosaic nếu việc có các vật thể bị che khuất một phần hoặc nhiều vật thể trên mỗi ảnh là chấp nhận được và không làm thay đổi giá trị nhãn. Hoặc, bạn có thể giữ mosaic hoạt động nhưng tăng giá trị close_mosaic để tắt nó sớm hơn trong quá trình huấn luyện.

Tóm lại: hãy giữ mọi thứ đơn giản. Bắt đầu với một tập hợp các phép tăng cường nhỏ và dần dần thêm nhiều hơn khi cần. Mục tiêu là cải thiện khả năng tổng quát và độ bền vững của mô hình, không phải làm phức tạp hóa quá trình huấn luyện. Ngoài ra, hãy đảm bảo các phép tăng cường bạn áp dụng phản ánh phân phối dữ liệu mà mô hình của bạn sẽ gặp phải trong môi trường thực tế.

Link to this sectionKhi bắt đầu huấn luyện, tôi thấy tham chiếu albumentations: Blur[...]. Điều đó có nghĩa là Ultralytics YOLO chạy thêm các phép tăng cường như làm mờ không?#

Nếu gói albumentations được cài đặt, Ultralytics tự động áp dụng một bộ các phép tăng cường hình ảnh bổ sung bằng thư viện này. Các phép tăng cường này được xử lý nội bộ và không yêu cầu cấu hình bổ sung.

Bạn có thể tìm thấy danh sách đầy đủ các phép biến đổi được áp dụng trong tài liệu kỹ thuật của chúng tôi, cũng như trong hướng dẫn tích hợp Albumentations. Lưu ý rằng chỉ các phép tăng cường có xác suất p lớn hơn 0 mới được kích hoạt. Chúng được áp dụng ở tần suất thấp để mô phỏng các nhiễu hình ảnh thực tế, chẳng hạn như làm mờ hoặc hiệu ứng ảnh xám.

Bạn cũng có thể cung cấp các phép biến đổi Albumentations tùy chỉnh của riêng mình bằng cách sử dụng Python API. Xem phần Các tính năng tăng cường nâng cao để biết thêm chi tiết.

Link to this sectionKhi bắt đầu huấn luyện, tôi không thấy bất kỳ tham chiếu nào đến albumentations. Tại sao?#

Kiểm tra xem gói albumentations đã được cài đặt chưa. Nếu chưa, bạn có thể cài đặt bằng cách chạy pip install albumentations. Sau khi cài đặt, gói này sẽ được Ultralytics tự động phát hiện và sử dụng.

Link to this sectionLàm cách nào để tùy chỉnh các phép tăng cường của tôi?#

Bạn có thể tùy chỉnh các phép tăng cường bằng cách tạo một lớp tập dữ liệu và trình huấn luyện tùy chỉnh. Ví dụ, bạn có thể thay thế các phép tăng cường phân loại mặc định của Ultralytics bằng torchvision.transforms.Resize của PyTorch hoặc các phép biến đổi khác. Xem ví dụ huấn luyện tùy chỉnh trong tài liệu phân loại để biết chi tiết triển khai.

Bình luận