Code Monkey home page Code Monkey logo

frustum-pointnets's Introduction

Frustum PointNets for 3D Object Detection from RGB-D Data

Created by Charles R. Qi, Wei Liu, Chenxia Wu, Hao Su and Leonidas J. Guibas from Stanford University and Nuro Inc.

teaser

Introduction

This repository is code release for our CVPR 2018 paper (arXiv report here). In this work, we study 3D object detection from RGB-D data. We propose a novel detection pipeline that combines both mature 2D object detectors and the state-of-the-art 3D deep learning techniques. In our pipeline, we firstly build object proposals with a 2D detector running on RGB images, where each 2D bounding box defines a 3D frustum region. Then based on 3D point clouds in those frustum regions, we achieve 3D instance segmentation and amodal 3D bounding box estimation, using PointNet/PointNet++ networks (see references at bottom).

By leveraging 2D object detectors, we greatly reduce 3D search space for object localization. The high resolution and rich texture information in images also enable high recalls for smaller objects like pedestrians or cyclists that are harder to localize by point clouds only. By adopting PointNet architectures, we are able to directly work on 3D point clouds, without the necessity to voxelize them to grids or to project them to image planes. Since we directly work on point clouds, we are able to fully respect and exploit the 3D geometry -- one example is the series of coordinate normalizations we apply, which help canocalizes the learning problem. Evaluated on KITTI and SUNRGBD benchmarks, our system significantly outperforms previous state of the art and is still in leading positions on current KITTI leaderboard.

For more details of our architecture, please refer to our paper or project website.

Citation

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

    @article{qi2017frustum,
      title={Frustum PointNets for 3D Object Detection from RGB-D Data},
      author={Qi, Charles R and Liu, Wei and Wu, Chenxia and Su, Hao and Guibas, Leonidas J},
      journal={arXiv preprint arXiv:1711.08488},
      year={2017}
    }

Installation

Install TensorFlow.There are also some dependencies for a few Python libraries for data processing and visualizations like cv2, mayavi etc. It's highly recommended that you have access to GPUs.

To use the Frustum PointNets v2 model, we need access to a few custom Tensorflow operators from PointNet++. The TF operators are included under models/tf_ops, you need to compile them (check tf_xxx_compile.sh under each ops subfolder) first. Update nvcc and python path if necessary. The compile script is written for TF1.4. There is also an option for TF1.2 in the script. If you are using earlier version it's possible that you need to remove the -D_GLIBCXX_USE_CXX11_ABI=0 flag in g++ command in order to compile correctly.

If we want to evaluate 3D object detection AP (average precision), we need also to compile the evaluation code (by running compile.sh under train/kitti_eval). Check train/kitti_eval/README.md for details.

Some of the demos require mayavi library. We have provided a convenient script to install mayavi package in Python, a handy package for 3D point cloud visualization. You can check it at mayavi/mayavi_install.sh. If the installation succeeds, you should be able to run mayavi/test_drawline.py as a simple demo. Note: the library works for local machines and seems do not support remote access with ssh or ssh -X.

The code is tested under TF1.2 and TF1.4 (GPU version) and Python 2.7 (version 3 should also work) on Ubuntu 14.04 and Ubuntu 16.04 with NVIDIA GTX 1080 GPU. It is highly recommended to have GPUs on your machine and it is required to have at least 8GB available CPU memory.

Usage

Currently, we support training and testing of the Frustum PointNets models as well as evaluating 3D object detection results based on precomputed 2D detector outputs (under kitti/rgb_detections). You are welcomed to extend the code base to support your own 2D detectors or feed your own data for network training.

Prepare Training Data

In this step we convert original KITTI data to organized formats for training our Frustum PointNets. NEW: You can also directly download the prepared data files HERE (960MB) -- to support training and evaluation, just unzip the file and move the *.pickle files to the kitti folder.

Firstly, you need to download the KITTI 3D object detection dataset, including left color images, Velodyne point clouds, camera calibration matrices, and training labels. Make sure the KITTI data is organized as required in dataset/README.md. You can run python kitti/kitti_object.py to see whether data is downloaded and stored properly. If everything is fine, you should see image and 3D point cloud visualizations of the data.

Then to prepare the data, simply run: (warning: this step will generate around 4.7GB data as pickle files)

sh scripts/command_prep_data.sh

Basically, during this process, we are extracting frustum point clouds along with ground truth labels from the original KITTI data, based on both ground truth 2D bounding boxes and boxes from a 2D object detector. We will do the extraction for the train (kitti/image_sets/train.txt) and validation set (kitti/image_sets/val.txt) using ground truth 2D boxes, and also extract data from validation set with predicted 2D boxes (kitti/rgb_detections/rgb_detection_val.txt).

You can check kitti/prepare_data.py for more details, and run python kitti/prepare_data.py --demo to visualize the steps in data preparation.

After the command executes, you should see three newly generated data files under the kitti folder. You can run python train/provider.py to visualize the training data (frustum point clouds and 3D bounding box labels, in rect camera coordinate).

Training Frustum PointNets

To start training (on GPU 0) the Frustum PointNets model, just run the following script:

CUDA_VISIBLE_DEVICES=0 sh scripts/command_train_v1.sh

You can run scripts/command_train_v2.sh to trian the v2 model as well. The training statiscs and checkpoints will be stored at train/log_v1 (or train/log_v2 if it is a v2 model). Run python train/train.py -h to see more options of training.

NEW: We have also prepared some pretrained snapshots for both the v1 and v2 models. You can find them HERE (40MB) -- to support evaluation script, you just need to unzip the file and move the log_* folders to the train folder.

Evaluation

To evaluate a trained model (assuming you already finished the previous training step) on the validation set, just run:

CUDA_VISIBLE_DEVICES=0 sh scripts/command_test_v1.sh

Similarly, you can run scripts/command_test_v2.sh to evaluate a trained v2 model. The script will automatically evaluate the Frustum PointNets on the validation set based on precomputed 2D bounding boxes from a 2D detector (not released here), and then run the KITTI offline evaluation scripts to compute precision recall and calcuate average precisions for 2D detection, bird's eye view detection and 3D detection.

Currently there is no script for evaluation on test set, yet it is possible to do it by yourself. To evaluate on the test set, you need to get outputs from a 2D detector on KITTI test set, store it as something in kitti/rgb_detections. Then, you need to prepare test set frustum point clouds for the test set, by modifying the code in kitti/prepare_data.py. Then you can modify test scripts in scripts by changing the data path, idx path and output file name. For our test set results reported, we used the entire trainval set for training.

License

Our code is released under the Apache 2.0 license (see LICENSE file for details).

References

Todo

  • Add a demo script to run inference of Frustum PointNets based on raw input data.
  • Add related scripts for SUNRGBD dataset

frustum-pointnets's People

Contributors

charlesq34 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  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

frustum-pointnets's Issues

Error occurred while evaluating on validation set

When trying to evaluate based on pre-trained snapshot by calling

CUDA_VISIBLE_DEVICES=0 sh scripts/command_test_v1.sh

An error occurred: number of files for evaluation: 3769 ERROR: Couldn't read: 000560.txt of ground truth.

Error during Evaluation

Hello @charlesq34

Thanks for sharing your code.

I am getting the following error during evaluation:

batch idx: 791
batch idx: 792
batch idx: 793
Number of point clouds: 25392
Thank you for participating in our evaluation!
Loading detections...
number of files for evaluation: 3769
ERROR: Couldn't read: 000812.txt of ground truth. Please write me an email!
An error occured while processing your results.

A screenshot for the same is attached as well.

Can you please help me solve the issue?

error

test error: Couldn't read: 001304.txt of ground truth.

I just download the code, and use the prepared data files (*pickle) to do some easy trainning and evaluation work to reproduce the author's work.
First thanks to the excellent work of this project and the wonderful open source! Although I didn't go through the details of the code, I can easily train the model.
But when I do the evaluation step using command 'sh scripts/command_test_v1.sh' or 'sh scripts/command_test_v1.sh', there comes the same error -- 'ERROR: Couldn't read: 001304.txt of ground truth. Please write me an email!'. I wonder if there is something wrong with the pickle data?
I will go through the code details later, but I just want to see the evaluation result fisrt, is there any ideas about this issue?

End-to-end Training with 2D Proposals Generation?

Thanks for your excellent paper and released code.
It seems that the performance of your F-PointNet depends much on the 2D proposals from RGB detector. And from the supplementary of your arxiv paper, you have made great effort on the training of the RGB detector. I was wondering that if it is possible to train the RGB detector jointly with F-PointNet in an end-to-end fashion? Or this method may not work well ?

Using Pickle Files

Such great work Charles! I wanted to know if using the newly uploaded pickle files replaces scripts/command_prep_data.sh for preparing data. I mean can I visualize the training data right away after downloading the files?

matlab interference for SUNRGBD dataset

Hi, @charlesq34
I find a problem in using the matlab code extract_rgbd_data.m under SUNRGBD toolbox, since there is no way to deal with the training and testing separately. In other words, I cannot get the testing dataset and the val_data_idx.txt by your offered matlab code. Besides, I can't find the folders SUNRGBDtoolbox/traintestsplit , how do you generate it? thanks a lot!

problems in "get_box3d_corners" in "model_utils.py"

line 109 in "Model_utils.py" :
mean_sizes = tf.expand_dims(tf.constant(g_mean_size_arr, dtype=tf.float32), 0) + size_residuals
#(B,NS,1)

  1. the shape of mean_sizes shouldn't be #(B,NS,3)?

  2. I do not understand why "mean_sizes" would be "g_mean_size_arr + size_residuals "?
    “g_mean_size_arr” isn't the ""mean_sizes" itself?

and in Line 110 why the sizes would be "mean_sizes + size_residuals"? Isn't it adds "size_residuals" for two times?

In Line 373:
mean_sizes = tf.expand_dims(
tf.constant(g_mean_size_arr, dtype=tf.float32), 0) # (1,NS,3)

what's the difference between the two "mean_sizes"?

Hoping to get some reply!Thanks sincerely !

Question about the use of ConvexHull

In my opinion, the helper function which uses ConvexHull for calculating the 3D IoU in box_util.py seems no use here cause by using the function poly_area, it should be enough for calculating the intersection area. Could please give me some more tips here for why adding ConvexHull function here?

PreTrained Model

Hi @charlesq34 ,
Do you have any pretrained models, that you could make publicly available to test straight away without any training?

2D detector

Hi Charles,

Thanks for your excellent work and sharing source code with us.

Since the performance of F-pointnet is highly dependent on the 2D-detector, I am curious whether you will release the 2D detector you trained for this work. Although I can integrate other 2D detector into your framework, the overall performance is not as satisfactory as I expected. I will be very appreciated if you can share the 2D detector with us :)

Best regards

Liangcheng

How to restore the train?

Hi! @charlesq34!
I follow the readme.md to train the data and the train can start.But there is a problem with my computer.My computer is crashed after some epoch(random).I noticed the train will be saved every 10 epoch,but when I restart my computer and use "CUDA_VISIBLE_DEVICES=0 sh scripts/command_train_v1.sh" to train.The train will begin from epoch0. How can I restore the train from the step that my computer was crashed?
Thanks!

how could I use thismodel?

Hi @charlesq34 ,thanks for your code.Now,I have the trained model , but I don't know how to use or visualize it. for example, if i have a photo and a point cloud , how could I classify the points use the trained model? and how could I get the picture like the one you show in the Readme.md(vehicle with boundingbox in point cloud)?
Thanks !

Detections in own point clouds

Hello,

What is the required orientation of the extracted point clouds? I tried running the PointNet on a different extracted frustum of points, but the results were strange.

I tried to visualize the point clouds in the pickled files, and it appears that the frustum direction is oriented along the z-axis. From this I can infer that the points are in camera coordinates, rather than lidar coordinates. Can you confirm this? Does the network only work like this?

I am using a batch size of 1, with 1024 points, and do something like this:

            class_vector = np.zeros((1, 3))
            class_vector[0, 1] = 1

            point_cloud = np.zeros((1, 1024, 4), dtype=np.float32)
            indices = np.arange(0, len(frustum))

            if len(frustum) > 1024:
                choice = np.random.choice(indices, size=1024, replace=True)
            else:
                choice = np.random.choice(indices, size=1024, replace=False)

            point_cloud[0] = frustum[choice]

I randomly sample 1024 from the extracted frustum (better ways?) and feed this along with the other two placeholders for class ID and training phase. I give the point cloud in camera coordinates. In the example here, I put it as a pedestrian:
https://imgur.com/a/yWo0nn1

            feed_dict = {
                self.pointclouds_pl: point_cloud,
                self.one_hot_vec_pl: class_vector,
                self.is_training_pl: False,
            }

            batch_logits, batch_centers, \
            batch_heading_scores, batch_heading_residuals, \
            batch_size_scores, batch_size_residuals = \
                self.session.run([
                    self.logits, self.center,
                    self.end_points['heading_scores'], self.end_points['heading_residuals'],
                    self.end_points['size_scores'], self.end_points['size_residuals']],
                    feed_dict=feed_dict)

            batch_seg_prob = softmax(batch_logits)[:, :, 1]  # BxN
            batch_seg_mask = np.argmax(batch_logits, 2)  # BxN
            mask_mean_prob = np.sum(batch_seg_prob * batch_seg_mask, 1)  # B,
            mask_mean_prob = mask_mean_prob / np.sum(batch_seg_mask, 1)  # B,
            heading_prob = np.max(softmax(batch_heading_scores), 1)  # B
            size_prob = np.max(softmax(batch_size_scores), 1)  # B,
            batch_scores = np.log(mask_mean_prob) + np.log(heading_prob) + np.log(size_prob)

            filtered_frustums.append(point_cloud[batch_seg_mask == 1].astype(np.float3

However, when I tried to visualize the points belonging to the object, it doesn't look right...
https://imgur.com/a/3MrEBGQ

Is there some further normalization that I need to do to the point cloud? I looked into the test.py but I can't really tell. Am I misinterpreting what the batch_seg_mask is?

Anyhow, great work!

performance of using GT 2d box

Hi.

I want to see the bottleneck of F-pointnet 3D detection module. So I replace 2d detected boundingbox with groundtruth box. But the evaluated results are strange, easy/moderate/hard 3D AP is 70.52%,65.04%,60.53% separately. Following is how I do.

I modify the command_test_v2.sh to
python3 train/test.py --gpu 0 --num_point 1024 --model frustum_pointnets_v2 --model_path train/frustum_pointnets_snapshots/log_v2/model.ckpt --output train/detection_results_v2 --data_path kitti/frustum_data/frustum_carpedcyc_val.pickle --idx_path kitti/image_sets/val.txt train/kitti_eval/evaluate_object_3d_offline dataset/KITTI/object/training/label_2/ train/detection_results_v2

I delete --from_rgb_detection and replace frustum_carpedcyc_val_rgb_detection.pickle with frustum_carpedcyc_val.pickle

Thanks!

Pre trained model

Could you share a pretrained models to be able to test without need to train?

evaluating BEV bounding boxes

I'm using the KITTI cpp code in this repo to evaluate my birds eye view bounding box detections. The code filters the detections into easy, moderate and hard by the height of the detected object's bounding box in the image space (i.e. pixels). I do not have image detections at all. I'm experimenting solely on BEV data. Any idea how to evaluate ONLY BEV detections. Is there a reference somewhere for this?

training with RGB detections?

Hi, I looked up your code and I notice that you only use RGB detection result for validation. But there is a 'rgb_detection_train.txt' file, which is clearly for training. So could you release the code of generating that file or you do already have released only I did't find it?

Error while running train/provider.py

When I run the command python train/provider.py ; it gives following error
ERROR: In /build/buildd/vtk-5.8.0/Rendering/vtkXOpenGLRenderWindow.cxx, line 631
vtkXOpenGLRenderWindow (0x153daf40): Cannot create GLX context. Aborting.

I have correct openGL and VTK installed.

Do you know how to fix this? I tried searching online but nothing helped.
I could use rest of the code fine.

Thanks,
Kanchan

3D bounding box

Is there a tool to create 3D bounding boxes for custom dataset?

SUNRGBD train and val list

Hi,

I wanted to know where can I find the train and val text files to generate pickle files for training on SUNRGBD data. Thanks a lot in advance.

Kind Regards
Pranjal Biswas

How can I inference test data?

In the code, extracted using the label already known in prepare_data. And it seems to be inference using it. How can I inference test data without labels?

Visualization by running kitti_object.py

Thanks for sharing the code of this nice work.

It seems that the visualization code (running "python kitti/kitti_object.py") gets stuck in lin 218 on my desktop. The pedestrian in the image is visualized and then it suspends (I have waited for more than 5 minutes). I am sure my data is organized as suggested by the README file under dataset folder.

Is there any hint about such suspension? (I have tested both python2 and python3, the same) Thanks.

Plan to remove tf.py_func with actual ops

Thanks for open sourcing the code and I can reproduce the results, even making a light-weight server with pre-trained checkpoints.

However, by looking at the graph on tensorboard and the codes, it seems you used two tf.py_func, which made it difficult to get a frozen graph.

Any plan to replace those two py_func with actual ops?

Visualizing Bounding Boxes

I am asking if there's a way to visualize the results that are dumped in detection_results_v1 after predicting.. How can I visualize those coordinates by bounding boxes in their corresponding images?

Is Calibration file Required, Once calibration done on hardware side?

Let's consider Image & point cloud data is getting from same device, which is calibrated hardware. In this condition How we can use frustum point cloud for application level.

Here, Point cloud data can get only similar with camera FOV by hardware. So I have confused whether calibration file required to generate for training of our own data.

Please help me.

UnknownError: exceptions.AttributeError: 'ConvexHull' object has no attribute 'volume'

I am using tensorflow1.2.1 with cuda8.0, cudnn5.1 and python2.7.6 on Ubuntu14.04. The pointnet and pointnet2 runs normally, but when running frustum-pointnets, I get "UnknownError: exceptions.AttributeError: 'ConvexHull' object has no attribute 'volume'" error. Could you tell me what's wrong with my problem?The detail logs are as following.
logs
2018-04-20 17:03:09.080142: I tensorflow/core/common_runtime/gpu/gpu_device.cc:940] Found device 0 with properties:
name: GeForce GTX 1080
major: 6 minor: 1 memoryClockRate (GHz) 1.7335
pciBusID 0000:01:00.0
Total memory: 7.92GiB
Free memory: 7.51GiB
2018-04-20 17:03:09.080170: I tensorflow/core/common_runtime/gpu/gpu_device.cc:961] DMA: 0
2018-04-20 17:03:09.080178: I tensorflow/core/common_runtime/gpu/gpu_device.cc:971] 0: Y
2018-04-20 17:03:09.080189: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1030] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0)
**** EPOCH 000 ****
2018-04-20 17:03:11.963841
2018-04-20 17:03:12.806428: W tensorflow/core/framework/op_kernel.cc:1158] Unknown: exceptions.AttributeError: 'ConvexHull' object has no attribute 'volume'
2018-04-20 17:03:12.836807: W tensorflow/core/framework/op_kernel.cc:1158] Unknown: exceptions.AttributeError: 'ConvexHull' object has no attribute 'volume'
[[Node: PyFunc_1 = PyFunc[Tin=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT], Tout=[DT_FLOAT, DT_FLOAT], token="pyfunc_1", _device="/job:localhost/replica:0/task:0/cpu:0"](add_1/_733, Slice_4/_735, mul_2/_737, Slice_6/_739, mul_3/_741, _arg_Placeholder_3_0_3, _arg_Placeholder_4_0_4, _arg_Placeholder_5_0_5, _arg_Placeholder_6_0_6, _arg_Placeholder_7_0_7)]]
Traceback (most recent call last):
File "train/train.py", line 376, in
train()
File "train/train.py", line 201, in train
train_one_epoch(sess, ops, train_writer)
File "train/train.py", line 256, in train_one_epoch
feed_dict=feed_dict)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 789, in run
run_metadata_ptr)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 997, in _run
feed_dict_string, options, run_metadata)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 1132, in _do_run
target_list, options, run_metadata)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", line 1152, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.UnknownError: exceptions.AttributeError: 'ConvexHull' object has no attribute 'volume'
[[Node: PyFunc_1 = PyFunc[Tin=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT], Tout=[DT_FLOAT, DT_FLOAT], token="pyfunc_1", _device="/job:localhost/replica:0/task:0/cpu:0"](add_1/_733, Slice_4/_735, mul_2/_737, Slice_6/_739, mul_3/_741, _arg_Placeholder_3_0_3, _arg_Placeholder_4_0_4, _arg_Placeholder_5_0_5, _arg_Placeholder_6_0_6, _arg_Placeholder_7_0_7)]]
[[Node: Adam/update/NoOp/_1008 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/gpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=1, tensor_name="edge_12590_Adam/update/NoOp", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"]]

Caused by op u'PyFunc_1', defined at:
File "train/train.py", line 376, in
train()
File "train/train.py", line 136, in train
[tf.float32, tf.float32])
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/script_ops.py", line 198, in py_func
input=inp, token=token, Tout=Tout, name=name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_script_ops.py", line 38, in _py_func
name=name)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 767, in apply_op
op_def=op_def)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2506, in create_op
original_op=self._default_original_op, op_def=op_def)
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1269, in init
self._traceback = _extract_stack()

UnknownError (see above for traceback): exceptions.AttributeError: 'ConvexHull' object has no attribute 'volume'
[[Node: PyFunc_1 = PyFunc[Tin=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_INT32, DT_FLOAT, DT_INT32, DT_FLOAT], Tout=[DT_FLOAT, DT_FLOAT], token="pyfunc_1", _device="/job:localhost/replica:0/task:0/cpu:0"](add_1/_733, Slice_4/_735, mul_2/_737, Slice_6/_739, mul_3/_741, _arg_Placeholder_3_0_3, _arg_Placeholder_4_0_4, _arg_Placeholder_5_0_5, _arg_Placeholder_6_0_6, _arg_Placeholder_7_0_7)]]
[[Node: Adam/update/NoOp/_1008 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/gpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=1, tensor_name="edge_12590_Adam/update/NoOp", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"]]

problem in sunrgbd

where is 2D detection file called FPN_384x384? can you provide it to me ?Thanks!

how to visualize the training data

Hi, @charlesq34 ,

I completed the dataset preparation step. However, when I run python train/provider.py to visualize the training data. I got the window holding...
pic.
After I press the "enter" in the terminal. A few maiya windows prompts out. But they are freezed. How could I operate the maiya windows for visualizing the pointclouds ?

THX!

inference returns null values

hi @charlesq34,

I'm experimenting with your code but I have an issue with the test.py script.
The training phase seems correct and the checkpoint is correctly saved, but when I try to run the test.py code the inference returns NaN values.
This is an example of the output I get:

center_list[i]:  [nan nan nan]
heading_cls_list[i]:  0
heading_res_list[i]:  nan
size_cls_list[i]:  0
size_res_list[i]:  [nan nan nan]
rot_angle_list[i]:  -0.23571941490689463

rot_angle_list apart, the other output values are the same for all the images.
Do you have any idea what the issue could be?

thank you

One problem when i reproduce your result

First of all, it's really kind of you to share your code and result. I am trying to reproduce your result on kitti 3D detection dataset listed in the paper.

Currently, I have trained a model for 2D detection and gained similar mAP compared with yours in the paper. But when I use the pre-trained frustum model, both v1 and v2, I can only reach about 68% even in the easy part. I also find that in the precision-recall curve, the precision is only about 85% when recall is 0. I do not know if something is wrong. Can you please give some advice?

image

Frame Rate for SUN-RGBD dataset

In your paper you mention frame rate of 5 FPS on the KITTI dataset, how much fps do you achieve for the SUN-RGBD dataset?

Bird eye view

Do you will release also the bird eye view experiment (section 5.3)?

Why "one-hot-vec" still used in test?

Hi, @cclauss , @charlesq34 , I noticed that the "one-hot-vec" is used in training and testing. During training, I can understand it is concatenated with features to help to predict labels and box regression.

But in prediction(testing), the one-hot-vec (the shape is Batchsize, 3) is also used, this is confusing, so do the class types of an object must be pre-known for 3D object detection?

Thanks a lot!

Problem when runing mayavi/test_drawline.py

Hi friends,
I want to run mayavi/test_drawline.py on my remote machine via Xvnc. This is no error about OpenGL like we may meet if we use ssh-X. But there is an error said:

Xlib: extension "XInputExtension" missing on display ":1". Segmentation fault (core dumped)
I am not familiar with the X-server series. So does anyone know how to solve it or meet the same problem?

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.