Feature Extraction
Trích xuất đặc trưng chuyển dữ liệu thô như ảnh thành các đặc trưng gọn và giàu thông tin bằng phương pháp thiết kế thủ công hoặc mạng neural pretrained.
Trích xuất đặc trưng là quy trình chuyển đổi dữ liệu thô thành một tập nhỏ hơn gồm các đặc trưng số, giữ lại thông tin cần thiết cho tác vụ. Một ảnh RGB 640×480 chứa 921.600 giá trị pixel, phần lớn dư thừa; bộ trích xuất đặc trưng có thể rút gọn ảnh thành một vector gồm vài trăm số mô tả nội dung. Machine learning cổ điển dựa vào các bộ trích xuất được thiết kế thủ công cho từng loại dữ liệu; model deep learning tự học các bộ trích xuất này trong mạng backbone, đầu ra của mạng có thể được tái sử dụng cho tìm kiếm, phân cụm và các classifier mới. Số chiều ít hơn nhưng giàu thông tin hơn cũng giúp giảm lời nguyền số chiều, nhờ đó các model đơn giản hơn có thể khái quát hóa từ ít dữ liệu hơn.
Đặc trưng thủ công và đặc trưng được học#
Trước deep learning, kỹ sư xây dựng bộ trích xuất đặc trưng riêng cho từng loại dữ liệu:
- SIFT: Phát hiện keypoint trong ảnh và mô tả mỗi điểm bằng histogram 128 chiều về hướng gradient, ổn định khi thay đổi tỷ lệ và phép xoay; nhờ đó, SIFT trở thành công cụ tiêu chuẩn để đối sánh hình ảnh và ghép ảnh panorama.
- HOG: Histogram của các gradient có hướng được tính trên một lưới ô; khi kết hợp với máy vector hỗ trợ tuyến tính, HOG được giới thiệu năm 2005 để phát hiện người đi bộ và trở thành công cụ phổ biến trong phát hiện đối tượng cổ điển.
- Phân tích thành phần chính (PCA): Chiếu dữ liệu lên các hướng có phương sai lớn nhất; đây là phương pháp đa dụng cho dữ liệu dạng bảng, khuôn mặt và phổ.
- Hệ số cepstral tần số Mel (MFCC): Tóm tắt phổ ngắn hạn của âm thanh theo thang đo phù hợp với thính giác con người; từ lâu đây là đầu vào mặc định cho nhận dạng tiếng nói.
Đặc trưng được học đã thay thế phần lớn các đặc trưng này cho hình ảnh, âm thanh và văn bản. Mạng nơ-ron tích chập (CNN) hoặc vision Transformer (ViT) được huấn luyện trên hàng triệu hình ảnh sẽ tự xây dựng hệ phân cấp: các lớp đầu phát hiện cạnh và vùng màu, các lớp giữa phát hiện kết cấu và bộ phận, còn các lớp cuối mã hóa khái niệm ở cấp độ đối tượng. Những biểu diễn này, được lưu trong feature map, có thể chuyển sang tác vụ mới; đó là lý do backbone được huấn luyện trước là điểm khởi đầu mặc định cho transfer learning.
Trích xuất đặc trưng và các thuật ngữ liên quan#
- Thiết kế đặc trưng: Thực hành rộng hơn bao gồm tạo, biến đổi và lựa chọn đầu vào cho model, thường dựa trên kiến thức chuyên ngành; ví dụ, tính giá trên mỗi foot vuông từ giá và diện tích. Trích xuất đặc trưng là một phần của quy trình này; trong deep learning, quy trình được tự động hóa hoàn toàn.
- Lựa chọn đặc trưng: Giữ nguyên một tập con các đặc trưng ban đầu và loại bỏ phần còn lại. Trích xuất đặc trưng tạo ra đặc trưng mới bằng cách biến đổi hoặc kết hợp các đặc trưng ban đầu.
- Giảm chiều: Có nhiều điểm trùng lặp với trích xuất đặc trưng, và PCA được xem là cả hai. Các phương pháp được xây dựng để trực quan hóa, chẳng hạn t-SNE, giảm chiều để con người kiểm tra và hiếm khi được dùng làm đầu vào cho model.
- Embedding: Các vector đặc trưng do bộ trích xuất đã học tạo ra. Trong deep learning, "đặc trưng được trích xuất" và "embedding" thường chỉ cùng một loại vector.
Dùng mạng được huấn luyện trước làm bộ trích xuất đặc trưng#
Quy trình phổ biến là dùng một mạng được huấn luyện trước, loại bỏ head tác vụ, đưa dữ liệu qua các lớp đã đóng băng và pooling feature map cuối cùng thành một vector cho mỗi đầu vào. Khi có nhãn, chỉ huấn luyện một classifier tuyến tính trên các vector này—gọi là thăm dò tuyến tính—sẽ tạo được baseline mạnh với chi phí chỉ bằng một phần nhỏ so với huấn luyện mạng. Khi không có nhãn, tìm kiếm vector tìm các hình ảnh có nội dung trực quan tương tự, phân cụm k-means nhóm dataset để tuyển chọn và loại bỏ trùng lặp, còn khoảng cách so với các mẫu bình thường đánh dấu lỗi trong phát hiện bất thường. Trọng số backbone không thay đổi trong quá trình trích xuất đặc trưng, đây là điểm khác biệt với fine-tuning.
Các model YOLO26 hỗ trợ quy trình này thông qua model.embed(), chạy mạng đến một lớp được chọn rồi average-pooling feature map của lớp đó thành một vector cho mỗi ảnh; embed=[10] dừng ở lớp cuối cùng của backbone YOLO26.
from ultralytics import YOLO
# # Tải model YOLO26 được huấn luyện trước; backbone kết thúc tại lớp 10
model = YOLO("yolo26n.pt")
# # Average-pooling feature map cuối cùng của backbone thành một vector cho mỗi ảnh
embeddings = model.embed("https://ultralytics.com/images/bus.jpg", embed=[10])
vector = embeddings[0]
print(vector.shape)Lệnh in ra torch.Size([256]): ảnh xe buýt đầy đủ được rút gọn thành 256 số, mỗi số ứng với một kênh trong đầu ra backbone stride-32 của YOLO26n, sẵn sàng cho tìm kiếm vector hoặc phân cụm.










