You need to agree to share your contact information to access this model

This repository is publicly accessible, but you have to accept the conditions to access its files and content.

Log in or Sign Up to review the conditions and access this model content.

μž¬ν˜„ μ½”λ“œ

2026 INHA AI Challenge Β· SO-100 action-conditioned video world model. 첫 ν”„λ ˆμž„ ν•œ μž₯κ³Ό 6μΆ• κ΄€μ ˆ μ§€λ Ή 16행을 λ°›μ•„ μ΄μ–΄μ§€λŠ” 16ν”„λ ˆμž„μ„ λ§Œλ“ λ‹€.

제좜 CSV   submission_features.csv
sha256     c4481e1e724ae6592cb7207855832c7fac95e8a98d6334bfbfbb411f6307fa93
μ–΄λŒ‘ν„°     LoRA rank 1280 Β· 50,000 step Β· EMA
λ°±λ³Έ       nvidia/Cosmos3-Nano @ 411f42a8fdfb8c5b2583cb8786e0938f49796eaa (OpenMDW 1.1)

이 λ²ˆλ“€μ΄ λ‹΄μ§€ μ•ŠλŠ” 것

μš°λ¦¬κ°€ κ³„μ‚°ν•˜κ±°λ‚˜ κ²€μΆœν•œ 값은 κ³ μ •λ³ΈμœΌλ‘œ μ‹£μ§€ μ•ŠλŠ”λ‹€. μž¬ν˜„ 쀑에 μ½”λ“œκ°€ λ‹€μ‹œ λ§Œλ“ λ‹€. μ „λΆ€ 결정적이라 같은 μž…λ ₯이면 같은 κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€.

μ‚°μΆœλ¬Ό λ§Œλ“œλŠ” μ½”λ“œ μ–Έμ œ
κ΄€μ ˆ μ •κ·œν™” 톡계 joint_stats.json make_joint_stats.py ν•™μŠ΅Β·μΆ”λ‘  μ‹œμž‘ μ‹œ μžλ™
μ •μ§€ ν”„λ ˆμž„ μ‘°νšŒν‘œ still_table.json still_frames.py ν•™μŠ΅ μ‹œμž‘ μ‹œ μžλ™
μ°½ 보λ₯˜ λͺ©λ‘ window_spans.json run_gate.py μΊμ‹œλ₯Ό ꡬ운 λ’€ μˆ˜λ™ 1회

κΈ°λŒ€ sha256 은 pinned.json 의 regenerated 에 적어 λ‘μ—ˆλ‹€. μž¬ν˜„μ΄ 맞게 λŒμ•˜λŠ”μ§€ κ·Έ κ°’μœΌλ‘œ 확인할 수 μžˆλ‹€.

ν•™μŠ΅ λ°μ΄ν„°Β·λ ˆμ΄ν„΄νŠΈ μΊμ‹œΒ·λ°±λ³Έ μŠ€λƒ…μƒ·Β·μ£Όμ΅œμΈ‘ 제좜 킷은 λ‹΄μ§€ μ•ŠλŠ”λ‹€.

ν™˜κ²½

requirements.txt Β· environment.txt. GPU ν•œ μž₯을 μ“΄λ‹€. ν•™μŠ΅ 피크 62 GiB.

runtime_paths.py κ°€ 경둜λ₯Ό ν‘Όλ‹€ β€” SO100_* ν™˜κ²½λ³€μˆ˜λ₯Ό λ¨Όμ € 보고, μ—†μœΌλ©΄ 기본값을 μ“°λ˜ κ·Έ 기본값이 μ—†λŠ” κΈ°κ³„μ—μ„œλŠ” 이 파일 κΈ°μ€€ μƒλŒ€ 경둜둜 λ–¨μ–΄μ§„λ‹€. λ‹€λ₯Έ κΈ°κ³„μ—μ„œ μ§€μ •ν•  것은 넷이닀: SO100_ROOT(μž‘μ—… 루트) Β· SO100_DATASET(제곡 데이터셋) Β· SO100_SNAPSHOT(λ°±λ³Έ μŠ€λƒ…μƒ·) Β· SO100_PYTHON(κ°€μƒν™˜κ²½ 파이썬).

백본은 nvidia/Cosmos3-Nano λ₯Ό μœ„ λ¦¬λΉ„μ „μœΌλ‘œ λ°›μ•„ 두고 SO100_SNAPSHOT 으둜 κ·Έ 경둜λ₯Ό μ€€λ‹€.

huggingface-cli download nvidia/Cosmos3-Nano \
  --revision 411f42a8fdfb8c5b2583cb8786e0938f49796eaa --local-dir <μŠ€λƒ…μƒ·κ²½λ‘œ>

1. μΆ”λ‘  β€” μ–΄λŒ‘ν„°λ‘œ 216νŽΈμ„ λ§Œλ“ λ‹€

μ–΄λŒ‘ν„° 두 νŒŒμΌμ€ weights/ 에 μžˆλ‹€ β€” 파일λͺ…·크기·sha256 은 WEIGHTS.md 에 μžˆλ‹€. --lora 에 κ·Έ 폴더λ₯Ό μ€€λ‹€. ν•˜μœ„ ema/ λ₯Ό λ§Œλ“€μ§€ μ•ŠλŠ”λ‹€.

cd code
python render_eval.py \
  --lora ../weights \
  --challenge <데이터셋>/data/eval \
  --out ../out \
  --steps 30 --seed 31337 --dtype fp16 --domain-id 10 \
  --action-encoder joint

μ‹œμž‘ν•  λ•Œ κ΄€μ ˆ μ •κ·œν™” 톡계가 μ—†μœΌλ©΄ 제곡 ν•™μŠ΅ λ°μ΄ν„°μ—μ„œ λ§Œλ“ λ‹€(3~4λΆ„). κ·Έλž˜μ„œ 좔둠에도 ν•™μŠ΅ 데이터가 ν•„μš”ν•˜λ‹€.

216μƒ˜ν”Œ Γ— 12.2초 β‰ˆ 44λΆ„. μ΄μ–΄μ„œ 제좜 ν‚·μœΌλ‘œ CSV λ₯Ό λ§Œλ“ λ‹€. κ²°κ³ΌλŠ” 648행이닀 (216μƒ˜ν”Œ Γ— 3 component).

cd <데이터셋>/submission_kit
python make_submission_csv.py \
  --prediction-root <mp4 폴더> \
  --challenge-root ../data/eval \
  --output-csv submission_features.csv \
  --action-stats-path ../data/train/so100_action_statistics.json

생성 섀정이 μ–΄λŒ‘ν„°μ™€ λ§žμ•„μ•Ό ν•œλ‹€. 쑰건 ν‘œν˜„μ€ κ΄€μ ˆ 18채널이고, μ–΄λŒ‘ν„°μ˜ train_state.json 에 κ·Έ 값이 μ ν˜€ μžˆλ‹€. render_eval.py κ°€ μ‹œμž‘ν•  λ•Œ λŒ€μ‘°ν•΄ μ–΄κΈ‹λ‚˜λ©΄ λ©ˆμΆ˜λ‹€ β€” ν‘œν˜„μ΄ 틀리면 μ˜μƒμ€ λ©€μ©‘νžˆ λ‚˜μ˜€λ©΄μ„œ 쑰건만 μ–΄κΈ‹λ‚˜κΈ° λ•Œλ¬Έμ΄λ‹€.

2. μ „μ²˜λ¦¬ β€” λ ˆμ΄ν„΄νŠΈ μΊμ‹œλ₯Ό κ΅½λŠ”λ‹€

python bake_latents.py --augment mix --aug-seed 0 \
       --stride1 4 --stride2 4 --out <μ¦κ°•μΊμ‹œ>
python bake_latents.py --stride1 2 --stride2 2 --out <μž μž¬μΊμ‹œ>

--augment λŠ” 값을 λ°›λŠ”λ‹€ (mix Β· final_grain Β· final_grain_inv).

잠재 μΊμ‹œμ˜ stride λŠ” 2 λ‹€. ν•™μŠ΅μ΄ --cache-mod - 4:2 둜 잠재 λ±…ν¬μ—μ„œ start % 4 == 2 인 창만 μ“°κΈ° λ•Œλ¬Έμ΄λ‹€. stride_plan 은 μ—ν”Όμ†Œλ“œλ§ˆλ‹€ μ‹œμž‘μ  0 μ—μ„œ μΆœλ°œν•΄ μ•ž 12κ°œλŠ” stride1, κ·Έ λ’€λŠ” stride2 κ°„κ²©μœΌλ‘œ ν›‘μœΌλ―€λ‘œ, stride 4 둜 ꡬ우면 μ‹œμž‘μ μ΄ μ „λΆ€ 4의 배수라 κ·Έ κ²©μžμ— ν•œ 창도 μ•ˆ κ±Έλ¦°λ‹€. stride 2 λŠ” μ‹œμž‘μ μ„ 짝수둜 놓아 절반이 % 4 == 2 κ°€ λœλ‹€. 증강 μΊμ‹œλŠ” 격자λ₯Ό μ•ˆ κ±Έλ―€λ‘œ stride 4 κ·ΈλŒ€λ‘œλ‹€.

λ‚Έ 체크포인트의 잠재 μΊμ‹œλŠ” 밀도λ₯Ό 올렀 κ°€λ©° μ—¬λŸ¬ λ²ˆμ— λ‚˜λˆ  ꡬ운 것이라 stride (1,1)Β·(2,2)Β·(4,4) μƒ€λ“œκ°€ μ„žμΈ 274 μƒ€λ“œλ‹€. 이어 κ΅½κΈ°λŠ” --exclude-file 둜 이미 ꡬ운 창을 κ³„νšμ—μ„œ λΉΌλ©΄μ„œ ν–ˆλ‹€. 4:2 κ²©μžκ°€ κ³ λ₯΄λŠ” μ°½ 집합은 stride 2 둜 ν•œ λ²ˆμ— κ΅½λŠ” 것과 같은 μ’Œν‘œκ³„μ΄λ―€λ‘œ, μ²˜μŒλΆ€ν„° μž¬ν˜„ν•  λ•ŒλŠ” μœ„ ν•œ 쀄이면 λœλ‹€.

3. μ°½ 보λ₯˜ λͺ©λ‘ β€” ν•™μŠ΅μ— λ„£μ§€ μ•Šμ„ ꡬ간을 μ°ΎλŠ”λ‹€

μΊμ‹œλ₯Ό ꡬ운 λ’€ ν•œ 번 λŒλ¦°λ‹€.

python run_gate.py <μž‘μ—…ν΄λ”>

λ‹€μ„― 단계가 μˆœμ„œλŒ€λ‘œ λˆλ‹€. 각 λ‹¨κ³„λŠ” κ²°κ³Όλ₯Ό μž‘μ—…ν΄λ”μ— 남기고 이미 μ²˜λ¦¬ν•œ μ˜μƒμ€ κ±΄λ„ˆλ›°λ―€λ‘œ 쀑단해도 μ΄μ–΄μ„œ λŒμ•„κ°„λ‹€.

단계 ν•˜λŠ” 일 μ‚°μΆœ
pick_sources.py μΊμ‹œ meta μ—μ„œ ν•™μŠ΅μ΄ μ‹€μ œλ‘œ μ“°λŠ” μ˜μƒλ§Œ μΆ”λ¦°λ‹€ sources.json
measure_motion.py ν”„λ ˆμž„κ°„ ν™”λ©΄ λ³€ν™”λŸ‰, actionΒ·observation.state λ³€ν™”λŸ‰ motion.jsonl
measure_skin.py YCrCb 피뢀색 λΉ„μœ¨κ³Ό μ΅œλŒ€ 덩어리 넓이 skin.jsonl
detect_hands.py MediaPipe HandLandmarker 손 κ²€μΆœ 점수 hand.jsonl
merge_gate_spans.py 셋을 합쳐 보λ₯˜ ꡬ간 window_spans.json

λ²„λ¦¬λŠ” κΈ°μ€€ λ‘˜:

  • person β€” 손 κ²€μΆœ 0.5 이상 그리고 ν”ΌλΆ€ 덩어리 3.5% 이상인 ν”„λ ˆμž„μ΄ 연속 2ν”„λ ˆμž„ 이상 (ν•œ ν”„λ ˆμž„μ§œλ¦¬ μ˜€κ²€μΆœμ„ λΊ€λ‹€)
  • action0-motion β€” μ§€λ ΉΒ·μƒνƒœ λ³€ν™”λŸ‰μ΄ λ‘˜ λ‹€ 0.5 미만인데 ν™”λ©΄ μ›€μ§μž„λ§Œ κ·Έ μ˜μƒ 쀑앙값보닀 5 이상 큰 ν”„λ ˆμž„ (λ‘œλ΄‡μ€ 멈좰 μžˆλŠ”λ° 화면이 μ›€μ§μ˜€λ‹€)

찾은 ν”„λ ˆμž„μ€ μ•žλ’€ 2ν”„λ ˆμž„μ”© 늘리고 간격 2 μ΄ν•˜λŠ” μž‡λŠ”λ‹€. ν•™μŠ΅μ€ μ°½ 17ν”„λ ˆμž„ 쀑 1ν”„λ ˆμž„μ΄λΌλ„ 이 ꡬ간에 걸치면 κ·Έ 창을 버린닀.

손 κ²€μΆœ λͺ¨λΈ gate_scan/hand_landmarker.task λŠ” Google MediaPipe 의 곡개 λͺ¨λΈμ„ κ·ΈλŒ€λ‘œ λ™λ΄‰ν•œ 것이닀. κ²€μΆœμ€ ν”„λ ˆμž„ λ‹¨μœ„ IMAGE λͺ¨λ“œλΌ μˆœμ„œμ— μ˜μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€. λ³‘λ ¬λ„λŠ” NPROC 둜 μ‘°μ ˆν•œλ‹€.

4. ν•™μŠ΅

python fit_adapter.py \
  --out <좜λ ₯> --cache <μ¦κ°•μΊμ‹œ> <μž μž¬μΊμ‹œ> --cache-mod - 4:2 \
  --exclude-frames <μž‘μ—…ν΄λ”>/window_spans.json \
  --exclude-scenes held_out_scenes.json \
  --rank 1280 --lr 8e-05 --accum 4 --seed 0 \
  --preset D --steps 60000 \
  --action-encoder joint --action-mode joint \
  --t-dist waver --shift 5.0 \
  --lr-shape linear --f-max 0.4 --f-min 0.1 --warmup 0 \
  --proj-lr-mult 5.0 --action-proj-init official \
  --weight-decay 0.05 --beta2 0.99 --eps 1e-8 \
  --ema-rate 0.10 --autocast off \
  --scene-balance uniform --sample-policy seq \
  --domain-id 10 --checkpointing

제좜 μ–΄λŒ‘ν„°λŠ” <좜λ ₯>/step_050000/ema λ‹€. --steps λŠ” ν•™μŠ΅ 길이가 μ•„λ‹ˆλΌ ν•™μŠ΅λ₯  μŠ€μΌ€μ€„μ˜ 지평이닀. 60000 을 μ£Όκ³  50,000 μ—μ„œ κΊΌλ‚΄λŠ” 것과 50000 을 μ£Όκ³  50,000 을 λ„λŠ” 것은 lr 곑선이 λ‹€λ₯΄λ―€λ‘œ, μœ„ 값을 κ·ΈλŒ€λ‘œ λ‘”λ‹€.

--ema-rate 기본값은 0.0 이고 0 이면 ema/ κ°€ 생기지 μ•ŠλŠ”λ‹€.

ν•™μŠ΅ μΊμ‹œ μ°½ 수 269,782개 = 증강 뱅크 136,328 + 잠재 뱅크 133,454. 씬 보λ₯˜ 24κ°œμ™€ μ°½ 보λ₯˜κΉŒμ§€ λ‹€ μ μš©ν•œ λ’€μ˜ μˆ˜λ‹€:

              원본      쀑볡 제거    격자 4:2    씬 보λ₯˜     μ°½ 보λ₯˜
증강 뱅크   232,686     198,179          -     138,187     136,328
잠재 뱅크   501,276     501,276    193,337     135,264     133,454
                                                  합계     269,782

보λ₯˜ λͺ©λ‘μ€ record 324편 Β· ꡬ간 445개 Β· ν”„λ ˆμž„ 3,840개이고, κ·Έ κ²°κ³Ό 창이 273,451 β†’ 269,782 둜 쀄어든닀(1.34%). μ–΄λŒ‘ν„°μ˜ train_state.json 에 적힌 cache_n κ³Ό 같은 μˆ˜λ‹€.

μ†Œμš” μ‹œκ°„

κ΄€μ ˆ 톡계     μ—ν”Όμ†Œλ“œ 10,544편            β‰ˆ 4λΆ„   (CPU)
μ „μ²˜λ¦¬       273,451μ°½ Β· 1.7~2.5μ°½/s      β‰ˆ 30~45μ‹œκ°„
μ°½ 보λ₯˜ λͺ©λ‘  μ˜μƒ 6,730편 Β· CPU 48병렬    β‰ˆ 10λΆ„  (CPU)
μ •μ§€ μ‘°νšŒν‘œ   μ°½ 501,276개                 β‰ˆ 6λΆ„   (CPU)
ν•™μŠ΅         50,000 step Γ— 1.36 s/step    β‰ˆ 19μ‹œκ°„
μΆ”λ‘          12.2 s/μƒ˜ν”Œ Γ— 216            β‰ˆ 44λΆ„

파일

파일 μ—­ν• 
bake_latents.py Β· degrade_clips.py μ „μ²˜λ¦¬ β€” λ ˆμ΄ν„΄νŠΈ μΊμ‹œ, ν”½μ…€ 증강
run_gate.py Β· window_gate.py Β· gate_scan/ μ°½ 보λ₯˜ λͺ©λ‘ 생성과 적용
fit_adapter.py Β· step_kernel.py ν•™μŠ΅
render_eval.py μΆ”λ‘ 
joint_channels.py Β· make_joint_stats.py 쑰건 인코더(κ΄€μ ˆ 18채널)와 κ·Έ μ •κ·œν™” 톡계
window_source.py Β· still_frames.py Β· prompt_text.py 데이터셋 Β· μ •μ§€ ν”„λ ˆμž„ Β· ν”„λ‘¬ν”„νŠΈ
runtime_paths.py Β· catalog.json Β· held_out_scenes.json 경둜 Β· split Β· 보λ₯˜ 씬
pinned.json CSV Β· μ–΄λŒ‘ν„° Β· μ†ŒμŠ€ sha256 κ³Ό μž¬μƒμ„±λ¬Ό κΈ°λŒ€ sha256
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading

Model tree for SSLcom-007/dacon-inha-2026-submission

Adapter
(1)
this model