12 Commits
Author SHA1 Message Date
luni 33e0894de7 calcualte error second level 2023-01-29 10:14:22 +00:00
luni 3b699b3a2f evaluate second level 2023-01-29 00:04:19 +00:00
luni f1f50cc03d calculate error for fisrt level 2023-01-28 13:17:40 +00:00
luni 38db612469 train next level, evaluate first 2023-01-28 11:29:25 +00:00
luni 588c630a23 update encoders 2023-01-26 13:24:21 +00:00
luni 19f7e0dfb9 config update 2023-01-26 12:17:56 +00:00
luni 44e1d02e5a add no curvature option 2023-01-26 12:03:50 +00:00
luni 2ac1a812fc Merge remote-tracking branch 'origin/post_orig' into review_1_orig 2023-01-26 12:33:46 +01:00
luni 8c0436cea8 restore original pyramid model 2023-01-26 11:10:51 +00:00
luni 37cfae3f4b prepare frames files 2023-01-26 10:29:56 +00:00
luni ffdc60062d add helpers 2023-01-25 14:37:36 +00:00
luni 73d374401b outdated 2023-01-25 13:07:24 +00:00
19 changed files with 557 additions and 154 deletions
-49
View File
@@ -1,49 +0,0 @@
# stylegan2-tf-2.x
* This is tensorflow 2.0 based keras subclassing reimplementation of official [StyleGAN2 Repo](https://github.com/NVlabs/stylegan2)
## Inference from official weights
* Please check [how_to_extract_official_weights.md](./how_to_extract_official_weights.md)
| Official repo result | Official weight copied result from this repo |
| :---: | :---: |
| ![official_result] | ![restored_result] |
## Training on 256x256
* batch size 32
* around 300k steps
| d_loss | g_loss |
| :---: | :---: |
| ![256x256_d_loss]| ![256x256_g_loss]|
* result samples
| | | |
| :---: | :---: | :---: |
| ![256x256_result_0]| ![256x256_result_1]| ![256x256_result_2]|
## Using custom data
* Create dataset(tf.data.Dataset) loader which returns
* shape: `[None, 3, res, res]` where `res` is desired image resolution
* image value range: `[-1, +1]`
## Etc
### Using with pycharm
* If .bashrc file's paths don't work in pycharm environment (e.g. `nvcc -h`), open pycharm with following
```bash
# move to pycharm installed location (location may vary)
moono@moono-ubuntu:~$ cd .local/share/JetBrains/Toolbox/apps/PyCharm-P/ch-0/201.7846.77/bin/
# launch pycharm with .bashrc
moono@moono-ubuntu:~/.local/share/JetBrains/Toolbox/apps/PyCharm-P/ch-0/201.7846.77/bin$ bash pycharm.sh
```
[loss_tensorboard]: assets/tf-keras-stylegan2-loss.PNG
[generation_tensorboard]: assets/tf-keras-stylegan2-fake-images.PNG
[official_result]: assets/seed6600-official.png
[restored_result]: assets/seed6600-restored.png
[256x256_d_loss]: assets/d_loss_256x256.png
[256x256_g_loss]: assets/g_loss_256x256.png
[256x256_result_0]: assets/out_256x256_0.png
[256x256_result_1]: assets/out_256x256_1.png
[256x256_result_2]: assets/out_256x256_2.png
+221
View File
@@ -0,0 +1,221 @@
nohup python cvae_pyramid.py --name="lhunor_abl_pyr_32_no_curv_r1" > nohup/review/abl_pyr_32_no_curv_r1.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_ae_static_orig_10p_r1" > nohup/review/static_orig_10p_r1.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_ae_body_orig_10p_r1" > nohup/review/body_orig_10p_r1.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_32_64_skirt_no_curv_r1" > nohup/review/abl_pyr_32_64_skirt_no_curv_r1.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_abl_pyr_32_no_curv_r1 > nohup/evaluate/abl_pyr_32_no_curv_r1.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_abl_32_64_skirt_no_curv_r1 > nohup/evaluate/abl_32_64_skirt_no_curv_r1.out 2>&1 &
nohup python calculate_error.py --name error_abl_pyr_32_no_curv_r1 > nohup/error/abl_pyr_32_no_curv_r1.out 2>&1 &
nohup python calculate_error.py --name error_pyr_abl_32_64_skirt_no_curv_r1 > nohup/error/pyr_abl_32_64_skirt_no_curv_r1.out 2>&1 &
one final convolutional layer for smoothing, on the final coordinates
skirts!!!!
pyramid next week
basic final, basic final skirts,
basic pyramid
removing curvatures test in ablation
nohup python cvae_low.py --name="lhunor_cvae_low_4_3_skirt_d32" > nohup/nohup_cvae_low_4_3_skirt_d32.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_ae_body_post_2" > nohup/post/ae_body_2.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_ae_static_post_4" > nohup/post/ae_static_4.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_ae_curv_post_1" > nohup/post/ae_curv_1.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_pyr_64_128_3" > nohup/post/abl_pyr_64_128_3.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_pyr_32_64" > nohup/post/abl_pyr_32_64.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_cvae_pyr_3_32_2_64_skirt_test_60k" > nohup/cvae_pyr_3_32_2_64_skirt_test_60k.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32" > nohup/ablation/pyr_abl_32.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_2" > nohup/ablation/pyr_abl_32_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_skin" > nohup/ablation/pyr_abl_32_skin.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_skin_offset" > nohup/ablation/pyr_abl_32_skin_offset.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_skirt" > nohup/ablation/pyr_abl_32_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_extra_loss_skirt" > nohup/ablation/pyr_abl_32_extra_loss_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_skirt_2" > nohup/ablation/pyr_abl_32_skirt_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_64" > nohup/ablation/pyr_abl_32_64.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_64_2" > nohup/ablation/pyr_abl_32_64_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_64_skirt" > nohup/ablation/pyr_abl_32_64_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_32_64_skirt_2" > nohup/ablation/pyr_abl_32_64_skirt_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_64_cape_m" > nohup/ablation/pyr_abl_64_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_64_cape_f" > nohup/ablation/pyr_abl_64_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_64_cape_f_2" > nohup/ablation/pyr_abl_64_cape_f_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_64_128_cape_f" > nohup/ablation/pyr_abl_64_128_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_64_128_cape_m" > nohup/ablation/pyr_abl_64_128_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_64_128_256_cape_f_2" > nohup/ablation/pyr_abl_64_128_256_cape_f_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_64_128_256_512_cape_f" > nohup/ablation/pyr_abl_64_128_256_512_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_pyr_abl_64_128_256_512_cape_f_2" > nohup/ablation/pyr_abl_64_128_256_512_cape_f_2.out 2>&1 &
nohup python upscale_test.py --name="lhunor_256_512_skirt" > nohup/up_256_512_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_cvae_v2_7_4_3" > nohup/cvae_v2_7_4_3.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_extra_loss" > nohup/ablation/abl_extra_loss.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_extra_loss_skirt" > nohup/ablation/abl_extra_loss_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_extra_loss_skirt_2" > nohup/ablation/abl_extra_loss_skirt_2.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_curv" > nohup/ablation/abl_curv.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_curv_skirt" > nohup/ablation/abl_curv_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_abs" > nohup/ablation/abl_abs.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_abs_skirt" > nohup/ablation/abl_abs_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin" > nohup/ablation/abl_skin.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_norm" > nohup/ablation/abl_skin_norm.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_skirt" > nohup/ablation/abl_skin_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all" > nohup/ablation/abl_all.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all_skirt" > nohup/ablation/abl_all_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_orient" > nohup/ablation/abl_orient.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_orient_skirt" > nohup/ablation/abl_orient_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_one_hot_skirt" > nohup/ablation/abl_one_hot_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_norm" > nohup/ablation/abl_norm.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_10p" > nohup/ablation/abl_10p.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_25p" > nohup/ablation/abl_25p.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_10p_skin" > nohup/ablation/abl_10p_skin.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_25p_skin" > nohup/ablation/abl_25p_skin.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_50p_skin" > nohup/ablation/abl_50p_skin.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_var" > nohup/ablation/abl_skin_var.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_var_2" > nohup/ablation/abl_skin_var_2.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_var_3" > nohup/ablation/abl_skin_var_3.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_var_4" > nohup/ablation/abl_skin_var_4.out 2>&1 &
nohup python cvae_curv.py --name="lhunor_cvae_curv" > nohup/ablation/cvae_curv.out 2>&1 &
nohup python cvae_curv.py --name="lhunor_cvae_curv_2" > nohup/ablation/cvae_curv_2.out 2>&1 &
abl_2_pyr_32_64_128
abl_2_pyr_64_cape_f_03223_SS
abl_2_pyr_32_64_128_256_512
nohup python cvae.py --name="lhunor_cape_f_03223_SL_2" > nohup/ablation/cape_f_03223_SL_2.out 2>&1 &
nohup python cvae.py --name="lhunor_cape_f_03223_SS_2" > nohup/ablation/cape_f_03223_SS_2.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all_post" > nohup/post/abl_all_post.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32" > nohup/ablation_2/abl_2_pyr_32.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_skin" > nohup/ablation_2/abl_2_pyr_32_skin.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_skin_2" > nohup/ablation_2/abl_2_pyr_32_skin_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_skin_norm" > nohup/ablation_2/abl_2_pyr_32_skin_norm.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64" > nohup/ablation_2/abl_2_pyr_32_64.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_2" > nohup/ablation_2/abl_2_pyr_32_64_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_128" > nohup/ablation_2/abl_2_pyr_32_64_128.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_128_256" > nohup/ablation_2/abl_2_pyr_32_64_128_256.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_128_256_512" > nohup/ablation_2/abl_2_pyr_32_64_128_256_512.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_128_256_512_norm" > nohup/ablation_2/abl_2_pyr_32_64_128_256_512_norm.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_skirt" > nohup/ablation_2/abl_2_pyr_32_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_skirt_extra_loss" > nohup/ablation_2/abl_2_pyr_32_skirt_extra_loss.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_skirt" > nohup/ablation_2/abl_2_pyr_32_64_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_128_skirt" > nohup/ablation_2/abl_2_pyr_32_64_128_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_128_256_skirt" > nohup/ablation_2/abl_2_pyr_32_64_128_256_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_32_64_128_256_512_skirt" > nohup/ablation_2/abl_2_pyr_32_64_128_256_512_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_cape_f" > nohup/ablation_2/abl_2_pyr_64_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_128_cape_f" > nohup/ablation_2/abl_2_pyr_64_128_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_128_256_cape_f" > nohup/ablation_2/abl_2_pyr_64_128_256_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_128_256_512_cape_f" > nohup/ablation_2/abl_2_pyr_64_128_256_512_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_cape_m" > nohup/ablation_2/abl_2_pyr_64_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_128_cape_m" > nohup/ablation_2/abl_2_pyr_64_128_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_128_256_cape_m" > nohup/ablation_2/abl_2_pyr_64_128_256_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_128_256_512_cape_m" > nohup/ablation_2/abl_2_pyr_64_128_256_512_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_abl_2_pyr_64_128_256_cape_m_00032_SL" > nohup/ablation_2/abl_2_pyr_64_128_256_cape_m_00032_SL.out 2>&1 &
abl_2_all_skirt
abl_2_pyr_64_cape_m_00032_SL
python convert_to_uv.py -f '/home/workspace/data/dataset/validation' -s 0 -e 150 -n "lhunor"
python convert_to_uv.py -f '/home/workspace/data/dataset/skirt_test' -s 0 -e 1 -n "lhunor"
cp configs/config_abl_all.py configs/config_abl_abs.py
python merge_data.py -fi '/home/workspace/data/dataset/test' -fo '/home/workspace/data/dataset/test_ready' -s 0 -e 1500
python merge_data.py -fi '/home/workspace/data/dataset/valid_skirt' -fo '/home/workspace/local-data/valid_skirt' -s 0 -e 1500
nohup python upscale_test.py > nohup/u.out 2>&1 &
nohup python unpose_one_hot.py > nohup/unpose_one_hot_train_skirt.out 2>&1 &
nohup python preprocessing.py > nohup/unshape_one_hot_test_skirt.out 2>&1 &
nohup python dataset.py > nohup/avg_skirt.out 2>&1 &
nohup python evaluate_ae_support.py > nohup/evaluate_ae_support.out 2>&1 &
nohup python evaluate_cape.py --name evaluate_abl_pyr_64_128_256_512_cape_f > nohup/evaluate_abl_pyr_64_128_256_512_cape_f.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_abl_pyr_32_64_110k > nohup/evaluate_ae_abl_pyr_32_64_110k.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_abl_pyr_32_64_2_50k > nohup/evaluate_ae_abl_pyr_32_64_2_50k.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_abl_pyr_32_skirt > nohup/evaluate_ae_abl_pyr_32_skirt.out 2>&1 &
nohup python evaluate_ae.py --name abl_norm_skirt_70k > nohup/evaluate/abl_norm_skirt_70k.out 2>&1 &
nohup python calculate_error.py --name error_abl_2_pyr_32_64_128_skirt > nohup/error_ae_abl_skin_skirt_70k.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name abl_2_pyr_32_64_100k > nohup/evaluate/abl_2_pyr_32_64_100k.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name abl_2_pyr_32_64_128_80k > nohup/evaluate/abl_2_pyr_32_64_128_80k.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name abl_2_pyr_32_64_128_256_512_skirt_50k > nohup/evaluate/abl_2_pyr_32_64_128_256_512_skirt_50k.out 2>&1 &
nohup python calculate_error.py --name abl_2_pyr_32_64_128_256_512_50k > nohup/error/abl_2_pyr_32_64_128_256_512_50k.out 2>&1 &
nohup 7z x CAPE_dataset.zip.001 > nohup/unzip.out 2>&1 &
nohup python main.py --config configs/CAPE-affineconv_nz18_pose24_clotype8_male.yaml --name CAPE-affineconv_nz18_pose24_clotype8_male --gender male --mode demo > cape_male.out 2>&1 &
nohup python3 main.py --config configs/CAPE-affineconv_nz18_pose24_clotype8_female.yaml --name CAPE-affineconv_nz18_pose24_clotype8_female --gender female --mode demo > cape_female.out 2>&1 &
nohup python curvature_labels.py > nohup/dijkstra_skirt.out 2>&1 &
nohup python downscale.py > nohup/downscale_2_test_skirt.out 2>&1 &
nohup python downscale_cape.py > nohup/downscale_cape_train_m.out 2>&1 &
nohup python merge_data.py -fi /home/workspace/data/dataset/train -fo /home/workspace/local-data/train -s 0 -e 1500 > nohup/merge_data_valid_skirt.out 2>&1 &
nohup python merge_data.py -fi /home/workspace/data/dataset/test_skirt -fo /home/workspace/data/dataset/test_skirt_ready -s 0 -e 1500 > nohup/merge_data_test_skirt_ready.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/train_skirt -s 0 -e 100 -n lhunor_unpose_skirt_0_100 > nohup/unpose_skirt_0_100.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/train_skirt -s 100 -e 200 -n lhunor_unpose_skirt_100_200 > nohup/unpose_skirt_100_200.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/train_skirt -s 200 -e 300 -n lhunor_unpose_skirt_200_300 > nohup/unpose_skirt_200_300.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/train_skirt -s 300 -e 400 -n lhunor_unpose_skirt_300_400 > nohup/unpose_skirt_300_400.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/train_skirt -s 400 -e 500 -n lhunor_unpose_skirt_400_500 > nohup/unpose_skirt_400_500.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/train_skirt -s 500 -e 600 -n lhunor_unpose_skirt_500_600 > nohup/unpose_skirt_500_600.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/train_skirt -s 600 -e 700 -n lhunor_unpose_skirt_600_700 > nohup/unpose_skirt_600_700.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/train_skirt -s 700 -e 800 -n lhunor_unpose_skirt_700_800 > nohup/unpose_skirt_700_800.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/test_skirt -s 0 -e 100 -n lhunor_unpose_test_skirt_0_100 > nohup/unpose_test_skirt_0_100_2.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/test_skirt -s 100 -e 200 -n lhunor_unpose_test_skirt_100_200 > nohup/unpose_test_skirt_100_200_2.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/cloth3d_skirt -s 0 -e 100 -n lhunor_unpose_extra_skirt_0_100 > nohup/unpose_extra_skirt_0_100.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/cloth3d_skirt -s 100 -e 200 -n lhunor_unpose_extra_skirt_100_200 > nohup/unpose_extra_skirt_100_200.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/cloth3d_skirt -s 200 -e 300 -n lhunor_unpose_extra_skirt_200_300 > nohup/unpose_extra_skirt_200_300_2.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/cloth3d_skirt -s 300 -e 400 -n lhunor_unpose_extra_skirt_300_400 > nohup/unpose_extra_skirt_300_400.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/test -s 0 -e 100 -n lhunor_unpose_test_0_100 > nohup/unpose_test_0_100.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/test -s 100 -e 200 -n lhunor_unpose_test_100_200 > nohup/unpose_test_100_200.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/test -s 200 -e 300 -n lhunor_unpose_test_200_300 > nohup/unpose_test_200_300.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/test -s 300 -e 400 -n lhunor_unpose_test_300_400 > nohup/unpose_test_300_400.out 2>&1 &
nohup python unpose_skirt.py -f /home/workspace/data/dataset/test -s 00 -e 00 -n lhunor_unpose_test_00_00 > nohup/unpose_test_00_00.out 2>&1 &
calculate avg garment for skirt
need dijkstra/dijsktra skirt
bodies have to be converted in non-skirt mode
need to pretrain encoders again...
not enough sapce to preprocess data
add one more layer and train, repeat
curvature binning
do it according to trainingn set distribution for validation, or it's own for validation
merge curvatures for validation from data-net to local
avg garment for big datasets
check ranges of curvatur ranges
collision in pecentage
bend loss?
evaluation pipeline
look tailernot dataset
blender for visualization
gpu needed estimation
let's say if we want to finish in on eweek
we use the same skinning weights for skirts. okay?
redo curvatures for skirt train.valid
train_skirt: array([1.83511008e-06, 1.84299448e-03, 3.38148023e-03, 5.67459036e-03, 1.02263279e-02, 2.21962575e-02, 3.24614763e-01])
array([1.83511008e-06, 1.82755420e-03, 3.35242413e-03, 5.61911613e-03, 1.01151643e-02, 2.20824350e-02, 3.25994939e-01])
valid_skirt: array([4.51388405e-06, 1.90253550e-03, 3.44673195e-03, 5.73266158e-03, 1.02412868e-02, 2.22220197e-02, 3.12285781e-01])
array([4.51388405e-06, 1.88061886e-03, 3.40514188e-03, 5.64374123e-03, 1.00161384e-02, 2.18187869e-02, 3.17445695e-01])
test_skirt: array([7.21150764e-06, 1.77989923e-03, 3.26598203e-03, 5.47702867e-03, 9.79944225e-03, 2.07518619e-02, 3.23069602e-01])
how to include curvature in evaluation?
use gt, predict with vae?
docker run -d --rm -p 61208-61209:61208-61209 -e GLANCES_OPT="-w" -v /var/run/docker.sock:/var/run/docker.sock:ro --pid host nicolargo/glances:alpine-dev
+2 -4
View File
@@ -1,6 +1,6 @@
import os
import sys
from configs.config_ae_body_post import config
from configs.config_ae_body import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf
@@ -30,7 +30,7 @@ from tf_utils import check_tf_version, allow_memory_growth
from losses import edge_loss, uv_mask_loss
from dataset import DatasetFactory, StaticDataset
from custom_utils.custom_utils import batch_to_dict, plot_3d
from models.cond_encoder import AutoEncoderNew as AutoEncoder
from models.cond_encoder import AutoEncoder
def init_wandb():
@@ -171,7 +171,6 @@ if __name__ == '__main__':
signature=config['signature_dynamic'],
resolutions=[config['resolution']],
in_memory=config['dataset_in_memory'],
use_no_orient=config['remove_global_orientation'],
frames_file=config['frames_file'] if 'frames_file' in config.keys() else None,
is_cape=config['is_cape'])
static_dataset_train = StaticDataset(folder=config['train_dir'],
@@ -185,7 +184,6 @@ if __name__ == '__main__':
signature=config['signature_dynamic'],
resolutions=[config['resolution']],
in_memory=config['dataset_in_memory'],
use_no_orient=config['remove_global_orientation'],
frames_file=config['frames_file_valid'] if 'frames_file_valid' in config.keys() else None,
is_cape=config['is_cape'])
static_dataset_valid = StaticDataset(folder=config['valid_dir'],
+1 -3
View File
@@ -33,7 +33,7 @@ else:
from tf_utils import check_tf_version, allow_memory_growth
from dataset import DatasetFactory, StaticDataset
from custom_utils.custom_utils import batch_to_dict, plot_3d
from models.cond_encoder import AutoEncoderNew as AutoEncoder
from models.cond_encoder import AutoEncoder
def init_wandb():
@@ -205,7 +205,6 @@ if __name__ == '__main__':
signature=config['signature_dynamic'],
resolutions=[config['resolution']],
in_memory=config['dataset_in_memory'],
use_no_orient=config['remove_global_orientation'],
frames_file=config['frames_file'] if 'frames_file' in config.keys() else None,
is_cape=config['is_cape'])
static_dataset_train = StaticDataset(folder=config['train_dir'],
@@ -219,7 +218,6 @@ if __name__ == '__main__':
signature=config['signature_dynamic'],
resolutions=[config['resolution']],
in_memory=config['dataset_in_memory'],
use_no_orient=config['remove_global_orientation'],
frames_file=config['frames_file_valid'] if 'frames_file_valid' in config.keys() else None,
is_cape=config['is_cape'])
static_dataset_valid = StaticDataset(folder=config['valid_dir'],
+4 -4
View File
@@ -1,6 +1,6 @@
import os
import sys
from configs.config_abl_all_post import config
from configs.config_abl_pyr_32_64_skirt_r1 import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
# import tensorflow as tf
@@ -59,13 +59,13 @@ if __name__ == '__main__':
folder = config['test_dir']
checkpoint_name = config['name']
iteration = ''
iteration = '50000'
F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32)
garment_type_table = np.load('custom_data/garment_type_table_test.npy', allow_pickle=True).item()
output_folder = '/home/workspace/data/results/post/' + checkpoint_name + '-' + iteration
output_folder = '/home/workspace/data/results/' + checkpoint_name + '-' + iteration
faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config['is_skirt'] else '')
@@ -107,7 +107,7 @@ if __name__ == '__main__':
for key in per_garment_errors.keys():
print(key + ': ' + str(np.mean(per_garment_errors[key])))
with open('/home/workspace/data/results/errors/post/' + checkpoint_name + '-' + iteration + '.csv', mode='w') as f:
with open('/home/workspace/data/results/errors/' + checkpoint_name + '-' + iteration + '.csv', mode='w') as f:
file_writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for key in sorted(errors.keys()):
+1 -1
View File
@@ -1,7 +1,7 @@
config = dict()
config['gpu'] = '0'
config['name'] = 'pyr_abl_32'
config['name'] = 'pyr_abl_32_r1'
config['notes'] = ''
# DON'T FORGET TO RESET SSIM LOSS USAGE
+189
View File
@@ -0,0 +1,189 @@
config = dict()
config['gpu'] = '1'
config['name'] = 'pyr_abl_32_64_skirt_no_curv_r1'
config['notes'] = 'no curv, 10p data'
config['tags'] = ['review_1']
# DON'T FORGET TO RESET SSIM LOSS USAGE
# DON'T FORGET TO CHECK MODEL LOADING
# DON'T FORGET TO CHECK IF STORE IN MEMORY
# DON'T FORGET TO CHECK REG LOSS COEFF
# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512
# DON'T FORGET TO CHECK IF SKIRT
# DON'T FORGET TO CHECK IF CAPE
# DON'T FORGET TO CHECK IF USING DOWNSCALE NONE OR _2
# DON'T FORGET TO CHECK UPSCALING and ENCODER CHECKPOINTS
config['use_skinning'] = True # and deshaping
config['remove_global_orientation'] = True
config['use_extra_losses'] = True # edge, collision, 3d mesh
config['use_offsets'] = False
config['use_curvature'] = False
config['pyramid'] = dict()
config['pyramid']['resolutions'] = [32, 64]
config['pyramid']['pretrained_pyramid'] = 'checkpoints/pyr_abl_32_skirt_no_curv_r1'
config['pyramid']['final_upscale_enhancer'] = 'checkpoints/64_512_skirt'
config['pretrained_model'] = ''
config['pretrained_model_iteration'] = ''
config['train_dir'] = '/home/workspace/data/dataset/local-cache/train_skirt'
config['valid_dir'] = '/home/workspace/local-data/valid_skirt'
config['test_dir'] = '/home/workspace/data/dataset/test_skirt_ready_2'
config['batch_size'] = 4
config['is_skirt'] = True
config['is_cape'] = False
config['frames_file'] = 'frames_skirt_10p.txt'
config['frames_file_valid'] = 'frames_skirt_10p.txt'
config['pyramid']['static_model'] = 'checkpoints/static_1_skirt'
config['pyramid']['body_model'] = 'checkpoints/body_1_skirt_2_2'
config['pyramid']['curvature_model'] = 'checkpoints/curv_1_skirt'
config['dataset_in_memory'] = True
config['resolution'] = None
config['latent_dim'] = 128
config['smpl_res'] = 14475
if config['is_cape']:
config['smpl_res'] = 3638
config['lr'] = 0.0001
config['starting_balancing_coeff'] = 0.0001
config['reg_loss_coeff'] = 0.1 # set to 0 if don't want to use edge+collision
config['avg_garment_path'] = ''
config['signature_dynamic'] = { 'id': (), 'frame_nr': (),
'pose_shape': (72 + 11,),
'uv_body_posed': (512, 256, 3),
'mesh_body_posed': (config['smpl_res'], 3,),
'mesh_posed': (config['smpl_res'], 3,),
'mesh_unposed': (config['smpl_res'], 3,),
'uv_unposed': (512, 256, 3),
'uv_curvature': (512, 256, 7),
}
config['signature_static'] = { 'uv_static': (512, 256, 3),
'mesh_mask': (config['smpl_res'],),
'uv_mask': (512, 256,),
}
config['pyramid']['is_label'] = False
config['pyramid']['latent_dim'] = config['latent_dim']
config['pyramid']['add_noise'] = True
config['pyramid']['noise_amount'] = 0.001
config['pyramid']['loss_weights'] = [1,1,1,1,1]
for res in config['pyramid']['resolutions']:
if res != 512:
res_modifier = '_' + str(res)
config['signature_dynamic']['uv_body_posed' + res_modifier] = (res, res//2, 3)
config['signature_dynamic']['uv_unposed' + res_modifier] = (res, res//2, 3)
config['signature_dynamic']['uv_curvature' + res_modifier] = (res, res//2, 7)
config['signature_static']['uv_static' + res_modifier] = (res, res//2, 3)
config['signature_static']['uv_mask' + res_modifier] = (res, res//2)
config['pyramid']['freeze_encoders'] = True
config['pyramid']['levels'] = []
for res in config['pyramid']['resolutions']:
if res == 512:
level = dict()
level['resolution'] = 512
level['latent_dim'] = config['latent_dim']
level['kernel_size'] = 7
level['encoder_depths'] = [3, 3, 9, 3]
level['encoder_dims'] = [32, 64, 128, 256]
level['decoder_input'] = (16, 8, 80)
level['decoder_depths'] = [3, 3, 9, 3]
level['decoder_dims'] = [256, 128, 64, 16]
level['avg_garment_path'] = ''
level['upscale_enhancer'] = ''
config['pyramid']['levels'].append(level)
elif res == 256:
level = dict()
level['resolution'] = 256
level['latent_dim'] = config['latent_dim']
level['kernel_size'] = 7
level['encoder_depths'] = [9, 9, 9, 9]
level['encoder_dims'] = [32, 64, 128, 256]
level['decoder_input'] = (8, 4, 128)
level['decoder_depths'] = [9, 9, 9, 9]
level['decoder_dims'] = [256, 128, 64, 16]
level['avg_garment_path'] = ''
level['upscale_enhancer'] = ''#'checkpoints/up_3_d256_512_2'
level['upscale_enhancer_freeze'] = True
config['pyramid']['levels'].append(level)
elif res == 128:
level = dict()
level['resolution'] = 128
level['latent_dim'] = config['latent_dim']
level['kernel_size'] = 5
level['encoder_depths'] = [16, 9, 9, 9]
level['encoder_dims'] = [64, 128, 128, 256]
level['decoder_input'] = (4, 2, 128)
level['decoder_depths'] = [16, 9, 9, 9]
level['decoder_dims'] = [256, 128, 128, 64]
level['avg_garment_path'] = ''
level['upscale_enhancer'] = ''#'checkpoints/up_3_d128_256_2'
level['upscale_enhancer_freeze'] = True
config['pyramid']['levels'].append(level)
elif res == 64:
level = dict()
level['resolution'] = 64
level['latent_dim'] = config['latent_dim']
level['kernel_size'] = 5
level['encoder_depths'] = [9, 9, 9]
level['encoder_dims'] = [64, 128, 256]
level['decoder_input'] = (4, 2, 256)
level['decoder_depths'] = [9, 9, 9]
level['decoder_dims'] = [256, 128, 64]
level['avg_garment_path'] = ''
level['upscale_enhancer'] = ''#checkpoints/up_3_d64_128_2'
level['upscale_enhancer_freeze'] = False
config['pyramid']['levels'].append(level)
elif res == 32:
level = dict()
level['resolution'] = 32
level['latent_dim'] = config['latent_dim']
level['kernel_size'] = 3
level['encoder_depths'] = [9, 9]
level['encoder_dims'] = [256, 256]
level['decoder_input'] = (4, 2, 256)
level['decoder_depths'] = [9, 9]
level['decoder_dims'] = [256, 256]
level['avg_garment_path'] = ''
level['upscale_enhancer'] = 'checkpoints/32_512_skirt'#'checkpoints/up_3_d32_64_2'
level['upscale_enhancer_freeze'] = True
config['pyramid']['levels'].append(level)
else:
raise NotImplementedError
config['cond_ae'] = dict()
config['cond_ae']['is_label'] = False
config['cond_ae']['upscale_output'] = False
config['cond_ae']['latent_dim'] = config['latent_dim']
config['cond_ae']['kernel_size'] = 7
config['cond_ae']['bottleneck_size'] = 64
config['cond_ae']['encoder_depths'] = [3, 3, 9, 9, 3]
config['cond_ae']['encoder_dims'] = [32, 64, 128, 256, config['cond_ae']['bottleneck_size']]
config['cond_ae']['decoder_input'] = (8, 4, config['cond_ae']['bottleneck_size'])
config['cond_ae']['decoder_depths'] = [3, 3, 9, 3, 3]
config['cond_ae']['decoder_dims'] = [config['cond_ae']['bottleneck_size'], 256, 128, 64, 16]
config['cond_ae_body'] = dict()
config['cond_ae_body']['latent_dim'] = config['latent_dim']
config['cond_ae_body']['kernel_size'] = 7
config['cond_ae_body']['upscale_output'] = True
config['cond_ae_body']['bottleneck_size'] = 512
config['cond_ae_body']['encoder_depths'] = [3, 3, 9, 9, 3, 3]
config['cond_ae_body']['encoder_dims'] = [32, 64, 128, 256, 256, config['cond_ae_body']['bottleneck_size']]
config['cond_ae_body']['decoder_input'] = (4, 2, config['cond_ae_body']['bottleneck_size'])
config['cond_ae_body']['decoder_depths'] = [3, 3, 9, 3]
config['cond_ae_body']['decoder_dims'] = [config['cond_ae_body']['bottleneck_size'], 128, 64, 16]
+13 -5
View File
@@ -1,8 +1,9 @@
config = dict()
config['gpu'] = '3'
config['name'] = 'pyr_abl_32_skirt_2'
config['notes'] = 'continued from pyr_abl_32_skirt-180k'
config['gpu'] = '4'
config['name'] = 'pyr_abl_32_skirt_no_curv_r1'
config['notes'] = 'no curv, 10p data'
config['tags'] = ['review_1']
# DON'T FORGET TO RESET SSIM LOSS USAGE
# DON'T FORGET TO CHECK MODEL LOADING
@@ -18,24 +19,30 @@ config['use_skinning'] = True # and deshaping
config['remove_global_orientation'] = True
config['use_extra_losses'] = True # edge, collision, 3d mesh
config['use_offsets'] = False
config['use_curvature'] = False
config['pyramid'] = dict()
config['pyramid']['resolutions'] = [32]
config['pyramid']['pretrained_pyramid'] = ''
config['pyramid']['final_upscale_enhancer'] = 'checkpoints/32_512_skirt'
config['train_dir'] = '/home/workspace/local-data/train_skirt'
config['pretrained_model'] = ''
config['pretrained_model_iteration'] = ''
config['train_dir'] = '/home/workspace/data/dataset/local-cache/train_skirt'
config['valid_dir'] = '/home/workspace/local-data/valid_skirt'
config['test_dir'] = '/home/workspace/data/dataset/test_skirt_ready_2'
config['batch_size'] = 4
config['is_skirt'] = True
config['is_cape'] = False
config['frames_file'] = 'frames_skirt_10p.txt'
config['frames_file_valid'] = 'frames_skirt_10p.txt'
config['pyramid']['static_model'] = 'checkpoints/static_1_skirt'
config['pyramid']['body_model'] = 'checkpoints/body_1_skirt_2_2'
config['pyramid']['curvature_model'] = 'checkpoints/curv_1_skirt'
config['dataset_in_memory'] = False
config['dataset_in_memory'] = True
config['resolution'] = None
config['latent_dim'] = 128
@@ -65,6 +72,7 @@ config['signature_static'] = { 'uv_static': (512, 256, 3),
config['pyramid']['is_label'] = False
config['pyramid']['latent_dim'] = config['latent_dim']
config['pyramid']['add_noise'] = True
config['pyramid']['noise_amount'] = 0.001
config['pyramid']['loss_weights'] = [1,1,1,1,1]
+4 -3
View File
@@ -1,8 +1,9 @@
from configs.config_base import config
config['gpu'] = '2'
config['gpu'] = '1'
config['lr'] = 0.0001
config['name'] = 'body_1_skirt_2_2'
config['name'] = 'body_orig_10p_r1'
config['tags'] = ['review_1']
config['notes'] = 'convnext + convnext, add dense with tanh at the end of reverse convnext, | \
flattened bottleneck with 128 latent_dim\ remove global orientation | \
@@ -15,7 +16,7 @@ config['notes'] = 'convnext + convnext, add dense with tanh at the end of revers
continued from body_1_skirt_2 | \
'
config['dataset_in_memory'] = False
config['dataset_in_memory'] = True
config['batch_size'] = 32
config['signature_dynamic'] = { 'id': (), 'frame_nr': (),
+8 -38
View File
@@ -1,44 +1,14 @@
config = dict()
from configs.config_base import config
config['batch_size'] = 4
config['train_dir'] = '/home/workspace/local-data/train'
config['valid_dir'] = '/home/workspace/local-data/valid'
config['test_dir'] = '/home/workspace/data/dataset/test_ready'
config['use_filled'] = False
config['resolution'] = 512
config['is_skirt'] = False
config['dataset_in_memory'] = True
config['is_cape'] = False
config['remove_global_orientation'] = True
config['smpl_res'] = 14475
if config['is_cape']:
config['smpl_res'] = 3638
config['latent_dim'] = 128
config['cond_ae'] = dict()
config['cond_ae']['is_label'] = False
config['cond_ae']['upscale_output'] = False
config['cond_ae']['latent_dim'] = config['latent_dim']
config['cond_ae']['kernel_size'] = 7
config['cond_ae']['bottleneck_size'] = 8
config['cond_ae']['encoder_depths'] = [3, 3, 3, 27, 3]
config['cond_ae']['encoder_dims'] = [8, 16, 32, 32, config['cond_ae']['bottleneck_size']]
config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths']
config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims']
config['cond_ae']['activation'] = 'linear'
config['gpu'] = '5'
config['gpu'] = '3'
config['lr'] = 0.0005
config['name'] = 'static_post_4'
config['notes'] = 'convnext + convnext, | \
\
| \
config['name'] = 'static_orig_10p_r1'
config['tags'] = ['review_1']
config['notes'] = 'convnext + convnext, add dense with tanh at the end of reverse convnext, | \
flattened latent dim to 128 | \
train on 100 garments | \
deeper model | \
linear activation| \
larger batch size | \
'
config['cond_ae']['upscale_output'] = False
+53
View File
@@ -0,0 +1,53 @@
config = dict()
config['batch_size'] = 4
config['train_dir'] = '/home/workspace/local-data/train'
config['valid_dir'] = '/home/workspace/local-data/valid'
config['test_dir'] = '/home/workspace/data/dataset/test_ready'
config['use_filled'] = False
config['resolution'] = 512
config['is_skirt'] = False
config['dataset_in_memory'] = True
config['is_cape'] = False
config['remove_global_orientation'] = True
config['smpl_res'] = 14475
if config['is_cape']:
config['smpl_res'] = 3638
config['latent_dim'] = 128
config['cond_ae'] = dict()
config['cond_ae']['is_label'] = False
config['cond_ae']['upscale_output'] = False
config['cond_ae']['latent_dim'] = config['latent_dim']
config['cond_ae']['kernel_size'] = 7
config['cond_ae']['bottleneck_size'] = 8
config['cond_ae']['encoder_depths'] = [3, 3, 3, 27, 3]
config['cond_ae']['encoder_dims'] = [8, 16, 32, 32, config['cond_ae']['bottleneck_size']]
config['cond_ae']['decoder_depths'] = config['cond_ae']['encoder_depths']
config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims']
config['cond_ae']['activation'] = 'linear'
config['gpu'] = '5'
config['lr'] = 0.0005
config['name'] = 'static_post_4'
config['notes'] = 'convnext + convnext, | \
\
| \
deeper model | \
linear activation| \
'
config['cond_ae']['upscale_output'] = False
config['pretrained_model'] = ''
config['signature_dynamic'] = { 'id': (), 'frame_nr': (), }
config['signature_static'] = { 'uv_static': (512, 256, 3),
'mesh_static': (config['smpl_res'], 3,),
'mesh_mask': (config['smpl_res'],),
'uv_mask': (512, 256,),
}
+6 -4
View File
@@ -5,17 +5,19 @@ config['batch_size'] = 4
# config['train_dir'] = '/home/workspace/local-data/cape_processed/train/female'
# config['valid_dir'] = '/home/workspace/local-data/cape_processed/test/female'
# config['test_dir'] = '/home/workspace/local-data/cape_processed/test/female'
config['train_dir'] = '/home/workspace/local-data/train'
config['valid_dir'] = '/home/workspace/local-data/valid'
config['test_dir'] = '/home/workspace/data/dataset/test_ready'
config['train_dir'] = '/home/workspace/data/dataset/local-cache/train_skirt'
config['valid_dir'] = '/home/workspace/local-data/valid_skirt'
config['test_dir'] = '/home/workspace/data/dataset/test_ready_skirt_2'
# config['train_dir'] = '/home/workspace/local-data/train_skirt'
# config['valid_dir'] = '/home/workspace/local-data/valid_skirt'
# config['test_dir'] = '/home/workspace/local-data/test_skirt_ready'
config['use_filled'] = False
config['resolution'] = 512
config['is_skirt'] = False
config['dataset_in_memory'] = False
config['dataset_in_memory'] = True
config['is_cape'] = False
config['frames_file'] = 'frames_skirt_10p.txt'
config['frames_file_valid'] = 'frames_skirt_10p.txt'
config['smpl_res'] = 14475
if config['is_cape']:
+3 -3
View File
@@ -1,9 +1,9 @@
config = dict()
config['gpu'] = '2'
config['gpu'] = '6'
config['name'] = 'abl_pyr_32'
config['notes'] = 'fixed noise handling'
config['tags'] = ['pyr_post']
config['notes'] = ''
config['tags'] = ['review_1']
# DON'T FORGET TO RESET SSIM LOSS USAGE
# DON'T FORGET TO CHECK MODEL LOADING
+1 -1
View File
@@ -311,7 +311,7 @@ def load_model(model, checkpoint, disable_assert=False, assert_consumed_on=False
def get_summary_str(model):
lines = []
model.summary(print_fn=lines.append, line_length=150,expand_nested=True,show_trainable=True)
model.summary(print_fn=lines.append, line_length=150, expand_nested=True, show_trainable=True)
# Add initial spaces to avoid markdown formatting in TensorBoard
return lines
+20 -16
View File
@@ -1,6 +1,6 @@
import os
import sys
from configs.post.config_abl_pyr_64_128_5 import config
from configs.config_abl_pyr_32_64_skirt_r1 import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf
@@ -41,7 +41,7 @@ from losses import collision_loss as collision_penalty
from custom_utils.custom_utils import batch_to_dict, load_model
from dataset import DatasetFactory, StaticDataset
from custom_utils.smpl import SMPL
from models.pyramid_model_optimized import PyramidNew as Pyramid
from models.pyramid_model_optimized import Pyramid
from postprocessing import fix_collision
@@ -59,9 +59,11 @@ def init_wandb():
artifact.add_file('models/cond_encoder.py')
artifact.add_file('dataset.py')
artifact.add_file('convnext/models/convnext_tf.py')
config_file_names = [key for key in sys.modules.keys() if key.startswith('configs.post.')]
config_file_names = [key for key in sys.modules.keys() if key.startswith('configs')]
for config_file_name in config_file_names:
artifact.add_file('/'.join(config_file_name.split('.')) + '.py')
file_name = '/'.join(config_file_name.split('.')) + '.py'
if os.path.exists(file_name):
artifact.add_file(file_name)
run.log_artifact(artifact)
uv2mesh = UV2Mesh(res=256, is_skirt=config['is_skirt'], is_smpl_orig=config['is_cape'])
@@ -261,8 +263,8 @@ def train_step(batch):
else:
reconstr_loss_total = reconstr_loss_total + config['pyramid']['loss_weights'][i] * (l2_loss)
if config['use_norm_loss'] and step > 2000:
reconstr_loss_total = reconstr_loss_total + n_loss * config['reg_loss_coeff']
# if config['use_norm_loss'] and step > 2000:
# reconstr_loss_total = reconstr_loss_total + n_loss * config['reg_loss_coeff']
kl_total += kl
@@ -334,8 +336,8 @@ def valid_step(batch):
else:
reconstr_loss_total = reconstr_loss_total + config['pyramid']['loss_weights'][i] * (l2_loss)
if config['use_norm_loss'] and step > 2000:
reconstr_loss_total = reconstr_loss_total + n_loss * config['reg_loss_coeff']
# if config['use_norm_loss'] and step > 2000:
# reconstr_loss_total = reconstr_loss_total + n_loss * config['reg_loss_coeff']
kl_total += kl
@@ -790,7 +792,7 @@ if __name__ == '__main__':
# generate_results()
ckpt = tf.train.Checkpoint(model=model)
manager = tf.train.CheckpointManager(ckpt, 'checkpoints/post/' + config['name'], max_to_keep=20)
manager = tf.train.CheckpointManager(ckpt, 'checkpoints/' + config['name'], max_to_keep=20)
# load_model(model, 'checkpoints/pyr_abl_32_skirt', iteration='180000')
@@ -801,24 +803,26 @@ if __name__ == '__main__':
if len(config['pyramid']['resolutions']) == 1:
model.static_enc.trainable = False
model.body_enc.trainable = False
model.curv_enc.trainable = False
if config['use_curvature']:
model.curv_enc.trainable = False
else:
load_model(model, config['pyramid']['pretrained_pyramid'], iteration=(config['pyramid']['pretrained_pyramid_iteration'] if 'pretrained_pyramid_iteration' in config.keys() else ''))
model.static_enc.trainable = False
model.body_enc.trainable = False
model.curv_enc.trainable = False
if config['use_curvature']:
model.curv_enc.trainable = False
model.cond_encoder.trainable = False
# load_model(model.levels[0].upscale_enhancer, config['pyramid']['levels'][0]['upscale_enhancer'])
# model.levels[0].upscale_enhancer.trainable = False
for i in range(len(model.levels)):
for i in range(len(model.levels)-1):
load_model(model.levels[i].upscale_enhancer, config['pyramid']['levels'][i]['upscale_enhancer'])
model.levels[i].upscale_enhancer.trainable = False
# if config['pyramid']['resolutions'][-1] != 512:
# load_model(model.upscale_enhancer, config['pyramid']['final_upscale_enhancer'])
# model.upscale_enhancer.trainable = False
if config['pyramid']['resolutions'][-1] != 512:
load_model(model.upscale_enhancer, config['pyramid']['final_upscale_enhancer'])
model.upscale_enhancer.trainable = False
for i in range(len(model.levels)-1):
model.levels[i].trainable = False
+1 -1
View File
@@ -1,6 +1,6 @@
import os
import sys
from configs.config_abl_2_pyr_32_64_128_256_512 import config
from configs.config_abl_pyr_32_64_skirt_r1 import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf
+1 -1
View File
@@ -43,7 +43,7 @@ class CVAE(tf.keras.Model):
self.cond_encoder = tf.keras.Sequential([tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(256, activation='relu'),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Lambda(lambda x: x / 1000),
# tf.keras.layers.Lambda(lambda x: x / 1000),
tf.keras.layers.Dense(config['latent_dim'], activation='tanh')])
self.encoder = VariationalEncoder(config['cvae']['latent_dim'], config['cvae']['encoder_depths'], config['cvae']['encoder_dims'], kernel_size=config['cvae']['kernel_size'])
+19 -11
View File
@@ -25,14 +25,16 @@ class Pyramid(tf.keras.Model):
if config['pyramid']['body_model'] != '':
load_model(self.body_enc, config['pyramid']['body_model'] + '_enc')
self.curv_enc : AEEncoder = AEEncoder(config['cond_ae']['latent_dim'], config['cond_ae']['encoder_depths'], config['cond_ae']['encoder_dims'], config['cond_ae']['bottleneck_size'], config['cond_ae']['kernel_size'])
if config['pyramid']['curvature_model'] != '':
load_model(self.curv_enc, config['pyramid']['curvature_model'] + '_enc')
if config['use_curvature']:
self.curv_enc : AEEncoder = AEEncoder(config['cond_ae']['latent_dim'], config['cond_ae']['encoder_depths'], config['cond_ae']['encoder_dims'], config['cond_ae']['bottleneck_size'], config['cond_ae']['kernel_size'])
if config['pyramid']['curvature_model'] != '':
load_model(self.curv_enc, config['pyramid']['curvature_model'] + '_enc')
if config['pyramid']['freeze_encoders']:
self.static_enc.trainable = False
self.body_enc.trainable = False
self.curv_enc.trainable = False
if config['use_curvature']:
self.curv_enc.trainable = False
self.cond_encoder = tf.keras.Sequential([tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(256, activation='relu'),
@@ -70,11 +72,12 @@ class Pyramid(tf.keras.Model):
self.add_noise = config['pyramid']['add_noise']
self.noise_amount = config['pyramid']['noise_amount']
self.use_offsets = config['use_offsets']
self.use_curvature = config['use_curvature']
self.upscale_enhancer = None
if config['pyramid']['final_upscale_enhancer'] != '':
k_size = config['pyramid']['final_upscale_enhancer_kernel_size'] if 'final_upscale_enhancer_kernel_size' in config['pyramid'].keys() else ((3 if config['pyramid']['resolutions'][-1] <= 64 else 5))
self.upscale_enhancer = UpscalerBasicConv(low_res=config['pyramid']['resolutions'][-1], kernel_size=k_size)
self.upscale_enhancer : tf.keras.Model = UpscalerBasicConv(low_res=config['pyramid']['resolutions'][-1], kernel_size=k_size)
load_model(self.upscale_enhancer, config['pyramid']['final_upscale_enhancer'])
self.upscale_enhancer.trainable = False
@@ -85,9 +88,11 @@ class Pyramid(tf.keras.Model):
def encode_conds(self, uv_template, uv_body_posed, uv_curv, training):
z_static = self.static_enc(uv_template, training)
z_body = self.body_enc(uv_body_posed, training)
z_curv = self.curv_enc(uv_curv, training)
z_cond = tf.concat([z_static, z_body, z_curv], axis=-1)
if self.use_curvature:
z_curv = self.curv_enc(uv_curv, training=training)
z_cond = tf.concat([z_static, z_body, z_curv], axis=-1)
else:
z_cond = tf.concat([z_static, z_body], axis=-1)
z_cond = self.cond_encoder(z_cond, training=training)
return z_cond
@@ -294,6 +299,7 @@ class PyramidNew(tf.keras.Model):
self.add_noise = config['pyramid']['add_noise']
self.noise_amount = config['pyramid']['noise_amount']
self.use_offsets = config['use_offsets']
self.use_curvature = config['use_curvature']
self.upscale_enhancer = None
if config['pyramid']['final_upscale_enhancer'] != '':
@@ -309,9 +315,11 @@ class PyramidNew(tf.keras.Model):
def encode_conds(self, uv_template, uv_body_posed, uv_curv, training):
z_static = self.static_enc(uv_template, training)
z_body = self.body_enc(uv_body_posed, training)
z_curv = self.curv_enc(uv_curv, training)
z_cond = tf.concat([z_static, z_body, z_curv], axis=-1)
if self.use_curvature:
z_curv = self.curv_enc(uv_curv, training=training)
z_cond = tf.concat([z_static, z_body, z_curv], axis=-1)
else:
z_cond = tf.concat([z_static, z_body], axis=-1)
return z_cond
+8 -8
View File
@@ -232,17 +232,17 @@ def generate_frames_file(folder, ratio=0.1):
selected = []
for id in tqdm.tqdm(sub_ids):
if garment_type_table[id] != 'Dress':
continue
if len(selected) > 30000:
break
# if garment_type_table[id] != 'Dress':
# continue
# if len(selected) > 30000:
# break
# frames = glob.glob(os.path.join(folder, 'pose_shape', id + '_*'))
frames = [frame for frame in all_frames if frame.startswith(id + '_')]
frames = [frame.split('/')[-1].split('.')[0] for frame in frames]
selected.extend(frames)
with open(os.path.join(folder, 'frames_dress_30k.txt'), 'w') as f:
with open(os.path.join(folder, 'frames_skirt_10p.txt'), 'w') as f:
for i, frame in enumerate(selected):
f.write(frame + '\n')
@@ -293,9 +293,9 @@ def generate_frames_file_filtered_cape():
if __name__ == '__main__':
src_folder = '/home/workspace/local-data/train_skirt' #cloth3d_skirt
src_folder = '/home/workspace/local-data/valid_skirt' #cloth3d_skirt
# src_folder = r'D:\Work\Dataset\validation_2'
dest_folder = '/home/workspace/data/dataset/validation'
dest_folder = '/home/workspace/data/dataset/local-cache/train_skirt'
# create_no_orient_body(src_folder)
@@ -306,5 +306,5 @@ if __name__ == '__main__':
# verify_poses(src_folder)
# create_garment_type_table()
# generate_faces()
generate_frames_file(src_folder, ratio=1)
generate_frames_file(src_folder, ratio=0.1)
# generate_frames_file_filtered_cape()