Author SHA1 Message Date
luni f7e0b61b9a save 2023-03-04 21:07:09 +00:00
luni 3bdb07313e save 2023-03-04 18:52:06 +00:00
luni f0eef244d0 skirt version 2023-03-03 17:20:20 +00:00
luni 523e810f36 fix 2023-03-02 19:33:12 +00:00
luni ec51e5e7cb resnet pyramid 2023-03-02 17:40:14 +00:00
luni 532f5e12f4 resnet trials 2023-02-28 00:13:07 +00:00
luni aa3defbf07 resnet condition encoders 2023-02-27 17:41:47 +00:00
luni bb7128f589 trying to get resnet working 2023-02-22 10:33:29 +00:00
luni e0a5c9a2e3 try to update cvae 2023-02-21 23:23:49 +00:00
luni 9eb1183df4 resnet 101 working 2023-02-21 22:30:32 +00:00
luni 8447b7c505 creating resnet101 2023-02-21 22:17:40 +00:00
luni e302deab7e Merge branch 'review_7' into iccv_resnet 2023-02-21 22:17:44 +01:00
luni 9fbd09386c Revert "fixed changed reverse?"
This reverts commit ac27319860.
2023-02-21 22:13:16 +01:00
luni ac27319860 fixed changed reverse? 2023-02-21 21:08:05 +00:00
luni 2100d364f9 compare models 2023-02-21 16:06:25 +00:00
luni ebbc52d0fd fix plotting and error calc 2023-02-17 15:31:19 +00:00
luni 33eff16c8c convolutional weights model 2023-02-17 13:11:35 +00:00
luni 61a609c8f7 working weight learning 2023-02-15 11:19:14 +00:00
luni 5d96d83d12 evaluate training 2023-01-26 23:47:42 +00:00
luni 5d91b56a63 fix cvae 2023-01-26 14:45:35 +00:00
luni ea683ac030 update configs 2023-01-26 09:32:03 +00:00
luni 9cd9c6f12a add extra block, lower feature sizes 2023-01-25 23:10:51 +00:00
luni 46e37e22eb fixed feature sizes, cvae working 2023-01-25 21:00:47 +00:00
luni cba9d8ce90 add cvae config 2023-01-25 19:28:07 +00:00
luni 655c70413b apply for body and curv 2023-01-25 19:13:18 +00:00
luni 8514032837 bug fix 2023-01-25 18:04:02 +00:00
luni 2305a0ee23 replace backbone with resnet18 2023-01-25 16:49:01 +00:00
261 changed files with 1406 additions and 19743 deletions
+14 -227
View File
@@ -1,231 +1,17 @@
nohup python cvae.py --name="lhunor_weights_test_6" > nohup/iccv/weights_test_6.out 2>&1 &
nohup python evaluate_ae.py --name iccv_weights_test_6 > nohup/iccv/evaluate_iccv_weights_test_6.out 2>&1 &
nohup python calculate_error.py --name iccv_weights_test_6 > nohup/iccv/error_iccv_weights_test_6.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_ae_static_iccv_resnet_2" > nohup/iccv/encoders/ae_static_iccv_resnet_2.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_ae_curv_iccv_resnet_2" > nohup/iccv/encoders/ae_curv_iccv_resnet_2.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_ae_body_iccv_resnet_2" > nohup/iccv/encoders/ae_body_iccv_resnet_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_res_skirt" > nohup/iccv/pyr/iccv_pyr_32_res_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_iccv_pyr_32_res > nohup/iccv/evaluate/iccv_pyr_32_res.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_iccv_pyr_32_res_skirt > nohup/iccv/evaluate/iccv_pyr_32_res_skirt.out 2>&1 &
one final convolutional layer for smoothing, on the final coordinates one final convolutional layer for smoothing, on the final coordinates
nohup python calculate_error.py --name error_al_all_150k > nohup/error/post_al_all_150k.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1" > nohup/iccv/encoders/static_iccv_1.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1_skirt" > nohup/iccv/encoders/static_iccv_1_skirt.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1_cape_f" > nohup/iccv/encoders/static_iccv_1_cape_f.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1_cape_m" > nohup/iccv/encoders/static_iccv_1_cape_m.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1_10p" > nohup/iccv/encoders/static_iccv_1_10p.out 2>&1 &
nohup python auto_encoder_static.py --name="lhunor_static_iccv_1_25p" > nohup/iccv/encoders/static_iccv_1_25p.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_body_iccv_1" > nohup/iccv/encoders/body_iccv_1.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_body_iccv_1_skirt" > nohup/iccv/encoders/body_iccv_1_skirt.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_body_iccv_1_cape_m" > nohup/iccv/encoders/body_iccv_1_cape_m.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_body_iccv_1_10p" > nohup/iccv/encoders/body_iccv_1_10p.out 2>&1 &
nohup python auto_encoder_body.py --name="lhunor_body_iccv_1_25p" > nohup/iccv/encoders/body_iccv_1_25p.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1" > nohup/iccv/encoders/curv_iccv_1.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1_skirt" > nohup/iccv/encoders/curv_iccv_1_skirt.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1_cape_f" > nohup/iccv/encoders/curv_iccv_1_cape_f.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1_cape_m" > nohup/iccv/encoders/curv_iccv_1_cape_m.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1_10p" > nohup/iccv/encoders/curv_iccv_1_10p.out 2>&1 &
nohup python auto_encoder_curv.py --name="lhunor_curv_iccv_1_25p" > nohup/iccv/encoders/curv_iccv_1_25p.out 2>&1 &
nohup python cvae.py --name="lhunor_cvae_iccv_gnn_1" > nohup/iccv/cvae_iccv_gnn_1.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all" > nohup/iccv/ablation/abl_all_3.out 2>&1 & skirts!!!!
nohup python cvae.py --name="lhunor_abl_all_gnn" > nohup/iccv/ablation/abl_all_gnn.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all_gnn_2" > nohup/iccv/ablation/abl_all_gnn.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all_cape_f" > nohup/iccv/ablation/abl_all_cape_f_2.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all_skirt" > nohup/iccv/ablation/abl_all_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all_skirt_var" > nohup/iccv/ablation/abl_all_skirt_var.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_all_skirt_var" > nohup/iccv/ablation/abl_all_skirt_var_2.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_curv" > nohup/iccv/ablation/abl_curv.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_curv_skirt" > nohup/iccv/ablation/abl_curv_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin" > nohup/iccv/ablation/abl_skin.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_skirt" > nohup/iccv/ablation/abl_skin_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_reg" > nohup/iccv/ablation/abl_reg.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_reg_skirt" > nohup/iccv/ablation/abl_reg_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_off" > nohup/iccv/ablation/abl_off.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_curv" > nohup/iccv/ablation/abl_skin_curv.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_curv_skirt" > nohup/iccv/ablation/abl_skin_curv_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_reg" > nohup/iccv/ablation/abl_skin_reg.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_reg_skirt" > nohup/iccv/ablation/abl_skin_reg_skirt.out 2>&1 &
nohup python cvae.py --name="lhunor_abl_skin_var" > nohup/iccv/ablation/abl_skin_var.out 2>&1 &
nohup python evaluate_ae.py --name abl_all > nohup/iccv/evaluate/abl_all.out 2>&1 &
nohup python evaluate_ae.py --name abl_all_skirt > nohup/iccv/evaluate/abl_all_skirt.out 2>&1 &
nohup python cvae_curv.py --name="lhunor_cvae_curv" > nohup/iccv/ablation/cvae_curv_3.out 2>&1 &
nohup python upscale_test.py --name="iccv_32_2" > nohup/iccv/upscale/iccv_32_2.out 2>&1 &
nohup python upscale_test.py --name="iccv_64_2" > nohup/iccv/upscale/iccv_64_2.out 2>&1 &
nohup python upscale_test.py --name="iccv_128_2" > nohup/iccv/upscale/iccv_128_2.out 2>&1 &
nohup python upscale_test.py --name="iccv_256_2" > nohup/iccv/upscale/iccv_256_2.out 2>&1 &
nohup python upscale_test.py --name="iccv_32_2_skirt" > nohup/iccv/upscale/iccv_32_2_skirt.out 2>&1 &
nohup python upscale_test.py --name="iccv_64_2_skirt" > nohup/iccv/upscale/iccv_64_2_skirt.out 2>&1 &
nohup python upscale_test.py --name="iccv_128_2_skirt" > nohup/iccv/upscale/iccv_128_2_skirt.out 2>&1 &
nohup python upscale_test.py --name="iccv_256_2_skirt" > nohup/iccv/upscale/iccv_256_2_skirt.out 2>&1 &
nohup python upscale_test.py --name="iccv_32_2_cape_f" > nohup/iccv/upscale/iccv_32_2_cape_f_real.out 2>&1 &
nohup python upscale_test.py --name="iccv_64_2_cape_f" > nohup/iccv/upscale/iccv_64_2_cape_f.out 2>&1 &
nohup python upscale_test.py --name="iccv_128_2_cape_f" > nohup/iccv/upscale/iccv_128_2_cape_f.out 2>&1 &
nohup python upscale_test.py --name="iccv_256_2_cape_f" > nohup/iccv/upscale/iccv_256_2_cape_f.out 2>&1 &
nohup python upscale_test.py --name="iccv_32_2_cape_m" > nohup/iccv/upscale/iccv_32_2_cape_m.out 2>&1 &
nohup python upscale_test.py --name="iccv_64_2_cape_m" > nohup/iccv/upscale/iccv_64_2_cape_m.out 2>&1 &
nohup python upscale_test.py --name="iccv_128_2_cape_m" > nohup/iccv/upscale/iccv_128_2_cape_m.out 2>&1 &
nohup python upscale_test.py --name="iccv_256_2_cape_m" > nohup/iccv/upscale/iccv_256_2_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32" > nohup/iccv/pyr/iccv_pyr_32.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_var" > nohup/iccv/pyr/iccv_pyr_32_var.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_skirt" > nohup/iccv/pyr/iccv_pyr_32_skirt_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_skin" > nohup/iccv/pyr/iccv_pyr_32_skin.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_skin_skirt" > nohup/iccv/pyr/iccv_pyr_32_skin_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_curv" > nohup/iccv/pyr/iccv_pyr_32_curv.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_curv_skirt" > nohup/iccv/pyr/iccv_pyr_32_curv_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_reg" > nohup/iccv/pyr/iccv_pyr_32_reg.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_reg_skirt" > nohup/iccv/pyr/iccv_pyr_32_reg_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_10p" > nohup/iccv/pyr/iccv_pyr_32_10p.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_25p" > nohup/iccv/pyr/iccv_pyr_32_25p.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_jumpsuit" > nohup/iccv/pyr/iccv_pyr_32_jumpsuit.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_trousers" > nohup/iccv/pyr/iccv_pyr_32_trousers.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_top" > nohup/iccv/pyr/iccv_pyr_32_top.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_tshirt" > nohup/iccv/pyr/iccv_pyr_32_tshirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_skirt_skirt" > nohup/iccv/pyr/iccv_pyr_32_skirt_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_skirt_dress" > nohup/iccv/pyr/iccv_pyr_32_skirt_dress.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_skirt_batch" > nohup/iccv/pyr/iccv_pyr_32_skirt_batch.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_seq" > nohup/iccv/pyr/iccv_pyr_32_seq_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64" > nohup/iccv/pyr/iccv_pyr_32_64.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_skin" > nohup/iccv/pyr/iccv_pyr_32_64_skin.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_skin_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_skin_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_curv" > nohup/iccv/pyr/iccv_pyr_32_64_curv.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_curv_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_curv_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_reg" > nohup/iccv/pyr/iccv_pyr_32_64_reg.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_reg_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_reg_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_10p" > nohup/iccv/pyr/iccv_pyr_32_64_10p.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_25p" > nohup/iccv/pyr/iccv_pyr_32_64_25p.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_tshirt" > nohup/iccv/pyr/iccv_pyr_32_64_tshirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_trousers" > nohup/iccv/pyr/iccv_pyr_32_64_trousers.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_top" > nohup/iccv/pyr/iccv_pyr_32_64_top.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_skirt_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_skirt_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_skirt_dress" > nohup/iccv/pyr/iccv_pyr_32_64_skirt_dress.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_jumpsuit" > nohup/iccv/pyr/iccv_pyr_32_64_jumpsuit.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_seq" > nohup/iccv/pyr/iccv_pyr_32_64_seq.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_seq_2" > nohup/iccv/pyr/iccv_pyr_32_64_seq_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_cape_f" > nohup/iccv/pyr/iccv_pyr_64_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_cape_m" > nohup/iccv/pyr/iccv_pyr_64_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_cape_m_00032_SL" > nohup/iccv/pyr/iccv_pyr_64_cape_m_00032_SL.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_cape_f_03223_SL" > nohup/iccv/pyr/iccv_pyr_64_cape_f_03223_SL.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_cape_f_03223_SS" > nohup/iccv/pyr/iccv_pyr_64_cape_f_03223_SS.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_128_cape_f" > nohup/iccv/pyr/iccv_pyr_64_128_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_128_cape_m" > nohup/iccv/pyr/iccv_pyr_64_128_cape_m.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_128_256_cape_f" > nohup/iccv/pyr/iccv_pyr_64_128_256_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_pre_cape_f" > nohup/iccv/pyr/iccv_pyr_64_pre_cape_f.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128" > nohup/iccv/pyr/iccv_pyr_32_64_128.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_128_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_skin" > nohup/iccv/pyr/iccv_pyr_32_64_128_skin_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_skin_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_128_skin_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_reg" > nohup/iccv/pyr/iccv_pyr_32_64_128_reg_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_curv" > nohup/iccv/pyr/iccv_pyr_32_64_128_curv.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_curv_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_128_curv_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_var" > nohup/iccv/pyr/iccv_pyr_32_64_128_var.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_tshirt" > nohup/iccv/pyr/iccv_pyr_32_64_128_tshirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_trousers" > nohup/iccv/pyr/iccv_pyr_32_64_128_trousers.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_top" > nohup/iccv/pyr/iccv_pyr_32_64_128_top.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_jumpsuit" > nohup/iccv/pyr/iccv_pyr_32_64_128_jumpsuit.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_skirt_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_128_skirt_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_skirt_dress" > nohup/iccv/pyr/iccv_pyr_32_64_128_skirt_dress.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128" > nohup/iccv/pyr/iccv_pyr_32_64_128.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128" > nohup/iccv/pyr/iccv_pyr_32_64_128.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_128_cape_m_00032_SL" > nohup/iccv/pyr/iccv_pyr_64_128_cape_m_00032_SL.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_128_cape_f_03223_SL" > nohup/iccv/pyr/iccv_pyr_64_128_cape_f_03223_SL.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_64_128_cape_f_03223_SS" > nohup/iccv/pyr/iccv_pyr_64_128_cape_f_03223_SS.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_skirt_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_skin" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_skin.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_curv" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_curv.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_curv_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_curv_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_reg" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_reg.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_512" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_512.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_512_skirt" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_512_skirt.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_512_skin" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_512_skin.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_512_curv" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_512_curv.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_512_reg" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_512_reg.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_64_128_256_512_fine" > nohup/iccv/pyr/iccv_pyr_32_64_128_256_512_fine.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32 > nohup/iccv/evaluate/iccv_pyr_32.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_skirt > nohup/iccv/evaluate/iccv_pyr_32_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_skin > nohup/iccv/evaluate/iccv_pyr_32_skin.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_skin_skirt > nohup/iccv/evaluate/iccv_pyr_32_skin_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_reg > nohup/iccv/evaluate/iccv_pyr_32_reg.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_reg_skirt > nohup/iccv/evaluate/iccv_pyr_32_reg_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_curv > nohup/iccv/evaluate/iccv_pyr_32_curv.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_curv_skirt > nohup/iccv/evaluate/iccv_pyr_32_curv_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_10p > nohup/iccv/evaluate/iccv_pyr_32_10p.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_25p > nohup/iccv/evaluate/iccv_pyr_32_25p.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64 > nohup/iccv/evaluate/iccv_pyr_32_64.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_skin > nohup/iccv/evaluate/iccv_pyr_32_64_skin.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_skin_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_skin_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_reg > nohup/iccv/evaluate/iccv_pyr_32_64_reg.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_curv > nohup/iccv/evaluate/iccv_pyr_32_64_curv.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_curv_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_curv_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_10p > nohup/iccv/evaluate/iccv_pyr_32_64_10p.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_25p > nohup/iccv/evaluate/iccv_pyr_32_64_25p.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128 > nohcup/iccv/evaluate/iccv_pyr_32_64_128.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_128_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_skin > nohup/iccv/evaluate/iccv_pyr_32_64_128_skin.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_skin_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_128_skin_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_reg > nohup/iccv/evaluate/iccv_pyr_32_64_128_reg.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_curv > nohup/iccv/evaluate/iccv_pyr_32_64_128_curv.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_curv_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_128_curv_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_trousers > nohup/iccv/evaluate/iccv_pyr_32_64_128_trousers.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_tshirt > nohup/iccv/evaluate/iccv_pyr_32_64_128_tshirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_top > nohup/iccv/evaluate/iccv_pyr_32_64_128_top.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_jumpsuit > nohup/iccv/evaluate/iccv_pyr_32_64_128_jumpsuit.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_skirt_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_128_skirt_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_skirt_dress> nohup/iccv/evaluate/iccv_pyr_32_64_128_skirt_dress.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128 > nohup/iccv/evaluate/iccv_pyr_32_64_128.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256 > nohup/iccv/evaluate/iccv_pyr_32_64_128_256.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_skin > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_skin.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_curv > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_curv.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_reg > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_reg.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_512 > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_512.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_512_skirt > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_512_skirt.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_512_reg > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_512_reg.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_512_skin > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_512_skin.out 2>&1 &
nohup python evaluate_ae_pyramid.py --name evaluate_ae_iccv_pyr_32_64_128_256_512_curv > nohup/iccv/evaluate/iccv_pyr_32_64_128_256_512_curv.out 2>&1 &
nohup python cvae.py --name="lhunor_cape_f_03223_SL" > nohup/iccv/ablation/abl_all_cape_f_03223_SL.out 2>&1 &
nohup python cvae.py --name="lhunor_cape_f_03223_SS" > nohup/iccv/ablation/abl_all_cape_f_03223_SS.out 2>&1 &
nohup python cvae.py --name="lhunor_cape_m_00032_SL" > nohup/iccv/ablation/abl_all_cape_m_00032_SL.out 2>&1 &
skirts!!!!iccv_pyr_32_curv_skirt
pyramid next week pyramid next week
basic final, basic final skirts, basic final, basic final skirts,
@@ -294,6 +80,7 @@ nohup python cvae.py --name="lhunor_abl_skin_var_4" > nohup/ablation/abl_skin_va
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" > 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 & nohup python cvae_curv.py --name="lhunor_cvae_curv_2" > nohup/ablation/cvae_curv_2.out 2>&1 &
nohup python cvae_pyramid.py --name="lhunor_iccv_pyr_32_res" > nohup/iccv/pyr/iccv_pyr_32_res.out 2>&1 &
abl_2_pyr_32_64_128 abl_2_pyr_32_64_128
abl_2_pyr_64_cape_f_03223_SS abl_2_pyr_64_cape_f_03223_SS
@@ -356,7 +143,7 @@ nohup python evaluate_ae_pyramid.py --name evaluate_ae_abl_pyr_32_skirt > nohup/
nohup python evaluate_ae.py --name abl_norm_skirt_70k > nohup/evaluate/abl_norm_skirt_70k.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 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 pyr_32_res_skirt > nohup/evaluate/pyr_32_res_skirt.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_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 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 &
+15 -13
View File
@@ -1,6 +1,6 @@
import os import os
import sys import sys
from configs.iccv.config_ae_body_25p import config from configs.iccv.config_ae_body import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf import tensorflow as tf
@@ -63,9 +63,10 @@ def train_step(batch):
e_loss = 1e-2 * tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, tf.ones((pred.shape[0], 3638 if config['is_cape'] else 14475)))) e_loss = 1e-2 * tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, tf.ones((pred.shape[0], 3638 if config['is_cape'] else 14475))))
l1_loss = tf.reduce_mean(tf.reduce_sum(((tf.math.abs(batch['uv_body_posed' + resolution_modifier] - pred))), axis=1)) l1_loss = tf.reduce_mean(tf.reduce_sum(((tf.math.abs(batch['uv_body_posed' + resolution_modifier] - pred))), axis=1))
ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 1, batch['uv_body_posed' + resolution_modifier] + 1, max_val=2, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1))) # ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 1, batch['uv_body_posed' + resolution_modifier] + 1, max_val=3, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1)))
ms_ssim = tf.reduce_mean(tf.image.ssim(pred + 1, batch['uv_body_posed' + resolution_modifier] + 1, max_val=3))
loss = 1e3 * (1 - ms_ssim) loss = l1_loss
metric = tf.reduce_mean(tf.math.sqrt(tf.reduce_sum((mesh_orig - mesh_pred) ** 2, axis=-1))) metric = tf.reduce_mean(tf.math.sqrt(tf.reduce_sum((mesh_orig - mesh_pred) ** 2, axis=-1)))
gradients = tape.gradient(loss, model.trainable_variables) gradients = tape.gradient(loss, model.trainable_variables)
@@ -83,9 +84,10 @@ def valid_step(batch):
e_loss = 1e-2 * tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, tf.ones((pred.shape[0], 3638 if config['is_cape'] else 14475)))) e_loss = 1e-2 * tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, tf.ones((pred.shape[0], 3638 if config['is_cape'] else 14475))))
l1_loss = tf.reduce_mean(tf.reduce_sum(((tf.math.abs(batch['uv_body_posed' + resolution_modifier] - pred))), axis=1)) l1_loss = tf.reduce_mean(tf.reduce_sum(((tf.math.abs(batch['uv_body_posed' + resolution_modifier] - pred))), axis=1))
ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 1, batch['uv_body_posed' + resolution_modifier] + 1, max_val=2, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1))) # ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 1, batch['uv_body_posed' + resolution_modifier] + 1, max_val=3, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1)))
ms_ssim = tf.reduce_mean(tf.image.ssim(pred + 1, batch['uv_body_posed' + resolution_modifier] + 1, max_val=3))
loss = 1e3 * (1 - ms_ssim) loss = l1_loss
metric = tf.reduce_mean(tf.math.sqrt(tf.reduce_sum((mesh_orig - mesh_pred) ** 2, axis=-1))) metric = tf.reduce_mean(tf.math.sqrt(tf.reduce_sum((mesh_orig - mesh_pred) ** 2, axis=-1)))
return { 'valid/loss': loss, 'valid/edge_loss': e_loss, 'valid/l1_loss': l1_loss, 'valid/euclid_error': metric, 'valid/ms_ssim': ms_ssim, } return { 'valid/loss': loss, 'valid/edge_loss': e_loss, 'valid/l1_loss': l1_loss, 'valid/euclid_error': metric, 'valid/ms_ssim': ms_ssim, }
@@ -129,7 +131,7 @@ def train():
train_loss = train_step(batch) train_loss = train_step(batch)
train_accumulator.update(train_loss) train_accumulator.update(train_loss)
if step % 25 == 0: if step % 50 == 0:
data_valid = valid_iterator.get_next() data_valid = valid_iterator.get_next()
data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic']))
valid_loss = valid_step(data_valid) valid_loss = valid_step(data_valid)
@@ -143,12 +145,11 @@ def train():
to_log = { **to_log, **train_figs, **valid_figs } to_log = { **to_log, **train_figs, **valid_figs }
if step == 0: if step == 0:
to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
wandb.log(to_log, step=step) wandb.log(to_log, step=step)
train_accumulator.reset() train_accumulator.reset()
valid_accumulator.reset() valid_accumulator.reset()
if step % 10000 == 0: if step % 10000 == 0:
manager_enc.save(checkpoint_number=step) manager_enc.save(checkpoint_number=step)
manager_dec.save(checkpoint_number=step) manager_dec.save(checkpoint_number=step)
@@ -160,6 +161,7 @@ def train():
if __name__ == '__main__': if __name__ == '__main__':
init_wandb() init_wandb()
allow_memory_growth()
parser = argparse.ArgumentParser(description='') parser = argparse.ArgumentParser(description='')
parser.add_argument('--name', type=str) parser.add_argument('--name', type=str)
args = vars(parser.parse_args()) args = vars(parser.parse_args())
@@ -205,15 +207,15 @@ if __name__ == '__main__':
model = AutoEncoder(config['cond_ae']) model = AutoEncoder(config['cond_ae'])
optimizer = tf.optimizers.Adam(learning_rate=config['lr']) optimizer = tf.optimizers.Adam(learning_rate=config['lr'])
train_accumulator = Accumulator()
valid_accumulator = Accumulator()
# load_model(model.encoder, 'checkpoints/body_1_skirt_2_enc') # load_model(model.encoder, 'checkpoints/body_1_skirt_2_enc')
# load_model(model.decoder, 'checkpoints/body_1_skirt_2_dec') # load_model(model.decoder, 'checkpoints/body_1_skirt_2_dec')
ckpt_enc = tf.train.Checkpoint(model=model.encoder) ckpt_enc = tf.train.Checkpoint(model=model.encoder)
manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/iccv/' + config['name'] + '_enc', max_to_keep=20) manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20)
ckpt_dec = tf.train.Checkpoint(model=model.decoder) ckpt_dec = tf.train.Checkpoint(model=model.decoder)
manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/iccv/' + config['name'] + '_dec', max_to_keep=20) manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20)
train_accumulator = Accumulator()
valid_accumulator = Accumulator()
train() train()
+9 -10
View File
@@ -1,6 +1,6 @@
import os import os
import sys import sys
from configs.iccv.config_ae_curv_25p import config from configs.iccv.config_ae_curv import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf import tensorflow as tf
@@ -169,7 +169,7 @@ def train():
train_loss = train_step(batch) train_loss = train_step(batch)
train_accumulator.update(train_loss) train_accumulator.update(train_loss)
if step % 25 == 0: if step % 50 == 0:
data_valid = valid_iterator.get_next() data_valid = valid_iterator.get_next()
data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic']))
valid_loss = valid_step(data_valid) valid_loss = valid_step(data_valid)
@@ -183,7 +183,6 @@ def train():
to_log = { **to_log, **train_figs, **valid_figs } to_log = { **to_log, **train_figs, **valid_figs }
if step == 0: if step == 0:
to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
wandb.log(to_log, step=step) wandb.log(to_log, step=step)
train_accumulator.reset() train_accumulator.reset()
@@ -215,7 +214,7 @@ def test():
if __name__ == '__main__': if __name__ == '__main__':
init_wandb() init_wandb()
allow_memory_growth() # allow_memory_growth()
parser = argparse.ArgumentParser(description='') parser = argparse.ArgumentParser(description='')
parser.add_argument('--name', type=str) parser.add_argument('--name', type=str)
args = vars(parser.parse_args()) args = vars(parser.parse_args())
@@ -240,7 +239,7 @@ if __name__ == '__main__':
signature=config['signature_static'], signature=config['signature_static'],
resolutions=[config['resolution']], resolutions=[config['resolution']],
in_memory=True, in_memory=True,
is_cape=config['is_cape']) is_cape=config['is_cape'])
dataset_valid = factory.get_dataset(folder=config['valid_dir'], dataset_valid = factory.get_dataset(folder=config['valid_dir'],
batch_size=config['batch_size'], batch_size=config['batch_size'],
@@ -254,17 +253,17 @@ if __name__ == '__main__':
signature=config['signature_static'], signature=config['signature_static'],
resolutions=[config['resolution']], resolutions=[config['resolution']],
in_memory=True, in_memory=True,
is_cape=config['is_cape']) is_cape=config['is_cape'])
model = AutoEncoder(config['cond_ae']) model = AutoEncoder(config['cond_ae'])
optimizer = tf.optimizers.Adam(learning_rate=config['lr']) optimizer = tf.optimizers.Adam(learning_rate=config['lr'])
train_accumulator = Accumulator()
valid_accumulator = Accumulator()
ckpt_enc = tf.train.Checkpoint(model=model.encoder) ckpt_enc = tf.train.Checkpoint(model=model.encoder)
manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/iccv/' + config['name'] + '_enc', max_to_keep=20) manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20)
ckpt_dec = tf.train.Checkpoint(model=model.decoder) ckpt_dec = tf.train.Checkpoint(model=model.decoder)
manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/iccv/' + config['name'] + '_dec', max_to_keep=20) manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20)
train_accumulator = Accumulator()
valid_accumulator = Accumulator()
if testing: if testing:
test() test()
+16 -12
View File
@@ -1,6 +1,6 @@
import os import os
import sys import sys
from configs.iccv.config_ae_static_25p import config from configs.iccv.config_ae_static import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf import tensorflow as tf
@@ -43,6 +43,7 @@ def init_wandb():
artifact.add_file('auto_encoder_static.py') artifact.add_file('auto_encoder_static.py')
artifact.add_file('losses.py') artifact.add_file('losses.py')
artifact.add_file('models/base.py') artifact.add_file('models/base.py')
artifact.add_file('models/resnet.py')
artifact.add_file('models/cond_encoder.py') artifact.add_file('models/cond_encoder.py')
artifact.add_file('dataset.py') artifact.add_file('dataset.py')
artifact.add_file('convnext/models/convnext_tf.py') artifact.add_file('convnext/models/convnext_tf.py')
@@ -67,11 +68,14 @@ def train_step(batch):
e_loss = 1e-2 * tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, batch['mesh_mask'])) e_loss = 1e-2 * tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, batch['mesh_mask']))
l1_loss = tf.reduce_mean(tf.reduce_sum((tf.math.abs(batch['uv_static'] - pred)), axis=1)) l1_loss = tf.reduce_mean(tf.reduce_sum((tf.math.abs(batch['uv_static'] - pred)), axis=1))
ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 1, batch['uv_static'] + 1, max_val=2, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1))) # ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 1, batch['uv_static'] + 1, max_val=3, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1)))
loss = 1e3 * (1 - ms_ssim) ms_ssim = tf.reduce_mean(tf.image.ssim(pred + 1, batch['uv_static'] + 1, max_val=3))
# loss = 1e3 * (1 - ms_ssim)
loss = l1_loss
metric = tf.reduce_sum(tf.math.sqrt(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1))) / tf.reduce_sum(batch['mesh_mask']) metric = tf.reduce_sum(tf.math.sqrt(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1))) / tf.reduce_sum(batch['mesh_mask'])
gradients = tape.gradient(loss, model.trainable_variables) gradients = tape.gradient(loss, model.trainable_variables)
gradients = [(tf.clip_by_norm(grad, clip_norm=2.0)) for grad in gradients]
optimizer.apply_gradients(zip(gradients, model.trainable_variables)) optimizer.apply_gradients(zip(gradients, model.trainable_variables))
return { 'train/loss': loss, 'train/edge_loss': e_loss, 'train/l1_loss': l1_loss, 'train/euclid_error': metric, 'train/ms_ssim': ms_ssim, } return { 'train/loss': loss, 'train/edge_loss': e_loss, 'train/l1_loss': l1_loss, 'train/euclid_error': metric, 'train/ms_ssim': ms_ssim, }
@@ -86,8 +90,10 @@ def valid_step(batch):
e_loss = 1e-2 * tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, batch['mesh_mask'])) e_loss = 1e-2 * tf.reduce_mean(edge_loss(mesh_pred, mesh_orig, batch['mesh_mask']))
l1_loss = tf.reduce_mean(tf.reduce_sum((tf.math.abs(batch['uv_static'] - pred)), axis=1)) l1_loss = tf.reduce_mean(tf.reduce_sum((tf.math.abs(batch['uv_static'] - pred)), axis=1))
ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 1, batch['uv_static'] + 1, max_val=2, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1))) # ms_ssim = tf.reduce_mean(tf.image.ssim_multiscale(pred + 1, batch['uv_static'] + 1, max_val=3, power_factors=(0.5, 0.2, 0.1, 0.1, 0.1)))
loss = 1e3 * (1 - ms_ssim) ms_ssim = tf.reduce_mean(tf.image.ssim(pred + 1, batch['uv_static'] + 1, max_val=3))
# loss = 1e3 * (1 - ms_ssim)
loss = l1_loss
metric = tf.reduce_sum(tf.math.sqrt(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1))) / tf.reduce_sum(batch['mesh_mask']) metric = tf.reduce_sum(tf.math.sqrt(tf.reduce_sum(batch['mesh_mask'][:,:,tf.newaxis] * (mesh_orig - mesh_pred) ** 2, axis=-1))) / tf.reduce_sum(batch['mesh_mask'])
return { 'valid/loss': loss, 'valid/edge_loss': e_loss, 'valid/l1_loss': l1_loss, 'valid/euclid_error': metric, 'valid/ms_ssim': ms_ssim, } return { 'valid/loss': loss, 'valid/edge_loss': e_loss, 'valid/l1_loss': l1_loss, 'valid/euclid_error': metric, 'valid/ms_ssim': ms_ssim, }
@@ -130,7 +136,7 @@ def train():
train_loss = train_step(batch) train_loss = train_step(batch)
train_accumulator.update(train_loss) train_accumulator.update(train_loss)
if step % 25 == 0: if step % 50 == 0:
data_valid = valid_iterator.get_next() data_valid = valid_iterator.get_next()
data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic'])) data_valid = static_dataset_valid.expand_batch(batch_to_dict(data_valid, config['signature_dynamic']))
valid_loss = valid_step(data_valid) valid_loss = valid_step(data_valid)
@@ -144,7 +150,6 @@ def train():
to_log = { **to_log, **train_figs, **valid_figs } to_log = { **to_log, **train_figs, **valid_figs }
if step == 0: if step == 0:
to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } } to_log = { **to_log, **{ 'model/summary': wandb.Html(get_summary_html(model)) } }
wandb.log(to_log, step=step) wandb.log(to_log, step=step)
train_accumulator.reset() train_accumulator.reset()
@@ -154,7 +159,7 @@ def train():
manager_enc.save(checkpoint_number=step) manager_enc.save(checkpoint_number=step)
manager_dec.save(checkpoint_number=step) manager_dec.save(checkpoint_number=step)
print(step) print(step)
step += 1 step += 1
@@ -192,10 +197,10 @@ def test():
print() print()
if __name__ == '__main__': if __name__ == '__main__':
init_wandb() init_wandb()
# allow_memory_growth()
parser = argparse.ArgumentParser(description='') parser = argparse.ArgumentParser(description='')
parser.add_argument('--name', type=str) parser.add_argument('--name', type=str)
args = vars(parser.parse_args()) args = vars(parser.parse_args())
@@ -239,7 +244,6 @@ if __name__ == '__main__':
model : AutoEncoder = AutoEncoder(config['cond_ae']) model : AutoEncoder = AutoEncoder(config['cond_ae'])
optimizer = tf.optimizers.Adam(learning_rate=config['lr']) optimizer = tf.optimizers.Adam(learning_rate=config['lr'])
train_accumulator = Accumulator() train_accumulator = Accumulator()
valid_accumulator = Accumulator() valid_accumulator = Accumulator()
@@ -248,9 +252,9 @@ if __name__ == '__main__':
load_model(model.decoder, config['pretrained_model'] + '_dec') load_model(model.decoder, config['pretrained_model'] + '_dec')
ckpt_enc = tf.train.Checkpoint(model=model.encoder) ckpt_enc = tf.train.Checkpoint(model=model.encoder)
manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/iccv/' + config['name'] + '_enc', max_to_keep=20) manager_enc = tf.train.CheckpointManager(ckpt_enc, 'checkpoints/post/' + config['name'] + '_enc', max_to_keep=20)
ckpt_dec = tf.train.Checkpoint(model=model.decoder) ckpt_dec = tf.train.Checkpoint(model=model.decoder)
manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/iccv/' + config['name'] + '_dec', max_to_keep=20) manager_dec = tf.train.CheckpointManager(ckpt_dec, 'checkpoints/post/' + config['name'] + '_dec', max_to_keep=20)
# test() # test()
train() train()
+26 -68
View File
@@ -1,37 +1,37 @@
import os import os
import sys import sys
from configs.iccv.config_abl_pyr_32_64_128_tshirt import config from configs.iccv.config_abl_pyr_32_res import config
os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu'] os.environ["CUDA_VISIBLE_DEVICES"] = config['gpu']
import tensorflow as tf # import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU') # gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus: # if gpus:
try: # try:
# Currently, memory growth needs to be the same across GPUs # # Currently, memory growth needs to be the same across GPUs
for gpu in gpus: # for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True) # tf.config.experimental.set_memory_growth(gpu, True)
logical_gpus = tf.config.experimental.list_logical_devices('GPU') # logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs") # print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e: # except RuntimeError as e:
# Memory growth must be set before GPUs have been initialized # # Memory growth must be set before GPUs have been initialized
print(e) # print(e)
import csv import csv
import glob import glob
import time import time
import argparse import argparse
import wandb import wandb
from tqdm import tqdm import tqdm
import random import random
import numpy as np import numpy as np
import plotly.graph_objects as go import plotly.graph_objects as go
import plotly.express as ex import plotly.express as ex
from losses import collision_loss, normal_loss
if config['is_skirt']: # if config['is_skirt']:
from losses import edge_loss_skirt as edge_loss # from losses import edge_loss_skirt as edge_loss
else: # else:
from losses import edge_loss # from losses import edge_loss
@@ -53,28 +53,19 @@ if __name__ == '__main__':
parser.add_argument('--name', type=str) parser.add_argument('--name', type=str)
args = vars(parser.parse_args()) args = vars(parser.parse_args())
print(config['name'])
# smpl = SMPL(use_one_hot=config['use_one_hot']) # smpl = SMPL(use_one_hot=config['use_one_hot'])
skirt_modifier = '_skirt' if config['is_skirt'] else '' skirt_modifier = '_skirt' if config['is_skirt'] else ''
error_type = 'euclidean' # 'euclidean' 'collision' edge normal
folder = config['test_dir'] folder = config['test_dir']
checkpoint_name = config['name'] checkpoint_name = config['name']
# iteration = '200000' iteration = '195000'
F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32) 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() garment_type_table = np.load('custom_data/garment_type_table_test.npy', allow_pickle=True).item()
output_folder = '/home/workspace/local-data/results/iccv/' + checkpoint_name + '-' output_folder = '/home/workspace/data/results/iccv/' + checkpoint_name + '-' + iteration
# check if there is a folder that starts with this name using glob
folders = glob.glob(output_folder + '*')
assert len(folders) == 1, f'There should be only one checkpoint that starts with this name, but found {len(folders)}'
output_folder = folders[0]
iteration = output_folder.split('-')[-1]
# faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config['is_skirt'] else '') # faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config['is_skirt'] else '')
@@ -82,33 +73,20 @@ if __name__ == '__main__':
# ids = [id.split('.')[0] for id in ids] # ids = [id.split('.')[0] for id in ids]
# faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids } # faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids }
print('Reading masks...') masks_folder = '/home/workspace/local-data/test' + ('_skirt' if config['is_skirt'] else '') + '_ready' + ('_2' if config['is_skirt'] else '') + '/mesh_mask'
masks_folder = '/home/workspace/local-data' + ('' if config['is_skirt'] else '_127') + '/test' + ('_skirt' if config['is_skirt'] else '') + '_ready' + ('_2' if config['is_skirt'] else '') + '/mesh_mask'
ids = os.listdir(masks_folder) ids = os.listdir(masks_folder)
ids = [id.split('.')[0] for id in ids] ids = [id.split('.')[0] for id in ids]
masks = {id : np.load(masks_folder + '/' + id + '.npy') for id in ids } masks = {id : np.load(masks_folder + '/' + id + '.npy') for id in ids }
frames = os.listdir(output_folder) frames = os.listdir(output_folder)
frames = [frame for frame in frames if not frame.endswith('_fixed_coll.npy')] frames = [frame for frame in frames if not frame.endswith('_fixed_coll.npy')]
# frames = frames[:100]
# if 'frames_file_test' in config.keys():
# with open(os.path.join(folder, config['frames_file_test']), 'r') as f:
# lines = f.readlines()
# lines = [line.strip() for line in lines]
# frames = lines
if error_type == 'collision':
print('Reading bodies...')
bodies_folder = '/home/workspace/local-data' + ('' if config['is_skirt'] else '_127') + '/test' + ('_skirt' if config['is_skirt'] else '') + '_ready' + ('_2' if config['is_skirt'] else '') + '/mesh_posed_body_no_orient'
bodies = {frame : np.load(bodies_folder + '/' + frame[:-1] + 'z')['mesh_posed_body_no_orient'] for frame in tqdm(frames) }
if config['remove_global_orientation']: if config['remove_global_orientation']:
gt_name = 'mesh_posed_no_orient' gt_name = 'mesh_posed_no_orient'
else: else:
gt_name = 'mesh_posed' gt_name = 'mesh_posed'
orig_folder = '/home/workspace/local-data' + ('' if config['is_skirt'] else '_127') + '/test' + ('_skirt' if config['is_skirt'] else '') + '_ready' + ('_2' if config['is_skirt'] else '') + '/' + gt_name orig_folder = '/home/workspace/local-data/test' + ('_skirt' if config['is_skirt'] else '') + '_ready' + ('_2' if config['is_skirt'] else '') + '/' + gt_name
errors = dict() errors = dict()
if config['is_skirt']: if config['is_skirt']:
@@ -116,32 +94,12 @@ if __name__ == '__main__':
else: else:
per_garment_errors = { 'Tshirt': [], 'Jumpsuit': [], 'Trousers': [], 'Top': [] } per_garment_errors = { 'Tshirt': [], 'Jumpsuit': [], 'Trousers': [], 'Top': [] }
for frame in tqdm(frames): for frame in tqdm.tqdm(frames):
id = frame.split('_')[0] id = frame.split('_')[0]
frame_nr = frame.split('.')[0].split('_')[1] frame_nr = frame.split('.')[0].split('_')[1]
gt = np.load(os.path.join(orig_folder, id + '_' + frame_nr + '.npz'))[gt_name][masks[id], :].astype(np.float32) gt = np.load(os.path.join(orig_folder, id + '_' + frame_nr + '.npz'))[gt_name][masks[id], :].astype(np.float32)
pred = np.load(os.path.join(output_folder, id + '_' + frame_nr + '.npy')) pred = np.load(os.path.join(output_folder, id + '_' + frame_nr + '.npy'))
if error_type == 'edge': metric = np.mean(np.sqrt(np.sum((gt - pred) ** 2, axis=-1)))
pred_unmasked = np.zeros((1, 14475, 3), dtype=np.float32)
pred_unmasked[0, masks[id], :] = pred
gt_unmasked = np.zeros((1, 14475, 3), dtype=np.float32)
gt_unmasked[0, masks[id], :] = gt
metric = edge_loss(gt_unmasked, pred_unmasked, masks[id][None,:].astype(np.float32)).numpy()[0]
elif error_type == 'euclidean':
metric = np.mean(np.sqrt(np.sum((gt - pred) ** 2, axis=-1)))
elif error_type == 'collision':
pred_unmasked = np.zeros((1, 14475, 3), dtype=np.float32)
pred_unmasked[0, masks[id], :] = pred
metric = collision_loss(pred_unmasked, bodies[frame][None,:,:], masks[id][None,:].astype(np.float32))[0].numpy()[0]
elif error_type == 'normal':
pred_unmasked = np.zeros((1, 14475, 3), dtype=np.float32)
pred_unmasked[0, masks[id], :] = pred
gt_unmasked = np.zeros((1, 14475, 3), dtype=np.float32)
gt_unmasked[0, masks[id], :] = gt
metric = normal_loss(gt_unmasked, pred_unmasked, masks[id][None,:].astype(np.float32)).numpy()
else:
raise ValueError('Error type not supported')
errors[id + '_' + frame_nr] = metric errors[id + '_' + frame_nr] = metric
per_garment_errors[garment_type_table[id]].append(metric) per_garment_errors[garment_type_table[id]].append(metric)
@@ -149,7 +107,7 @@ if __name__ == '__main__':
for key in per_garment_errors.keys(): for key in per_garment_errors.keys():
print(key + ': ' + str(np.mean(per_garment_errors[key]))) print(key + ': ' + str(np.mean(per_garment_errors[key])))
with open(f'/home/workspace/data/results/errors/iccv/{checkpoint_name}-{iteration}-{error_type}.csv', mode='w') as f: with open('/home/workspace/data/results/errors/iccv/' + checkpoint_name + '-' + iteration + '.csv', mode='w') as f:
file_writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) file_writer = csv.writer(f, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for key in sorted(errors.keys()): for key in sorted(errors.keys()):
+12 -23
View File
@@ -23,7 +23,7 @@ import numpy as np
import trimesh as tm import trimesh as tm
import plotly.express as ex import plotly.express as ex
import plotly.graph_objects as go import plotly.graph_objects as go
from custom_utils.custom_utils import _maskFaces, save_stl from custom_utils.custom_utils import _maskFaces
from custom_utils.smpl import SMPL from custom_utils.smpl import SMPL
from plotly.subplots import make_subplots from plotly.subplots import make_subplots
from scipy.spatial.transform import Rotation as R from scipy.spatial.transform import Rotation as R
@@ -215,8 +215,8 @@ if __name__ == '__main__':
errors_cape_m = get_cape_errors('CAPE/results/CAPE-affineconv_nz18_pose24_clotype8_male/errors.npy', frames_m) errors_cape_m = get_cape_errors('CAPE/results/CAPE-affineconv_nz18_pose24_clotype8_male/errors.npy', frames_m)
errors_cape_m = dict(reversed(sorted(errors_cape_m.items(), key=lambda item: item[1]))) errors_cape_m = dict(reversed(sorted(errors_cape_m.items(), key=lambda item: item[1])))
errors_f = get_errors('temp/archive/error_abl_2_pyr_64_128_256_512_cape_f.txt') errors_f = get_errors('temp/error_abl_2_pyr_64_128_256_512_cape_f.txt')
errors_m = get_errors('temp/archive/error_abl_2_pyr_64_128_256_512_cape_m.txt') errors_m = get_errors('temp/error_abl_2_pyr_64_128_256_512_cape_m.txt')
folder_pyr_f = '/home/workspace/data/results/cape/abl_2_pyr_64_128_256_512_cape_f' folder_pyr_f = '/home/workspace/data/results/cape/abl_2_pyr_64_128_256_512_cape_f'
folder_pyr_m = '/home/workspace/data/results/cape/abl_2_pyr_64_128_256_512_cape_m' folder_pyr_m = '/home/workspace/data/results/cape/abl_2_pyr_64_128_256_512_cape_m'
@@ -238,10 +238,9 @@ if __name__ == '__main__':
_, faces = _maskFaces(np.zeros((3638, 3)), np.load('custom_utils/smpl_faces_orig.npy'), cape_mask) _, faces = _maskFaces(np.zeros((3638, 3)), np.load('custom_utils/smpl_faces_orig.npy'), cape_mask)
faces = faces.astype(np.int32)
colors = np.ones((3627, 3), np.int8) * 230 colors = np.ones((3627, 3), np.int8) * 230
gender = 'female' gender = 'male'
if gender == 'male': if gender == 'male':
folder_cape = folder_m folder_cape = folder_m
@@ -263,18 +262,11 @@ if __name__ == '__main__':
all_errors_1 = [] all_errors_1 = []
all_errors_2 = [] all_errors_2 = []
for key in tqdm.tqdm(errors_cape.keys()): # for key in tqdm.tqdm(errors_cape.keys()):
# count = 0 count = 0
# while True: while True:
if os.path.exists(f'temp/cape_stl/{key}_gt.stl'): key = random.choice(list(errors_cape.keys()))
continue
# key = random.choice(list(errors_cape.keys()))
cape = read_obj(os.path.join(folder_cape, '{:0>4d}.obj'.format(frames_to_i[key])))[clothing_verts_idx, :] - J0[np.newaxis, :] cape = read_obj(os.path.join(folder_cape, '{:0>4d}.obj'.format(frames_to_i[key])))[clothing_verts_idx, :] - J0[np.newaxis, :]
split = key.split('_')
file = '_'.join(split[:-1]) + '.' + split[-1] + '.npy'
pose_shape_path = os.path.join(pose_folder, file)
if not os.path.exists(pose_shape_path):
continue
cape = add_global_orientation(cape, key, pose_folder, inverse=True) cape = add_global_orientation(cape, key, pose_folder, inverse=True)
if not os.path.exists(os.path.join(folder, key + '_posed.npy')): if not os.path.exists(os.path.join(folder, key + '_posed.npy')):
continue continue
@@ -292,13 +284,10 @@ if __name__ == '__main__':
# print(np.mean(all_errors_1)) # print(np.mean(all_errors_1))
# print(np.mean(all_errors_2)) # print(np.mean(all_errors_2))
# fig = plot_fixed_all(gt, cape, ours, errors_cape[key], errors[key], faces, colors) fig = plot_fixed_all(gt, cape, ours, errors_cape[key], errors[key], faces, colors)
# fig.write_image('temp/cape_2/' + key + '.png') fig.write_image('temp/cape/' + key + '.png')
save_stl(f'temp/cape_stl/{key}_gt.stl', gt, faces)
save_stl(f'temp/cape_stl/{key}_cape.stl', cape, faces)
save_stl(f'temp/cape_stl/{key}_ours.stl', ours, faces)
# print(count) print(count)
# count += 1 count += 1
print() print()
+188
View File
@@ -0,0 +1,188 @@
import os
import sys
from configs.config_abl_all_post import config as config_a
os.environ["CUDA_VISIBLE_DEVICES"] = '5'
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
# Currently, memory growth needs to be the same across GPUs
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
logical_gpus = tf.config.experimental.list_logical_devices('GPU')
print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
except RuntimeError as e:
# Memory growth must be set before GPUs have been initialized
print(e)
import glob
import time
import argparse
import wandb
import tqdm
import random
import numpy as np
import plotly.graph_objects as go
import plotly.express as ex
from PIL import Image
from postprocessing import fix_collision
if config_a['is_skirt']:
from losses import edge_loss_skirt as edge_loss
else:
from losses import edge_loss
from losses import collision_ratio, kl_loss #, concept_loss
# from losses import collision_penalty as collision_penalty
from losses import collision_loss as collision_penalty
from custom_utils.custom_utils import batch_to_dict, load_model, plot_3d, UV2Mesh, get_summary_html, maskFacesBatch, _maskFaces, plot_3d_collision
from dataset import DatasetFactory, StaticDataset
from custom_utils.smpl import SMPL
from models.cvae_model import CVAE
from custom_utils.supersmpl_io import writeOBJ
from plotly.subplots import make_subplots
# uv2mesh = UV2Mesh(res=256, is_skirt=config_a['is_skirt'], is_adaptive=False)
def plot(mesh_gt, pred_a, pred_b, body, mask):
fig = make_subplots(rows=1, cols=3, start_cell="top-left", specs = [ [{ 'type': 'scene' } for _ in range(3)] ])
_, faces_garment = _maskFaces(np.zeros((14475, 3), np.float32), F, mask)
faces = np.concatenate((F, faces_garment + 14475), axis=0)
mesh_gt = np.concatenate((body, mesh_gt[mask, :]), axis=0)
pred_a = np.concatenate((body, pred_a), axis=0)
pred_b = np.concatenate((body, pred_b), axis=0)
colors = np.concatenate((np.ones_like(body, dtype=np.int32)*100, np.ones_like(mesh_gt, dtype=np.int32)*230), axis=0)
# colors = np.ones_like(mesh_gt, dtype=np.int32)*230
fig.add_trace(go.Mesh3d(
x=mesh_gt[:,0],
y=mesh_gt[:,2],
z=mesh_gt[:,1],
i = faces[:,0],
j = faces[:,1],
k = faces[:,2],
text="Ground Truth",
vertexcolor=colors,
),
row=1, col=1)
fig.add_trace(go.Mesh3d(
x=pred_a[:,0],
y=pred_a[:,2],
z=pred_a[:,1],
i = faces[:,0],
j = faces[:,1],
k = faces[:,2],
text="Pred A",
vertexcolor=colors,
),
row=1, col=2)
fig.add_trace(go.Mesh3d(
x=pred_b[:,0],
y=pred_b[:,2],
z=pred_b[:,1],
i = faces[:,0],
j = faces[:,1],
k = faces[:,2],
text="Pred B",
vertexcolor=colors,
),
row=1, col=3)
fig.update_layout(scene_aspectmode='manual', scene_aspectratio=dict(x=1, y=1, z=1),
scene2_aspectmode='manual', scene2_aspectratio=dict(x=1, y=1, z=1),
scene3_aspectmode='manual', scene3_aspectratio=dict(x=1, y=1, z=1),
)
helper = dict(xaxis = dict(nticks=4, range=[-1,1],),
yaxis = dict(nticks=4, range=[-1,1],),
zaxis = dict(nticks=4, range=[-1,1],),)
fig.update_layout(scene = helper,
scene2 = helper,
scene3 = helper,
)
return fig
if __name__ == '__main__':
run = wandb.init(project='plots', name=config_a['name'], notes=config_a['notes'], dir='/wandb')
parser = argparse.ArgumentParser(description='')
parser.add_argument('--name', type=str)
args = vars(parser.parse_args())
skirt_modifier = '_skirt' if config_a['is_skirt'] else ''
folder = config_a['test_dir']
# smpl = SMPL(use_one_hot=False)
F = np.load("custom_utils/smpl_faces" + skirt_modifier + ".npy").astype(np.int32)
iteration = ''
# load_model(model, 'checkpoints/' + 'abl_all_120k')
factory = DatasetFactory()
dataset_a = factory.get_dataset(folder=config_a['test_dir'],
batch_size=config_a['batch_size'],
signature=config_a['signature_dynamic'],
resolutions=[config_a['resolution']],
in_memory=False,
do_repeat=False,
use_one_hot=config_a['use_one_hot'],
use_no_orient=config_a['remove_global_orientation'],
shuffle=False,
testing=True,
# frames_file='frames_abl.txt',
)
static_dataset_a = StaticDataset(folder=config_a['test_dir'],
signature=config_a['signature_static'],
resolutions=[config_a['resolution']],
in_memory=True)
iterator_a = iter(dataset_a)
faces_folder = '/home/workspace/data/results/support/faces' + ('_skirt' if config_a['is_skirt'] else '')
ids = os.listdir(faces_folder)
ids = [id.split('.')[0] for id in ids]
faces = {id : np.load(faces_folder + '/' + id + '.npy') for id in ids }
results_folder = '/home/workspace/data/results/post'
count = 0
while True:
batch = iterator_a.get_next()
batch = static_dataset_a.expand_batch(batch_to_dict(batch, config_a['signature_dynamic']))
mask = batch['mesh_mask'].numpy().astype(bool)
gt = batch['mesh_posed'].numpy()
body = batch['mesh_body_posed'].numpy()
for i in range(mask.shape[0]):
id, frame_nr = batch['id'][i].numpy().decode("utf-8"), batch['frame_nr'][i].numpy().decode("utf-8")
pred_a = np.load(results_folder + '/al_all_post-/' + id + '_' + frame_nr + '.npy')
pred_b = np.load(results_folder + '/iccv_weights_test_6-/' + id + '_' + frame_nr + '.npy')
# pred_c = np.load(results_folder + '/iccv_weights_test_6-/' + id + '_' + frame_nr + '.npy')
fig = plot(gt[i], pred_a, pred_b, body[i], mask[i])
wandb.log({f'{id}_{frame_nr}': fig}, step = count)
count += 1
print(count)
-65
View File
@@ -1,65 +0,0 @@
import os
import sys
import numpy as np
import trimesh as tm
from stl import mesh
# os.environ["CUDA_VISIBLE_DEVICES"] = '1'
# import tensorflow as tf
# gpus = tf.config.experimental.list_physical_devices('GPU')
# if gpus:
# try:
# # Currently, memory growth needs to be the same across GPUs
# for gpu in gpus:
# tf.config.experimental.set_memory_growth(gpu, True)
# logical_gpus = tf.config.experimental.list_logical_devices('GPU')
# print(len(gpus), "Physical GPUs,", len(logical_gpus), "Logical GPUs")
# except RuntimeError as e:
# # Memory growth must be set before GPUs have been initialized
# print(e)
# from losses import collision_loss, normal_loss
# from losses import edge_loss_skirt as edge_loss
# from losses import edge_loss
if __name__ == '__main__':
frame = '04173_193' # '02276_232', '02978_242', '04173_193'
folder = 'examples/sampling_analysis'
# original_folder = '/home/workspace/data/dataset/local-cache/train_skirt'
original_folder = '/home/workspace/local-data/train'
# folder = 'examples/sampling'
id = frame.split('_')[0]
mask = np.load(os.path.join(original_folder, 'mesh_mask', f'{id}.npy'))
gt = np.load(os.path.join(folder, frame, f'{frame}_gt.npy'))
faces = np.load(os.path.join(folder, frame, f'{frame}_faces.npy'))
edges = tm.Trimesh(vertices=gt, faces=faces, validate=False, process=False).edges
edges_gt = np.linalg.norm(gt[edges[:, 0]] - gt[edges[:, 1]], axis=1)
area_gt = np.sum(np.linalg.norm(np.cross(gt[faces[:, 0]] - gt[faces[:, 1]], gt[faces[:, 0]] - gt[faces[:, 2]]), axis=1))
errors = []
vars = []
area_diffs = []
# for i in [1,2,4,10]:
for i in range(15):
sample = np.load(os.path.join(folder, frame, f'{frame}_{i}.npy'))
edges_sample = np.linalg.norm(sample[edges[:, 0]] - sample[edges[:, 1]], axis=1)
error = np.mean(np.abs(edges_sample - edges_gt))
var = np.var(np.abs(edges_sample - edges_gt))
errors.append(error)
vars.append(var)
area_sample = np.sum(np.linalg.norm(np.cross(sample[faces[:, 0]] - sample[faces[:, 1]], sample[faces[:, 0]] - sample[faces[:, 2]]), axis=1))
area_diff = np.abs(area_sample - area_gt)
area_diffs.append(area_diff)
print(np.array(errors).mean())
print(np.array(vars).mean())
print(np.array(area_diffs).mean())
print(area_gt)
@@ -7,7 +7,7 @@ config = dict()
# DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512 # DON'T FORGET TO LOAD FINAL UPSCALER UNLESS HAVE LEVEL 512
# DON'T FORGET TO CHECK AVG GARMENT USED # DON'T FORGET TO CHECK AVG GARMENT USED
config['use_skinning'] = True # and deshaping config['use_skinning'] = False # and deshaping
config['remove_global_orientation'] = True config['remove_global_orientation'] = True
config['use_curvature'] = True config['use_curvature'] = True
config['use_extra_losses'] = True # edge, collision, 3d mesh config['use_extra_losses'] = True # edge, collision, 3d mesh
@@ -20,8 +20,8 @@ ablation_count = [config['use_skinning'], config['remove_global_orientation'], c
assert ablation_count == 1 or ablation_count == 0 assert ablation_count == 1 or ablation_count == 0
config['gpu'] = '4' config['gpu'] = '4'
config['name'] = 'al_all_post' config['name'] = 'iccv_weights_test_6'
config['notes'] = '' config['notes'] = 'smaller weight loss coeff, 1e-6, convolutional weight learning, continued from _5'
config['avg_garment_path'] = 'custom_data/train_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv config['avg_garment_path'] = 'custom_data/train_no_shape_avg_uv.npy' #custom_data/train_no_shape_avg_uv.npy # train_no_shape_avg_uv train_no_shape_one_hot_avg_uv
if config['use_skinning']: if config['use_skinning']:
@@ -53,7 +53,7 @@ if config['is_cape']:
config['smpl_res'] = 3638 config['smpl_res'] = 3638
config['pretrained_model'] = '' config['pretrained_model'] = 'checkpoints/post/iccv_weights_test_5'
############### ###############
config['lr'] = 0.0001# 0.0001 config['lr'] = 0.0001# 0.0001
@@ -86,14 +86,15 @@ config['use_one_hot'] = False
config['cvae'] = dict() config['cvae'] = dict()
config['cvae']['is_label'] = False config['cvae']['is_label'] = False
config['cvae']['add_noise'] = True config['cvae']['add_noise'] = True
config['cvae']['noise_amount'] = 0.001 config['cvae']['noise_amount'] = 0.00001
config['cvae']['kernel_size'] = 7 config['cvae']['kernel_size'] = 7
config['cvae']['encoder_depths'] = [3, 3, 3, 9, 3] config['cvae']['encoder_depths'] = [3, 3, 3, 9, 3]
config['cvae']['encoder_dims'] = [32, 64, 128, 256, 64] config['cvae']['encoder_dims'] = [32, 64, 128, 256, 64]
config['cvae']['decoder_depths'] = config['cvae']['encoder_depths'] config['cvae']['decoder_depths'] = config['cvae']['encoder_depths']
config['cvae']['decoder_dims'] = config['cvae']['encoder_dims'] config['cvae']['decoder_dims'] = config['cvae']['encoder_dims']
config['cvae']['decoder_weights_depths'] = [3, 3, 3, 5, 3]
config['cvae']['decoder_weights_dims'] = [24, 32, 64, 128, 256]
config['cond_ae_static'] = dict() config['cond_ae_static'] = dict()
config['cond_ae_static']['is_label'] = False config['cond_ae_static']['is_label'] = False
@@ -31,7 +31,7 @@ config['cond_ae']['decoder_dims'] = config['cond_ae']['encoder_dims']
config['cond_ae']['activation'] = 'linear' config['cond_ae']['activation'] = 'linear'
config['gpu'] = '5' config['gpu'] = '0'
config['lr'] = 0.0005 config['lr'] = 0.0005
config['name'] = 'static_post_4' config['name'] = 'static_post_4'
config['notes'] = 'convnext + convnext, | \ config['notes'] = 'convnext + convnext, | \

Some files were not shown because too many files have changed in this diff Show More