Giter Club home page Giter Club logo

unity-technologies / peoplesanspeople Goto Github PK

View Code? Open in Web Editor NEW
294.0 26.0 33.0 456.88 MB

Unity's privacy-preserving human-centric synthetic data generator

Home Page: https://unity-technologies.github.io/PeopleSansPeople/

License: Apache License 2.0

Shell 1.76% HTML 0.23% C# 85.63% Mathematica 11.78% HLSL 0.60%
owner-machine-learning billing-5160 applied-ml-research computer-vision human-centric-ml deep-learning synthetic-data synthetic-data-generation synthetic-datasets synthetic-dataset-generation

peoplesanspeople's Introduction

PeopleSansPeople: A Synthetic Data Generator for Human-Centric Computer Vision

license badge   unity 2020.3.20f1   perception 0.9.0-preview.2

📣 PSP-HDRI+ accepted at ICML 2022

❇️ PSP-HDRI+: A Synthetic Dataset Generator for Pre-Training of Human-Centric Computer Vision Models

PSP-HDRI+ Paper     Poster     PSP-HDRI+ Demo Video

Salehe Erfanian Ebadi, Saurav Dhakad, Sanjay Vishwakarma, Chunpu Wang, You-Cyuan Jhang,
Maciek Chociej, Adam Crespi, Alex Thaman, Sujoy Ganguly
Unity Technologies

Citation

@inproceedings{ebadi2022psphdri,
      title={PSP-HDRI+: A Synthetic Dataset Generator for Pre-Training of Human-Centric Computer Vision Models},
      author={Erfanian Ebadi, Salehe and Dhakad, Saurav and Vishwakarma, Sanjay and Wang, Chunpu and Jhang, You-Cyuan and 
      Chociej, Maciek and Crespi, Adam and Thaman, Alex and Ganguly, Sujoy},
      booktitle={First Workshop on Pre-training: Perspectives, Pitfalls, and Paths Forward at ICML 2022},
      year={2022},
}

❇️ PeopleSansPeople v1.0

Paper     macOS and Linux Binaries     Demo Video

Salehe Erfanian Ebadi, You-Cyuan Jhang, Alex Zook, Saurav Dhakad,
Adam Crespi, Pete Parisi, Steve Borkman, Jonathan Hogins, Sujoy Ganguly
Unity Technologies

Summary

  • We introduce PeopleSansPeople, a human-centric privacy-preserving synthetic data generator with highly parametrized domain randomization.
  • PeopleSansPeople contains simulation-ready 3D human assets, a parameterized lighting and camera system, and generates 2D and 3D bounding box, instance and semantic segmentation, and COCO pose labels.
  • We use naïve ranges for the domain randomization and generate a synthetic dataset with labels.
  • We provide some guarantees and analysis of human activities, poses, and context diversity on our synthetic data.
  • We found that pre-training a network using synthetic data and fine-tuning on target real-world data (COCO-person train) resulted in few-shot transfer keypoint AP of 60.37 ± 0.48 (COCO test-dev2017) outperforming models trained with the same real data alone (keypoint AP of 55.80) and pre-trained with ImageNet (keypoint AP of 57.50).
Abstract (click to expand) In recent years, person detection and human pose estimation have made great strides, helped by large-scale labeled datasets. However, these datasets had no guarantees or analysis of human activities, poses, or context diversity. Additionally, privacy, legal, safety, and ethical concerns may limit the ability to collect more human data. An emerging alternative to real-world data that alleviates some of these issues is synthetic data. However, creation of synthetic data generators is incredibly challenging and prevents researchers from exploring their usefulness. Therefore, we release a human-centric synthetic data generator PeopleSansPeople which contains simulation-ready 3D human assets, a parameterized lighting and camera system, and generates 2D and 3D bounding box, instance and semantic segmentation, and COCO pose labels. Using PeopleSansPeople, we performed benchmark synthetic data training using a Detectron2 Keypont R-CNN variant. We found that pre-training a network using synthetic data and fine-tuning on target real-world data (few-shot transfer to limited subsets of COCO-person train) resulted in a keypoint AP of 60.37 ± 0.48 (COCO test-dev2017) outperforming models trained with the same real data alone (keypoint AP of 55.80) and pre-trained with ImageNet (keypoint AP of 57.50). This freely-available data generator should enable a wide range of research into the emerging field of simulation to real transfer learning in the critical area of human-centric computer vision.

Synthetic Data Generator

PeopleSansPeople executable binaries come with:

  • 28 parameterized simulation-ready 3D human assets
  • 39 diverse animation clips
  • 21,952 unique clothing textures (from 28 albedos, 28 masks, and 28 normals)
  • rameterized lighting
  • Parameterized camera system
  • Natural backgrounds
  • Primitive occluders/distractors

A comparison between our benchmark generated data with PeopleSansPeople and the COCO person dataset.

#train#validation#instances (train)#instances w/ kpts (train)
COCO64,1152,693262,465149,813
PeopleSansPeople490,00010,000>3,070,000>2,900,000

Generated Data and Labels

PeopleSansPeople produces the following types of labels in COCO format: 2D bounding box, human keypoints, semantic and instance segmentation masks. In addition PeopleSansPeople generates 3D bounding boxes which are provided in Unity's Perception format.

           
Generated image and corresponding labels: 2D bounding box, human keypoints, semantic and instance segmentation masks in COCO format. 3D bounding box annotations are provided separately in Unity Perception format.

Benchmark Results

Here we show a comparison of gains obtained from pre-training on our synthetic data and fune-tuning on COCO person class over training from scratch and pre-training with ImageNet. For each dataset size we show the results of the best performing model.

bbox AP (COCO person val2017)
size of real datascratchw/ ImageNetw/ PeopleSansPeopleΔ / scratchΔ / ImageNet
64113.8227.6142.58+28.76+14.97
641137.8242.5349.04+11.22+6.51
3205752.1552.7555.04+2.89+2.29
6411556.7356.0957.44+0.71+1.35
keypoint AP (COCO person val2017)
size of real datascratchw/ ImageNetw/ PeopleSansPeopleΔ / scratchΔ / ImageNet
6417.4723.5146.40+38.93+22.89
641139.4845.9955.21+15.73+9.22
3205758.6860.2863.38+4.70+3.10
6411565.1265.1066.83+1.71+1.73
keypoint AP (COCO test-dev2017)
size of real datascratchw/ ImageNetw/ PeopleSansPeopleΔ / scratchΔ / ImageNet
6416.4021.9044.43+38.03+22.53
641137.3044.2052.70+15.40+8.50
3205755.8057.5060.37+4.57+2.87
6411562.0062.4063.47+1.47+1.07

Simulated Clothing Appearance Diversity



Top row: our 3D human assets from RenderPeople with their original clothing textures.
Bottom row: using our Shader Graph randomizers we are able to swap out clothing texture albedos, masks, and normals, yielding very diverse-looking textures on the clothing, without needing to swap out the clothing items themselves.

Additional examples







Additional images generated with PeopleSansPeople. Notice the high diversity of lighting, camera perspectives, scene background and occluders, as well as human poses, their proximity to each other and the camera, and the clothing texture variations. Our domain randomization is done here with naïvely-chosen ranges with uniform distributions. It is possible to drastically change the look and the structure of the scenes by varying the randomizer parameters.

Citation

@article{ebadi2021peoplesanspeople,
      title={PeopleSansPeople: A Synthetic Data Generator for Human-Centric Computer Vision}, 
      author={Erfanian Ebadi, Salehe and Jhang, You-Cyuan and Zook, Alex and Dhakad, Saurav and 
      Crespi, Adam and Parisi, Pete and Borkman, Steve and Hogins, Jonathan and Ganguly, Sujoy},
      year={2021},
      eprint={2112.09290},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

Source code

Unity Environment Template here

macOS and Linux binaries here

Related links

PeopleSansPeople in the press

License

PeopleSansPeople is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

peoplesanspeople's People

Contributors

repodb[bot] avatar salehe-ee avatar saurav-d avatar zook-unity 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

peoplesanspeople's Issues

39 Animation clips ?

Thank you for sharing this great work first !.

I opened the project but I couldn't find the 39 animation clips so I wonder where I can find them.

I only found walk, running, jump, and idle animation clips.

Thank you.

Getting nothing but blank images on Linux

Linux Ubuntu 22.04
nVidia CUDA 11.6
RTX 2080
Vulkan installed
nVidia-smi working

Downloaded the PeopleSans files into a test folder in my Documents folder as stated here:
https://github.com/Unity-Technologies/PeopleSansPeople/tree/main/peoplesanspeople_binaries

Downloaded the Standalone64 into the same folder, unzipped, and it placed everything in a build folder in the PeopleSans temporary directory.

Ran command:

bash run.sh -t Linux -d /home/USER/path-to-PeopleSans/build/StandaloneLinux64 -f /home/USER/path-to-PeopleSans/scenarioConfiguration.json -l /home/USER/path-to-PeopleSans/build/StandaloneLinux64/log.txt

Generated 1.3 million blank images, segmentations, etc.

There are files in the dataset folder with JSON in it.

Log was never created.

Not sure what might be happening here.

Got blank image after running the script?

Hi, thanks for the great work! I tried to download the macOS binary and run the run.sh script. After that, I got blank RGB images and segmentation masks. Could you give me some hints to successfully run the code? Thanks!

Suggestion : Guide to add custom object

I am not familiar with Unity. But I see that if there is guide to allow us to add custom objects. It will definite help researcher to build different artificial datasets.

Writing one's own script to spawn humans at user-defined poses

Hi, thanks for the great project!

I'm wondering what's the best entry point to writing one's own script to generate images with self-defined human models/poses, and potentially with self-defined objects in the scenes.

The existing randomization code is really cool. Just wonder whether one can do more control in there.

Thanks!

Generate data with OpenPose-format keypoints

Hi authors,
Thanks for your great work!
I can follow instructions to generate data in COCO format with Linux binary file.

However, I would like to generate labels with OpenPose-format keypoints (25 keypoints) instead of COCO format (17 keypoints).
How can I do this?

Thanks,
Thuy

Instance segmentation in COCO format

Great project, glad I found it, very helpful! I am wondering if you could point me into the right direction regarding converting instance segmentation masks into the COCO format?

In your README it says:

Generated image and corresponding labels: 2D bounding box, human keypoints, semantic and instance segmentation masks in COCO format.

However in your repo I did not find scripts to convert Unity Perception instance segmentation data to the COCO format. I thought it was done within Unity, however again, briefly skimming in the /Scripts folder I did not found anything related to that.

Whether Unity Perception nor Data Insights python package provide functionality to convert instance segmentation masks to the COCO format.
Any advice or help is appreciated! Thanks.

Issue with importing animations to unity

I am using the peoplesanspeople_unity_env

There are 8 Unity-owned animation clips which work fine with animation randomizer.

But when I use animation from mixamo with animation randomizer, I see that only first frame of the animation is used in the generated images.

Is normal animation import using .fbx file sufficient ?

keypoints data

I want to know if 3D information of human key points can be generated in the synthesized dataset?

Keypoint visualization question

image

In this figure, it seems like keypoints for person_16 and person_24 are not accurately labeled. It's just a visualization issue?

RenderPeople asset links and how to rig them

Thanks for sharing your awesome work.
In the paper, you state that PSP uses RenderPeople human models and added custom rigs to animate them. Could you provide the links to those assets? Would the models be simulation ready after applying animations with mixamo?

Section 3.1 in the paper:

PEOPLESANSPEOPLE has a set of 28 scanned 3D human models from RenderPeople [36]. These
models are ethnically- and age-diverse, fully re-topologized, rigged, and skinned with high-quality
textures (Fig 2a). We added a character control rig to pose or animate them with motion capture data

Change image texture background/objects

Hi contributors,
Thanks all for the usefull tools generation data!
Do we have any api/config to change the background/objects image?
could you share how to change it if it available?

Changing clothing color in the provided unity template

Am I right to understand that the template provided doesn't change clothing color.

I am not able to comprehend the code in the Simulation Scenario ShaderGraphTextureRandomizer https://github.com/Unity-Technologies/PeopleSansPeople/blob/1e8f44922b8edaf850f722f7efb7afe41c0a435d/peoplesanspeople_unity_env/Assets/Scripts/ShaderGraphRandomizer/ShaderGraphTextureRandomizer.cs .

Excerpt of the code I am trying to understand.

`

        foreach (var tag in characterMaterial.categories)
        {
            Material material = tag.Item1;
            material.SetTexture("Texture2D_D27E6D66", albedoTexture.Sample());
            material.SetTexture("Texture2D_A2664602", maskTexture.Sample());
            material.SetTexture("Texture2D_A8936B7E", normalTexture.Sample());
            material.SetFloat("Vector1_46FBBF67", m_FloatParameter.Sample());
            material.SetFloat("Vector1_4EA3F53", m_FloatParameter.Sample());

        }

`

I see that there is no usage of Randomizer tag.

Can anyone please help me figure out where is the characterMaterial used.
Is it used in some other Randomizer or is the material configured in the prefabs ?

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.