Git Product home page Git Product logo

python-vo's Introduction

Python-VO

A simple python implemented frame by frame visual odometry. This project is inspired and based on superpoint-vo and monoVO-python.

We tested handcraft features ORB and SIFT, deep learning based feature SuperPoint, more feature detectors are also possible to be added to this project. For feature matchers, we tested the KNN and FLANN mathers implemented in OpenCV, and the novel deep learning based mather SuperGlue.

Feature detectors

  • ORB (OpenCV implementation)
  • SIFT (OpenCV implementation)
  • SuperPoint

Feature matchers

  • KNN, FLANN (OpenCV implementation)
  • SuperGlue

SIFT Keypoints

sift_keypoints

SuperPoint Keypoints

superpoint_keypoints

SIFT+FLANN Matches

sift_flann_match

SuperPoint+FLANN Matches

superpoint_flann_match

SuperPoint+SuperGlue Matches

superpoint_superglue_match

Install

  • Get this repository

    git clone https://github.com/Shiaoming/Python-VO.git
    cd Python-VO
  • Install python packages

    pip install -r requirements.txt

Run

  1. edit dataset path in params/*.yaml;
  2. run python main.py --config params/*.yaml in terminal.

For example, to evaluate the SuperPoint with SuperGlue, run:

python main.py --config params/kitti_superpoint_supergluematch.yaml

Evaluations

Absolute and relative translation errors on KITTI sequence 00 eval

Average relative translation errors on KITTI sequence 00

orb_brutematch sift_flannmatch superpoint_flannmatch superpoint_supergluematch
0.748m 0.085m 0.177m 0.103m

Trajectory of ORB feature with brute matcher on KITTI sequence 00

kitti_orb_brutematch

  • red: ground truth
  • green: estimated trajectory

Trajectory of SIFT feature with FLANN matcher on KITTI sequence 00

kitti_sift_flannmatch

  • red: ground truth
  • green: estimated trajectory

Trajectory of SuperPoint feature with FLANN matcher on KITTI sequence 00

kitti_superpoint_flannmatch

  • red: ground truth
  • green: estimated trajectory

Trajectory of SuperPoint feature with SuperGlue matcher on KITTI sequence 00

kitti_superpoint_supergluematch

  • red: ground truth
  • green: estimated trajectory

python-vo's People

Contributors

kuiyuanfu avatar shiaoming avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

python-vo's Issues

convert matched keypoints to landmarks?

How do i convert the matched keypoints to 3d landmarks after apploying superglue matching ? Such that they can be converted into pointcloud and saved to database?

TUM RGBD Dataset fr3

请问有试过在TUM RGBD fr3 long office那个序列上跑吗?
我跑出来结果非常差,各种方法都得不到一个合理的轨迹,不知道是不是存在问题还是这个序列本身太难。

运行报错

您好,我在运行的时候,会报错UnboundLocalError: local variable 'img2' referenced before assignment,我在前面加了global img2 也没用,我的Python版本是3.7,请问您知道怎么解决吗?

run error

Thank you for your good work. I encountered this problem when used
$ python main.py

Traceback (most recent call last):
File "main.py", line 124, in
run(args)
File "main.py", line 110, in run
cv2.imwrite("results/" + fname + '_new.png', img2)
UnboundLocalError: local variable 'img2' referenced before assignment

then,I put cv2.imwrite() into for()
it works ,but the four methods all just load the model,like this
INFO:root:{'descriptor_dim': 256, 'weights': 'outdoor', 'keypoint_encoder': [32, 64, 128, 256], 'GNN_layers': ['self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross', 'self', 'cross'], 'sinkhorn_iterations': 100, 'match_threshold': 0.2, 'cuda': 1, 'type': 'SuperGlue'}
INFO:root:creating SuperGlue matcher...
Loaded SuperGlue model ("outdoor" weights)

Thank you.

result_eval.py throwing an error

When I try running the result_eval.py, I get the following error:
result_eval.py:21: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray.
return np.array(img_ids), np.array(est_points), np.array(gt_points)
Traceback (most recent call last):
File "result_eval.py", line 70, in
main()
File "result_eval.py", line 38, in main
errors = np.linalg.norm((gt_xyz - est_xyz), axis=1)
ValueError: operands could not be broadcast together with shapes (8480,) (8480,3)

ground truth怎样获得

您好,运行程序后,有以下两个问题想请教您:
1. 最后生成的AvgError的图只有一个红点,并未有完整的轨迹,是什么问题?
2. 我是否可以用我自己的图片在此程序上进行图像匹配,请问groundtruth文件怎样能获得?

sift+superglue

您好,请问有尝试复现superglue文章里面的sift+superglue吗?最近一直在尝试,一直没有进展,希望可以交流

Error when run TUM dataset

I try to run code in TUM datasets but get the error message.

Traceback (most recent call last):
File "main.py", line 109, in
run(args)
File "main.py", line 65, in run
loader = create_dataloader(config["dataset"])
File "/home/zhy/PyProject/Python-VO/DataLoader/init.py", line 9, in create_dataloader
loader = eval(code_line)
File "", line 1, in
File "/home/zhy/PyProject/Python-VO/DataLoader/TUMRGBLoader.py", line 32, in init
self.read_imgs()
File "/home/zhy/PyProject/Python-VO/DataLoader/TUMRGBLoader.py", line 76, in read_imgs
rgb_list = lines[:, 1]
IndexError: too many indices for array

I use this code for running:
python main.py --config params/tumrgb_superpoint_supergluematch.yaml

The TUM dataset is organized as follows:
├ TUM
└rgbd_dataset_freiburg1_360
   └── depth
└ ...
   └── rgb
└ ...
   └── depth.txt
   └── rgb.txt
   └── rgbd_gt.txt

How to fix this error?

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.