erlerphilipp / pix2model Goto Github PK
View Code? Open in Web Editor NEWPhotogrammetry for everyone!
Home Page: https://pix2model.cg.tuwien.ac.at/
License: MIT License
Photogrammetry for everyone!
Home Page: https://pix2model.cg.tuwien.ac.at/
License: MIT License
New develop environment without certificates and custom port which is reachable inside the TU Netz,
send_stop_job_command responds with an job-not-found exception, which is due to a different naming scheme for the jobs compared to the folders that are created for a job (i think)
Currently, user get this message after starting a job:
When they close the tab, the UID is gone for good and the job wastes resources. Here are a few ideas to prevent this:
I would prefer a combination of 2. and 3. (1. would be obsolete). But this requires:
You can click on the drop area to upload more images while the upload of one job runs. However, the additional images are not enqueued with the other ones. If you click again on submit, the second ones are submitted to a another job.
Looks like it works but it's a strange mixup of separate jobs. Also, only one result link is show. The easiest and best solution is probably to disable additional file drops while the upload runs.
my brother uploaded images, probably with the "convert to pointcloud" option. the pointcloud appears correctly in the editor but i get an error when i click on "reconstruct mesh". no info is given in the error-log. manual reconstruction with meshlab works, so i suspect an interface error.
http://netidee.cg.tuwien.ac.at/?id=e6f3d1ee-5eb2-4492-b8a0-0ba2d98d718f
"Programmiere einen Prozess, der
"Programmiere einen Webservice
Check if the automatic removal of old data works reliable
Seems like the automatic SSL certificate renewal with certbot fails:
"Failed to renew certificate netidee.cg.tuwien.ac.at with error: Some challenges have failed."
Server umbauen, damit die einzelnen Pipeline-Schritte getrennt laufen können. Z.B. je ein Microservice (Docker-Container) pro Schritt. Warteschlange mit Schätzung der Wartezeit. Mehrere Prozesse gleichzeitig erlauben, aber nur 1 Rekonstruktion pro Grafikkarte. Upload von Punktwolken erlauben (SFM überspringen). Fortschritt und Position in Wartenschlange auf Website anzeigen.
In the default pipeline with our test data (100 images), most of the computation time is spent with Meshing and Texturing. We can expect a significant speed-up by replacing some of the steps, roughly 25 min -> 10min. Also, there are newer methods available that should improve the quality.
This will be the improved pipeline:
Step | Node Type | Duration | Critical for Duration | Critical for Quality | Comment |
---|---|---|---|---|---|
1 | Camera Init | 1s | |||
1 | Feature Extraction | 1m | + | ++ | |
1 | Image Matching | 1s | |||
1 | Feature Matching | 2m | ++ | + | |
1 | Structure from Motion | 4m | ++++ | +++ | |
1 | Prepare Dense Scene | 20s | |||
1 | Depth Map | 20s | + | ||
1 | Depth Map Filter | 15s | + | ||
Editor | +++ | ||||
2 | SfM Transform | 10s? | |||
2 | Normal Estimation | 1m? | + | + | Hemisphere normals from camera poses |
2 | Meshing | 2m | ++ | ++ | PPSurf |
2 | Mesh Filtering | 30s | Mesh decimation (quadric?) | ||
2 | UV Unwrap | 2m? | ++ | + | By Meshlab? |
2 | Texturing | 3m? | +++ | ++ | Use Uvs from previous step |
Changes are only in Step 2 (after editor):
Implement the default Meshroom Pipeline with only minor changes. Minor changes mean the editor must still work and some parameters should be changed.
AliceVision binaries need to be called like from Meshroom. This will require adapting the lib path before the CLI calls:
cmdBase = '**export LD_LIBRARY_PATH**=$LD_LIBRARY_PATH:{}/aliceVision/lib'.format(absComputePath) + ' && {}/aliceVision/bin/aliceVision_convertSfMFormat'.format(absComputePath)
Adapting the default pipeline to the editor:
Requires Meshroom Docker #162
Read this: https://sketchfab.com/blogs/community/tutorial-meshroom-for-beginners/
Here are some rough measurements and parameter suggestions:
Step | Node Type | Duration | Critical for Duration | Critical for Quality | Parameters |
---|---|---|---|---|---|
1 | Camera Init | 1s | |||
1 | Feature Extraction | 1m | + | ++ | describer quality high, force CPU? check issues |
1 | Image Matching | 1s | method?, advanced settings -> min for voc tree, sequential neighbors; max descriptors 0, Nb matches 0 | ||
1 | Feature Matching | 2m | ++ | + | cascade hashing l2; guided matching, cross matching, known poses geometric error max 0 |
1 | Structure from Motion | 4m | ++++ | +++ | Scaling on |
1 | Prepare Dense Scene | 20s | no save meta data? | ||
1 | Depth Map | 20s | + | downscale 1? (longer meshing) | |
1 | Depth Map Filter | 15s | + | number of nearest cameras 10 -> 15? | |
Editor | +++ | +++ | Need to switch from cropping area to will-be-reconstructed area | ||
2 | SfM Transform | 10s? | Apply Editor transformations (check if non-uniform scaling is supported) | ||
2 | Meshing | 7m | +++++++ | ++ | use custom bounding box from editor; min step 1, margin init (final) coef 1; densify front/back 5 |
2 | Mesh Filtering | 30s | |||
2 | Texturing | 9m | ++++++++++ | ++ | padding, multiband high freq > low freq, subdiv target ration 1 |
Upload images one after the other to avoid multi-processing overhead? Is this a relevant issue for the server?
Add link to Meshroom test data: https://github.com/alicevision/dataset_monstree
Add elephant test data
Meshroom / AliceVision has many parameters for each step. We need to find out which ones are crucial and find some good settings for our application. The focus is on speed, and quality second. Let's try to get the best possible quality within ~20 min compute time.
The most relevant steps to speed up are meshing and texturing.
Read this: https://sketchfab.com/blogs/community/tutorial-meshroom-for-beginners/
add a link to this repo's issues to the website so that users can notify us when the server is broken.
maybe next to privacy/impressum?
Clarify:
@akiwa please comment on these ideas / questions
Check dependabot updates
Try on dev branch
There is a new release of PyMeshlab: cnr-isti-vclab/meshlab#1218
possibility to select number of threads in filter screened poisson
@thefloff Is this worth a try? Was it single threaded before or used all available cores?
Be careful with the update, they apparently changed the filter names.
Austria / EU apparently requires a Accessibility Statement.
DOS verhindern, indem häufige IP-Addressen blockiert werden. Admin-Zugang, um einzelne Prozesse beenden zu können und Parameter (z.B. Größen-Limits und Grid-Resolution) für einzelne Nutzer ändern zu können. Login mit temporären Login-Daten. Login-Daten und alle anderen Daten auf Knopfdruck sofort von Server löschen, sonst nach 1 Tag. Auf Wunsch Email senden, wenn das Ergebnis bereit zum Download ist. Server-Telemetrie und Email, wenn der Server nicht mehr erreichbar ist (status-checker Prozess auf anderen CG Server?).
"Programmiere einen Prozess, der
We want to test changes on the server using the latest commit of the develop branch.
This is partially implemented but not ready yet. A key problem is dealing with two different servers on separate GPUs but they need to share parts of the system.
"Basic editing von Punktwolke und/oder Mesh:
Possible speed-up with minor quality impact -> low priority
Check if this is even necessary. MVS in AliceVision (Prepare Dense Scene, Depth Map, Depth Map Filter) doesn't take very long with ~1min.
Meshing should be faster too, which could make it more relevant. AliceVision's Meshing will be impacted a lot by using only the sparse point cloud. So we should do this only after switching to our own meshing.
probably related to #133
"Oberflächenrekonstruktion durch Points2Surf ersetzen.
Kleinere Änderungen sind nötig:
"Wenn der Server im Testbetrieb mit den einfachen Algorithmen läuft, erste Tests mit Bekannten und Verwandten machen.
Klären, ob die Ergebnisse die Erwartungen erfüllen und warum. Tests mit verschiedenen Mengen von Fotos, verschiedene Qualität, Lichtverhältnisse, Objekte etc. Richtlinien für nötige Anzahl Fotos suchen. Gefundene Probleme entweder gleich beheben oder in den Workplan eintragen.
Kontakt zu Künstlern, Museen etc. herstellen und testen lassen.
Zwischenbericht schreiben und 2. Rate beantragen
"Genauere Recherche zusammen mit Stefan, um die beste Variante von SFM für die in den Tests gefundenen Bedingungen auszuwählen.
Implementierungsaufwand abwägen.
Implementieren, evtl. in C++, sonst wahrscheinlich in Python."
Upload elephant test data and Meshroom project
the upload field is deaktivated after klicking on submit, even when submitting no images. don't do the deactivation if zero images are selected?
Minimize interruptions caused by CI deploying a new commit.
Best idea so far: make CI wait until the tasks queue is done.
Open problem: this will take a while if the server is busy.
"Nearest Neighbor Vertex Colors (NNVC) ist sehr einfach und wird bei kleineren Grid-Resolutions schlechte Ergebnisse liefern. Mit Philipp, Stefan und/oder Michi absprechen, wie man das verbessern kann. Mögliche Lösungen:
"Programmiere einen Prozess, der
"Hochgeladene Fotos anzeigen, Punktwolken und Meshes (mit WebGL) anzeigen.
Extra Viewer, mit dem man bereits runtergeladene Meshes anzeigen kann."
Save error log to textfile in output folder
I moved browser tab with active editor from one screen to another. The gizmo doesn't match the cursor position anymore.
Seems like some cursor offset is not updated. DPI scaling and different resolutions might play a role.
"Zusammen mit den Technikern des CG Instituts die Hardware besprechen. Ca. Ryzen 7, 2 x RTX 3070, 64 GB RAM.
Domain für den Webservice absprechen und von den Technikern einrichten lassen. Es wird vielleicht eine Sub-Domain wie
images2mesh.cg.tuwien.ac.at
Bei Lieferschwierigkeiten evtl. einen alten Rechner temporär verwenden.
SSH-Zugang für Projektmitarbeiter?"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.