โน๊ตย่อ หัดเล่น AI : WAN the series - gordon123/learn2ComfyUI GitHub Wiki
การคำนวณค่า tensors ไม่ให้แตกต่าง ระหว่าง input image vs model
🧾 1. จากโค้ด wanvideo/modules/encoder.py
self.patch_embed = PatchEmbed(
img_size=(832, 480),
patch_size=16,
in_chans=3,
embed_dim=768,
)
จาก patch size = 16 ถ้า กว้าง 832 x ยาว 480 832/16=52 Tokens 480/16=30 Tokens
52x30=1560 tokens!
เพราะงั้นเวลาเล่น กับ image to video, ต้องคำนึงถึงจำนวน Tokens = 1560/frame
ถ้าจะ resize image ให้ถึงนึงถึง (w/16)*(H/16)=1560 เสมอ
สมมติเรามีรูปขนาด 1024p x 1024p
Simple math node
ต้องการ W ใช้สูตร floor(1560/floor(height/16))*16
= จะเท่ากับ W384 x H1024 เพื่อได้ Token 1560/frame
[B, W, H, C]
ใน latent shape
📦 ความหมายของ Index | ชื่อ | ค่า | ความหมาย |
---|---|---|---|
1 | B = Batch size |
1 | จำนวนภาพใน batch นี้ (คือรูปเดียว frame เดียวตอนนั้น) |
2 | W = Width |
52 | จำนวน patch ด้านกว้าง (W = 832 / 16) |
3 | H = Height |
30 | จำนวน patch ด้านสูง (H = 480 / 16) |
4 | C = Channel/Dim |
768 | ความยาวของ embedding vector (dimension ต่อ token) |
🧪embedding dim = 768 คืออะไร?
ค่ามาตรฐาน ViT/Transformer: ViT Base: 768 ViT Large: 1024 หรือ 1152
สรุป [1, 52, 30, 768] = 1 รูป, แบ่งเป็น 52x30 patch, patch แต่ละอันมีเวกเตอร์ขนาด 768 มิติ → Patch กลายเป็น Token → Token กลายเป็น vector → Vector ถูกหมุนด้วย RoPE → ป้อนเข้า Transformer เพื่อให้วิดีโอเข้าใจภาพขยับ! 🎥🧠