See RESULTS_AND_HANDOFF.md for the final RTX full-run summary, artifact handoff, and MPS validation commands.
DressCode dataset를 이용해 CatVTON 방식의 self-attention-only 학습을 재구성하는 프로젝트입니다.
이 저장소는 두 단계를 기준으로 설계되어 있습니다.
- 로컬 MacBook(MPS)에서
공개 CatVTON DressCode attention checkpoint를 warm-start로 불러와 smoke fine-tune 및 샘플 검증 - RTX 4080 Super CUDA 환경에서 같은 코드로 DressCode 전체 학습
train.py- device-aware 학습 루프
- CatVTON 공개 checkpoint warm-start 지원
- subset 학습과 full 학습을 동일 CLI에서 제어
- step 0 baseline validation 지원
prepare_masks.py- DressCode
label_maps기반agnostic_masks선생성
- DressCode
preview_infer.py- 어떤 attention checkpoint든 고정된 paired validation 샘플 세트로 미리보기 생성
.codex/skills/catvton-train-reconstruction- 이 프로젝트에서 train 코드를 확장하거나 검토할 때 사용하는 로컬 Codex skill
기본 경로는 data/DressCode 입니다.
현재 로컬 데이터는 다음 구조를 사용합니다.
<category>/images<category>/label_maps<category>/train_pairs.txt<category>/test_pairs_paired.txt<category>/test_pairs_unpaired.txt
DressCode 원본에는 agnostic_masks가 없으므로, 이 프로젝트는 label_maps로부터 category-aware mask를 만들어 <category>/agnostic_masks에 캐시합니다.
python -m venv .venv --system-site-packages
. .venv/Scripts/activate
pip install -r requirements.txt
pip install accelerate diffusers transformers safetensorspython3 prepare_masks.py \
--data_root_path data/DressCode \
--categories upper_body,lower_body,dresses \
--num_workers 4python3 preview_infer.py \
--data_root_path data/DressCode \
--vae_model_path stabilityai/sd-vae-ft-mse \
--resume_attn_ckpt zhengchong/CatVTON \
--resume_attn_version dresscode-16k-512 \
--device cuda \
--mixed_precision bf16 \
--max_val_pairs_per_category 4 \
--split paired \
--output_path outputs/smoke/validation/step-000000-preview.pngpython3 train.py \
--data_root_path data/DressCode \
--vae_model_path stabilityai/sd-vae-ft-mse \
--output_dir outputs/smoke \
--device cuda \
--mixed_precision bf16 \
--allow_tf32 \
--resume_attn_ckpt zhengchong/CatVTON \
--resume_attn_version dresscode-16k-512 \
--train_batch_size 1 \
--validation_batch_size 1 \
--gradient_accumulation_steps 4 \
--num_workers 4 \
--num_train_steps 200 \
--checkpointing_steps 50 \
--validation_steps 50 \
--validation_num_inference_steps 20 \
--run_validation_at_start \
--max_train_pairs_per_category 128 \
--max_val_pairs_per_category 4산출물:
outputs/smoke/validation/step-000000.pngoutputs/smoke/validation/step-000050.pngoutputs/smoke/validation/step-000100.pngoutputs/smoke/validation/step-000150.pngoutputs/smoke/validation/step-000200.pngoutputs/smoke/dresscode-16k-512/attention
python3 preview_infer.py \
--data_root_path data/DressCode \
--vae_model_path stabilityai/sd-vae-ft-mse \
--resume_attn_ckpt outputs/smoke \
--resume_attn_version dresscode-16k-512 \
--device cuda \
--mixed_precision bf16 \
--max_val_pairs_per_category 4 \
--split paired \
--output_path outputs/smoke/validation/post-train-preview.pngunpaired 확인:
python3 preview_infer.py \
--data_root_path data/DressCode \
--vae_model_path stabilityai/sd-vae-ft-mse \
--resume_attn_ckpt outputs/smoke \
--resume_attn_version dresscode-16k-512 \
--device cuda \
--mixed_precision bf16 \
--max_val_pairs_per_category 4 \
--split unpaired \
--output_path outputs/smoke/validation/post-train-unpaired-preview.png먼저 이 프로젝트를 데이터 제외 상태로 다른 머신에 옮깁니다.
.gitignore가data/,outputs/,agnostic_masks/등을 제외하도록 설정되어 있습니다.- 다른 머신에서는 동일한
data/DressCode경로 또는 대응 경로를 준비하면 됩니다.
추천 full run:
python3 prepare_masks.py \
--data_root_path data/DressCode \
--categories upper_body,lower_body,dresses \
--num_workers 16python3 train.py \
--data_root_path data/DressCode \
--vae_model_path stabilityai/sd-vae-ft-mse \
--output_dir outputs/full \
--device cuda \
--mixed_precision bf16 \
--allow_tf32 \
--resume_attn_ckpt zhengchong/CatVTON \
--resume_attn_version dresscode-16k-512 \
--train_batch_size 2 \
--validation_batch_size 2 \
--gradient_accumulation_steps 8 \
--num_workers 8 \
--num_train_steps 16000 \
--checkpointing_steps 500 \
--validation_steps 500먼저 500-step confidence run을 outputs/full-500로 확인하고, 이후 full 16k로 확장하는 것을 권장합니다.
attention checkpoint는 CatVTON 공개 형식과 맞춰 다음 경로에 저장됩니다.
<output_dir>/<dataset_tag>/attention
resume_attn_ckpt는 다음 둘 다 지원합니다.
- Hugging Face repo id 예:
zhengchong/CatVTON - 로컬 경로 예:
outputs/smoke
이 폴더는 데이터 제외 상태로 커밋하도록 설계되어 있습니다.
기본 절차:
git init
git add .
git commit -m "Initialize CatVTON DressCode training project"- 이 구현은 CatVTON 논문과 공개 checkpoint 구조를 기준으로 한 재구현입니다.
- 로컬 MPS smoke는 품질 검증보다 파이프라인 검증과 warm-start 비교에 초점을 둡니다.
- 최종 qualitative quality 확보는 CUDA 환경에서 수행하는 것을 전제로 합니다.