Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Distributed and Graph-based Structure from Motion. This project includes the official implementation of our Pattern Recognition 2020 paper: Graph-Based Parallel Large Scale Structure from Motion.
| Date | Stars |
|---|---|
| 2026-07-24 | 421 |
| 2026-07-25 | 421 |
| 2026-07-28 | 421 |
| 2026-07-30 | 421 |
| 2026-08-06 | 421 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# DAGSfM: Distributed and Graph-Based Structure-from-Motion Library
If you use this project for your research, please cite:
```
@article{article,
author = {Chen, Yu and Shen, Shuhan and Chen, Yisong and Wang, Guoping},
year = {2020},
month = {07},
pages = {107537},
title = {Graph-Based Parallel Large Scale Structure from Motion},
journal = {Pattern Recognition},
doi = {10.1016/j.patcog.2020.107537}
}
```
```
@inproceedings{schoenberger2016sfm,
author={Sch\"{o}nberger, Johannes Lutz and Frahm, Jan-Michael},
title={Structure-from-Motion Revisited},
booktitle={Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2016},
}
```
## 2. How to Build
### 2.1 Required
#### Basic Requirements
```sh
sudo apt-get install \
git \
cmake \
build-essential \
libboost-program-options-dev \
libboost-filesystem-dev \
libboost-graph-dev \
libboost-regex-dev \
libboost-system-dev \
libboost-test-dev \
libeigen3-dev \
libsuitesparse-dev \
libfreeimage-dev \
libgoogle-glog-dev \
libgflags-dev \
libglew-dev \
qtbase5-dev \
libqt5opengl5-dev \
libcgal-dev \
libcgal-qt5-dev
```
#### [ceres-solver]()
```sh
sudo apt-get install libatlas-base-dev libsuitesparse-dev
git clone https://ceres-solver.googlesource.com/ceres-solver
cd ceres-solver
git checkout $(git describe --tags) # Checkout the latest release
mkdir build
cd build
cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make
sudo make install
```
#### [igraph](https://igraph.org)
[igraph](https://github.com/igraph/igraph) is used for `Community Detection` and graph visualization.
```sh
sudo apt-get install build-essential libxml2-dev
wget https://igraph.org/nightly/get/c/igraph-0.7.1.tar.gz
tar -xvf igraph-0.7.1.tar.gz
cd igraph-0.7.1
./configure
make
make check
sudo make install
```
#### [rpclib](https://github.com/qchateau/rpclib)
[rpclib](https://github.com/qchateau/rpclib) is a light-weight Remote Procedure Call (RPC) library. Other RPC libs, such as GRPC, etc, are not chosen by this project for flexibility and convinience.
```sh
git clone https://github.com/qchateau/rpclib.git
cd rpclib
mkdir build && cd build
cmake ..
make -j8
sudo make install
```
### 2.2 Optional
#### Python Modules (Python 2.7 only)
This module is used for similarity seaching, while needs more evaluation.
```sh
sudo pip install scikit-learn tensorflow-gpu==1.7.0 scipy numpy progressbar2
# if the version of scikit-learn is not compatible, upgrade it by:
# pip install --upgrade scikit-learn
```
### 2.3 Build DAGSfM
```sh
git clone https://github.com/AIBluefisher/DAGSfM.git
cd DAGSfM
mkdir build && cd build
cmake .. && make -j8
```
## 3. Usage
As our algorithm is not integrated in the `GUI` of `COLMAP`, the scripts to run the
distributed SfM are given (We hope there is anyone that is interested in integrating this pipeline into the GUI):
### Sequential Mode
```sh
sudo chmod +x scripts/shell/distributed_sfm.sh
./distributed_sfm.sh $image_dir $num_images_ub $log_folder $completeness_ratio
```
- ```$image_dir```: The directory that stores images
- ```$num_images_ub```: The maximum image number in each cluster. For example, ```80~120```.
- ```$log_folder```: The directory that stores the logs
- ```$completeness_ratio```: The ratio that measure the repeatitive rate of adjacent clusters.
### Distributed Mode
(1) At first, we need to establish the server for every worker:
```sh
cd build/src/exe
./colmap local_sfm_worker --output_path=$output_path --port=$your_port
```
The RPC server establishes on local worker would be listening on the given port, and keep waitting until master assigns a job. We can also establish multiple workers on one machine, but to notice that ***port number should be unique!***
(2) Then, the ip and port for every server should be written in a `config.txt` file.
The file format should follow:
```txt
server_num
ip1 port1 image_path1
ip2 port2 image_path2
... ...
```
**noteExcerpt of 11,861 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:19bcafee8b4a1dbf, topic:computer-vision, topic:3d-reconstruction, readme:computer vision