Ultralytics YOLO27:

Nâng cao Dataset để Huấn luyện YOLO26 bằng Albumentations#

Khi xây dựng model computer vision, chất lượng và sự đa dạng của training data có thể ảnh hưởng lớn đến hiệu suất của model. Albumentations cung cấp một cách nhanh, linh hoạt và hiệu quả để áp dụng nhiều phép biến đổi ảnh, giúp cải thiện khả năng thích ứng của model với các tình huống thực tế. Thư viện này dễ dàng tích hợp với Ultralytics YOLO26 và có thể giúp bạn tạo các dataset mạnh mẽ cho các tác vụ object detection, segmentationclassification.

Bằng cách sử dụng Albumentations, bạn có thể tăng cường dữ liệu huấn luyện YOLO26 bằng các kỹ thuật như biến đổi hình học và điều chỉnh màu sắc. Trong bài viết này, chúng ta sẽ xem Albumentations có thể cải thiện quy trình data augmentation và làm cho các project YOLO26 của bạn hiệu quả hơn nữa như thế nào. Hãy bắt đầu!

Albumentations cho Image Augmentation#

Albumentations là thư viện image augmentation mã nguồn mở được tạo vào tháng 6 năm 2018. Thư viện được thiết kế để đơn giản hóa và tăng tốc quy trình image augmentation trong computer vision. Được xây dựng với trọng tâm là hiệu suất và tính linh hoạt, thư viện hỗ trợ nhiều kỹ thuật augmentation đa dạng, từ các phép biến đổi đơn giản như xoay và lật đến những điều chỉnh phức tạp hơn như thay đổi độ sáng và độ tương phản. Albumentations giúp developer tạo các dataset phong phú, đa dạng cho những tác vụ như image classification, object detectionsegmentation.

Bạn có thể sử dụng Albumentations để dễ dàng áp dụng các phép tăng cường dữ liệu cho hình ảnh, segmentation masks, bounding boxeskeypoints, đồng thời đảm bảo rằng tất cả các phần tử trong tập dữ liệu của bạn được biến đổi cùng nhau. Công cụ này hoạt động mượt mà với các framework deep learning phổ biến như PyTorchTensorFlow, giúp người dùng dễ tiếp cận cho nhiều loại dự án.

Albumentations cũng là lựa chọn tuyệt vời cho augmentation, dù bạn đang xử lý dataset nhỏ hay các tác vụ computer vision quy mô lớn. Thư viện đảm bảo quá trình xử lý nhanh và hiệu quả, giảm thời gian dành cho việc chuẩn bị dữ liệu. Đồng thời, thư viện giúp cải thiện hiệu suất model, khiến các model hoạt động hiệu quả hơn trong những ứng dụng thực tế.

Các Tính năng Chính của Albumentations#

Albumentations cung cấp nhiều tính năng hữu ích giúp đơn giản hóa các phép image augmentation phức tạp cho nhiều ứng dụng computer vision. Dưới đây là một số tính năng chính:

  • Nhiều Phép Biến đổi: Albumentations cung cấp hơn 70 phép biến đổi khác nhau, bao gồm các thay đổi hình học (ví dụ: xoay, lật), điều chỉnh màu sắc (ví dụ: độ sáng, độ tương phản) và thêm nhiễu (ví dụ: nhiễu Gaussian). Nhiều lựa chọn giúp tạo ra các training dataset đa dạng và mạnh mẽ.

Albumentations augmentation examples

  • Tối ưu hóa Hiệu suất Cao: Được xây dựng trên OpenCV và NumPy, Albumentations sử dụng các kỹ thuật tối ưu hóa nâng cao như SIMD (Đơn lệnh, nhiều dữ liệu), xử lý nhiều điểm dữ liệu đồng thời để tăng tốc độ xử lý. Thư viện xử lý nhanh các dataset lớn, trở thành một trong những lựa chọn nhanh nhất hiện có cho image augmentation.

  • Ba Cấp độ Augmentation: Albumentations hỗ trợ ba cấp độ augmentation: biến đổi cấp pixel, biến đổi cấp không gian và biến đổi cấp trộn. Biến đổi cấp pixel chỉ tác động đến ảnh đầu vào mà không thay đổi mask, bounding box hoặc key point. Trong khi đó, cả ảnh và các thành phần của ảnh, như mask và bounding box, đều được biến đổi bằng các phép biến đổi cấp không gian. Ngoài ra, biến đổi cấp trộn là một cách augmentation độc đáo vì chúng kết hợp nhiều ảnh thành một.

Tổng quan về các Cấp độ Augmentation Khác nhau

  • Kết quả Benchmark: Trong các bài benchmark, Albumentations luôn vượt trội so với những thư viện khác, đặc biệt là với các dataset lớn.

Tại sao Nên Sử dụng Albumentations cho các Project Vision AI?#

Về image augmentation, Albumentations nổi bật như một công cụ đáng tin cậy cho các tác vụ computer vision. Dưới đây là một số lý do chính để bạn cân nhắc sử dụng thư viện này cho các project Vision AI:

  • API Dễ Sử dụng: Albumentations cung cấp một API đơn giản, thống nhất để áp dụng nhiều phép augmentation cho ảnh, mask, bounding box và keypoint. API được thiết kế để dễ dàng thích ứng với các dataset khác nhau, giúp chuẩn bị dữ liệu đơn giản và hiệu quả hơn.

  • Kiểm thử Bug Nghiêm ngặt: Bug trong pipeline augmentation có thể âm thầm làm hỏng dữ liệu đầu vào, thường không bị phát hiện nhưng cuối cùng làm suy giảm hiệu suất model. Albumentations giải quyết vấn đề này bằng một bộ test toàn diện, giúp phát hiện bug sớm trong quá trình phát triển.

  • Khả năng Mở rộng: Albumentations cho phép dễ dàng thêm các phép augmentation mới và sử dụng chúng trong pipeline computer vision thông qua một interface duy nhất cùng với các phép biến đổi tích hợp sẵn.

Cách Sử dụng Albumentations để Augment Dữ liệu cho Huấn luyện YOLO26#

Sau khi đã tìm hiểu Albumentations là gì và có thể làm gì, hãy xem cách sử dụng thư viện này để augment dữ liệu cho quá trình huấn luyện model YOLO26. Việc thiết lập rất đơn giản vì thư viện tích hợp trực tiếp vào training mode của Ultralytics và được áp dụng tự động nếu bạn đã cài đặt package Albumentations.

Cài đặt#

Để sử dụng Albumentations với YOLO26, trước tiên hãy đảm bảo bạn đã cài đặt các package cần thiết. Nếu Albumentations chưa được cài đặt, các phép augmentation sẽ không được áp dụng trong quá trình huấn luyện. Sau khi thiết lập, bạn sẽ sẵn sàng tạo dataset đã augment để huấn luyện, với Albumentations được tích hợp nhằm tự động nâng cao model.

Cài đặt
# Install the required packages
pip install albumentations ultralytics

Để xem hướng dẫn chi tiết và các best practice liên quan đến quy trình cài đặt, hãy tham khảo hướng dẫn Cài đặt Ultralytics. Nếu gặp khó khăn khi cài đặt các package cần thiết cho YOLO26, hãy xem hướng dẫn Các vấn đề Thường gặp để tìm giải pháp và mẹo xử lý.

Các ví dụ về custom transform trên trang này yêu cầu Albumentations 1.4.22 trở lên, do đó cần Python 3.9 trở lên.

Cách sử dụng#

Sau khi cài đặt các package cần thiết, bạn đã có thể bắt đầu sử dụng Albumentations với YOLO26. Khi huấn luyện YOLO26, một tập hợp các phép augmentation sẽ được tự động áp dụng thông qua tích hợp với Albumentations, giúp dễ dàng nâng cao hiệu suất model.

Cách sử dụng
from ultralytics import YOLO

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

# Train the model with default augmentations
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Tiếp theo, hãy xem xét kỹ hơn các phép augmentation cụ thể được áp dụng trong quá trình huấn luyện.

Blur#

Phép biến đổi Blur trong Albumentations áp dụng hiệu ứng làm mờ đơn giản cho ảnh bằng cách lấy trung bình các giá trị pixel trong một vùng hình vuông nhỏ, hay kernel. Thao tác này sử dụng hàm cv2.blur của OpenCV, giúp giảm nhiễu trong ảnh, dù cũng làm giảm nhẹ các chi tiết ảnh.

Dưới đây là các tham số và giá trị được sử dụng trong tích hợp này:

  • blur_limit: Tham số này kiểm soát khoảng kích thước của hiệu ứng làm mờ. Khoảng mặc định là (3, 7), nghĩa là kích thước kernel làm mờ có thể thay đổi từ 3 đến 7 pixel, chỉ cho phép các số lẻ để giữ hiệu ứng làm mờ ở chính giữa.

  • p: Xác suất áp dụng blur. Trong tích hợp này, p=0.01, nghĩa là có 1% khả năng blur được áp dụng cho mỗi ảnh. Xác suất thấp cho phép thỉnh thoảng tạo hiệu ứng làm mờ, thêm một chút biến thiên để giúp model tổng quát hóa mà không làm ảnh bị mờ quá mức.

Albumentations Blur augmentation result

Median Blur#

Phép biến đổi MedianBlur trong Albumentations áp dụng hiệu ứng median blur cho ảnh, đặc biệt hữu ích trong việc giảm nhiễu mà vẫn bảo toàn các cạnh. Không giống các phương pháp làm mờ thông thường, MedianBlur sử dụng bộ lọc median, đặc biệt hiệu quả trong việc loại bỏ nhiễu muối tiêu đồng thời duy trì độ sắc nét quanh các cạnh.

Dưới đây là các tham số và giá trị được sử dụng trong tích hợp này:

  • blur_limit: Tham số này kiểm soát kích thước tối đa của kernel làm mờ. Trong tích hợp này, giá trị mặc định là khoảng (3, 7), nghĩa là kích thước kernel được chọn ngẫu nhiên từ 3 đến 7 pixel, chỉ cho phép các giá trị lẻ để đảm bảo căn chỉnh chính xác.

  • p: Thiết lập xác suất áp dụng median blur. Ở đây, p=0.01, nên phép biến đổi có 1% khả năng được áp dụng cho mỗi ảnh. Xác suất thấp này đảm bảo median blur được sử dụng có chừng mực, giúp model tổng quát hóa bằng cách thỉnh thoảng được xem các ảnh đã giảm nhiễu và bảo toàn cạnh.

Ảnh dưới đây minh họa ví dụ về augmentation này được áp dụng cho một ảnh.

Albumentations MedianBlur augmentation

Grayscale#

Phép biến đổi ToGray trong Albumentations chuyển ảnh sang grayscale, giảm ảnh về định dạng một kênh và tùy chọn sao chép kênh này để khớp với số kênh đầu ra được chỉ định. Có thể sử dụng nhiều phương pháp khác nhau để điều chỉnh cách tính độ sáng grayscale, từ lấy trung bình đơn giản đến các kỹ thuật nâng cao hơn nhằm tái hiện chân thực độ tương phản và độ sáng cảm nhận được.

Dưới đây là các tham số và giá trị được sử dụng trong tích hợp này:

  • num_output_channels: Thiết lập số kênh trong ảnh đầu ra. Nếu giá trị này lớn hơn 1, kênh grayscale đơn sẽ được sao chép để tạo ảnh grayscale đa kênh. Theo mặc định, giá trị được đặt là 3, tạo ảnh grayscale với ba kênh giống hệt nhau.

  • method: Xác định phương pháp chuyển đổi grayscale. Phương pháp mặc định, "weighted_average", áp dụng công thức (0.299R + 0.587G + 0.114B), gần với nhận thức của con người, tạo hiệu ứng grayscale tự nhiên. Các tùy chọn khác như "from_lab", "desaturation", "average", "max" và "pca" cung cấp những cách thay thế để tạo ảnh grayscale tùy theo nhu cầu về tốc độ, nhấn mạnh độ sáng hoặc bảo toàn chi tiết.

  • p: Kiểm soát tần suất áp dụng phép biến đổi grayscale. Với p=0.01, có 1% khả năng mỗi ảnh được chuyển sang grayscale, cho phép kết hợp ảnh màu và grayscale để giúp model tổng quát hóa tốt hơn.

Ảnh dưới đây minh họa ví dụ về phép biến đổi grayscale này được áp dụng.

Albumentations grayscale conversion

Cân bằng Histogram Thích ứng Có Giới hạn Độ tương phản (CLAHE)#

Phép biến đổi CLAHE trong Albumentations áp dụng kỹ thuật Cân bằng Histogram Thích ứng Có Giới hạn Độ tương phản (CLAHE), giúp tăng cường độ tương phản ảnh bằng cách cân bằng histogram trong các vùng cục bộ (tile) thay vì trên toàn bộ ảnh. CLAHE tạo hiệu ứng tăng cường cân bằng, tránh độ tương phản bị khuếch đại quá mức như có thể xảy ra với phương pháp cân bằng histogram tiêu chuẩn, đặc biệt ở những vùng ban đầu có độ tương phản thấp.

Dưới đây là các tham số và giá trị được sử dụng trong tích hợp này:

  • clip_limit: Kiểm soát khoảng tăng cường độ tương phản. Được đặt mặc định trong khoảng (1, 4), tham số này xác định độ tương phản tối đa cho phép trong mỗi tile. Giá trị cao hơn tạo độ tương phản lớn hơn nhưng cũng có thể đưa thêm nhiễu vào ảnh.

  • tile_grid_size: Xác định kích thước lưới tile, thường ở dạng (hàng, cột). Giá trị mặc định là (8, 8), nghĩa là ảnh được chia thành lưới 8x8. Tile nhỏ hơn tạo ra các điều chỉnh cục bộ hơn, trong khi tile lớn hơn tạo hiệu ứng gần với cân bằng toàn cục.

  • p: Xác suất áp dụng CLAHE. Ở đây, p=0.01 chỉ tạo hiệu ứng tăng cường trong 1% số lần, đảm bảo các điều chỉnh độ tương phản được áp dụng có chừng mực để thỉnh thoảng tạo biến thiên trong ảnh huấn luyện.

Ảnh dưới đây minh họa ví dụ về phép biến đổi CLAHE được áp dụng.

Albumentations CLAHE contrast enhancement

Sử dụng Custom Albumentations Transform#

Mặc dù tích hợp Albumentations mặc định cung cấp một tập hợp augmentation vững chắc, bạn có thể muốn tùy chỉnh các transform cho trường hợp sử dụng cụ thể. Với Ultralytics YOLO26, bạn có thể dễ dàng truyền custom Albumentations transform qua Python API bằng tham số augmentations. Các ví dụ trong phần này yêu cầu Albumentations 1.4.22 trở lên.

Cách Định nghĩa Custom Transform#

Bạn có thể định nghĩa danh sách Albumentations transform của riêng mình và truyền danh sách đó vào hàm huấn luyện. Thao tác này thay thế các Albumentations transform mặc định, đồng thời giữ cho mọi YOLO augmentation khác (như hsv_h, degrees, mosaic, v.v.) vẫn hoạt động.

Dưới đây là một ví dụ với các transform nâng cao hơn:

import albumentations as A

from ultralytics import YOLO

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

# Define custom transforms with various augmentation techniques
custom_transforms = [
    # Blur variations
    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,
    ),
    # Noise variations
    A.OneOf(
        [
            A.GaussNoise(std_range=(0.0124, 0.0277), p=1.0),
            A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
        ],
        p=0.2,
    ),
    # Color and contrast adjustments
    A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
    # Simulate occlusions
    A.CoarseDropout(num_holes_range=(1, 8), hole_height_range=(8, 32), hole_width_range=(8, 32), fill=0, p=0.2),
]

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

Các Lưu ý Quan trọng#

Khi sử dụng custom Albumentations transform, hãy lưu ý các điểm sau:

  • Cấu hình: Xây dựng các đối tượng biến đổi tùy chỉnh thông qua API Python. Các biến đổi đã được tuần tự hóa cũng có thể được truyền qua các tệp cấu hình CLI hoặc YAML, bao gồm cả khi tiếp tục quá trình huấn luyện.
  • Thay thế Mặc định: Custom transform của bạn sẽ thay thế hoàn toàn các Albumentations transform mặc định. Các YOLO augmentation khác vẫn hoạt động.
  • Xử lý Nhãn: Các phép biến đổi không gian, bao gồm cả những phép biến đổi được lồng trong A.OneOf hoặc A.Compose, di chuyển các hộp giới hạn, đa giác, điểm khóa, và mặt nạ độ sâu hoặc mặt nạ ngữ nghĩa cùng với hình ảnh. A.RandomGridShuffle không thể bảo toàn cấu trúc của đa giác hoặc điểm khóa và sẽ báo lỗi trên các mẫu phân đoạn, tư thế và OBB.
  • Hiệu suất: Một số transform yêu cầu nhiều tài nguyên tính toán. Hãy theo dõi tốc độ huấn luyện và điều chỉnh cho phù hợp.
  • Khả năng Tương thích Tác vụ: Các phép biến đổi Albumentations tùy chỉnh hoạt động với quá trình huấn luyện phát hiện, phân đoạn, phân đoạn ngữ nghĩa, độ sâu, tư thế và OBB nhưng không hoạt động với phân loại (sử dụng một đường ống tăng cường dữ liệu khác).

Các Trường hợp Sử dụng Custom Transform#

Các ứng dụng khác nhau sẽ hưởng lợi từ những chiến lược augmentation khác nhau:

  • Image Y tế: Sử dụng biến dạng đàn hồi, biến dạng lưới và các mẫu nhiễu chuyên biệt
  • Ảnh Hàng không/Vệ tinh: Áp dụng các transform mô phỏng độ cao, điều kiện thời tiết và góc chiếu sáng khác nhau
  • Tình huống Ánh sáng Yếu: Tăng cường việc thêm nhiễu và điều chỉnh độ sáng để huấn luyện các model mạnh mẽ trong điều kiện chiếu sáng khó khăn
  • Kiểm tra Công nghiệp: Thêm các biến thể kết cấu và khiếm khuyết mô phỏng cho những ứng dụng kiểm soát chất lượng

Để xem danh sách đầy đủ các transform hiện có và tham số của chúng, hãy truy cập tài liệu Albumentations.

Để xem thêm các ví dụ chi tiết và best practice về cách sử dụng custom Albumentations transform với YOLO26, hãy xem hướng dẫn YOLO Data Augmentation.

Tiếp tục Tìm hiểu về Albumentations#

Nếu bạn muốn tìm hiểu thêm về Albumentations, hãy xem các tài nguyên sau để có hướng dẫn và ví dụ chuyên sâu hơn:

Các điểm chính#

Trong hướng dẫn này, chúng ta đã tìm hiểu các khía cạnh chính của Albumentations, một thư viện Python tuyệt vời cho image augmentation. Chúng ta đã thảo luận về phạm vi transform đa dạng, hiệu suất được tối ưu hóa và cách sử dụng thư viện trong project YOLO26 tiếp theo của bạn.

Ngoài ra, nếu muốn tìm hiểu thêm về các tích hợp Ultralytics YOLO26 khác, hãy truy cập trang hướng dẫn tích hợp của chúng tôi. Tại đó, bạn sẽ tìm thấy các tài nguyên và thông tin hữu ích.

FAQ#

  • Albumentations tích hợp liền mạch với YOLO26 và được tự động áp dụng trong quá trình huấn luyện nếu bạn đã cài đặt package. Dưới đây là cách bắt đầu:

    # Install required packages
    # !pip install albumentations ultralytics
    from ultralytics import YOLO
    
    # Load and train model with automatic augmentations
    model = YOLO("yolo26n.pt")
    model.train(data="coco8.yaml", epochs=100)

    Tích hợp này bao gồm các augmentation được tối ưu hóa như blur, median blur, chuyển đổi grayscale và CLAHE, với xác suất được tinh chỉnh cẩn thận để nâng cao hiệu suất model.

  • Albumentations nổi bật nhờ một số lý do:

    1. Hiệu suất: Được xây dựng trên OpenCV và NumPy, với tối ưu hóa SIMD để đạt tốc độ vượt trội
    2. Tính linh hoạt: Hỗ trợ hơn 70 phép biến đổi thuộc augmentation cấp pixel, cấp không gian và cấp trộn
    3. Khả năng tương thích: Hoạt động liền mạch với các framework phổ biến như PyTorchTensorFlow
    4. Độ tin cậy: Bộ test toàn diện giúp ngăn chặn việc dữ liệu bị hỏng một cách âm thầm
    5. Dễ sử dụng: Một API thống nhất duy nhất cho mọi loại augmentation
  • Albumentations cải thiện nhiều tác vụ computer vision, bao gồm:

    • Object Detection: Cải thiện độ mạnh mẽ của model trước các biến thiên về điều kiện chiếu sáng, tỷ lệ và hướng
    • Instance Segmentation: Nâng cao độ chính xác dự đoán mask thông qua các transform đa dạng
    • Classification: Tăng khả năng tổng quát hóa của model bằng các augmentation màu sắc và hình học
    • Pose Estimation: Giúp model thích ứng với các góc nhìn và điều kiện chiếu sáng khác nhau

    Các tùy chọn augmentation đa dạng của thư viện khiến thư viện trở nên hữu ích cho mọi tác vụ vision yêu cầu hiệu suất model mạnh mẽ.

Bình luận