- AI ๊ธฐ๋ฐ ๋ชจ์
์ฝํ
์ธ ==๊ธฐ๋ฅ ๊ธฐํ ์์ฌ๊ฒฐ์ ๊ทผ๊ฑฐ==๋ฅผ ๋ง๋ค๊ธฐ ์ํด, ์คํ์ผ ๋ณํ ๊ธฐ๋ฅ์ ๊ตฌํ ๊ฐ๋ฅ์ฑ๊ณผ ๋ด๋ถ ์ฌ์ฉ์ ๊ฒฝํ์ ๊ฒ์ฆํ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ์ต๋๋ค.
- =='์คํ์ผ์ด ์ ์ ์ฉ๋จ'์ ์ด๋ป๊ฒ ์์น์ ์ผ๋ก ์ ์ํ ๊ฒ์ธ์ง==๊ฐ ์ด ํ๋ก์ ํธ์ ํต์ฌ ๊ณผ์ ์์ต๋๋ค.
- ๋ชจ์
์์ ์คํ์ผ ์ ๋ณด๋ฅผ ์ถ์ถํ๋ encoder๋ฅผ ์ ์ํ๋ ๊ฒ์ ๋๊ท๋ชจ paired dataset์ด ์์ด ์ผ๋ฐํ๋ฅผ ๋ณด์ฅํ ์ ์์์ต๋๋ค.
- ๋ฐ๋ผ์, ์ด๋ฅผ ๋ช
์์ ์ธ loss function์ผ๋ก ์ ์ํ๋ ๋์ pretrained model์ prior knowledge์ Attention ์ฐ์ฐ์ ํ์ฉํ ์คํ์ผ ์ ์ฉ ๋ฐฉ๋ฒ์ ์ ์ํ์ต๋๋ค.
- PoC : ==2-stage latent VAE== ๋ชจ๋ธ๋ก motion content encoder์ style generator๋ฅผ ์ค๊ณํ์ต๋๋ค.
- Stage 1 : motion-only VAE ํ์ต
- Stage 2 : content encoder์ style generator ๋์ ํ์ต
Stage 2 ์์ธ ๋ก์ง
flowchart LR
subgraph Stage2["Stage 2: Content Encoder + Style Generator"]
x["Content Motion x"] --> E["Frozen Stage-1 VAE Encoder"]
E --> z["Motion Latent z"]
z --> CE["Content Encoder"]
CE --> zc["Style-invariant Content Latent z_c"]
y["Target Style Label"] --> CLIP["CLIP Text Encoder"]
CLIP --> s["Style Embedding s"]
subgraph SG["Style Generator"]
zc --> SA["Content-aware Attention"]
s --> TA["Style-conditioned Tokens / Attention"]
TA --> F["Latent Fusion Transformer"]
SA --> F
end
F --> zhat["Stylized Latent z_hat"]
zhat --> D["Frozen Stage-1 VAE Decoder"]
D --> xt["Stylized Motion x_hat"]
end
- ๊ณ ๋ํ : Diffusion model์ ==์ํ๋ง ์ ๋ต์ ํ์ฉ==ํ๋ motion style transfer๋ก ํ์ฅํ์ต๋๋ค.
flowchart LR
content["Content Motion"] --> inversion["DDIM Inversion
+ Cached Decoder States"]
styleChoice["User Style Selection"] --> match["Style Candidate"]
match --> styleMotion["Style Motion Selection"]
styleMotion --> sampling["Mixed-Attention Sampling"]
inversion --> sampling
sampling --> output["Stylized Motion"]
- Prior knowledge๋ฅผ ์ด์ฉํ๋๋ผ๋, PoC์ฒ๋ผ encoder์ generator๋ฅผ ๋์์ ํ์ตํ๋ ๊ฒฝ์ฐ ==ํ์ต ์์ ์ฑ==์ด ๋จ์ด์ก์ต๋๋ค.
- Diffusion model์ prior knowledge๋ฅผ ์ด์ฉํ๋, ==์ํ๋ง ๊ณผ์ ==์์ ์คํ์ผ์ ์ ์ฉํ๋ ์ ๋ต์ ์ ์ํ์ต๋๋ค.
- Attention ์ฐ์ฐ์ ๋ณํํด ์ฝํ
์ธ ๋ชจ์
๊ณผ ์คํ์ผ ๋ชจ์
์ ์ ๋ณด๋ฅผ ๋ช
์์ ์ผ๋ก ๊ตํํ๋ ==Mixed Attention== ์ ๊ตฌํํ์ต๋๋ค.
Mixed attention ์์ธ ๋ก์ง
flowchart TD
X["Current mixed sample at timestep t"] --> D{"Is decoder layer i the first(index=0) layer?"}
D -->|"Yes"| N["Use current state only
tgt = current output
memory = current state"]
D -->|"No, mid DDIM steps"| L{"Layer idx"}
L -->|"layer idx = 1..5"| S1["Style-guided cross attention
tgt = current output
memory = cached style kv_l(t)"]
L -->|"layer idx = 6..7"| S2["Content-style mixed attention
tgt = w * cached content q_l(t)
+ (1-w) * current output
memory = cached style kv_l(t)"]
N --> T["TransformerDecoderLayer(tgt, memory)"]
S1 --> T
S2 --> T
T --> Y["Next decoder layer / next DDIM step"]
- ==์ ์ ์นํ์ ์ธ ์
๋ ฅ/์ถ๋ ฅ ๊ตฌ์กฐ==๋ฅผ ์ค๊ณํด ๋ชจ๋ธ ์ฌ์ฉ ์ ๊ทผ์ฑ์ ๋์์ต๋๋ค.
- ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋ชจ์
์ ๋ฐ๋ผ ์ถ๋ก ํ์ง์ด ๋ฌ๋ผ์ง ์ ์๋ edge case๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค.
- ์) ์ฝํ
์ธ ๋ชจ์
๊ณผ ์คํ์ผ ๋ชจ์
์ ๊ฑท๊ธฐ์ ๋๊ธฐ์ฒ๋ผ ํฌ๊ฒ ๋ค๋ฅด๋ฉด global translation๊ณผ velocity ์ฐจ์ด๋ก ์ํฐํฉํธ๊ฐ ๋ฐ์ํ ์ ์์
- ๋ผ๋ฒจ ํํ๋ก ์คํ์ผ์ ์ ํํ๋ ๊ฐ๋จํ ์
๋ ฅ ๊ตฌ์กฐ๋ฅผ ์ ์งํด ์ฌ์ฉ์ ํธ์์ฑ์ ๋์์ต๋๋ค.
- ๋ชจ๋ธ ๋ด๋ถ์ ์ผ๋ก๋ ์คํ์ผ ๋ชจ์
์ kinematic feature๋ฅผ ์บ์ฑํ๊ณ , ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์
๋ ฅ ๋ชจ์
๊ณผ ์ ์ฌ๋ ๋์ ์คํ์ผ ๋ชจ์
์ ์ ํํด ์ฌ์ฉํฉ๋๋ค.