0

SAM Segment Anything Model — Kiến trúc & Công thức Toán học

🧮 Công thức Toán học Chính trong SAM

1. Patch Embedding — Ảnh sang Tokens

IRH×W×3,piRP×P×3I \in \mathbb{R}^{H \times W \times 3}, \quad p_i \in \mathbb{R}^{P \times P \times 3}

Mỗi patch được ánh xạ thành vector nhúng:

Ei=WpFlatten(pi)+bpE_i = W_p \cdot \text{Flatten}(p_i) + b_p

Trong đó WpW_p là ma trận trọng số học được.

Giải thích:

Công thức này chuyển từng mảnh nhỏ của ảnh (patch) thành một vector để mô hình có thể hiểu.Ví dụ: Ảnh 224x224 được chia thành 16x16 patch → 196 patch. Mỗi patch được chuyển thành vector 768 chiều để đưa vào Transformer.


image.png

2. Self-Attention trong Image Encoder (ViT)

Công thức Attention:

Attention(Q,K,V)=softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right) V

Với:

Q=XWQ,K=XWK,V=XWVQ = XW_Q, \quad K = XW_K, \quad V = XW_V

Output của mỗi layer:

X=X+Attention(Q,K,V)X' = X + \text{Attention}(Q, K, V)

Xout=X+MLP(LayerNorm(X))X_{out} = X' + \text{MLP}(\text{LayerNorm}(X'))


3. Prompt Encoding

Mỗi prompt (điểm, khung, hoặc mask) được mã hóa thành vector:

Pj=fembed(tj)P_j = f_{\text{embed}}(t_j)

Ví dụ:

  • Điểm: tọa độ (x,y)(x, y)
  • Khung: (x1,y1,x2,y2)(x_1, y_1, x_2, y_2)
  • Mask: ma trận nhị phân

Các vector này tạo thành:

P=[p1,p2,,pn]P = [p_1, p_2, \ldots, p_n]


4. Cross-Attention giữa Prompt và Image Features

Decoder sử dụng cross-attention giữa PP (prompt tokens) và FF (image embeddings):

Z=softmax((PWQ)(FWK)Td)FWVZ = \text{softmax}\left(\frac{(P W_Q)(F W_K)^T}{\sqrt{d}}\right) F W_V

ZZ là biểu diễn hợp nhất giữa thông tin prompt và ảnh.


5. Mask Generation

Từ đầu ra ZZ:

M=σ(WmZ+bm)M = \sigma(W_m Z + b_m)

  • M[0,1]H×WM \in [0,1]^{H \times W}: xác suất pixel thuộc vùng đối tượng.
  • σ\sigma: hàm sigmoid.

6. Confidence Score (IoU Evaluation)

Si=IoU(Mi,Mgt)=MiMgtMiMgtS_i = \text{IoU}(M_i, M_{gt}) = \frac{|M_i \cap M_{gt}|}{|M_i \cup M_{gt}|}

Giải thích: Đánh giá độ trùng giữa mask dự đoán và mask thật. Ví dụ: Nếu SAM phát hiện vùng kéo trùng 92% với vùng thật → Si=0.92S_i = 0.92.


🔍 Tóm tắt Dòng Chảy Dữ Liệu

image.png

IViTF+PromptZDecoderMi,SiI \xrightarrow{ViT} F \xrightarrow{+Prompt} Z \xrightarrow{Decoder} M_i, S_i

Nói cách khác:

SAM không chỉ "nhìn" ảnh, mà còn học được cách hiểu ranh giới của mọi vật thể. Từ con mèo, cánh cửa đến ký tự nhỏ — tất cả đều được phân tách bằng cùng một cơ chế toán học duy nhất.

Ref:


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí