VoteNet (Unofficial TensorFlow Implementation)

June 11, 2026 · View on GitHub

An unofficial TensorFlow/Tensorpack implementation of Deep Hough Voting for 3D Object Detection in Point Clouds (ICCV 2019) by Qi et al., trained and evaluated on SUN RGB-D.

For the authors' official PyTorch implementation, see facebookresearch/votenet.

Overview

VoteNet detects 3D objects directly from raw point clouds. A PointNet++ backbone extracts seed points, each seed casts a vote toward the object center it (possibly) belongs to (a deep, learned analogue of the Hough transform), votes are clustered into object proposals, and each proposal predicts an oriented 3D bounding box with a class label. Final detections are obtained after 3D non-maximum suppression.

This repository implements that pipeline with:

  • model.py — voting + proposal network on a PointNet++ backbone.
  • tf_ops/ — custom TensorFlow CUDA ops: farthest-point sampling, ball-query grouping, 3d_interpolation, and 3d_nms.
  • dataset.py / sunutils.py — SUN RGB-D data loading and box utilities.
  • evaluator.py — per-class AP / mAP evaluation callback.
  • run.py — training entry point.

Setup

  1. Install TensorFlow 1.x (GPU), Tensorpack, and numpy.
  2. Compile the custom TensorFlow ops, as in PointNet++: run the *_compile.sh script inside each tf_ops/* folder (adjust the TensorFlow/CUDA paths for your machine).

Data

Prepare the SUN RGB-D dataset following the instructions of frustum-pointnets; only the extract_rgbd_data.m step is needed.

Training

Point MyDataFlow (in run.py) at the root folder of the generated data, then:

python run.py

Training logs and checkpoints are managed by Tensorpack; validation mAP is computed periodically by the Evaluator callback.

Results

Partial reproduction on SUN RGB-D after 75 epochs (per-class AP):

ClassAPClassAP
bed0.371chair0.054
bookshelf0.154dresser0.035
sofa0.122toilet0.011
night stand0.007table0.003
desk0.002bathtub0.000

Overall mAP: 0.076 — well below the paper's reported numbers, so treat this implementation as a starting point for experimentation rather than a faithful reproduction. The official implementation linked above reproduces the paper's results.

Reference

@inproceedings{qi2019deep,
  title={Deep Hough Voting for 3D Object Detection in Point Clouds},
  author={Qi, Charles R and Litany, Or and He, Kaiming and Guibas, Leonidas J},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
  year={2019}
}