All Projects → JiawangBian → Sc Sfmlearner Release

JiawangBian / Sc Sfmlearner Release

Licence: gpl-3.0
Unsupervised Scale-consistent Depth and Ego-motion Learning from Monocular Video (NeurIPS 2019)

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Sc Sfmlearner Release

Indoor-SfMLearner
[ECCV'20] Patch-match and Plane-regularization for Unsupervised Indoor Depth Estimation
Stars: ✭ 115 (-75.43%)
Mutual labels:  unsupervised-learning, pose-estimation
3dpose gan
The authors' implementation of Unsupervised Adversarial Learning of 3D Human Pose from 2D Joint Locations
Stars: ✭ 124 (-73.5%)
Mutual labels:  unsupervised-learning, pose-estimation
Libfaceid
libfaceid is a research framework for prototyping of face recognition solutions. It seamlessly integrates multiple detection, recognition and liveness models w/ speech synthesis and speech recognition.
Stars: ✭ 354 (-24.36%)
Mutual labels:  pose-estimation
Corex topic
Hierarchical unsupervised and semi-supervised topic models for sparse count data with CorEx
Stars: ✭ 439 (-6.2%)
Mutual labels:  unsupervised-learning
Dataset synthesizer
NVIDIA Deep learning Dataset Synthesizer (NDDS)
Stars: ✭ 417 (-10.9%)
Mutual labels:  pose-estimation
Contrastive Predictive Coding
Keras implementation of Representation Learning with Contrastive Predictive Coding
Stars: ✭ 369 (-21.15%)
Mutual labels:  unsupervised-learning
Pose2seg
Code for the paper "Pose2Seg: Detection Free Human Instance Segmentation" @ CVPR2019.
Stars: ✭ 423 (-9.62%)
Mutual labels:  pose-estimation
Pase
Problem Agnostic Speech Encoder
Stars: ✭ 348 (-25.64%)
Mutual labels:  unsupervised-learning
Pyod
A Python Toolbox for Scalable Outlier Detection (Anomaly Detection)
Stars: ✭ 5,083 (+986.11%)
Mutual labels:  unsupervised-learning
Actionai
custom human activity recognition modules by pose estimation and cascaded inference using sklearn API
Stars: ✭ 404 (-13.68%)
Mutual labels:  pose-estimation
Enlightengan
[IEEE TIP'2021] "EnlightenGAN: Deep Light Enhancement without Paired Supervision" by Yifan Jiang, Xinyu Gong, Ding Liu, Yu Cheng, Chen Fang, Xiaohui Shen, Jianchao Yang, Pan Zhou, Zhangyang Wang
Stars: ✭ 434 (-7.26%)
Mutual labels:  unsupervised-learning
Tf Pose Estimation
Deep Pose Estimation implemented using Tensorflow with Custom Architectures for fast inference.
Stars: ✭ 3,856 (+723.93%)
Mutual labels:  pose-estimation
Densebody pytorch
PyTorch implementation of CloudWalk's recent work DenseBody
Stars: ✭ 378 (-19.23%)
Mutual labels:  pose-estimation
Lifting From The Deep Release
Implementation of "Lifting from the Deep: Convolutional 3D Pose Estimation from a Single Image"
Stars: ✭ 425 (-9.19%)
Mutual labels:  unsupervised-learning
Recycle Gan
Unsupervised Video Retargeting (e.g. face to face, flower to flower, clouds and winds, sunrise and sunset)
Stars: ✭ 367 (-21.58%)
Mutual labels:  unsupervised-learning
Openpose
OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation
Stars: ✭ 22,892 (+4791.45%)
Mutual labels:  pose-estimation
Cc
Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation
Stars: ✭ 348 (-25.64%)
Mutual labels:  unsupervised-learning
Pytorch Cpn
A PyTorch re-implementation of CPN (Cascaded Pyramid Network for Multi-Person Pose Estimation)
Stars: ✭ 403 (-13.89%)
Mutual labels:  pose-estimation
Awesome Vaes
A curated list of awesome work on VAEs, disentanglement, representation learning, and generative models.
Stars: ✭ 418 (-10.68%)
Mutual labels:  unsupervised-learning
Face Pose Net
Estimate 3D face pose (6DoF) or 11 parameters of 3x4 projection matrix by a Convolutional Neural Network
Stars: ✭ 464 (-0.85%)
Mutual labels:  pose-estimation

SC-SfMLearner

This codebase implements the system described in the paper:

Unsupervised Scale-consistent Depth and Ego-motion Learning from Monocular Video

Jia-Wang Bian, Zhichao Li, Naiyan Wang, Huangying Zhan, Chunhua Shen, Ming-Ming Cheng, Ian Reid

NeurIPS 2019 [PDF] [Project webpage]

Point cloud visulization on KITTI (left) and real-world data (right)

Dense reconstruction (left) using the estimated depth (bottom right)

reconstruction demo

Core contributions

  1. A geometry consistency loss, which makes the predicted depths to be globally scale consistent.
  2. A self-discovered mask, which detects moving objects and occlusions effectively and efficiently.
  3. The scale-consistent predictions allow for doing Monocular Visual Odometry on long videos.

If you find our work useful in your research please consider citing our paper:

@inproceedings{bian2019depth,
  title={Unsupervised Scale-consistent Depth and Ego-motion Learning from Monocular Video},
  author={Bian, Jia-Wang and Li, Zhichao and Wang, Naiyan and Zhan, Huangying and Shen, Chunhua and Cheng, Ming-Ming and Reid, Ian},
  booktitle= {Thirty-third Conference on Neural Information Processing Systems (NeurIPS)},
  year={2019}
}

Updates (Compared with NeurIPS version)

Note that this is an updated version, and you can find the original version in 'Release / NeurIPS Version' for reproducing the results reported in paper. Compared with NeurIPS version, we (1) Change networks by using Resnet18 and Resnet50 pretrained model (on ImageNet) for depth and pose encoders. (2) We add 'auto_mask' by Monodepth2 to remove stationary points.

We add training and testing on NYUv2 indoor depth dataset. See Unsupervised-Indoor-Depth for details.

Preamble

This codebase was developed and tested with python 3.6, Pytorch 1.0.1, and CUDA 10.0 on Ubuntu 16.04. It is based on Clement Pinard's SfMLearner implementation.

Prerequisite

pip3 install -r requirements.txt

or install manually the following packages :

torch >= 1.5.1
imageio
matplotlib
scipy
argparse
tensorboardX
blessings
progressbar2
path

It is also advised to have python3 bindings for opencv for tensorboard visualizations

Datasets

See "scripts/run_prepare_data.sh".

For KITTI Raw dataset, download the dataset using this script http://www.cvlibs.net/download.php?file=raw_data_downloader.zip) provided on the official website.

For KITTI Odometry dataset, download the dataset with color images.

Or you can download our pre-processed dataset from the following link

kitti_256 (for kitti raw) | kitti_vo_256 (for kitti odom) | kitti_depth_test (eigen split) | kitti_vo_test (seqs 09-10)

Training

The "scripts" folder provides several examples for training and testing.

You can train the depth model on KITTI Raw by running

sh scripts/train_resnet18_depth_256.sh

or train the pose model on KITTI Odometry by running

sh scripts/train_resnet50_pose_256.sh

Then you can start a tensorboard session in this folder by

tensorboard --logdir=checkpoints/

and visualize the training progress by opening https://localhost:6006 on your browser.

Evaluation

You can evaluate depth on Eigen's split by running

sh scripts/test_kitti_depth.sh

evaluate visual odometry by running

sh scripts/test_kitti_vo.sh

and visualize depth by running

sh scripts/run_inference.sh

Pretrained Models

Latest Models

To evaluate the NeurIPS models, please download the code from 'Release/NeurIPS version'.

Depth Results (Updated version, KITTI raw dataset, using the Eigen's splits)

Models Abs Rel Sq Rel RMSE RMSE(log) Acc.1 Acc.2 Acc.3
resnet18 0.119 0.858 4.949 0.197 0.863 0.957 0.981
resnet50 0.115 0.814 4.705 0.191 0.873 0.960 0.982

Visual Odometry Results (Updated version, KITTI odometry dataset, trained on 00-08)

Metric Seq. 09 Seq. 10
t_err (%) 7.31 7.79
r_err (degree/100m) 3.05 4.90

Related projects

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].