Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Vision Transformer (ViT)

Vision Transformer (ViT) chia hình ảnh thành các patch và liên kết chúng bằng self-attention. Bài viết trình bày kiến trúc, các biến thể và ưu nhược điểm so với CNN.

Vision Transformer (ViT) là mạng nơ-ron áp dụng kiến trúc Transformer từ mô hình hóa ngôn ngữ cho ảnh. ViT chia ảnh thành các mảnh kích thước cố định, chuyển mỗi mảnh thành embedding token, rồi xử lý chuỗi bằng self-attention, nhờ đó ngay từ lớp đầu tiên, mỗi mảnh đều có thể khai thác thông tin từ mọi mảnh khác. Các nhà nghiên cứu Google giới thiệu kiến trúc này trong bài báo “An Image is Worth 16x16 Words”, cho thấy Transformer thuần túy không có lớp tích chập có thể đạt kết quả ngang mạng nơ-ron tích chập (CNN) tiên tiến nhất về phân loại ảnh khi được tiền huấn luyện trên đủ dữ liệu. Hiện nay, ViT được dùng làm encoder ảnh cho model thị giác-ngôn ngữ, model nền tảng phân đoạn và backbone tự giám sát.

Cách thức hoạt động của Vision Transformer#

ViT chuyển ảnh thành chuỗi rồi xử lý chuỗi đó như văn bản. Các bước dưới đây dùng ViT-Base/16 trên ảnh 224×224:

  1. Tạo embedding cho patch: Ảnh được chia thành các patch 16×16 pixel, tạo thành lưới 14×14 gồm 196 patch. Mỗi patch được làm phẳng rồi nhân với một ma trận đã học để tạo thành một embedding có 768 chiều; thao tác này thường được triển khai dưới dạng phép tích chập 16×16 với stride 16.
  2. Token lớp và embedding vị trí: Một token lớp có thể học được được đặt ở đầu chuỗi, còn embedding vị trí có thể học được được cộng vào mọi token. Bản thân attention bỏ qua thứ tự, nên các embedding này là nguồn thông tin duy nhất về vị trí xuất phát của từng mảnh ảnh.
  3. Encoder Transformer: Một chồng các khối giống hệt nhau, gồm 12 khối trong ViT-Base, lần lượt áp dụng self-attention nhiều đầu để kết hợp thông tin giữa mọi token và MLP hai lớp dùng activation GELU để biến đổi riêng từng token. Chuẩn hóa lớp đứng trước mỗi lớp con, còn một kết nối dư bao quanh lớp con đó.
  4. Head: Đầu ra cuối cùng của token lớp được đưa vào bộ phân loại tuyến tính. Các tác vụ dày đặc như phân đoạn sử dụng token mảnh ảnh thay vào đó, rồi định hình lại thành lưới 14×14.

Đoạn mã PyTorch dưới đây tạo chuỗi token cho một ảnh và đưa chuỗi qua một khối encoder duy nhất.

import torch
from torch import nn

# Cấu hình ViT-Base/16: mảnh 16x16, token 768 chiều, 12 đầu attention
image = torch.randn(1, 3, 224, 224)
patch_embed = nn.Conv2d(3, 768, kernel_size=16, stride=16)  # mỗi mảnh có một phép chiếu tuyến tính

# Chia ảnh thành lưới mảnh 14x14 rồi trải phẳng thành 196 token
tokens = patch_embed(image).flatten(2).transpose(1, 2)

# Thêm token lớp có thể học được vào đầu chuỗi và thêm embedding vị trí có thể học được
cls_token = nn.Parameter(torch.zeros(1, 1, 768))
pos_embed = nn.Parameter(torch.zeros(1, 197, 768))
tokens = torch.cat([cls_token, tokens], dim=1) + pos_embed

# Một khối encoder chuẩn hóa trước, trong đó mỗi token tập trung vào mọi token khác
block = nn.TransformerEncoderLayer(
    d_model=768, nhead=12, dim_feedforward=3072, activation="gelu", batch_first=True, norm_first=True
)
print(block(tokens).shape)

Đoạn mã in torch.Size([1, 197, 768]): 196 token mảnh ảnh cùng token lớp, mỗi token vẫn có 768 chiều, sẵn sàng cho khối tiếp theo trong 12 khối của ViT-Base.

Kích thước và biến thể model#

Tên ViT cho biết kích thước model và kích thước mảnh ảnh: ViT-B/16 là model Base 86 triệu tham số dùng mảnh 16×16; model Large và Huge có lần lượt 307 triệu và 632 triệu tham số. Mảnh nhỏ hơn tạo ra nhiều token hơn, giúp cải thiện độ chi tiết với chi phí tính toán cao hơn. Một số biến thể thay đổi cách huấn luyện hoặc cấu trúc ViT:

  • DeiT: Quy trình huấn luyện dùng tăng cường mạnh và token chưng cất, giúp huấn luyện ViT có năng lực cạnh tranh chỉ trên ImageNet-1k mà không cần thêm dữ liệu tiền huấn luyện.
  • Swin Transformer: Tính attention bên trong các cửa sổ cục bộ dịch chuyển và gộp các mảnh ảnh giữa những giai đoạn, tạo ra cấu trúc phân cấp giống CNN, phù hợp với phát hiện và phân đoạn.
  • Autoencoder che khuất (MAE) và DINOv2: Các phương pháp tự giám sát tiền huấn luyện ViT trên ảnh không nhãn: MAE tái tạo các mảnh bị che khuất, còn DINOv2 khớp đầu ra của mạng teacher.
  • CLIP và SigLIP: Encoder ảnh ViT được huấn luyện để khớp ảnh với chú thích, được tái sử dụng rộng rãi làm tháp thị giác trong các model đa phương thức.

Ứng dụng#

Vision Transformer và CNN#

CNN tích hợp hai giả định vào mọi lớp: tính cục bộ vì mỗi bộ lọc chỉ nhìn thấy một vùng lân cận nhỏ, và tính tương đương tịnh tiến vì cùng một bộ lọc được áp dụng tại mọi vị trí. Ngoài lưới mảnh ảnh, ViT phải học cấu trúc không gian từ dữ liệu. Trong bài báo gốc, ViT chỉ huấn luyện trên ImageNet (1,3 triệu ảnh) đạt điểm thấp hơn vài điểm phần trăm so với ResNet có kích thước tương đương; tiền huấn luyện trên tập dữ liệu JFT-300M gồm 300 triệu ảnh giúp ViT-H/14 đạt độ chính xác top-1 88,55% trên ImageNet. Chi phí là điểm khác biệt còn lại. Self-attention so sánh mọi token với mọi token khác, vì vậy tăng gấp đôi chiều dài cạnh ảnh khiến số token tăng gấp bốn và chi phí attention tăng gấp 16. Flash attention giảm lưu lượng bộ nhớ của phép tính này, còn attention theo cửa sổ giới hạn chính số phép so sánh. Ultralytics chạy Segment Anything Model của Meta; checkpoint sam_b.pt mã hóa mỗi ảnh 1024×1024 bằng backbone ViT-B: các mảnh 16×16 tạo thành lưới 64×64 gồm 4.096 token, vì vậy 8 trong 12 khối chỉ attention bên trong cửa sổ 14×14, còn 4 khối dùng attention toàn cục.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning