All Projects → skhadem → 3d Boundingbox

skhadem / 3d Boundingbox

Licence: mit
PyTorch implementation for 3D Bounding Box Estimation Using Deep Learning and Geometry

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to 3d Boundingbox

Vga Passthrough
Up to date (2021) reference for setting up a VGA passthrough on (Ubuntu) Linux.
Stars: ✭ 157 (-7.1%)
Mutual labels:  3d
Kfnet
KFNet: Learning Temporal Camera Relocalization using Kalman Filtering (CVPR 2020 Oral)
Stars: ✭ 161 (-4.73%)
Mutual labels:  localization
3d Iwgan
A repository for the paper "Improved Adversarial Systems for 3D Object Generation and Reconstruction".
Stars: ✭ 166 (-1.78%)
Mutual labels:  3d
Facemoji Kit
Face tracker with blend shapes coefficients, 3D head pose and dense mesh in real-time on iOS, Android, Mac, PC and Linux.
Stars: ✭ 158 (-6.51%)
Mutual labels:  3d
Laravel Nova Localizations
🌎 Localization files for Laravel Nova
Stars: ✭ 161 (-4.73%)
Mutual labels:  localization
Mundus
A 3D world/level editor built with Java, Kotlin & libGDX.
Stars: ✭ 164 (-2.96%)
Mutual labels:  3d
Lowpolyshaders
Unity shaders optimized for Low Poly models.
Stars: ✭ 157 (-7.1%)
Mutual labels:  3d
Faker
A Java port of the Faker ruby gem: https://github.com/stympy/faker/
Stars: ✭ 167 (-1.18%)
Mutual labels:  localization
Gaiasky
Mirror of Gaia Sky repository hosted on Gitlab: https://gitlab.com/langurmonkey/gaiasky
Stars: ✭ 162 (-4.14%)
Mutual labels:  3d
Dagon
3D game engine for D
Stars: ✭ 165 (-2.37%)
Mutual labels:  3d
Sharpgltf
glTF reader and writer for .NET Standard
Stars: ✭ 159 (-5.92%)
Mutual labels:  3d
Tossi
Chooses correct Korean particle morphs for arbitrary words.
Stars: ✭ 160 (-5.33%)
Mutual labels:  localization
Threejs Sandbox
Set of experiments and extensions to THREE.js.
Stars: ✭ 163 (-3.55%)
Mutual labels:  3d
Layaair discard
This is old LayaAir veriosn writetten by ActionScript 3.0 ,now LayaAir is using TypeScript as the Engine Script,Please use https://github.com/layabox/LayaAir instead.
Stars: ✭ 1,858 (+999.41%)
Mutual labels:  3d
Unitymathreference
Math reference for games and more. All visualized in Unity3D.
Stars: ✭ 166 (-1.78%)
Mutual labels:  3d
Pythonrobotics
Python sample codes for robotics algorithms.
Stars: ✭ 13,934 (+8144.97%)
Mutual labels:  localization
Anipose
🐜🐀🐒🚶 A toolkit for robust markerless 3D pose estimation
Stars: ✭ 162 (-4.14%)
Mutual labels:  3d
Arbify
ARB files localization tool. Dedicated to Flutter and its intl package.
Stars: ✭ 168 (-0.59%)
Mutual labels:  localization
Elm 3d Scene
A high-level 3D rendering engine for Elm, with support for lighting, shadows, and realistic materials.
Stars: ✭ 167 (-1.18%)
Mutual labels:  3d
Hole fixer
Demo implementation of smoothly filling holes in 3D meshes using surface fairing
Stars: ✭ 165 (-2.37%)
Mutual labels:  3d

3D Bounding Box Estimation Using Deep Learning and Geometry

If interested, join the slack workspace where the paper is discussed, issues are worked through, and more! Click this link to join.

Introduction

PyTorch implementation for this paper.

example-image

At the moment, it takes approximately 0.4s per frame, depending on the number of objects detected. An improvement will be speed upgrades soon. Here is the current fastest possible: example-video

Requirements

  • PyTorch
  • Cuda
  • OpenCV >= 3.4.3

Usage

In order to download the weights:

cd weights/
./get_weights.sh

This will download pre-trained weights for the 3D BoundingBox net and also YOLOv3 weights from the official yolo source.

If script is not working: pre trained weights and YOLO weights

To see all the options:

python Run.py --help

Run through all images in default directory (eval/image_2/), optionally with the 2D bounding boxes also drawn. Press SPACE to proceed to next image, and any other key to exit.

python Run.py [--show-yolo]

Note: See training for where to download the data from

There is also a script provided to download the default video from Kitti in ./eval/video. Or, download any Kitti video and corresponding calibration and use --image-dir and --cal-dir to specify where to get the frames from.

python Run.py --video [--hide-debug]

Training

First, the data must be downloaded from Kitti. Download the left color images, the training labels, and the camera calibration matrices. Total is ~13GB. Unzip the downloads into the Kitti/ directory.

python Train.py

By default, the model is saved every 10 epochs in weights/. The loss is printed every 10 batches. The loss should not converge to 0! The loss function for the orientation is driven to -1, so a negative loss is expected. The hyper-parameters to tune are alpha and w (see paper). I obtained good results after just 10 epochs, but the training script will run until 100.

How it works

The PyTorch neural net takes in images of size 224x224 and predicts the orientation and relative dimension of that object to the class average. Thus, another neural net must give the 2D bounding box and object class. I chose to use YOLOv3 through OpenCV. Using the orientation, dimension, and 2D bounding box, the 3D location is calculated, and then back projected onto the image.

There are 2 key assumptions made:

  1. The 2D bounding box fits very tightly around the object
  2. The object has ~0 pitch and ~0 roll (valid for cars on the road)

Future Goals

  • Train custom YOLO net on the Kitti dataset
  • Some type of Pose visualization (ROS?)

Credit

I originally started from a fork of this repo, and some of the original code still exists in the training script.

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].