Giter Site home page Giter Site logo

dy3d's Introduction

Doodle Your 3D: From Abstract Freehand Sketches to Precise 3D Shapes [CVPR 2024]

Banner GIF

In this paper, we democratise 3D content creation, enabling precise generation of 3D shapes from abstract sketches while overcoming limitations tied to drawing skills. We introduce a novel part-level modelling and alignment framework that facilitates abstraction modelling and cross-modal correspondence. Leveraging the same part-level decoder, our approach seamlessly extends to sketch modelling by establishing correspondence between CLIPasso edgemaps and projected 3D part regions, eliminating the need for a dataset pairing human sketches and 3D shapes. Additionally, our method introduces a seamless in-position editing process as a byproduct of cross-modal part-aligned modelling. Operating in a low-dimensional implicit space, our approach significantly reduces computational demands and processing time.

Dataset:

We synthesize our own dataset by :

  • Inverting each shape with SPAGHETTI, which gives us a single latent $\in \mathbb{R}^{m\times d}$ for each shape. Each latent consists of $m$ features that correspond to $m$ parts that the shape has been divided into.
  • We align these latents so that they have shape-parts similarly indexed - as samples_final.npy.
  • Next, we create sketches of 3D shapes by rendering them with pre-defined cameras and processing them with CLIPasso.
  • We segment 3D meshes with our part-disentangled latent representation, and render these segments with same camera positions. This gives us a segment map overlay over each sketch.

Sample data is available in data/sample/

Training

The training is a two stage process: first the sketch segmentation network is trained and next, the diffusion model for conditional shape generation is trained. To train these networks, the dataset has to be created: in the form of sketches of 3D shape projections, and their segment maps.

To train the segmentation network, run:

sh scripts/segment_train.sh

To precompute sketch encodings (for fast diffusion model training), run:

sh scripts/precompute.sh

To train the diffusion model, run:

sh scripts/diffusion_train.sh

To scale training, change the size parameter of the diffusion model. As per my pre-liminary tests, increasing size to 1024 results in a 73M param diffusion model, but the shape quality goes up.

dy3d's People

Contributors

hmrishavbandy avatar

Stargazers

 avatar KNOWAY avatar Muhammad Taimur Aamir avatar Yongjia Ma avatar ringsaturn avatar Jiale Xu avatar  avatar  avatar  avatar Albhox avatar LALaLaLA avatar Gregor Kobsik avatar Junjie Wang avatar  avatar  avatar Pinaki Nath Chowdhury avatar Ng Kam Woh avatar Qu Zhiyu avatar

Watchers

Kostas Georgiou avatar  avatar Jin Yao avatar

Forkers

albertotono

dy3d's Issues

samples_files.npy not given

In the second point of the repo there is a sample_files.npy, which aligns shape and parts. However the file is not present in the repo it self. Can you please provide the script to produce this sample_files.npy?

[Reproducibility] Dataset Release

Will you release the preprocessed dataset to reproduce your results?

currently your code (plain d'load and following your training steps) gives me the following error:
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/linux_store/Chair_Processed/03001627/

[Reproducibility] Python Environment

Could you please dump your python environment with all dependencies and versions of used libraries for future reproducibility.
Sincerely, Gregor

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.