initialneil commited on
Commit
c3fe535
·
verified ·
1 Parent(s): 03c5125

Pass the avatar config explicitly; degas_eval no longer back-fills it

Browse files
Files changed (1) hide show
  1. README.md +12 -5
README.md CHANGED
@@ -68,12 +68,18 @@ python degas_eval.py \
68
  --dat_dir "$PWD/DREAMS-AVATAR/data/P1C2" \
69
  --ip none \
70
  --model_path "$PWD/weights/avatars/P1_smplx" \
71
- --configs configs/degas_config.yaml,configs/degas_vae_driver.yaml,configs/dreams/p1_train_base.yaml,configs/dreams/p1_face_B.yaml \
72
  dataset.cache_dir="$PWD/cache/P1C2_eval_cam3" \
73
  dataset.test.cam_select=[3] \
74
  "dataset.test.frm_list=np.arange(0, 293, 8).tolist()"
75
  ```
76
 
 
 
 
 
 
 
77
  **`--model_path` must be absolute.** A relative one is resolved *inside* `--dat_dir`
78
  (`os.path.join(dat_dir, model_path)`), because that is where a training run writes by
79
  default, so `weights/avatars/P1_smplx` fails with a `FileNotFoundError` on a path you never
@@ -81,9 +87,9 @@ typed. Hence `$PWD`.
81
 
82
  Three more things fail quietly rather than loudly, so they are worth stating plainly:
83
 
84
- 1. **The run's saved `config.yaml` is applied last**, so an avatar is always evaluated
85
- under its own face setting. Only CLI overrides outrank it, which is why the test split
86
- is set on the command line above.
87
  2. **Give every capture its own `dataset.cache_dir`.** Decoded frames are named
88
  `cam%02d/%08d.jpg` with no capture in the path, so a shared cache would serve P1C1's
89
  frame 110 for P1C2's frame 110.
@@ -93,7 +99,8 @@ Three more things fail quietly rather than loudly, so they are worth stating pla
93
  `--dat_dir` on their own. A config saved by your own training run holds an absolute path
94
  to the training session's codes instead, and there you must override it.
95
 
96
- For `P1_dpe`, swap the face config to `configs/dreams/p1_face_A_dpe.yaml`.
 
97
 
98
  ## Training setup
99
 
 
68
  --dat_dir "$PWD/DREAMS-AVATAR/data/P1C2" \
69
  --ip none \
70
  --model_path "$PWD/weights/avatars/P1_smplx" \
71
+ --configs "$PWD/weights/avatars/P1_smplx/config.yaml" \
72
  dataset.cache_dir="$PWD/cache/P1C2_eval_cam3" \
73
  dataset.test.cam_select=[3] \
74
  "dataset.test.frm_list=np.arange(0, 293, 8).tolist()"
75
  ```
76
 
77
+ **You pass the avatar's config yourself.** `degas_eval.py` does not read the run's
78
+ `config.yaml` behind your back; it used to append it last, which let a training-time value
79
+ silently outrank the command line. Each avatar here ships a portable, fully resolved
80
+ `config.yaml` (`dat_dir: ???`, no machine-specific paths), so naming it alone is enough.
81
+ Anything required but missing is reported by name up front, not deep inside the model.
82
+
83
  **`--model_path` must be absolute.** A relative one is resolved *inside* `--dat_dir`
84
  (`os.path.join(dat_dir, model_path)`), because that is where a training run writes by
85
  default, so `weights/avatars/P1_smplx` fails with a `FileNotFoundError` on a path you never
 
87
 
88
  Three more things fail quietly rather than loudly, so they are worth stating plainly:
89
 
90
+ 1. **Pass the avatar's own `config.yaml`**, or it is not evaluated under the settings it was
91
+ trained with. Command-line `key=value` overrides still outrank every config file, which
92
+ is why the test split is set that way above.
93
  2. **Give every capture its own `dataset.cache_dir`.** Decoded frames are named
94
  `cam%02d/%08d.jpg` with no capture in the path, so a shared cache would serve P1C1's
95
  frame 110 for P1C2's frame 110.
 
99
  `--dat_dir` on their own. A config saved by your own training run holds an absolute path
100
  to the training session's codes instead, and there you must override it.
101
 
102
+ For `P1_dpe`, point `--model_path` and `--configs` at that avatar instead, and add
103
+ `dataset.with_face_dpe=` for the session you are driving with.
104
 
105
  ## Training setup
106