A fast python implementation of DTU MVS 2014 evaluation

Overview

DTUeval-python

A python implementation of DTU MVS 2014 evaluation. It only takes 1min for each mesh evaluation. And the gap between the two implementations is negligible.

Setup and Usage

This script requires the following dependencies.

numpy open3d scikit-learn tqdm scipy multiprocessing argparse

Download the STL point clouds and Sample Set and prepare the ground truth folder as follows.

<dataset_dir>
- Points
    - stl
        - stlxxx_total.ply
- ObsMask
    - ObsMaskxxx_10.mat
    - Planexxx.mat

Run the evaluation script (e.g. scan24, mesh mode)

python eval.py --data <input> --scan 24 --mode mesh --dataset_dir <dataset_dir> --vis_out_dir <out_dir_for_visualization>

Discussion on randomness

There is randomness in point cloud downsampling in both versions. It iterates through the points and delete the points with distance < 0.2. So the order of points matters. We randomly shuffle the points before downsampling.

Comparison with the official script

We evaluate a set of meshes from Colmap and compare the results. We run our script 10 times and take the average.

diff/official official py_avg py_std/official
24 0.0184% 0.986317 0.986135 0.0108%
37 0.0001% 2.354124 2.354122 0.0091%
40 0.0038% 0.730464 0.730492 0.0104%
55 0.0436% 0.530899 0.531131 0.0104%
63 0.0127% 1.555828 1.556025 0.0118%
65 0.0409% 1.007686 1.008098 0.0080%
69 0.0082% 0.888434 0.888361 0.0125%
83 0.0207% 1.136882 1.137117 0.0096%
97 0.0314% 0.907528 0.907813 0.0089%
105 0.0129% 1.463337 1.463526 0.0118%
106 0.1424% 0.785527 0.786646 0.0151%
110 0.0592% 1.076125 1.075488 0.0132%
114 0.0049% 0.436169 0.436190 0.0074%
118 0.1123% 0.679574 0.680337 0.0099%
122 0.0347% 0.726771 0.726519 0.0178%
avg 0.0153% 1.017711 1.017867

Error visualization

vis_xxx_d2s.ply and vis_xxx_s2d.ply are error visualizations.

  • Blue: Out of bounding box or ObsMask
  • Green: Errors larger than threshold (20)
  • White to Red: Errors counted in the reported statistics
You might also like...
Fast STL (ASCII & Binary) importer for Blender

blender-fast-stl-importer Fast STL (ASCII & Binary) importer for Blender based on https://en.wikipedia.org/wiki/STL_(file_format) Technical notes: flo

A blazing fast mass certificate generator script for the community ⚡
A blazing fast mass certificate generator script for the community ⚡

A simple mass certificate generator script for the community ⚡ Source Code · Docs · Raw Script Docs All you need Certificate Design a simple template

Ballcone is a fast and lightweight server-side Web analytics solution.
Ballcone is a fast and lightweight server-side Web analytics solution.

Ballcone Ballcone is a fast and lightweight server-side Web analytics solution. It requires no JavaScript on your website. Screenshots Design Goals Si

dragmap-meth: Fast and accurate aligner for bisulfite sequencing reads using dragmap

dragmap_meth (dragmap_meth.py) Alignment of BS-Seq reads using dragmap. Intro This works for single-end reads and for paired-end reads from the direct

🦠 A simple and fast (< 200ms) API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak.
🦠 A simple and fast ( 200ms) API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak.

🦠 A simple and fast ( 200ms) API for tracking the global coronavirus (COVID-19, SARS-CoV-2) outbreak. It's written in python using the 🔥 FastAPI framework. Supports multiple sources!

A simple, fantasy and fast note taking program.
A simple, fantasy and fast note taking program.

notes A simple, fantasy and fast note taking program Installation This program supposed to run in linux and may have some bugs on windows or any other

Implementation of the Angular Spectrum method in Python to simulate Diffraction Patterns
Implementation of the Angular Spectrum method in Python to simulate Diffraction Patterns

Diffraction Simulations - Angular Spectrum Method Implementation of the Angular Spectrum method in Python to simulate Diffraction Patterns with arbitr

Python implementation of the ASFLIP advection method
Python implementation of the ASFLIP advection method

This is a python implementation of the ASFLIP advection method . We would like to hear from you if you appreciate this work.

A Gura parser implementation for Python

Gura parser This repository contains the implementation of a Gura format parser in Python. Installation pip install gura-parser Usage import gura gur

Comments
  • memory error

    memory error

    Hi, thanks for the code. just tried to run the code and set it to pcd instead of mesh.

    But i encountered a memory error. Any suggestions?

    Many thansks

    error File "sklearn\neighbors_binary_tree.pxi", line 1591, in sklearn.neighbors._kd_tree.BinaryTree.query_radius File "sklearn\neighbors_binary_tree.pxi", line 1547, in sklearn.neighbors._kd_tree.BinaryTree.query_radius MemoryError downsample pcd: 25%|█████████████████████████████▊ | 2/8 [07:27<22:21, 223.50s/it]

    also, i found the scale of point clouds produced by colmap is totally different to the dtu dataset. wondering if you preprocessed the colmap dense reconstruction or scale it up before using the code?

    opened by TWang1017 2
  • Error in .ply

    Error in .ply

    TriangleMesh with 51069949 points and 0 triangles. sample pcd from mesh: 11%|█████ | 1/9 [00:07<01:02, 7.76s/it]Traceback (most recent call last): File "pc_eval.py", line 70, in new_pts = np.concatenate(new_pts, axis=0) File "<array_function internals>", line 180, in concatenate ValueError: need at least one array to concatenate

    Hi, I use IterMVS (CVPR 2022) to generate .ply, however during the evaluation, I encountered an error that there is no triangles, how can I solve it?

    opened by gangweiX 2
  • How to obtain accuracy / completeness / overall?

    How to obtain accuracy / completeness / overall?

    Nice code ! 1.Does the output mean_d2s, mean_s2d, overall refer to accuracy(mm), completeness(mm), overall(mm) in most paper? 2.Besides, could you explain the metric

    diff/official | official | py_avg | py_std/official -- | -- | -- | --

    more specifically?

    opened by AddASecond 4
Owner
null
Team collaborative evaluation tracker.

Team collaborative evaluation tracker.

null 2 Dec 19, 2021
Modeval (or Modular Eval) is a modular and secure string evaluation library that can be used to create custom parsers or interpreters.

modeval Modeval (or Modular Eval) is a modular and secure string evaluation library that can be used to create custom parsers or interpreters. Basic U

null 2 Jan 1, 2022
A fast Python in-process signal/event dispatching system.

Blinker Blinker provides a fast dispatching system that allows any number of interested parties to subscribe to events, or "signals". Signal receivers

jason kirtland 1.4k Dec 31, 2022
An ultra fast cross-platform multiple screenshots module in pure Python using ctypes.

Python MSS from mss import mss # The simplest use, save a screen shot of the 1st monitor with mss() as sct: sct.shot() An ultra fast cross-platfo

Mickaël Schoentgen 799 Dec 30, 2022
Bionic is Python Framework for crafting beautiful, fast user experiences for web and is free and open source.

Bionic is Python Framework for crafting beautiful, fast user experiences for web and is free and open source. Getting Started This is an example of ho

null 14 Apr 10, 2022
Fast Base64 encoding/decoding in Python

Fast Base64 implementation This project is a wrapper on libbase64. It aims to provide a fast base64 implementation for base64 encoding/decoding. Insta

Matthieu Darbois 96 Dec 26, 2022
Python binding to rust zw-fast-quantile

zw_fast_quantile_py zw-fast-quantile python binding Installation pip install zw_fast_quantile_py Usage import zw_fast_quantile_py

Paul Meng 1 Dec 30, 2021
Python Library to get fast extensive Dummy Data for testing

Dumda Python Library to get fast extensive Dummy Data for testing https://pypi.org/project/dumda/ Installation pip install dumda Usage: Cities from d

Oliver B. 0 Dec 27, 2021
A Pythonic Data Catalog powered by Ray that brings exabyte-level scalability and fast, ACID-compliant, change-data-capture to your big data workloads.

DeltaCAT DeltaCAT is a Pythonic Data Catalog powered by Ray. Its data storage model allows you to define and manage fast, scalable, ACID-compliant dat

null 45 Oct 15, 2022
A webapp for taking fast notes, designed for business, school, and collaboration with groups.

JOTS Journal of the Session A webapp for taking fast notes, designed for business, school, and collaboration with groups.

Zebadiah S. Taylor 2 Jun 10, 2022