0
0
Lập trình
Admin Team
Admin Teamtechmely

Khám Phá Mô Hình Swin Transformer Trong Thị Giác Máy Tính

Đăng vào 3 tuần trước

• 4 phút đọc

Chủ đề:

Machine Learning

Giới Thiệu Chung

Trong lĩnh vực Computer Vision, ngoài các mô hình CNN, mô hình Transformer cũng đã cho thấy sự vượt trội với nhiều kết quả ấn tượng, đặc biệt trong các nhiệm vụ như phát hiện đối tượng (object detection), phân loại hình ảnh (image classification) và phân đoạn ngữ nghĩa (semantic segmentation). Mô hình Vision Transformer (ViT) đã đánh dấu khởi đầu cho sự chuyển mình của các mô hình dựa trên Transformer trong thị giác máy tính.

Bài báo "Swin Transformer: Hierarchical Vision Transformer using Shifted Windows" đã giới thiệu một kiến trúc Swin Transformer, cho phép mô hình hóa hiệu quả sự khác biệt giữa kích thước đối tượng và độ phân giải hình ảnh đầu vào. Điều này đồng thời cho phép Swin Transformer hoạt động như một pipeline tổng quát cho nhiều nhiệm vụ trong lĩnh vực Computer Vision.

Bài viết này sẽ đi sâu vào một số ý tưởng chính của Swin Transformer và các yếu tố làm cho mô hình này hoạt động xuất sắc ở các bài toán trong Computer Vision.

Sự Phù Hợp Của CNN Trong Computer Vision

CNN (Convolutional Neural Networks) đã được công nhận là một công cụ mạnh mẽ cho việc mô hình hóa các miền trong thị giác. Một số lý do khiến CNN thể hiện hiệu quả cao trong các nhiệm vụ này bao gồm khả năng xử lý tốt các đặc điểm hình ảnh và giảm độ phức tạp tính toán. Ngược lại, các mô hình Transformer đối mặt với một số thách thức với dữ liệu hình ảnh:

  • Các phần tử thị giác có kích thước và độ phân giải khác nhau giống như các từ trong NLP, điều này dẫn đến khó khăn trong việc xử lý.
  • Đối với hình ảnh có độ phân giải cao, yêu cầu dự đoán tại từng pixel tạo nên áp lực tính toán lớn cho self-attention, mà chi phí tính toán theo bậc hai với kích thước hình ảnh.
  • Việc huấn luyện mô hình Transformer thường tốn nhiều thời gian và yêu cầu bộ nhớ cao, dễ dẫn đến tình trạng hết bộ nhớ (OOM).

Kiến Trúc Mô Hình Swin Transformer

Mô hình Swin Transformer bao gồm bốn block chính. Đầu tiên, hình ảnh đầu vào (RGB) được chia thành các patch thông qua lớp Patch Partition. Mỗi patch có kích thước 4x4x3 (3 là số kênh màu RGB) và được xem như một token. Các patch này sẽ qua lớp nhúng Linear (Linear embedding layer) để chuyển đổi vào không gian chiều thích hợp như trong ViT.

Kiến trúc của Swin Transformer có nhiều stage (có 4 stage cho Swin-T). Mỗi stage được xây dựng bằng cách kết hợp lớp Patch merging với Swin Transformer block.

Swin Transformer block được xây dựng trên nền việc tùy chỉnh lại self-attention. Mỗi block bao gồm nhiều đầu self-attention (MSA), normalization layer và hai lớp MLP. Điều này giúp Swin Transformer khắc phục vấn đề giảm thiểu số lượng token và tạo ra sự biểu diễn phân cấp hiệu quả hơn.

Các lớp Patch merging có nhiệm vụ giảm số lượng token bằng cách kết hợp bốn patch lân cận thành một patch duy nhất, dẫn đến việc giảm chiều token qua các stage kế tiếp, tối ưu hóa độ phức tạp tính toán.

Tính Năng Shifted Windows

Để tối ưu hóa hiệu suất, Swin Transformer áp dụng kĩ thuật Shifted Windows nhằm tính toán self-attention trong cửa sổ cục bộ, giúp giảm thiểu độ phức tạp tính toán. Thay vì tính toán trên toàn bộ bức ảnh, Shifted Windows tính toán self-attention trong các patch không giao nhau.

Bài báo đã chứng minh rằng việc thêm relative position bias vào self-attention làm tăng hiệu suất đáng kể. Điều này giúp cho quá trình tính toán trở nên nhẹ nhàng và hiệu quả hơn.

Cài Đặt Mô Hình Swin Transformer

Dưới đây là các bước cài đặt và huấn luyện mô hình Swin Transformer với tập dữ liệu CIFAR-100 bằng TensorFlow.

Nhập Thư Viện

python Copy
import matplotlib.pyplot as plt
import numpy as np
import tensorflow as tf
import tensorflow_addons as tfa
from tensorflow import keras
from tensorflow.keras import layers

Chuẩn Bị Dữ Liệu

Mô hình được huấn luyện với 100 lớp hình ảnh từ bộ dữ liệu CIFAR-100, với dữ liệu được chuẩn hóa và chia thành train/test sets.

Xác Định Các Tham Số Hyperparameter

Cần xác định các tham số như kích thước patch, tỷ lệ dropout, số đầu attention, kích thước nhúng, cùng các thông số khác.

Hàm Hỗ Trợ

Cần định nghĩa các hàm bổ trợ như hàm để tạo patch từ hình ảnh, gộp patch và sử dụng dropout.

Multi-Head Self-Attention Dựa Trên Cửa Sổ

Thay vì tính toán self-attention toàn cầu, Swin Transformer chỉ tính toán tại cửa sổ cục bộ. Điều này giúp giảm thiểu đáng kể chi phí tính toán.

Mô Hình Swin Transformer

Định nghĩa lớp SwinTransformer với các tham số đầu vào, bao gồm kích thước cửa sổ và số đầu embedding.

Huấn Luyện Mô Hình

Khi hoàn tất việc xây dựng mô hình, bạn có thể biên dịch và thực hiện huấn luyện với bộ dữ liệu CIFAR-100. Kết quả sẽ được theo dõi qua các hàm mất mát (loss function) và độ chính xác (accuracy).

Đánh Giá Kết Quả

Sau khi huấn luyện, các bạn có thể kiểm tra kết quả với tập test và theo dõi các thông số quan trọng như mất mát và độ chính xác.

Kết Luận

Mô hình Swin Transformer đã thể hiện tiềm năng lớn trong các tác vụ thị giác máy tính, đặc biệt trong khả năng điều chỉnh kích thước đối tượng và độ phân giải hình ảnh. Để đạt được hiệu suất tốt nhất, bạn có thể tiếp tục điều chỉnh các tham số và huấn luyện ở nhiều epoch hơn.

Tài Liệu Tham Khảo

  1. Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
  2. Github - Swin Transformer
  3. Keras Example: Swin Transformer
    source: viblo
Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào