YOLO Vision 2026:

Các kỹ thuật tiền xử lý dữ liệu thị giác máy tính đã gán nhãn#

Tiền xử lý dữ liệu biến các hình ảnh thô đã gán nhãn thành những đầu vào sạch và nhất quán mà model thị giác máy tính cần để train hiệu quả. Với Ultralytics YOLO26, các thao tác cốt lõi trên pixel — chuyển đổi RGB, scale về [0, 1] và resize — được tự động thực hiện bên trong pipeline training, nên phần việc còn lại là chia dataset đúng cách, cân bằng các class và lựa chọn augmentation. Hướng dẫn này trình bày các kỹ thuật thiết yếu đó: resize, normalization, chia dataset, data augmentation và phân tích dữ liệu khám phá (EDA).



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

Bước này được thực hiện sau khi bạn đã xác định mục tiêu của dự ánthu thập, gán nhãn dữ liệu, đồng thời nằm ở giai đoạn đầu của quy trình dự án thị giác máy tính.

Tại sao tiền xử lý lại quan trọng#

Tiền xử lý đưa dữ liệu về định dạng giúp giảm tải tính toán và cải thiện hiệu năng của model. Quy trình này xử lý ba vấn đề phổ biến trong dữ liệu thô:

  • Nhiễu: Các biến thiên không liên quan hoặc ngẫu nhiên trong dữ liệu.
  • Không nhất quán: Sự khác biệt về kích thước, định dạng và chất lượng hình ảnh.
  • Mất cân bằng: Phân bố không đồng đều của các class hoặc danh mục trong dataset.

Các kỹ thuật tiền xử lý#

Các kỹ thuật chính gồm resize, normalization, chia dataset và augmentation. Với YOLO26, hai kỹ thuật đầu được thực hiện tự động, còn việc chia dataset và augmentation là nơi các lựa chọn của bạn có ảnh hưởng lớn nhất.

Resize hình ảnh#

Nhiều model yêu cầu kích thước đầu vào nhất quán, vì vậy resize giúp hình ảnh đồng nhất và giảm độ phức tạp tính toán. Hai phương pháp nội suy phổ biến là:

  • Nội suy song tuyến tính: Làm mượt giá trị pixel bằng cách tính trung bình có trọng số của bốn pixel gần nhất.
  • Láng giềng gần nhất: Sao chép giá trị của pixel gần nhất mà không tính trung bình — nhanh hơn nhưng tạo ra hình ảnh dạng khối rõ hơn.

Các thư viện như OpenCV và PIL (Pillow) cung cấp các hàm này, nhưng với YOLO26, thông thường bạn không cần resize thủ công. Đối số imgsz sẽ xử lý việc đó. Trên quy trình hình vuông kích thước cố định, validationinference letterbox hình ảnh về đầu vào imgsz × imgsz chẳng hạn như 640 × 640, giữ nguyên tỷ lệ khung hình và thêm padding màu xám (giá trị 114). Hình ảnh lớn hơn được scale xuống để vừa kích thước, còn hình ảnh nhỏ hơn không được phóng to khi tùy chọn scale-up bị tắt. Trên quy trình training mặc định, mosaic=1.0 thay vào đó xếp bốn hình ảnh lên một canvas lớn hơn rồi crop về imgsz; khi close_mosaic tắt mosaic trong các epoch cuối, hình ảnh được letterbox và sau đó vẫn được biến đổi ngẫu nhiên thay vì truyền qua mà không thay đổi. Các batch hình chữ nhật (rect=True) và multi_scale sử dụng các shape đầu vào khác nhau.

Chuẩn hóa giá trị pixel#

Normalization scale các giá trị pixel về một khoảng tiêu chuẩn, giúp model hội tụ nhanh hơn trong quá trình training. Hai kỹ thuật phổ biến là:

  • Min-Max Scaling: Scale các giá trị pixel về khoảng từ 0 đến 1.
  • Z-Score Normalization: Scale các giá trị pixel dựa trên giá trị trung bình và độ lệch chuẩn.

YOLO26 tự động thực hiện normalization trong pipeline tiền xử lý: chuyển hình ảnh sang RGB và scale các giá trị pixel về khoảng [0, 1] bằng cách chia cho 255 (min-max scaling). YOLO không mặc định áp dụng normalization theo mean và độ lệch chuẩn kiểu ImageNet (z-score), vì vậy không cần bước normalization thủ công.

Chia dataset#

Chia dữ liệu thành các tập training, validation và test cho phép bạn đánh giá model trên dữ liệu chưa từng thấy và đo lường khả năng tổng quát hóa. Một cách chia phổ biến là 70% cho training, 20% cho validation và 10% cho testing. Các công cụ như scikit-learn hoặc TensorFlow giúp thực hiện việc này dễ dàng.

Hãy lưu ý những điểm sau khi chia dataset:

  • Duy trì phân bố class: Đảm bảo mỗi class được biểu diễn theo tỷ lệ phù hợp trong các tập training, validation và test.
  • Cân bằng các class: Với dataset mất cân bằng, hãy cân nhắc oversampling class thiểu số hoặc undersampling class đa số — chỉ trong tập training.
Tránh rò rỉ dữ liệu

Chia dataset trước khi áp dụng bất kỳ augmentation hoặc bước tiền xử lý nào khác, đồng thời chỉ áp dụng các phép biến đổi đó cho tập training. Augmentation trước khi chia khiến thông tin từ các hình ảnh validation hoặc test ảnh hưởng đến quá trình training, tạo ra các điểm số cao gây hiểu nhầm nhưng suy giảm trên dữ liệu thực tế.

Augmentation dataset#

Data augmentation làm tăng kích thước dataset một cách nhân tạo bằng cách tạo các phiên bản đã chỉnh sửa của những hình ảnh hiện có. Kỹ thuật này giúp giảm overfitting và cải thiện khả năng tổng quát hóa, với một số lợi ích:

  • Model mạnh mẽ hơn: Các biến thiên về ánh sáng, hướng và scale giúp model chống chịu tốt hơn trước những biến dạng trong thực tế.
  • Tiết kiệm chi phí: Mở rộng tập training mà không cần thu thập và gán nhãn dữ liệu mới.
  • Tận dụng dữ liệu tốt hơn: Mỗi hình ảnh đã gán nhãn tạo ra nhiều biến thể training.

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

Với YOLO26, cường độ augmentation được kiểm soát thông qua các đối số training truyền vào model.train() hoặc các cờ CLI tương đương, không phải bằng cách chỉnh sửa YAML của dataset, vốn định nghĩa metadata của dataset như đường dẫn, tên class và các tập dữ liệu. Ngoại lệ duy nhất là flip_idx: dataset pose khai báo khóa này trong YAML của dataset để ánh xạ các cặp keypoint trái/phải, và YOLO sẽ tắt hoàn toàn fliplr cùng flipud khi khóa này không có. Các augmentation tích hợp gồm:

  • Mosaic, MixUp và CutMix (mosaic, mixup, cutmix): Kết hợp nhiều hình ảnh thành một sample training.
  • Lật ảnh (fliplr, flipud): Phản chiếu hình ảnh theo chiều ngang hoặc dọc.
  • Các phép biến đổi hình học (degrees, translate, scale, shear, perspective): Xoay, dịch chuyển, zoom và làm biến dạng hình ảnh.
  • Jitter màu HSV (hsv_h, hsv_s, hsv_v): Thay đổi hue, saturation và brightness.
  • Copy-paste (copy_paste): Dán thêm các bản sao của những object đã phân đoạn, mặc định phản chiếu chúng trong cùng hình ảnh hoặc lấy từ hình ảnh khác bằng copy_paste_mode=mixup.
  • Hoán đổi channel (bgr): Hoán đổi thứ tự channel RGB sang BGR.
  • Các phép biến đổi cho classification (auto_augment, erasing): Áp dụng policy augmentation tự động và random erasing khi training classifier.
Thiết lập cường độ augmentation khi training
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)

Để xem danh sách đầy đủ các đối số augmentation và giá trị mặc định, hãy tham khảo tài liệu cài đặt augmentationhướng dẫn YOLO về data augmentation chuyên biệt. Nếu package albumentations được cài đặt, YOLO cũng tự động bật các augmentation tích hợp dựa trên Albumentations.

Ví dụ thực tế: Tiền xử lý cho bài toán phát hiện phương tiện#

Hãy xem xét một dự án phát hiện và phân loại phương tiện trong hình ảnh giao thông bằng YOLO26, bắt đầu từ các hình ảnh được gán nhãn bằng bounding box và label. Dưới đây là cách mỗi quyết định tiền xử lý được thực hiện:

  • Resize: Không cần thao tác thủ công — YOLO26 resize về imgsz trong quá trình training.
  • Normalization: Không cần thao tác thủ công — YOLO26 tự động scale các giá trị pixel về [0, 1].
  • Chia dataset: Chia dataset thành 70% training, 20% validation và 10% testing, đồng thời duy trì phân bố class nhất quán giữa các tập.
  • Augmentation: Thiết lập các đối số training phù hợp với cảnh giao thông — chẳng hạn fliplr để bất biến với hướng, hsv_v cho điều kiện ánh sáng ngày/đêm và mosaic cho mật độ object đa dạng.

Sau khi đưa ra các quyết định này, dataset đã sẵn sàng cho Phân tích dữ liệu khám phá (EDA).

Phân tích dữ liệu khám phá (EDA)#

EDA sử dụng thống kê và trực quan hóa để làm rõ các pattern và phân bố trong dữ liệu, giúp bạn phát hiện những vấn đề như mất cân bằng class hoặc outlier trước khi training.

Các kỹ thuật EDA thống kê#

EDA thống kê bắt đầu với các metric cơ bản — mean, median, độ lệch chuẩn và range — được tính trên những thuộc tính như phân bố cường độ pixel. Các metric này cung cấp tổng quan nhanh về chất lượng dataset và sớm làm lộ ra các bất thường.

Các kỹ thuật EDA trực quan#

Các biểu đồ trực quan cho thấy những pattern mà thống kê tổng hợp có thể bỏ sót, chẳng hạn mất cân bằng class và outlier. Các công cụ phổ biến gồm:

  • Histogram và box plot: Hiển thị phân bố giá trị pixel và đánh dấu outlier trong phân bố cường độ hoặc feature.
  • Biểu đồ cột: Cho thấy tình trạng mất cân bằng class bằng cách so sánh số lượng sample của từng class.
  • Biểu đồ scatter: Khám phá mối quan hệ giữa các feature của hình ảnh hoặc annotation.
  • Heatmap: Trực quan hóa phân bố cường độ pixel hoặc phân bố không gian của annotation trên các hình ảnh.

Ultralytics Platform cho EDA#

Để thực hiện EDA mà không cần code, hãy upload dataset của bạn lên Ultralytics Platform. Tab Charts của dataset tự động tạo các biểu đồ EDA quan trọng: phân bố các tập, số lượng class hàng đầu, histogram chiều rộng/chiều cao hình ảnh và heatmap 2D về vị trí annotation cùng kích thước hình ảnh. Tab Images cho phép bạn duyệt dữ liệu ở chế độ lưới, thu gọn hoặc bảng với các overlay annotation, giúp dễ dàng phát hiện sample gán nhãn sai hoặc class không cân bằng mà không cần viết code.

Kết luận#

Dữ liệu được chia, normalize và augment đúng cách giúp giảm nhiễu và cải thiện khả năng tổng quát hóa, biến một tập hợp hình ảnh thô thành tập training đáng tin cậy. Khi dataset đã được tiền xử lý, bước tiếp theo là train model của bạn. Nếu có câu hỏi trong quá trình thực hiện, hãy hỏi cộng đồng trên repository Ultralytics GitHub hoặc server Ultralytics Discord.

FAQ#

  • Tiền xử lý đảm bảo dữ liệu của bạn sạch, nhất quán và ở định dạng được tối ưu cho training. Bằng cách xử lý nhiễu, sự không nhất quán và mất cân bằng class trong dữ liệu thô, các bước như resize, normalization, augmentation và chia dataset giúp giảm tải tính toán và cải thiện hiệu năng model. Xem các bước trong một dự án thị giác máy tính để biết vị trí của bước này trong quy trình tổng thể.

  • Cấu hình augmentation thông qua các đối số training thay vì YAML của dataset. Truyền các đối số như fliplr, mosaic, hsv_hdegrees vào model.train() (hoặc các cờ CLI tương đương) để thiết lập xác suất và cường độ của từng phép biến đổi. Các đối số này được định nghĩa trong cài đặt augmentation và giải thích trong hướng dẫn YOLO về data augmentation. Dataset pose là ngoại lệ: ánh xạ keypoint flip_idx của chúng nằm trong YAML của dataset, và các phép lật bị tắt nếu thiếu khóa này.

  • Hai kỹ thuật phổ biến nhất là min-max scaling (scale lại pixel về khoảng từ 0 đến 1) và z-score normalization (scale lại dựa trên mean và độ lệch chuẩn). YOLO26 tự động áp dụng min-max scaling — chuyển hình ảnh sang RGB và chia giá trị pixel cho 255 — vì vậy bạn không cần bước normalization thủ công. Theo mặc định, model không áp dụng z-score normalization.

  • Một thông lệ phổ biến là 70% cho training, 20% cho validation và 10% cho testing. Duy trì phân bố class trên cả ba tập và tránh rò rỉ dữ liệu bằng cách chỉ áp dụng augmentation cho tập training sau khi chia. Các công cụ như scikit-learn hoặc TensorFlow xử lý việc chia này hiệu quả. Xem hướng dẫn thu thập và gán nhãn dữ liệu để biết về bước chuẩn bị dataset trước đó.

  • Có. Đối số imgsz kiểm soát kích thước đầu vào mục tiêu mà không cần thao tác thủ công. Trên quy trình hình vuông kích thước cố định, validation và inference letterbox hình ảnh về shape được chỉ định trong khi vẫn giữ nguyên tỷ lệ khung hình; hình ảnh lớn hơn được scale xuống để vừa kích thước, còn hình ảnh nhỏ hơn không được phóng to khi scale-up bị tắt. Trong quá trình training, augmentation mosaic mặc định đạt kích thước mục tiêu bằng cách xếp bốn hình ảnh rồi crop thay vì letterbox. Các batch hình chữ nhật (rect=True) và multi_scale sử dụng các shape đầu vào khác nhau. Xem tài liệu training model để biết thêm chi tiết.

Bình luận