Vision Transformer (ViT)
Khám phá sức mạnh của Vision Transformers (ViT). Tìm hiểu cách self-attention và patch tokenization tạo ra bước đột phá cho computer vision vượt ra ngoài CNNs cùng Ultralytics.
Vision Transformer (ViT) là một kiến trúc deep learning điều chỉnh các cơ chế self-attention vốn được thiết kế cho Xử lý ngôn ngữ tự nhiên (NLP) để giải quyết các tác vụ thị giác. Không giống Mạng nơ-ron tích chập (CNN) truyền thống, vốn xử lý hình ảnh thông qua hệ thống phân cấp các lưới pixel cục bộ, ViT xem một hình ảnh như một chuỗi các patch rời rạc. Phương pháp này trở nên phổ biến nhờ công trình nghiên cứu mang tính nền tảng "Một hình ảnh đáng giá bằng 16x16 từ", trong đó chứng minh rằng các kiến trúc Transformer thuần túy có thể đạt hiệu năng tiên tiến trong thị giác máy tính (CV) mà không cần dựa vào các lớp tích chập. Bằng cách tận dụng global attention, ViT có thể nắm bắt các mối phụ thuộc tầm xa trên toàn bộ hình ảnh ngay từ lớp đầu tiên.
Cách Vision Transformer hoạt động#
Đổi mới cốt lõi của ViT nằm ở cách cấu trúc dữ liệu đầu vào. Để giúp một hình ảnh tương thích với Transformer tiêu chuẩn, model phân rã thông tin thị giác thành một chuỗi vector, mô phỏng cách một language model xử lý một câu gồm nhiều từ.
-
Tokenization patch: Hình ảnh đầu vào được chia thành một lưới các hình vuông có kích thước cố định, thường là 16x16 pixel. Mỗi hình vuông được làm phẳng thành một vector, về cơ bản trở thành một token thị giác.
-
Chiếu tuyến tính: Các patch đã được làm phẳng này được đưa qua một lớp tuyến tính có thể huấn luyện để tạo ra các embedding dày đặc. Bước này ánh xạ các giá trị pixel thô vào một không gian nhiều chiều mà model có thể xử lý.
-
Mã hóa vị trí: Vì kiến trúc xử lý các chuỗi song song và không có hiểu biết sẵn có về thứ tự hoặc không gian, các mã hóa vị trí có thể học được sẽ được thêm vào các embedding của patch. Điều này cho phép model lưu giữ thông tin không gian về vị trí của từng patch trong hình ảnh gốc.
-
Cơ chế self-attention: Chuỗi đi vào encoder của Transformer, trong đó self-attention cho phép mọi patch tương tác đồng thời với tất cả các patch khác. Nhờ đó, network có thể học ngữ cảnh toàn cục và hiểu mối liên hệ giữa một pixel ở góc trên bên trái với một pixel ở góc dưới bên phải.
-
Classification head: Đối với các tác vụ như phân loại hình ảnh, một "class token" đặc biệt thường được thêm vào đầu chuỗi. Trạng thái đầu ra cuối cùng của token này đóng vai trò là biểu diễn tổng hợp của hình ảnh, sau đó được đưa vào một classifier, chẳng hạn như perceptron đa lớp (MLP).
Vision Transformer so với CNN#
Mặc dù cả hai kiến trúc đều hướng đến việc hiểu dữ liệu thị giác, chúng khác biệt đáng kể về triết lý vận hành. CNN có một "inductive bias" mạnh, được gọi là tính bất biến với phép tịnh tiến, nghĩa là chúng mặc nhiên giả định rằng các đặc trưng cục bộ (như cạnh và texture) vẫn quan trọng bất kể vị trí. Điều này khiến CNN sử dụng dữ liệu hiệu quả và hoạt động tốt trên các dataset nhỏ hơn.
Ngược lại, Vision Transformer có ít bias đặc thù cho hình ảnh hơn. Chúng phải học các mối quan hệ không gian từ đầu bằng cách sử dụng lượng lớn dữ liệu huấn luyện, chẳng hạn như các dataset JFT-300M hoặc ImageNet đầy đủ. Mặc dù điều này khiến quá trình huấn luyện đòi hỏi nhiều tài nguyên tính toán hơn, nó cho phép ViT mở rộng quy mô rất tốt; với đủ dữ liệu và compute power, chúng có thể vượt qua CNN bằng cách nắm bắt các cấu trúc toàn cục phức tạp mà các phép tích chập cục bộ có thể bỏ sót.
Các ứng dụng trong thực tế#
Khả năng hiểu ngữ cảnh toàn cục khiến ViT đặc biệt hữu ích trong các môi trường phức tạp và có rủi ro cao.
- Phân tích hình ảnh y tế: Trong AI chăm sóc sức khỏe, ViT được sử dụng để phân tích các ảnh quét độ phân giải cao như MRI hoặc tiêu bản mô bệnh học. Chẳng hạn, trong phát hiện khối u, ViT có thể liên kết các bất thường tinh vi về texture trong mô với những thay đổi cấu trúc rộng hơn trên toàn bộ tiêu bản, xác định các mẫu ác tính mà quá trình xử lý cục bộ có thể bỏ qua.
- Ảnh vệ tinh và viễn thám: ViT hoạt động xuất sắc trong phân tích ảnh vệ tinh, nơi mối quan hệ giữa các đối tượng trải rộng trên những khoảng cách lớn. Ví dụ, việc liên kết một khu vực phá rừng với một con đường khai thác gỗ ở xa đòi hỏi phải hiểu "bức tranh toàn cảnh" của một vùng địa lý, một tác vụ mà global attention của ViT vượt trội hơn receptive field hạn chế của CNN tiêu chuẩn.
Ứng dụng Transformer với Ultralytics#
Thư viện ultralytics hỗ trợ các kiến trúc dựa trên Transformer, nổi bật nhất là RT-DETR (Transformer phát hiện thời gian thực). Trong khi YOLO26 chủ lực thường được ưu tiên nhờ sự cân bằng giữa tốc độ và độ chính xác trên các thiết bị edge, RT-DETR cung cấp một lựa chọn mạnh mẽ cho các tình huống ưu tiên ngữ cảnh toàn cục.
Ví dụ Python sau đây minh họa cách tải một model dựa trên Transformer đã được pretrained và chạy inference:
from ultralytics import RTDETR
# Load a pre-trained RT-DETR model (Vision Transformer-based)
model = RTDETR("rtdetr-l.pt")
# Run inference on an image source
# The model uses self-attention to detect objects globally
results = model("https://ultralytics.com/images/bus.jpg")
# Display the detection results
results[0].show()Triển vọng tương lai#
Nghiên cứu đang phát triển nhanh chóng để giải quyết chi phí tính toán cao của ViT. Các kỹ thuật như FlashAttention đang giúp những model này nhanh hơn và sử dụng bộ nhớ hiệu quả hơn. Ngoài ra, các kiến trúc hybrid kết hợp hiệu quả của CNN với attention của Transformer đang trở nên phổ biến. Đối với các team muốn quản lý những workflow nâng cao này, Ultralytics Platform cung cấp một môi trường thống nhất để gán nhãn dữ liệu, huấn luyện các model phức tạp trên cloud và triển khai chúng đến nhiều endpoint khác nhau.









