Data Preprocessing
Tiền xử lý dữ liệu chuyển bảng, văn bản và hình ảnh thô thành đầu vào sạch, được chuẩn hóa và có định dạng cố định theo yêu cầu của model. Nội dung đề cập các bước thường dùng, quy tắc ngăn rò rỉ và code.
Tiền xử lý dữ liệu là tập hợp các phép biến đổi đưa dữ liệu thô thành đầu vào số đã được làm sạch và định dạng nhất quán mà model học máy (ML) mong đợi; các phép biến đổi này được áp dụng theo cùng một cách trong quá trình huấn luyện và suy luận. Với dữ liệu dạng bảng, việc này bao gồm xử lý giá trị thiếu, mã hóa danh mục thành số và scale đặc trưng. Với ảnh, việc này bao gồm giải mã tệp, resize ảnh về kích thước đầu vào của mạng, sắp xếp thứ tự các kênh màu và scale giá trị pixel. Trên thực tế, tiền xử lý là một phần của model: một mạng được huấn luyện trên ảnh RGB có giá trị được scale về 0–1 sẽ đưa ra dự đoán không đáng tin cậy khi nhận ảnh BGR có giá trị từ 0 đến 255, dù trọng số không thay đổi.
Các bước tiền xử lý phổ biến#
- Làm sạch dữ liệu: Loại bỏ dữ liệu trùng lặp, tệp lỗi và giá trị bất khả thi; sửa nhãn hoặc đơn vị không nhất quán.
- Bù giá trị thiếu: Điền giá trị thiếu bằng một thống kê như trung vị của cột, ước lượng dựa trên model hoặc một danh mục "thiếu" riêng; hoặc loại bỏ các hàng có quá nhiều giá trị thiếu.
- Mã hóa: Chuyển danh mục thành số, dùng mã hóa one-hot cho danh mục không có thứ tự như màu sắc, mã thứ bậc cho danh mục có thứ tự như kích thước và chỉ số nguyên cho tên lớp.
- Scale và chuẩn hóa: Scale min-max ánh xạ đặc trưng về khoảng 0–1; chuẩn hóa z-score trừ đi giá trị trung bình rồi chia cho độ lệch chuẩn, nhờ đó đặc trưng đo bằng milimét không lấn át đặc trưng đo bằng mét trong các model dựa trên khoảng cách, đồng thời gradient descent hội tụ nhanh hơn. Nhiều model được huấn luyện trước trên ImageNet trong torchvision yêu cầu chuẩn hóa từng kênh RGB bằng các giá trị trung bình 0.485, 0.456 và 0.406, cùng độ lệch chuẩn 0.229, 0.224 và 0.225.
- Resize: Đưa mọi ảnh về kích thước đầu vào của mạng bằng cách kéo giãn, cắt giữa hoặc letterbox; phương pháp letterbox scale ảnh để vừa khung rồi đệm phần còn lại, nhờ đó đối tượng giữ nguyên tỷ lệ.
- Tokenization: Chia văn bản thành token và ánh xạ từng token thành ID số nguyên từ một bộ từ vựng cố định.
Các bước chuyên biệt theo miền được thực hiện bổ sung. Ảnh chụp CT được áp dụng cửa sổ, ánh xạ một khoảng đơn vị Hounsfield, chẳng hạn khoảng hiển thị mô phổi, sang cường độ hiển thị mà model tiếp nhận; âm thanh được lấy mẫu lại theo tần số cố định và thường được chuyển thành spectrogram.
Fit trên dữ liệu huấn luyện, áp dụng cho mọi tập dữ liệu#
Các thống kê dùng trong tiền xử lý, chẳng hạn giá trị trung bình và độ lệch chuẩn của đặc trưng, giá trị bù dữ liệu thiếu và từ vựng danh mục, chỉ được tính trên tập huấn luyện, sau đó lưu lại và áp dụng nguyên trạng cho dữ liệu validation, test và production. Tính các thống kê này trên toàn bộ dataset trước khi chia tập sẽ để thông tin từ tập test ảnh hưởng đến đầu vào huấn luyện, gây ra một dạng rò rỉ dữ liệu làm tăng điểm đánh giá. Pipeline của scikit-learn đảm bảo quy tắc này bằng cách chỉ fit các bước tiền xử lý trên dữ liệu được truyền vào fit. Áp dụng tiền xử lý khác khi serving, chẳng hạn phương pháp resize khác hoặc bộ giải mã ảnh khác, gây ra độ lệch giữa huấn luyện và serving; khi đó model đạt điểm cao khi đánh giá offline nhưng kém hơn trong môi trường production.
Tiền xử lý ảnh cho model thị giác#
Model ảnh cần bố cục tensor cố định. OpenCV giải mã ảnh thành mảng có thứ tự chiều cao × chiều rộng × kênh, gồm các số nguyên 8-bit theo thứ tự BGR, trong khi mạng PyTorch cần batch tensor float theo thứ tự RGB, với kênh đứng trước. Dự đoán bằng YOLO26 trong Ultralytics tự động thực hiện các bước sau: resize từng ảnh sao cho cạnh dài nhất khớp với imgsz, mặc định là 640 pixel, mà không làm biến dạng ảnh; đệm pixel xám có giá trị 114 để tạo thành hình vuông 640 × 640 cho model đã export có shape cố định, hoặc chỉ đệm đến bội số tiếp theo của stride 32 pixel cho model PyTorch; chuyển BGR thành RGB, sắp xếp lại mảng theo thứ tự kênh đứng trước và chia cho 255. Script OpenCV và NumPy bên dưới tự thực hiện letterbox vuông:
import urllib.request
import cv2
import numpy as np
# Download a sample photo and read it as a BGR uint8 array of shape (height, width, 3)
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
image = cv2.imread("bus.jpg")
# Resize so the longer side is 640 pixels, keeping the aspect ratio
scale = 640 / max(image.shape[:2])
resized = cv2.resize(image, None, fx=scale, fy=scale, interpolation=cv2.INTER_LINEAR)
# Letterbox: center the resized image on a 640x640 canvas of gray (114) padding
canvas = np.full((640, 640, 3), 114, dtype=np.uint8)
top, left = (640 - resized.shape[0]) // 2, (640 - resized.shape[1]) // 2
canvas[top : top + resized.shape[0], left : left + resized.shape[1]] = resized
# Reorder BGR to RGB and HWC to CHW, scale pixels to 0-1, and add a batch dimension
tensor = canvas[:, :, ::-1].transpose(2, 0, 1).astype(np.float32) / 255.0
batch = tensor[None]
print(f"{image.shape} uint8 -> {batch.shape} float32 in [{batch.min():.1f}, {batch.max():.1f}]")Script in ra (1080, 810, 3) uint8 -> (1, 3, 640, 640) float32 in [0.0, 1.0]: ảnh 1080 × 810 trở thành batch một ảnh có bố cục và khoảng giá trị mà detector PyTorch mong đợi, với các dải màu xám lấp đầy 80 pixel ở mỗi bên.
Tiền xử lý dữ liệu và các thuật ngữ liên quan#
- Gắn nhãn dữ liệu: Tạo các mục tiêu ground truth như lớp và hộp, sau đó tiền xử lý chuyển đổi chúng sang định dạng số mà quy trình huấn luyện đọc được.
- Feature engineering: Tạo biến đầu vào mới dựa trên kiến thức chuyên môn, chẳng hạn tính chỉ số khối cơ thể từ các cột chiều cao và cân nặng.
- Batch normalization: Một layer bên trong mạng, chuẩn hóa các activation trung gian trong quá trình huấn luyện và suy luận. Chuẩn hóa đầu vào trong bước tiền xử lý chỉ diễn ra một lần, trước khi dữ liệu đi vào mạng.
- Tăng cường dữ liệu: Các phép biến đổi ngẫu nhiên như lật, dịch chuyển màu và mosaic, chỉ được áp dụng trong quá trình huấn luyện để tạo ra các phiên bản đa dạng của từng mẫu. Tiền xử lý mang tính xác định và giống hệt nhau trong huấn luyện lẫn suy luận.










