GithubHelp home page GithubHelp logo

qianlim / pop Goto Github PK

View Code? Open in Web Editor NEW
187.0 10.0 20.0 7.31 MB

Official implementation of the ICCV 2021 paper: "The Power of Points for Modeling Humans in Clothing".

Home Page: https://qianlim.github.io/POP

License: Other

Python 94.28% Cuda 4.85% C++ 0.87%
iccv2021 virtualhumans

pop's People

Contributors

qianlim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pop's Issues

per-point transformation matrix Ti

Hi. I am confused about the transformation matrix T. The ri in Eq(2) is the displacement of the point on posed human body without outfits, why not add pi directly? That is: xi=ri+pi. Could you explain the T and how to calculate it?

The "geom_featmap" seems to be reset during training

For evaluation during training, the value of the "geom_featmap" seems to be reset to the most recently saved value.

POP/main.py

Lines 193 to 195 in a05404d

checkpoints = sorted([fn for fn in os.listdir(ckpt_dir) if fn.endswith('_geom_featmap.pt')])
checkpoint = join(ckpt_dir, checkpoints[-1])
load_latent_feats(checkpoint, geom_featmap)

The "geom_featmap" is saved every 50 epochs, while the default value of the "args.val_every" is set to 20.
Therefore, the value of the "geom_featmap" will be reset several times. For example, at the 20th or 40th epoch, the "geom_featmap" will be set to the initial value of the 0th epoch.
Is this a bug?

python main.py --config configs/config_demo.yaml --mode test

(POP) siduo@siduo-NK50S5-SZ:~/下载/POP-main$ python main.py --config configs/config_demo.yaml --mode test

------------------------Loading checkpoint POP_pretrained_ReSynthdata_12outfits_epoch00400_model.pt

------------------------Test model with checkpoint at epoch 400

------------------------Eval on test data, seen outfits, unseen poses...
Loading test data...
Loading rp_alexandra_posed_006, 0 examples..
0it [00:00, ?it/s]
Data loaded, in total 0 test examples.

Evaluating...
0it [00:00, ?it/s]
Traceback (most recent call last):
File "main.py", line 354, in
main()
File "main.py", line 256, in main
test_stats = test_seen_clo(
File "/home/siduo/下载/POP-main/lib/infer.py", line 316, in test_seen_clo
test_m2s /= n_test_samples
ZeroDivisionError: division by zero

Mesh for ReSynth dataset

Hi, thanks for sharing this great work, I'm wondering how can i get the original meshes from which the scan point cloud is generated? Are they included somewhere in the dataset we downloaded or they are not provided? Thanks!!

question: how to run on custom data?

Hi,
how to inference on custom data? like a single static scan. Need it be fitted to a spml-x model?
If I want to animate this scan, how to get a pose sequence like the "*.npz" file in you demo data?
Can you please give the instruction like qianlim/SCALE#6 (comment) ?
Again, thanks for your excellent work!

Data preprocess

Hi,

Thanks for sharing your great work! I notice that the scale and translation of "scan_pc" and "body_verts" in the provided packed data are different from meshes in the original CAPE dataset. What is the scale and translation parameters you used to normalize the meshes?

Thanks!

When will the code be released?

Hi,

Thanks for your very interesting work. Could I know when will you release the code of POP? Hoping this will be soon.
Thank you very much!

Custom data set

Want to test with your own data set, do you need to retrain the model?

Checkpoint state mismatch with code config

It seems like the released checkpoint is trained with different hyperparameters -

python main.py --config configs/config_demo.yaml --mode test
/home/kd/anaconda3/envs/pop/lib/python3.8/site-packages/torch/functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at /opt/conda/conda-bld/pytorch_1695392036766/work/aten/src/ATen/native/TensorShape.cpp:3526.)
  return _VF.meshgrid(tensors, **kwargs)  # type: ignore[attr-defined]

------------------------Loading checkpoint POP_pretrained_CAPEdata_14outfits_epoch00400_model.pt
Traceback (most recent call last):
  File "main.py", line 341, in <module>
    main()
  File "main.py", line 125, in main
    model.load_state_dict(ckpt_loaded['model_state'])
  File "/home/kd/anaconda3/envs/pop/lib/python3.8/site-packages/torch/nn/modules/module.py", line 2152, in load_state_dict
    raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for POP:
        size mismatch for unet_posefeat.upconvC5.up.1.weight: copying a param with shape torch.Size([64, 384, 3, 3]) from checkpoint, the shape in current model is torch.Size([64, 256, 3, 3]).```

About Resynth Dataset

Hi, great work for human modeling, and I wonder to know what's mean of vtransf, I just found that: "a numpy array of shape (N_vert, 3, 3): the local-to-global transformation matrix of each vertex on the posed SMPL-X body." what's local-to-global mean and how to get it?

configs/clo_config.yaml

This file stores the name of the model and the name of the folder to be guessed.

In my understanding, the things stored in this file should be modifiable

But
When I delete the next line of seen, or replace the in unseen with seen, an error will appear

I understand that there is an error. Is this file fixed?

runtime error

hello when I run python main.py --config configs/config_demo.yaml --mode testthe following error will occur.

image
I tried to download this package through pip install, but the package was not found.
After I changed from chamferdist.chamferdist import ChamferDistance to from chamferdist import ChamferDistance, the following error occurred again.
image

I would like to ask how this can be corrected. Thank you very much.

About the ReSynth Dataset

Hello, it seems in the ReSynth Dataset download page, the below texts are without hyperlinks, so I cannot download demo data.

Download links:

Data_for_POP_demo: packed npz files | high-res point clouds

UV Coordinate

uv_coord_map = getIdxMap_torch(torch.rand(3, posmap_size, posmap_size)).cuda()

Hi, I found that the above code seems to generate transposed UV coordinates, i.e. the UV coordinates of the first row of the image ([height, width, channel] format) grid are [0, 0], [0, 1], [0, 2], ..., [ 0, H-1].

chamfer distance

Hi. You don't seem to be using the chamfer distance directly as the loss, would the performance be better?

m2s, s2m, idx_closest_gt, _ = chamfer_loss_separate(full_pred, target_pc) #idx1: [#pred points]

m2s = torch.sum(pc_diff * closest_target_normals, dim=-1) # project on direction of the normal of these gt points

Dimension mismatch of trained weights (ReSynthdata_12outfit)

Thanks for sharing the code of the wonderful work!

I had tried to test the code with pre-trained weight for ReSynthedata provided in the link in Readme. With the default configuration setting, there is a dimension mismatch between the pre-trained weight and the defined network. Specifically, for unet_posefeat defined by this module, UnetNoCond7DS the layer upconvC5 should have input channel size as 256. However, in the pre-trained model, its dimension is 384 which yields dimension mismatch error during loading that model like below.

image

Is there any way to fix this?

Point rendering with surfels

Hi,

In Fig 4. of the paper, you mentioned that the point clouds are rendered with surfels. Could you kindly share the code for the point rendering with surfels?

Thanks!

运行报错

python main.py --config configs/config_demo.yaml --mode test ,出现

RPly: Unable to open file
Read PLY failed: unable to open file: /mnt/data2/cv610/anaconda3/envs/SCALEcode/POP/lib/../data/resynth/scans/rp_beatrice_posed_005/96_longshort_flying_eagle/00020_

------Step 1: Optimizing w.r.t. UNSEEN scan with full_gt

Traceback (most recent call last):
File "main.py", line 345, in
main()
File "main.py", line 332, in main
**model_config
File "/mnt/data2/cv610/anaconda3/envs/SCALEcode/POP/lib/infer.py", line 414, in test_unseen_clo
num_unseen_frames=num_unseen_frames
File "/mnt/data2/cv610/anaconda3/envs/SCALEcode/POP/lib/infer.py", line 187, in reconstruct
random_subsample_scan=random_subsample_scan, num_unseen_frames=num_unseen_frames)
File "/mnt/data2/cv610/anaconda3/envs/SCALEcode/POP/lib/infer.py", line 103, in model_forward_and_loss
lnormal, closest_target_normals = normal_loss(pred_normals, target_pc_n, idx_closest_gt)
File "/mnt/data2/cv610/anaconda3/envs/SCALEcode/POP/lib/losses.py", line 21, in normal_loss
target_normals_chosen = torch.gather(target_normals, dim=1, index=nearest_idx)
RuntimeError: setStorage: sizes [1, 47911, 3], strides [0, 0, 1], storage offset 0, and itemsize 4 requiring a storage size of 12 are out of bounds for storage of s

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.