Tăng cường dữ liệu sử dụng Ultralytics YOLO

Giới thiệu
Data augmentation là một kỹ thuật quan trọng trong computer vision, 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 các phép biến đổi khác nhau cho các hình ảnh hiện có. Khi huấn luyện các mô hình deep learning như Ultralytics YOLO, data augmentation giúp cải thiện độ mạnh mẽ của mô hình, giảm overfitting và tăng cường khả năng khái quát hóa cho các tình huống thực tế.
Xem: Cách sử dụng Mosaic, MixUp & nhiều phương pháp tăng cường dữ liệu hơn để giúp các mô hình Ultralytics YOLO khái quát hóa tốt hơn 🚀
Tạ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 quan trọng 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 kích thước tập dữ liệu huấn luyện một cách hiệu quả mà không cần thu thập dữ liệu mới.
- Cải thiện khả năng tổng quát hóa: Các mô hình học cách nhận dạng các đối tượng trong nhiều điều kiện khác nhau, làm cho chúng mạnh mẽ hơn trong các ứng dụng thực tế.
- Giảm Overfitting: Bằng cách đưa sự thay đổi vào dữ liệu huấn luyện, các mô hình ít có khả năng ghi nhớ các đặc điểm hình ảnh cụ thể.
- Hiệu suất Nâng cao: Các mô hình được huấn luyện với dữ liệu tăng cường phù hợp thường đạt được độ chính xác tốt hơn trên các bộ xác thực và kiểm tra.
Việc triển khai của Ultralytics YOLO cung cấp một bộ kỹ thuật tăng cường dữ liệu toàn diện, mỗi kỹ thuật phục vụ các 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 dữ liệu, giúp bạn hiểu khi nào và cách sử dụng chúng một cách hiệu quả trong các dự án của mình.
Cấu hình Ví dụ
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 tệp 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 trong từng phương pháp.
Các ví dụ về cấu hình
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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)
# Training with custom augmentation parameters
yolo detect train data=coco8.yaml model=yolo11n.pt epochs=100 hsv_h=0.03 hsv_s=0.6 hsv_v=0.5
Sử dụng tệp 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 dữ liệu, trong tệp cấu hình YAML (ví dụ: train_custom.yaml). Đối số mode tham số chỉ bắt buộc khi sử dụng CLI. Tập tin YAML mới này sau đó sẽ ghi đè mặc định nằm ở ultralytics gói.
# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo11n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5
Sau đó, khởi chạy quá trình huấn luyện bằng Python API:
Ví dụ huấn luyện
from ultralytics import YOLO
# Load a COCO-pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Train the model with custom configuration
model.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolo detect train model="yolo11n.pt" cfg=train_custom.yaml
Tăng Cường Không Gian Màu
Điều chỉnh Hue (hsv_h)
- Phạm vi:
0.0-1.0 - Mặc định:
0.015 - Cách sử dụng: Thay đổi màu sắc của ảnh trong khi vẫn giữ nguyên mối quan hệ giữa chúng. Tham số
hsv_hsiêu tham số xác định độ lớn dịch chuyển, với điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng-hsv_hvàhsv_h. Ví dụ, vớihsv_h=0.3, phần phối dịch chuyển được chọn ngẫu nhiên trong phạm vi-0.3đến0.3. Đối với các giá trị trên0.5, sự chuyển đổi màu sẳc bao quanh bánh xe màu, đó là lý do tại sao các phương pháp tăng cường trông giống nhau giữa0.5và-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 hình dạng của đối tượng. Ví dụ: một quả chuối có thể trông vàng hơn dưới ánh sáng mặt trời chói chang nhưng lại xanh hơn trong nhà.
- Triển khai của Ultralytics: RandomHSV
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Điều chỉnh độ bão hòa (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 ảnh. Tham số
hsv_ssiêu tham số xác định độ lớn dịch chuyển, với điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng-hsv_svàhsv_s. Ví dụ, vớihsv_s=0.7, cường độ được chọn ngẫu nhiên trong phạm vi-0.7đến0.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ụ: một 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 trông xỉn màu và nhạt nhòa trong điều kiện sương mù.
- Triển khai của Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Điều chỉnh độ sáng (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. Các
hsv_vsiêu tham số xác định độ lớn dịch chuyển, với điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng-hsv_vvàhsv_v. Ví dụ, vớihsv_v=0.4, cường độ được chọn ngẫu nhiên trong phạm vi-0.4đến0.4. - Mục đích: Cần thiết cho việc 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 nắng mặt trời nhưng tối hơn nhiều trong bóng râm.
- Triển khai của Ultralytics: RandomHSV
-1.0 | -0.5 | 0.0 | 0.5 | 1.0 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Các phép biến đổi hình học
Góc xoay (degrees)
- Phạm vi:
0.0đến180 - Mặc định:
0.0 - Cách sử dụng: Xoay ảnh ngẫu nhiên trong phạm vi được chỉ định. Tham số
degreessiêu tham số xác định góc xoay, với điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng-degreesvàdegrees. Ví dụ, vớidegrees=10.0, phần phối xoay được chọn ngẫu nhiên trong phạm vi-10.0đến10.0. - Mục đích: Rất quan trọng đối với các ứng dụng mà đối tượng có thể xuất hiện ở các hướng khác nhau. Ví dụ: trong ảnh chụp từ trên không bằng máy bay không người lái, xe cộ có thể được định hướng theo bất kỳ hướng nào, đòi hỏi các mô hình phải nhận dạng các đối tượng bất kể chúng xoay theo hướng nào.
- Triển khai của Ultralytics: RandomPerspective
-180 | -90 | 0.0 | 90 | 180 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Phép tăng cường dữ liệu tỷ lệnh (translate)
- Phạm vi:
0.0-1.0 - Mặc định:
0.1 - Cách sử dụng: Dịch chuyển ảnh theo chiều ngang và chiều dọc theo một phần ngẫu nhiên của kích thước ảnh. Tham số
translatesiêu tham số xác định độ lớn dịch chuyển, với điều chỉnh cuối cùng được chọn ngẫu nhiên hai lần (mỗi lần cho một trục) trong phạm vi-translatevàtranslate. Ví dụ, vớitranslate=0.5, phần phối tịnh tiến được chọn ngẫu nhiên trong phạm vi-0.5đến0.5trê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 độ mạnh mẽ đối với vị trí của đối tượng. Ví dụ: trong các ứng dụng đánh giá thiệt hại xe, 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 người chụp ảnh, việc tăng cường translation sẽ dạy mô hình nhận dạng các đặc điểm này bất kể tính đầy đủ hoặc vị trí của chúng.
- Triển khai của Ultralytics: RandomPerspective
- Lưu ý: Để đơn giản, các phép tịnh tiến được áp dụng bên dưới là giống nhau mỗi lần cho cả hai
xvàyaxes. Giá trị-1.0và1.0không được hiển thị vì chúng sẽ dịch hình ảnh hoàn toàn ra khỏi khung hình.
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Tỷ lệ (scale)
- Phạm vi: ≥
0.0 - Mặc định:
0.5 - Cách sử dụng: Thay đổi kích thước ảnh theo một hệ số ngẫu nhiên trong phạm vi được chỉ định. Tham số
scalesiêu tham số xác định hệ số tỷ lệ, với điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng1-scalevà1+scale. Ví dụ, vớiscale=0.5, phần phối tỷ lệ được chọn ngẫu nhiên trong phạm vi0.5đến1.5. - Mục đích: Cho phép các mô hình xử lý các đố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, xe cộ có thể xuất hiện ở nhiều khoảng cách khác nhau từ camera, đòi hỏi mô hình phải nhận dạng chúng bất kể kích thước của chúng.
- Triển khai của Ultralytics: RandomPerspective
- Lưu ý:
- Giá trị
-1.0không được hiển thị vì nó sẽ làm cho hình ảnh biến mất, trong khi1.0chỉ đơn giản là thu phóng 2 lần. - Các giá trị được hiển thị trong bảng dưới đây là các giá trị được áp dụng thông qua siêu tham số
scale, không phải là hệ số tỷ lệ cuối cùng. - Nếu
scalelớn hơn1.0, ảnh có thể rất nhỏ hoặc bị lật, vì hệ số tỷ lệ được chọn ngẫu nhiên giữa1-scalevà1+scale. Ví dụ, vớiscale=3.0, phần phối tỷ lệ được chọn ngẫu nhiên trong phạm vi-2.0đến4.0. Nếu chọn giá trị âm, ảnh sẽ bị lật.
- Giá trị
-0.5 | -0.25 | 0.0 | 0.25 | 0.5 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Shear (shear)
- Phạm vi:
-180đến+180 - Mặc định:
0.0 - Cách sử dụng: Giới thiệu một phép biến đổi hình học làm xiên ảnh dọc theo cả trục x và trục y, dịch chuyển các phần của ảnh theo một hướng trong khi vẫn duy trì các đường song song. Tham số
shearsiêu tham số xác định góc cắt, với điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng-shearvàshear. Ví dụ, vớishear=10.0, phần phối nghiêng được chọn ngẫu nhiên trong phạm vi-10đến10trê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 khái quát hóa các biến thể về góc nhìn do độ nghiêng nhẹ hoặc các điểm nhìn xiên gây ra. Ví dụ: trong giám sát giao thông, các đối tượng như ô tô và biển báo đường có thể xuất hiện bị nghiêng do vị trí camera không vuông góc. Việc áp dụng tăng cường shear đảm bảo mô hình học cách nhận dạng các đối tượng bất chấp những biến dạng lệch như vậy.
- Triển khai của Ultralytics: RandomPerspective
- Lưu ý:
shearcác giá trị có thể làm méo ảnh nhanh chóng, vì vậy nên bắt đầu với các giá trị nhỏ và tăng chúng dần dần.- Không giống như phép biến đổi phối cảnh, phép cắt xiên không đưa ra độ sâu hoặc các điểm hội tụ mà thay vào đó làm biến dạng hình dạng của các vật thể bằng cách thay đổi góc của chúng trong khi vẫn giữ cho các cạnh đối diện song song.
-10 | -5 | 0.0 | 5 | 10 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Phối cảnh (perspective)
- Phạm vi:
0.0-0.001 - Mặc định:
0.0 - Cách sử dụng: Áp dụng phép biến đổi phối cảnh đầy đủ 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 nhìn từ các độ sâu hoặc góc khác nhau. Các
perspectivesiêu tham số xác định độ lớn phối cảnh, với điều chỉnh cuối cùng được chọn ngẫu nhiên trong khoảng-perspectivevàperspective. Ví dụ, vớiperspective=0.001, phần phối cảnh được chọn ngẫu nhiên trong phạm vi-0.001đến0.001trê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: Tăng cường phối cảnh là rất quan trọng để xử lý các thay đổi về góc nhìn lớn, đặc biệt trong các tình huống mà vật thể xuất hiện bị rút ngắn hoặc méo mó do sự thay đổi phối cảnh. Ví dụ: trong phát hiện vật thể dựa trên máy bay không người lái, các tòa nhà, đường xá và phương tiện có thể xuất hiện bị kéo dài hoặc nén lại tùy thuộc vào độ nghiêng và độ cao của máy bay không người lái. Bằng cách áp dụng các phép biến đổi phối cảnh, các mô hình học cách nhận dạng các vật thể bất chấp những biến dạng do phối cảnh gây ra này, giúp cải thiện độ mạnh mẽ của chúng trong các triển khai thực tế.
- Triển khai của Ultralytics: RandomPerspective
-0.001 | -0.0005 | 0.0 | 0.0005 | 0.001 |
|---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
Lật Lên-Xuống (flipud)
- Phạm vi:
0.0-1.0 - Mặc định:
0.0 - Cách sử dụng: Thực hiện lật dọc bằng cách đảo ngược ảnh dọc theo trục y. Phép biến đổi này phản chiếu toàn bộ ảnh lộn ngược nhưng vẫn bảo toàn tất cả các mối quan hệ không gian giữa các đối tượng. Tham số flipud xác định xác suất áp dụng phép biến đổi, với giá trị là
flipud=1.0đảm bảo rằng tất cả hình ảnh được lật và một giá trị làflipud=0.0vô hiệu hóa hoàn toàn phép biến đổi. Ví dụ: vớiflipud=0.5, mỗi ảnh có 50% cơ hội được lật ngược. - Mục đích: Hữu ích cho các tình huống mà vật thể có thể xuất hiện lộn ngược. Ví dụ: trong các hệ thống thị giác robot, các vật thể trên băng chuyền hoặc cánh tay robot có thể được nhặt và đặt ở nhiều hướng khác nhau. Lật dọc giúp mô hình nhận dạng các vật thể bất kể vị trí trên xuống của chúng.
- Triển khai của Ultralytics: RandomFlip
flipud tắt | flipud trên |
|---|---|
![]() | ![]() |
Lật Trái-Phải (fliplr)
- Phạm vi:
0.0-1.0 - Mặc định:
0.5 - Cách sử dụng: Thực hiện lật ngang bằng cách phản chiếu ảnh dọc theo trục x. Phép biến đổi này hoán đổi phía bên trái và bên phải trong khi vẫn duy trì tính nhất quán về không gian, giúp mô hình khái quát hóa các đối tượng xuất hiện ở các hướng được phản chiếu. Tham số
fliplrsiêu tham số xác định xác suất áp dụng phép biến đổi, với giá trị làfliplr=1.0đảm bảo rằng tất cả hình ảnh được lật và một giá trị làfliplr=0.0vô hiệu hóa hoàn toàn phép biến đổi. Ví dụ: vớifliplr=0.5, mỗi ảnh có 50% cơ hội được lật từ trái sang phải. - 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 dạng khuôn mặt để cải thiện độ mạnh mẽ đối với các biến thể trái-phải. Ví dụ: trong lái xe tự động, xe cộ và người đi bộ có thể xuất hiện ở hai bên đường và việc lật ngang giúp mô hình nhận dạng chúng tốt như nhau ở cả hai hướng.
- Triển khai của Ultralytics: RandomFlip
fliplr tắt | fliplr trên |
|---|---|
![]() | ![]() |
Hoán đổi kênh BGR (bgr)
- Phạm vi:
0.0-1.0 - Mặc định:
0.0 - Cách sử dụng: Hoán đổi các kênh màu của ảnh từ RGB sang BGR, thay đổi thứ tự biểu diễn màu sắc. Tham số
bgrsiêu tham số xác định xác suất áp dụng phép biến đổi, vớibgr=1.0đảm bảo tất cả hình ảnh đều trải qua quá trình hoán đổi kênh vàbgr=0.0vô hiệu hóa nó. Ví dụ: vớibgr=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 độ mạnh mẽ đối với các thứ tự kênh màu khác nhau. Ví dụ: khi huấn luyện các mô hình phải hoạt động trên các hệ thống camera và thư viện hình ảnh khác nhau, nơi các đị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 mô hình vào các 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
bgr tắt | bgr trên |
|---|---|
![]() | ![]() |
Mosaic (mosaic)
- Phạm vi:
0.0-1.0 - Mặc định:
1.0 - Cách sử dụng: Kết hợp bốn hình ảnh huấn luyện thành một. Các
mosaicsiêu tham số xác định xác suất áp dụng phép biến đổi, vớimosaic=1.0đảm bảo rằng tất cả hình ảnh được kết hợp vàmosaic=0.0vô hiệu hóa phép biến đổi. Ví dụ: vớimosaic=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 ở nhiều khoảng cách và quy mô khác nhau, việc tăng cường mosaic giúp mô hình học cách nhận dạng cùng một loài trên các kích thước, độ che khuất một phần và bối 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
mosaictăng cường giúp mô hình mạnh mẽ hơn, nó cũng có thể làm cho quá trình huấn luyện trở nên khó khăn hơn. - Hàm
mosaictăng cường có thể bị tắt gần cuối quá trình huấn luyện bằng cách đặtclose_mosaicđến số lượng epoch trước khi hoàn thành khi nó sẽ bị tắt. Ví dụ: nếuepochsđược đặt thành200vàclose_mosaicđược đặt thành20, hàmmosaictăng cường sẽ bị tắt sau180epochs. Nếuclose_mosaicđược đặt thành0, hàmmosaicTính năng tăng cường dữ liệu (augmentation) sẽ được kích hoạt trong toàn bộ quá trình huấn luyện. - Tâm của mosaic được tạo được xác định bằng các giá trị ngẫu nhiên và có thể nằm bên trong hoặc bên ngoài hình ảnh.
- Việc triển khai hiện tại của
mosaictăng cường kết hợp 4 ảnh được chọn ngẫu nhiên từ bộ dữ liệu. Nếu bộ 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.
- Ngay cả khi
mosaic tắt | mosaic trên |
|---|---|
![]() | ![]() |
Mixup (mixup)
- Phạm vi:
0.0-1.0 - Mặc định:
0.0 - Cách sử dụng: Trộn hai hình ảnh và nhãn của chúng với xác suất nhất định. Các
mixupsiêu tham số xác định xác suất áp dụng phép biến đổi, vớimixup=1.0đảm bảo rằng tất cả hình ảnh được trộn vàmixup=0.0vô hiệu hóa phép biến đổi. Ví dụ: vớimixup=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 mô hình và giảm tình trạng overfitting. Ví dụ: trong các hệ thống nhận dạng sản phẩm bán lẻ, mixup giúp mô hình học các đặc trưng mạnh mẽ hơn bằng cách trộn lẫn hình ảnh của các sản phẩm khác nhau, dạy nó cách xác định các mặt hàng ngay cả khi chúng chỉ hiển thị một phần hoặc bị che khuất bởi các sản phẩm khác trên các kệ hàng đông đúc.
- Triển khai của Ultralytics: Mixup
- Lưu ý:
- Hàm
mixuptỷ lệ là một giá trị ngẫu nhiên được chọn từ mộtnp.random.beta(32.0, 32.0)phân phối beta, có nghĩa là mỗi hình ảnh đóng góp khoảng 50%, với một vài thay đổi nhỏ.
- Hàm
Ảnh đầu tiên, mixup tắt | Hình ảnh thứ hai, mixup tắt | mixup trên |
|---|---|---|
![]() | ![]() | ![]() |
CutMix (cutmix)
- Phạm vi:
0.0-1.0 - Mặc định:
0.0 - Cách sử dụng: Cắt một vùng hình chữ nhật từ một hình ảnh và dán nó lên một hình ảnh khác với xác suất nhất định. Các
cutmixsiêu tham số xác định xác suất áp dụng phép biến đổi, vớicutmix=1.0đảm bảo rằng tất cả hình ảnh trải qua biến đổi này vàcutmix=0.0vô hiệu hóa hoàn toàn. Ví dụ: vớicutmix=0.5, mỗi ảnh có 50% cơ hội có một vùng được thay thế bằng một mảng vẳn từ ảnh khác. - Mục đích: Nâng cao hiệu suất của mô hình 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 mô hình học cách nhận dạng xe cộ 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 môi trường thực tế phức tạp với các đối tượng chồng chéo.
- 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 ứng dụng.
- Không giống như mixup, nó pha trộn các giá trị pixel trên toàn cục,
cutmixduy trì cường độ pixel ban đầu trong các vùng 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 đích nếu nó không chồng lên bất kỳ hộp giới hạn hiện có nào. Ngoài ra, chỉ các hộp giới hạn giữ lại ít nhất
0.1(10%) diện tích ban đầu của chúng trong vùng được dán. - Ngưỡng diện tích hộp giới hạn tối thiểu này không thể thay đổi với cách triển khai hiện tại và được đặt thành
0.1theo mặc định.
Ảnh đầu tiên, cutmix tắt | Hình ảnh thứ hai, cutmix tắt | cutmix trên |
|---|---|---|
![]() | ![]() | ![]() |
Các phương pháp tăng cường dữ liệu đặc trưng cho phân vùng (Segmentation-Specific Augmentations)
Sao chép-Dán (copy_paste)
- Phạm vi:
0.0-1.0 - Mặc định:
0.0 - Cách sử dụng: Chỉ hoạt động cho các tác vụ phân đoạn, 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 tham số
copy_paste_mode. Cáccopy_pastesiêu tham số xác định xác suất áp dụng phép biến đổi, vớicopy_paste=1.0đảm bảo rằng tất cả hình ảnh được sao chép vàcopy_paste=0.0vô hiệu hóa phép biến đổi. Ví dụ: vớicopy_paste=0.5, mỗi ảnh có 50% cơ hội có các đối tượng được sao chép từ ảnh khác. - Mục đích: Đặc biệt hữu ích cho các tác vụ phân đoạn thể hiện và các lớp đối tượng hiếm. Ví dụ: trong phát hiện khuyết tật công nghiệp, nơi một số loại khuyết tật nhất định xuất hiện không thường xuyên, việc tăng cường copy-paste có thể tăng cường một cách nhân tạo sự xuất hiện của các khuyết tật hiếm này bằng cách sao chép chúng từ hình ảnh này sang hình ảnh khác, giúp mô hình học tốt hơn các trường hợp ít được đại diện này mà không cần thêm các mẫu bị lỗi.
- Triển khai của Ultralytics: CopyPaste
- Lưu ý:
- Như hình ảnh trong ảnh động bên dưới, các
copy_pastetăng cường có thể được sử dụng để sao chép các đối tượng từ ảnh này sang ảnh khác. - Khi một đối tượng đã được sao chép, bất kể là
copy_paste_mode, Intersection over Area (IoA) của nó được tính toán với tất cả các đối tượng của ảnh nguồn. Nếu tất cả IoA đều thấp hơn0.3(30%), đối tượng được dán vào ảnh đích. Nếu chỉ một IoA ở trên0.3, đối tượng không được dán vào ảnh mục tiêu. - Ngưỡng IoA không thể thay đổi với cách triển khai hiện tại và được đặt thành
0.3theo mặc định.
- Như hình ảnh trong ảnh động bên dưới, các
copy_paste tắt | copy_paste tiếp tục với copy_paste_mode=flip | Visualize the copy_paste xử lý |
|---|---|---|
![]() | ![]() | ![]() |
Chế độ Sao chép-Dán (copy_paste_mode)
- Các tùy chọn:
'flip','mixup' - Mặc định:
'flip' - Cách sử dụng: Xác định phương pháp được sử dụng cho copy-paste augmentation. Nếu được đặt thành
'flip', các đối tượng đến từ cùng một ảnh, trong khi'mixup'cho phép sao chép các đối tượng từ các hình ảnh khác nhau. - Mục đích: Cho phép linh hoạt trong cách các đối tượng được sao chép được tích hợp vào hình ảnh mục tiêu.
- Triển khai của Ultralytics: CopyPaste
- Lưu ý:
- Nguyên tắc IoA là như nhau cho cả hai
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ể bị sao chép một phần hoặc toàn bộ ra ngoài khung hình.
- Tùy thuộc vào chất lượng của các chú thích đa giác, các đối tượng được sao chép có thể có các biến thể hình dạng nhỏ so với bản gốc.
- Nguyên tắc IoA là như nhau cho cả hai
| Ảnh tham khảo | Ảnh được chọn cho copy_paste | copy_paste tiếp tục với copy_paste_mode=mixup |
|---|---|---|
![]() | ![]() | ![]() |
Tăng cường dựa trên phân loại
Tự động tăng cường (auto_augment)
- Các 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. Các
'randaugment'tùy chọn sử dụng RandAugment,'autoaugment'sử dụng AutoAugment, và'augmix'sử dụng AugMix. Đặt thànhNonevô hiệu hóa tính năng tăng cường tự động. - Mục đích: Tự động tối ưu hóa các chiến lược tăng cường cho các tác vụ phân loại. Sự khác biệt là như sau:
- AutoAugment: Chế độ này áp dụng các chính sách tăng cường dữ liệu được xác định trước, học từ các bộ 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 dữ liệu tối ưu cho các bộ dữ liệu cụ thể, cần có 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 về AutoAugment.
- RandAugment: Áp dụng một 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 làm giảm nhu cầu về một giai đoạn tìm kiếm mở rộng, làm cho nó hiệu quả hơn về mặt tính toán trong khi vẫn tăng cường độ mạnh mẽ 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 tăng cường độ mạnh mẽ 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 các kết hợp ngẫu nhiên của các phép biến đổi đơn giản. Tham khảo bài báo về 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 dữ liệu được xác định 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.
Xó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 ảnh trong quá trình huấn luyện phân loại. Tham số
erasingsiêu tham số xác định xác suất áp dụng phép biến đổi, vớierasing=0.9đảm bảo rằng hầu hết tất cả hình ảnh bị xóa vàerasing=0.0vô hiệu hóa phép biến đổi. Ví dụ: vớierasing=0.5, mỗi ảnh có 50% cơ hội bị xóa một phần. - Mục đích: Giúp các mô hình học các đặc trưng mạnh mẽ và ngăn ngừa sự phụ thuộc quá mức vào các vùng hình ảnh cụ thể. Ví dụ: trong các hệ thống nhận dạng khuôn mặt, việc xóa ngẫu nhiên giúp các mô hình trở nên mạnh mẽ hơn đối với các trường hợp che khuất một phần như kính râm, khẩu trang hoặc các vật thể khác có thể che phủ một phần các đặc điểm trên khuôn mặt. Điều này cải thiện hiệu suất trong thế giới thực bằng cách buộc mô hình xác định các cá nhân bằng cách sử dụng nhiều đặc điểm trên khuôn mặt thay vì chỉ dựa vào các đặc điểm đặc biệt có thể bị che khuất.
- Triển khai của Ultralytics: classify_augmentations()
- Lưu ý:
- Hàm
erasingtăng cường đi kèm với mộtscale,ratio, vàvaluesiêu tham số không thể thay đổi bằng triển khai hiện tại. Giá trị mặc định của chúng là(0.02, 0.33),(0.3, 3.3), và0, tương ứng, như được nêu trong PyTorch tài liệu. - Giới hạn trên của
erasingsiêu tham số được đặt thành0.9to avoid applying the transformation to all images.
- Hàm
erasing tắt | erasing bật (ví dụ 1) | erasing bật (ví dụ 2) | erasing bật (ví dụ 3) |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Các tính năng tăng cường nâng cao
Biến đổi Albumentations tùy chỉnh (augmentations)
- Loại:
listcủa Albumentations biến đổi - Mặc định:
None - Cách sử dụng : Cho phép bạn cung cấp các chuyển đổi Albumentations tùy chỉnh để tăng cường dữ liệu bằng cách sử dụng Python API. Tham số này chấp nhận danh sách các đối tượng chuyển đổi Albumentations sẽ được áp dụng trong quá trình đào tạo thay vì các chuyể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 chuyển đổi Albumentations phong phú. Đ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 phép biến đổi tích hợp sẵn. YOLO các tùy chọn, chẳng hạn như điều chỉnh màu nâng cao, chèn nhiễu hoặc chuyển đổi theo miền cụ thể.
- 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("yolo11n.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,
)
import albumentations as A
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt")
# Define advanced custom Albumentations transforms with specific parameters
advanced_transforms = [
A.OneOf(
[
A.MotionBlur(blur_limit=7, p=1.0),
A.MedianBlur(blur_limit=7, p=1.0),
A.GaussianBlur(blur_limit=7, p=1.0),
],
p=0.3,
),
A.OneOf(
[
A.GaussNoise(var_limit=(10.0, 50.0), p=1.0),
A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
],
p=0.2,
),
A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, brightness_by_max=True, p=0.5),
A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
A.CoarseDropout(
max_holes=8, max_height=32, max_width=32, min_holes=1, min_height=8, min_width=8, fill_value=0, p=0.2
),
]
# Train with advanced custom transforms
model.train(
data="coco8.yaml",
epochs=100,
augmentations=advanced_transforms,
imgsz=640,
)
Những điểm chính:
- Chỉ dành cho API Python : Các chuyển đổi Albumentations tùy chỉnh hiện chỉ được hỗ trợ thông qua Python API. Chúng không thể được chỉ định thông qua CLI hoặc các tệp cấu hình YAML.
- Thay thế các chuyển đổi mặc định: Khi bạn cung cấp các chuyển đổi tùy chỉnh thông qua
augmentationstham số, chúng thay thế hoàn toàn các phép biến đổi Albumentations mặc định. Mặc định YOLO sự gia tăng (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 của hộp giới hạn : Hãy thận trọng khi sử dụng phép biến đổi không gian (phép biến đổi làm thay đổi hình học của hình ảnh). Ultralytics tự động xử lý các điều chỉnh hộp giới hạn, nhưng một số chuyển đổi phức tạp có thể yêu cầu cấu hình bổ sung.
- Thư viện mở rộng : Albumentations cung cấp hơn 70 phép biến đổi khác nhau. Khám phá tài liệu Albumentations để khám phá tất cả các tùy chọn khả dụng.
- Cân nhắc về hiệu suất : Việc 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ề mặt 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:
- Chụp ả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 hình ảnh X-quang hoặc MRI
- Hình ảnh trên 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 xuống
- Điều kiện ánh sáng yếu : Áp dụng điều chỉnh độ nhiễu và độ sáng để mô phỏng ánh sáng khó khăn
- Kiểm tra công nghiệp : Thêm các mẫu giống khuyết tật hoặc các biến thể kết cấu cho các ứng dụng kiểm soát chất lượng
Ghi chú về khả năng 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ả YOLO nhiệm vụ phát hiện và phân đoạn
- Không áp dụng cho các tác vụ phân loại (phân loại sử dụng một đường ống tăng cường khác)
Để biết thêm thông tin về Albumentations và các chuyển đổi có sẵn, hãy truy cập tài liệu chính thức của Albumentations .
Câu hỏi thường gặp
Có quá nhiều phương pháp tăng cường dữ liệu để lựa chọn. Làm cách nào để biết nên sử dụng phương pháp nào?
Việc chọn lựa các phương pháp tăng cường dữ liệu phù hợp phụ thuộc vào trường hợp sử dụng và bộ dữ liệu cụ thể 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, các biến thể nhỏ về màu sắc và độ sáng là có lợi. Các giá trị mặc định cho
hsv_h,hsv_s, vàhsv_vlà một điểm khởi đầu vững chắc. - Nếu điểm nhìn của camera nhất quán và không thay đổi sau khi mô hình được triển khai, bạn có thể bỏ qua các phép biến đổi hình học như
rotation,translation,scale,shear, hoặcperspective. Tuy nhiên, nếu góc camera có thể thay đổi và bạn cần mô hình mạnh mẽ hơn, tốt hơn là nên giữ lại những phép tăng cường này. - Sử dụng
mosaictăng cường chỉ khi có các đối tượng bị che khuất một phần hoặc nhiều đối tượng trên mỗi ảnh là chấp nhận được và không thay đổi giá trị nhãn. Ngoài ra, bạn có thể giữmosaichoạt động nhưng làm tăngclose_mosaicgiá trị để tắt nó sớm hơn trong quá trình huấn luyện.
Tóm lại: hãy giữ cho nó đơn giản. Bắt đầu với một tập hợp nhỏ các phép tăng cường và dần dần thêm nhiều hơn khi cần thiết. Mục tiêu là cải thiện khả năng khái quát hóa và độ mạnh mẽ của mô hình, không phải làm phức tạp 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 cùng một phân phối dữ liệu mà mô hình của bạn sẽ gặp phải trong quá trình sản xuất.
Khi bắt đầu huấn luyện, tôi thấy một albumentations: Blur[...] tham khảo. Điều đó có nghĩa là Ultralytics YOLO chạy thêm các phương pháp tăng cường dữ liệu như làm mờ không?
Nếu albumentations gói được cài đặt, Ultralytics tự động áp dụng một tập các tăng cường hình ảnh bổ sung bằng cách sử dụng nó. Những 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ũ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 với xác suất p lớn hơn 0 đang hoạt động. Chúng được cố ý áp dụng ở tần số thấp để mô phỏng các hiệu ứng hình ảnh thực tế, chẳng hạn như hiệu ứng mờ hoặc thang độ xám.
Bạn cũng có thể cung cấp các chuyển đổi Albumentations tùy chỉnh của riêng bạn bằng cách sử dụng Python API. Xem phần Tính năng tăng cường nâng cao để biết thêm chi tiết.
Khi 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 albumentations gói được cài đặt. Nếu không, bạn có thể cài đặt nó bằng cách chạy pip install albumentations. Sau khi cài đặt, gói sẽ được Ultralytics tự động phát hiện và sử dụng.
Làm cách nào để tùy chỉnh các phương pháp tăng cường dữ liệu của mình?
Bạn có thể tùy chỉnh các phương pháp tăng cường dữ liệu bằng cách tạo một lớp dataset và trình huấn luyện tùy chỉnh. Ví dụ: bạn có thể thay thế các phương 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.
















































