All Projects → kartikgupta-at-anu → CullNet

kartikgupta-at-anu / CullNet

Licence: other
Code implementation of our paper "CullNet: Calibrated and Pose Aware Confidence Scores for Object Pose Estimation"

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to CullNet

Simple-Tensor
A simplification of Tensorflow Tensor Operations
Stars: ✭ 17 (+30.77%)
Mutual labels:  yolov3
imsearch
Framework to build your own reverse image search engine
Stars: ✭ 64 (+392.31%)
Mutual labels:  yolov3
awesome-6d-object
Awesome work on object 6 DoF pose estimation
Stars: ✭ 252 (+1838.46%)
Mutual labels:  object-pose-estimation
simpleAICV-pytorch-ImageNet-COCO-training
SimpleAICV:pytorch training example on ImageNet(ILSVRC2012)/COCO2017/VOC2007+2012 datasets.Include ResNet/DarkNet/RetinaNet/FCOS/CenterNet/TTFNet/YOLOv3/YOLOv4/YOLOv5/YOLOX.
Stars: ✭ 276 (+2023.08%)
Mutual labels:  yolov3
copilot
Lane and obstacle detection for active assistance during driving. Uses windowed sweep for lane detection. Combination of object tracking and YOLO for obstacles. Determines lane change, relative velocity and time to collision
Stars: ✭ 95 (+630.77%)
Mutual labels:  yolov3
Datasets2Darknet
Modular tool that extracts images and labels from multiple datasets and parses them to Darknet format.
Stars: ✭ 31 (+138.46%)
Mutual labels:  yolov3
vrpdr
Deep Learning Applied To Vehicle Registration Plate Detection and Recognition in PyTorch.
Stars: ✭ 36 (+176.92%)
Mutual labels:  yolov3
betapose
Betapose for 6D pose estimation
Stars: ✭ 62 (+376.92%)
Mutual labels:  6dof-pose
rebar detect
CCFDF rebar detection
Stars: ✭ 14 (+7.69%)
Mutual labels:  yolov3
yolov3-pytorch
annotation and specification for yolov3
Stars: ✭ 48 (+269.23%)
Mutual labels:  yolov3
ffcnn
ffcnn is a cnn neural network inference framework, written in 600 lines C language.
Stars: ✭ 50 (+284.62%)
Mutual labels:  yolov3
Caffe2-yolo-v3
A Caffe2 implementation of the YOLO v3 object detection algorithm
Stars: ✭ 32 (+146.15%)
Mutual labels:  yolov3
lightDenseYOLO
A real-time object detection app based on lightDenseYOLO Our lightDenseYOLO is the combination of two components: lightDenseNet as the CNN feature extractor and YOLO v2 as the detection module
Stars: ✭ 20 (+53.85%)
Mutual labels:  yolov3
YOLOX deepsort tracker
using yolox+deepsort for object-tracking
Stars: ✭ 228 (+1653.85%)
Mutual labels:  yolov3
YOLOX
YOLOX is a high-performance anchor-free YOLO, exceeding yolov3~v5 with MegEngine, ONNX, TensorRT, ncnn, and OpenVINO supported. Documentation: https://yolox.readthedocs.io/
Stars: ✭ 6,570 (+50438.46%)
Mutual labels:  yolov3
cvxpnpl
A Perspective-n-Points-and-Lines method.
Stars: ✭ 56 (+330.77%)
Mutual labels:  6dof-pose
object-detection-yolo-opencv
Object Detection using Yolo V3 and OpenCV
Stars: ✭ 29 (+123.08%)
Mutual labels:  yolov3
keras-yolo3-facedetection
Real-time face detection model using YOLOv3 with Keras
Stars: ✭ 13 (+0%)
Mutual labels:  yolov3
Deep-Learning-with-GoogleColab
Deep Learning Applications (Darknet - YOLOv3, YOLOv4 | DeOldify - Image Colorization, Video Colorization | Face-Recognition) with Google Colaboratory - on the free Tesla K80/Tesla T4/Tesla P100 GPU - using Keras, Tensorflow and PyTorch.
Stars: ✭ 63 (+384.62%)
Mutual labels:  yolov3
go-darknet
Go bindings for Darknet (YOLO v4 / v3)
Stars: ✭ 56 (+330.77%)
Mutual labels:  yolov3

CullNet

This code implements the following paper:

"CullNet: Calibrated and Pose Aware Confidence Scores for Object Pose Estimation", Kartik Gupta, Lars Petersson, and Richard Hartley, ICCV Workshop on Recovering 6D Object Pose, 2019.

This code is for research purposes only.

Any questions or discussions are welcomed!

If you're using this code, please cite our paper.

Installation

Setup python 2.7.15 environment

pip install -r requirements.txt

Dataset Configuration

Prepare the dataset

  1. Create data directory.

    mkdir data
    cd data
    
  2. Download the LINEMOD, which can be found at here.

  3. Download the LINEMOD_ORIG, which can be found at here.

  4. Generate synthetic images for each class using pvnet-rendering by the following command in the repo. Note, generated data in LINEMOD should be in data directory of this repo.

    python run.py --type rendering
    
  5. Download the following PASCAL VOC images for background and LINEMOD data.

    Download LINEMOD_original from  "https://drive.google.com/open?id=1uhv5bvm3XQ6Zsx8vOkFXfbxVrIIkmfLf"
    Download Occluded_LINEMOD from "https://cloudstore.zih.tu-dresden.de/index.php/s/a65ec05fedd4890ae8ced82dfcf92ad8/download"
    wget https://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar
    tar xf LINEMOD_original.tar
    tar xf VOCtrainval_11-May-2012.tar
    
  6. Create training dataset (in the trainloader format) as combination of blender based 10000 synthetic images (for each class) generated above and rest augmented real training images.

    cd data_generate
    python createdataset_singleobj_realsyn.py
    python createdataset_singleobj_occlusiontest.py
    python createdataset_singleobj_originalimages.py
    
  7. Download the pre-trained Yolov3 detector (for object detection) and put it in models/trained_models

    wget -c https://pjreddie.com/media/files/darknet53.conv.74
    

Training and testing

Training

Backbone training (Yolov3-6D):

class='cam'
gpu_id=0
CUDA_VISIBLE_DEVICES=$gpu_id python yolo6d_v3_train.py --lr 0.001 --start_epoch 0 --epochs 50 --exp_name yolo6d_v3_realsyn_$class  --bs 16 --torch_cudnn_benchmark --class_name $class --use_tensorboard  --datadirectory_name LINEMOD_singleobj_realsyn --diff_aspectratio --random_trans_scale
CUDA_VISIBLE_DEVICES=$gpu_id python yolo6d_v3_train.py --lr 0.001 --epochs 100 --exp_name yolo6d_v3_realsyn_$class  --bs 16 --torch_cudnn_benchmark --class_name $class --use_tensorboard  --datadirectory_name LINEMOD_singleobj_realsyn --diff_aspectratio --random_trans_scale --second_training --min_train_loss --pick_one 

CullNet training:

cls='cam'
gpu_id=0
CUDA_VISIBLE_DEVICES=$gpu_id python cullnet_train.py --lr 0.01 --epochs 116 --exp_name yolo6d_v3_realsyn_$cls --bs 16 --exp_name_cullnet lr01_resnet50_gn_concat_synreal_subbs128_steplrSGD --cullnet_type resnet50concat_gn --cullnet_input 112 --seg_cullnet --cullnet_inconf concat --cullnet_confidence conf2d --thresh 0.1 --non_nms --torch_cudnn_benchmark --class_name $cls --use_tensorboard --datadirectory_name LINEMOD_singleobj_realsyn --diff_aspectratio --epoch_save --start_epoch 99 --k_proposals 32 --cullnet_trainloader all --sub_bs 128 --sub_bs_test 16

Testing

We provide the pretrained models of each object, which can be found at here. Download the pretrained models and move them to models/.

cls='cam'
gpu_id=0
CUDA_VISIBLE_DEVICES=$gpu_id python -W ignore cullnet_test.py --exp_name yolo6d_v3_realsyn_$cls --exp_name_cullnet lr01_resnet50_gn_concat_synreal_subbs128_steplrSGD --bs 1 --class_name $cls --cullnet_input 112 --cullnet_inconf concat --datadirectory_name LINEMOD_singleobj_realsyn --diff_aspectratio --image_size_index 3 --thresh 0.1 --non_nms --seg_cullnet --cullnet_type resnet50concat_gn --torch_cudnn_benchmark  --cullnet_confidence conf2d --ADI --nearby_test 1 --sub_bs_test 6 --topk 6 --epoch_save --start_epoch 115 --save_results --bias_correction mode

Acknowledgments

This code is written by Kartik Gupta and is built on the YOLOv2 and YOLOv3 implementations of the github user @longcw and @eriklindernoren. For training, the synthetic data has been generated using the blender scripts of github user @zju3dv.

Contact

Kartik Gupta ([email protected]).

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