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
fromultralyticsimportYOLO# Load a modelmodel=YOLO("yolo11n.pt")# Training with custom augmentation parametersmodel.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 augmentation parameters
yolodetecttraindata=coco8.yamlmodel=yolo11n.ptepochs=100hsv_h=0.03hsv_s=0.6hsv_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 usagemode:traindata:coco8.yamlmodel:yolo11n.ptepochs:100hsv_h:0.03hsv_s:0.6hsv_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
fromultralyticsimportYOLO# Load a COCO-pretrained YOLO11n modelmodel=YOLO("yolo11n.pt")# Train the model with custom configurationmodel.train(cfg="train_custom.yaml")
# Train the model with custom configuration
yolodetecttrainmodel="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_h siê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_h và hsv_h. Ví dụ, với hsv_h=0.3, phần phối dịch chuyển được chọn ngẫu nhiên trong phạm vi-0.3 đến 0.3. Đối với các giá trị trên 0.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ữa 0.5 và -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à.
Cách sử dụng: Thay đổi cường độ màu sắc trong ảnh. Tham số hsv_h siê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_s và hsv_s. Ví dụ, với hsv_s=0.7, cường độ được chọn ngẫu nhiên trong phạm vi-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ụ: 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ù.
Cách sử dụng: Thay đổi độ sáng của hình ảnh. Các hsv_v siê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_v và hsv_v. Ví dụ, với hsv_v=0.4, cường độ được chọn ngẫu nhiên trong phạm vi-0.4 đến 0.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.
Cách sử dụng: Xoay ảnh ngẫu nhiên trong phạm vi được chỉ định. Tham số degrees siê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 -degrees và degrees. Ví dụ, với degrees=10.0, phần phối xoay được chọn ngẫu nhiên trong phạm vi-10.0 đến 10.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.
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ố translate siê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 -translate và translate. Ví dụ, với translate=0.5, phần phối tịnh tiến được chọn ngẫu nhiên trong phạm vi-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 một 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.
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 x và y axes. Giá trị -1.0 và 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ố scale siê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ảng 1-scale và 1+scale. Ví dụ, với scale=0.5, phần phối tỷ lệ được chọn ngẫu nhiên trong phạm vi0.5 đến 1.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.
Giá trị -1.0 không được hiển thị vì nó sẽ làm cho hình ảnh biến mất, trong khi 1.0 chỉ đơ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 scale lớn hơn 1.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ữa 1-scale và 1+scale. Ví dụ, với scale=3.0, phần phối tỷ lệ được chọn ngẫu nhiên trong phạm vi-2.0 đến 4.0. Nếu chọn giá trị âm, ảnh sẽ bị lật.
-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ố shear siê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 -shear và shear. Ví dụ, với shear=10.0, phần phối nghiêng được chọn ngẫu nhiên trong phạm vi-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 một 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.
shear cá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 perspective siê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 -perspective và perspective. Ví dụ, với perspective=0.001, phần phối cảnh được chọn ngẫu nhiên trong phạm vi-0.001 đến 0.001 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 một 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ế.
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.0 vô hiệu hóa hoàn toàn phép biến đổi. Ví dụ: với flipud=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.
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ố fliplr siê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.0 vô hiệu hóa hoàn toàn phép biến đổi. Ví dụ: với fliplr=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.
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ố bgr siêu tham số 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ả hình ả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 độ 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.
Cách sử dụng: Kết hợp bốn hình ảnh huấn luyện thành một. Các mosaic siêu tham số xác định xác suất áp dụng phép biến đổi, với mosaic=1.0 đảm bảo rằng tất cả hình ảnh đượ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 ở 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ế.
Ngay cả khi mosaic tă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 mosaic tăng cường có thể bị tắt gần cuối quá trình huấn luyện bằng cách đặt close_mosaic đến số lượng epoch trước khi hoàn thành khi nó sẽ bị tắt. Ví dụ: nếu epochs được đặt thành 200 và close_mosaic được đặt thành 20, hàm mosaic tăng cường sẽ bị tắt sau 180 epochs. Nếu close_mosaic được đặt thành 0, hàm mosaic Tí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 mosaic tă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.
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 mixup siêu tham số xác định xác suất áp dụng phép biến đổi, với mixup=1.0 đảm bảo rằng tất cả hình ảnh đượ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 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.
Hàm mixup tỷ lệ là một giá trị ngẫu nhiên được chọn từ một np.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ỏ.
Ả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 cutmix siêu tham số xác định xác suất áp dụng phép biến đổi, với cutmix=1.0 đảm bảo rằng tất cả hình ảnh trải qua biến đổi này và cutmix=0.0 vô hiệu hóa 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 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.
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, cutmix duy 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.1 theo 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ác copy_paste siêu tham số xác định xác suất áp dụng phép biến đổi, với copy_paste=1.0 đảm bảo rằng tất cả hình ảnh đượ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ừ ả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.
Như hình ảnh trong ảnh động bên dưới, các copy_paste tă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ơn 0.3 (30%), đối tượng được dán vào ảnh đích. Nếu chỉ một IoA ở trên 0.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.3 theo mặc định.
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.
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.
Ả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ành None vô 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.
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ố erasing siêu tham số xác định xác suất áp dụng phép biến đổi, với erasing=0.9 đảm bảo rằng hầu hết tất cả hình ảnh 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 ả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.
Hàm erasing tăng cường đi kèm với một scale, ratio, và value siê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 erasing siêu tham số được đặt thành 0.9 to avoid applying the transformation to all images.
erasing tắt
erasing bật (ví dụ 1)
erasing bật (ví dụ 2)
erasing bật (ví dụ 3)
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_v là 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ặc perspective. 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 mosaic tă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ữ mosaic hoạt động nhưng làm tăng close_mosaic giá 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.
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.