Các kỹ thuật tiền xử lý dữ liệu cho dữ liệu Computer Vision đã được chú thích

Giới thiệu

Sau khi bạn đã xác định mục tiêu dự án computer vision của mình và thu thập cũng như chú thích dữ liệu, bước tiếp theo là tiền xử lý dữ liệu đã chú thích để chuẩn bị cho quá trình huấn luyện model. Dữ liệu sạch và nhất quán là yếu tố then chốt để tạo ra một model có hiệu suất tốt.



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

Tiền xử lý là một bước trong quy trình dự án computer vision, bao gồm thay đổi kích thước ảnh, chuẩn hóa giá trị pixel, tăng cường dữ liệu (augmentation), và phân chia dữ liệu thành các tập huấn luyện, kiểm định và kiểm thử. Hãy cùng khám phá các kỹ thuật thiết yếu và phương pháp tốt nhất để làm sạch dữ liệu của bạn!

Tầm quan trọng của tiền xử lý dữ liệu

Chúng ta đã và đang thu thập và chú thích dữ liệu một cách cẩn thận với nhiều cân nhắc. Vậy điều gì khiến tiền xử lý dữ liệu trở nên quan trọng đối với một dự án computer vision? Tiền xử lý dữ liệu giúp đưa dữ liệu của bạn về định dạng phù hợp cho việc huấn luyện, giúp giảm tải tính toán và cải thiện hiệu suất của model. Dưới đây là một số vấn đề phổ biến trong dữ liệu thô mà tiền xử lý có thể giải quyết:

  • Nhiễu (Noise): Các biến thể không liên quan hoặc ngẫu nhiên trong dữ liệu.
  • Sự không nhất quán (Inconsistency): 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 (Imbalance): Phân phối không đều của các lớp hoặc danh mục trong tập dữ liệu.

Các kỹ thuật tiền xử lý dữ liệu

Một trong những bước đầu tiên và quan trọng nhất trong tiền xử lý dữ liệu là thay đổi kích thước (resizing). Một số model được thiết kế để xử lý các kích thước đầu vào biến đổi, nhưng nhiều model yêu cầu kích thước đầu vào cố định. Việc thay đổi kích thước ảnh giúp chúng đồng nhất và giảm độ phức tạp tính toán.

Thay đổi kích thước ảnh

Bạn có thể thay đổi kích thước ảnh của mình bằng các phương pháp sau:

  • Nội suy song tuyến (Bilinear Interpolation): Làm mịn các giá trị pixel bằng cách lấy trung bình có trọng số của bốn giá trị pixel gần nhất.
  • Láng giềng gần nhất (Nearest Neighbor): Gán giá trị pixel gần nhất mà không cần tính trung bình, dẫn đến ảnh bị vỡ nhưng tốc độ tính toán nhanh hơn.

Để thực hiện việc thay đổi kích thước đơn giản hơn, bạn có thể sử dụng các công cụ sau:

  • OpenCV: Một thư viện computer vision phổ biến với các chức năng phong phú để xử lý ảnh.
  • PIL (Pillow): Thư viện Python Imaging Library dùng để mở, thao tác và lưu các tệp hình ảnh.

Đối với YOLO26, tham số 'imgsz' trong quá trình huấn luyện model cho phép kích thước đầu vào linh hoạt. Khi được đặt ở một kích thước cụ thể, chẳng hạn như 640, model sẽ tự động thay đổi kích thước ảnh đầu vào sao cho kích thước lớn nhất là 640 pixel trong khi vẫn duy trì tỷ lệ khung hình gốc.

Bằng cách đánh giá nhu cầu cụ thể của model và tập dữ liệu, bạn có thể xác định xem thay đổi kích thước có phải là bước tiền xử lý cần thiết hay không, hoặc liệu model của bạn có thể xử lý hiệu quả các hình ảnh với kích thước khác nhau hay không.

Chuẩn hóa giá trị pixel

Một kỹ thuật tiền xử lý khác là chuẩn hóa (normalization). Chuẩn hóa đưa các giá trị pixel về một thang đo tiêu chuẩn, giúp quá trình hội tụ nhanh hơn trong khi huấn luyện và cải thiện hiệu suất model. Dưới đây là một số kỹ thuật chuẩn hóa phổ biến:

  • Min-Max Scaling: Đưa các giá trị pixel về phạm vi từ 0 đến 1.
  • Z-Score Normalization: Chuẩn hóa các giá trị pixel dựa trên giá trị trung bình (mean) và độ lệch chuẩn (standard deviation).

Đối với YOLO26, việc chuẩn hóa được xử lý liền mạch như một phần của quy trình tiền xử lý trong khi huấn luyện model. YOLO26 tự động thực hiện một số bước tiền xử lý, bao gồm chuyển đổi sang định dạng RGB, đưa các giá trị pixel về phạm vi [0, 1] và chuẩn hóa bằng các giá trị trung bình và độ lệch chuẩn được xác định trước.

Phân chia tập dữ liệu

Sau khi làm sạch dữ liệu, bạn đã sẵn sàng để phân chia tập dữ liệu. Việc chia dữ liệu thành tập huấn luyện, kiểm định và kiểm thử được thực hiện để đảm bảo rằng model có thể được đánh giá trên dữ liệu chưa từng thấy, nhằm kiểm tra khả năng tổng quát hóa. Một tỷ lệ chia phổ biến là 70% huấn luyện, 20% kiểm định và 10% kiểm thử. Có nhiều công cụ và thư viện bạn có thể sử dụng để chia dữ liệu như scikit-learn hoặc TensorFlow.

Hãy cân nhắc những điều sau khi chia tập dữ liệu:

  • Duy trì phân phối dữ liệu: Đảm bảo phân phối của các lớp được duy trì nhất quán giữa tập huấn luyện, kiểm định và kiểm thử.
  • Tránh rò rỉ dữ liệu (Data Leakage): Thông thường, tăng cường dữ liệu được thực hiện sau khi đã chia tập dữ liệu. Tăng cường dữ liệu và các bước tiền xử lý khác chỉ nên áp dụng trên tập huấn luyện để tránh việc thông tin từ tập kiểm định hoặc kiểm thử làm ảnh hưởng đến quá trình huấn luyện model.
  • Cân bằng các lớp: Đối với các tập dữ liệu mất cân bằng, hãy cân nhắc các kỹ thuật như lấy mẫu quá mức (oversampling) lớp thiểu số hoặc lấy mẫu thiếu (under-sampling) lớp đa số trong tập huấn luyện.

Tăng cường dữ liệu (Data Augmentation) là gì?

Bước tiền xử lý dữ liệu được thảo luận phổ biến nhất là tăng cường dữ liệu. Tăng cường dữ liệu làm tăng kích thước tập dữ liệu một cách nhân tạo bằng cách tạo ra các phiên bản đã sửa đổi của hình ảnh. Bằng cách tăng cường dữ liệu, bạn có thể giảm thiểu overfitting và cải thiện khả năng tổng quát hóa của model.

Dưới đây là một số lợi ích khác của tăng cường dữ liệu:

  • Tạo tập dữ liệu mạnh mẽ hơn: Tăng cường dữ liệu có thể làm cho model trở nên bền bỉ hơn với các biến thể và biến dạng trong dữ liệu đầu vào. Điều này bao gồm thay đổi về ánh sáng, hướng và tỷ lệ.
  • Hiệu quả về chi phí: Tăng cường dữ liệu là cách tiết kiệm chi phí để tăng số lượng dữ liệu huấn luyện mà không cần phải thu thập và gán nhãn dữ liệu mới.
  • Sử dụng dữ liệu hiệu quả hơn: Mọi điểm dữ liệu hiện có đều được tận dụng tối đa bằng cách tạo ra các biến thể mới.

Các phương pháp tăng cường dữ liệu

Các kỹ thuật tăng cường phổ biến bao gồm lật, xoay, thay đổi tỷ lệ và điều chỉnh màu sắc. Một số thư viện, chẳng hạn như Albumentations, Imgaug và ImageDataGenerator của TensorFlow, có thể tạo ra các biến thể tăng cường này.

Overview of Data Augmentations

Với YOLO26, bạn có thể tăng cường tập dữ liệu tùy chỉnh của mình bằng cách sửa đổi tệp cấu hình tập dữ liệu (.yaml). Trong tệp này, bạn có thể thêm mục cấu hình augmentation với các tham số xác định cách bạn muốn tăng cường dữ liệu.

Ultralytics YOLO26 repository hỗ trợ đa dạng các kỹ thuật tăng cường dữ liệu. Bạn có thể áp dụng nhiều phép biến đổi như:

  • Cắt ngẫu nhiên (Random Crops)
  • Lật (Flipping): Hình ảnh có thể được lật theo chiều ngang hoặc chiều dọc.
  • Xoay (Rotation): Hình ảnh có thể được xoay theo các góc cụ thể.
  • Biến dạng (Distortion)

Ngoài ra, bạn có thể điều chỉnh cường độ của các kỹ thuật tăng cường này thông qua các tham số cụ thể để tạo ra sự đa dạng dữ liệu hơn.

Nghiên cứu điển hình về tiền xử lý

Hãy xem xét một dự án nhằm phát triển model phát hiện và phân loại các loại phương tiện trong ảnh giao thông bằng YOLO26. Chúng ta đã thu thập ảnh giao thông và chú thích chúng bằng khung bao (bounding boxes) và nhãn.

Dưới đây là các bước tiền xử lý cho dự án này:

  • Thay đổi kích thước ảnh: Vì YOLO26 xử lý các kích thước đầu vào linh hoạt và tự động thực hiện thay đổi kích thước, nên việc thay đổi kích thước thủ công là không cần thiết. Model sẽ điều chỉnh kích thước ảnh theo tham số 'imgsz' đã chỉ định trong khi huấn luyện.
  • Chuẩn hóa giá trị pixel: YOLO26 tự động chuẩn hóa các giá trị pixel về phạm vi 0 đến 1 trong quá trình tiền xử lý, vì vậy điều này là không cần thiết.
  • Phân chia tập dữ liệu: Chia tập dữ liệu thành các tập huấn luyện (70%), kiểm định (20%) và kiểm thử (10%) bằng cách sử dụng các công cụ như scikit-learn.
  • Tăng cường dữ liệu: Chỉnh sửa tệp cấu hình tập dữ liệu (.yaml) để đưa vào các kỹ thuật tăng cường dữ liệu như cắt ngẫu nhiên, lật ngang và điều chỉnh độ sáng.

Các bước này đảm bảo tập dữ liệu được chuẩn bị mà không gặp phải bất kỳ vấn đề tiềm ẩn nào và sẵn sàng cho Phân tích dữ liệu khám phá (EDA).

Các kỹ thuật phân tích dữ liệu khám phá (EDA)

Sau khi tiền xử lý và tăng cường tập dữ liệu, bước tiếp theo là thu thập thông tin chi tiết thông qua Phân tích dữ liệu khám phá (EDA). EDA sử dụng các kỹ thuật thống kê và công cụ trực quan hóa để hiểu các mô hình và phân phối trong dữ liệu của bạn. Bạn có thể xác định các vấn đề như mất cân bằng lớp hoặc dữ liệu nhiễu (outliers) và đưa ra quyết định sáng suốt về việc tiền xử lý dữ liệu thêm hoặc điều chỉnh huấn luyện model.

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

Các kỹ thuật thống kê thường bắt đầu bằng việc tính toán các chỉ số cơ bản như trung bình, trung vị, độ lệch chuẩn và phạm vi. Các chỉ số này cung cấp cái nhìn tổng quan nhanh về các thuộc tính của tập dữ liệu ảnh của bạn, chẳng hạn như phân phối cường độ pixel. Hiểu những số liệu thống kê cơ bản này giúp bạn nắm bắt chất lượng và đặc điểm tổng thể của dữ liệu, cho phép bạn phát hiện bất kỳ sự bất thường nào từ sớm.

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

Trực quan hóa là chìa khóa trong EDA cho các tập dữ liệu ảnh. Ví dụ, phân tích mất cân bằng lớp là một khía cạnh quan trọng khác của EDA. Nó giúp xác định liệu một số lớp nhất định có bị thiếu hụt trong tập dữ liệu của bạn hay không. Trực quan hóa phân phối của các lớp hoặc danh mục hình ảnh khác nhau bằng biểu đồ cột có thể nhanh chóng tiết lộ bất kỳ sự mất cân bằng nào. Tương tự, dữ liệu nhiễu (outliers) có thể được xác định bằng các công cụ trực quan hóa như biểu đồ hộp (box plots), làm nổi bật các điểm bất thường trong cường độ pixel hoặc phân phối tính năng. Phát hiện dữ liệu nhiễu giúp ngăn chặn các điểm dữ liệu bất thường làm sai lệch kết quả của bạn.

Các công cụ phổ biến để trực quan hóa bao gồm:

  • Biểu đồ histogram và Box Plots: Hữu ích để hiểu sự phân phối của các giá trị pixel và xác định các điểm dữ liệu nhiễu.
  • Biểu đồ tán xạ (Scatter Plots): Hữu ích để khám phá mối quan hệ giữa các tính năng hình ảnh hoặc các chú thích.
  • Bản đồ nhiệt (Heatmaps): Hiệu quả để trực quan hóa sự phân phối của các cường độ pixel hoặc sự phân phối không gian của các tính năng đã chú thích trong ảnh.

Sử dụng nền tảng Ultralytics để thực hiện EDA

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

Kết nối và trao đổi

Việc thảo luận về dự án của bạn với những người đam mê computer vision khác có thể mang lại cho bạn những ý tưởng mới từ các quan điểm khác nhau. Dưới đây là một số cách tuyệt vời để học hỏi, khắc phục sự cố và kết nối:

Các kênh kết nối với cộng đồng

  • GitHub Issues: Truy cập kho lưu trữ YOLO26 trên GitHub và sử dụng tab Issues để đặt câu hỏi, báo cáo lỗi và đề xuất các tính năng. Cộng đồng và các nhà phát triển luôn sẵn sàng hỗ trợ mọi vấn đề bạn gặp phải.
  • Máy chủ Discord của Ultralytics: Tham gia máy chủ Discord của Ultralytics để kết nối với những người dùng và nhà phát triển khác, nhận hỗ trợ, chia sẻ kiến thức và cùng thảo luận ý tưởng.

Tài liệu chính thức

  • Tài liệu Ultralytics YOLO26: Tham khảo tài liệu YOLO26 chính thức để có các hướng dẫn chuyên sâu và thông tin chi tiết có giá trị về vô số tác vụ và dự án thị giác máy tính.

Tập dữ liệu của bạn đã sẵn sàng!

Dữ liệu được thay đổi kích thước, chuẩn hóa và tăng cường đúng cách giúp cải thiện hiệu suất model bằng cách giảm nhiễu và cải thiện khả năng tổng quát hóa. Bằng cách làm theo các kỹ thuật tiền xử lý và phương pháp tốt nhất được nêu trong hướng dẫn này, bạn có thể tạo ra một tập dữ liệu chất lượng. Với tập dữ liệu đã được tiền xử lý, bạn có thể tự tin tiến tới các bước tiếp theo trong dự án của mình.

Câu hỏi thường gặp (FAQ)

Tầm quan trọng của tiền xử lý dữ liệu trong các dự án computer vision là gì?

Tiền xử lý dữ liệu là điều cần thiết trong các dự án computer vision vì nó đảm bảo dữ liệu sạch, nhất quán và ở định dạng tối ưu cho việc huấn luyện model. Bằng cách giải quyết các vấn đề như nhiễu, sự không nhất quán và mất cân bằng trong dữ liệu thô, các bước tiền xử lý như thay đổi kích thước, chuẩn hóa, tăng cường và phân chia tập dữ liệu giúp giảm tải tính toán và cải thiện hiệu suất của model. Để biết thêm chi tiết, hãy truy cập các bước của một dự án computer vision.

Làm thế nào tôi có thể sử dụng Ultralytics YOLO để tăng cường dữ liệu?

Để tăng cường dữ liệu với Ultralytics YOLO26, bạn cần sửa đổi tệp cấu hình tập dữ liệu (.yaml). Trong tệp này, bạn có thể chỉ định các kỹ thuật tăng cường khác nhau như cắt ngẫu nhiên, lật ngang và điều chỉnh độ sáng. Điều này có thể được thực hiện hiệu quả bằng cách sử dụng các cấu hình huấn luyện được giải thích tại đây. Tăng cường dữ liệu giúp tạo ra một tập dữ liệu mạnh mẽ hơn, giảm thiểu overfitting và cải thiện khả năng tổng quát hóa của model.

Các kỹ thuật chuẩn hóa dữ liệu tốt nhất cho dữ liệu computer vision là gì?

Chuẩn hóa đưa các giá trị pixel về một phạm vi tiêu chuẩn để hội tụ nhanh hơn và cải thiện hiệu suất trong quá trình huấn luyện. Các kỹ thuật phổ biến bao gồm:

  • Min-Max Scaling: Đưa các giá trị pixel về phạm vi từ 0 đến 1.
  • Z-Score Normalization: Chuẩn hóa các giá trị pixel dựa trên giá trị trung bình (mean) và độ lệch chuẩn (standard deviation).

Đối với YOLO26, việc chuẩn hóa được xử lý tự động, bao gồm chuyển đổi sang định dạng RGB và thay đổi tỷ lệ giá trị pixel. Tìm hiểu thêm về điều này trong phần huấn luyện model.

Tôi nên chia tập dữ liệu đã chú thích của mình như thế nào để huấn luyện?

Để chia tập dữ liệu, một thực tiễn phổ biến là chia 70% cho huấn luyện, 20% cho kiểm định và 10% cho kiểm thử. Điều quan trọng là duy trì phân phối của các lớp trên các tập này và tránh rò rỉ dữ liệu bằng cách chỉ thực hiện tăng cường trên tập huấn luyện. Sử dụng các công cụ như scikit-learn hoặc TensorFlow để phân chia tập dữ liệu hiệu quả. Xem hướng dẫn chi tiết về chuẩn bị tập dữ liệu.

Tôi có thể xử lý các kích thước hình ảnh khác nhau trong YOLO26 mà không cần thay đổi kích thước thủ công không?

Có, Ultralytics YOLO26 có thể xử lý các kích thước hình ảnh khác nhau thông qua tham số 'imgsz' trong quá trình huấn luyện model. Tham số này đảm bảo rằng các hình ảnh được thay đổi kích thước sao cho kích thước lớn nhất của chúng khớp với kích thước đã chỉ định (ví dụ: 640 pixel), trong khi vẫn duy trì tỷ lệ khung hình. Để xử lý đầu vào linh hoạt hơn và điều chỉnh tự động, hãy kiểm tra phần huấn luyện model.

Bình luận