MCPcopy Index your code
hub / github.com/astaka-pe/Dual-DMP

github.com/astaka-pe/Dual-DMP @v1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0 ↗ · + Follow
59 symbols 185 edges 13 files 17 documented · 29%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Dual Deep Mesh Prior [ECCV2022]

Paper | Supp | Poster

The official implementation of Learning Self-prior for Mesh Denoising using Dual Graph Convolutional Networks, ECCV2022.

A deep-learning framework for mesh denoising from a single noisy input, where two graph convolutional networks are trained jointly to filter vertex positions and facet normals apart.

Method Overview

Results


Getting Started

0. Environments

NVIDIA GeForce TITAN X 12GB

python==3.10
torch==1.13.1
torch-geometric==2.2.0

1. Installation

git clone https://github.com/astaka-pe/Dual-DMP
cd Dual-DMP
docker image build -t astaka-pe/ddmp .
docker run -itd --gpus all -p 8008:8008 --name ddmp -v .:/work astaka-pe/ddmp
docker exec -it ddmp /bin/bash

2. Preparation

The Dataset is distributed as a zip file. Please unzip and place it under Dual-DMP directory.

unzip datasets.zip

3. Training

  • CAD model
python3 main.py -i datasets/fandisk --k1 3 --k2 0 --k3 3 --k4 4 --k5 2 --bnfloop 5
  • Non-CAD model
python3 main.py -i datasets/ankylosaurus
  • Real-scanned model
python3 main.py -i datasets/pyramid --iter 50

Outputs will be generated under datasets/{model-name}/output/ with their MAD scores.


Appendix

Training with your own data

Place a noisy mesh and a ground-truth mesh under datasets/{model-name}/ . - Noisy mesh: {model-name}_noise.obj - Ground-truth mesh: {model-name}_gt.obj

Run

python3 preprocess/preprocess.py -i datasets/{model-name}

for edge-based normalization and creating initial smoothed mesh.

Finally, run

python3 main.py -i datasets/{model-name}

You should set appropriate weights as discribed in the paper.

Training without using ground-truth data

After runnning preprocess.py, run

python3 main4real.py -i datasets/{model-name}

Creating noisy data

Run

python3 preprocess/noisemaker.py -i datasets/{model-name}/{model-name}.obj --level {noise-level}

Citation

@InProceedings{hattori2022ddmp,
  author        = {Hattori, Shota and Yatagawa, Tatsuya and Ohtake, Yutaka and Suzuki, Hiromasa},
  title         = {Learning Self-prior for Mesh Denoising using Dual Graph Convolutional Networks},
  booktitle     = {Proceedings of the European Conference on Computer Vision (ECCV)},
  year          = {2022},
  doi           = {10.1007/978-3-031-20062-5_21}
}

Core symbols most depended-on inside this repo

save
called by 9
util/mesh.py
compute_face_normals
called by 8
util/mesh.py
squared_norm
called by 3
util/loss.py
compute_face_center
called by 3
util/mesh.py
setCurrentValue
called by 2
docs/script.js
setCurrentValue2
called by 2
docs/script.js
normalize
called by 2
preprocess/noisemaker.py
gausian_noise
called by 2
preprocess/noisemaker.py

Shape

Function 38
Method 17
Class 4

Languages

Python93%
TypeScript7%

Modules by API surface

util/mesh.py13 symbols
util/loss.py13 symbols
util/networks.py6 symbols
preprocess/noisemaker.py6 symbols
preprocess/preprocess.py4 symbols
docs/script.js4 symbols
util/models.py3 symbols
util/datamaker.py3 symbols
main4real.py2 symbols
main.py2 symbols
check/mad_checker.py2 symbols
check/hausdorff_checker.py1 symbols

For agents

$ claude mcp add Dual-DMP \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page