DLR-RM / AugmentedAutoencoder

Official Code: Implicit 3D Orientation Learning for 6D Object Detection from RGB Images
MIT License
338 stars 97 forks source link

[question] confused in Evaluate 6D Object Detection with a 2D Object Detector #57

Closed DateBro closed 4 years ago

DateBro commented 4 years ago

Hi, your works are awesome! I am trying to run the code by following the README, but I fell confused in 'Evaluate 6D Object Detection with a 2D Object Detector'. I have generated the training dataset for t-less and am going to train the SSD-TensorFlow. I run the 'ae_eval exp_group/my_autoencoder name_of_evaluation --eval_cfg eval_group/eval_my_autoencoder.cfg' without any extra config and got an error -- 'ImportError: No module named rmcssd.bin'. Does it mean that I should install SSD-TensorFlow as a pip package or do something else? By the way, where should I config the SSD? I am sorry for my poor English and sincerely appreciate your help.

DateBro commented 4 years ago

I have learned to train RetinaNet with the training dataset for T-Less using detection_utils/generate_sixd_train.py, but I don't know how to incorporate them. Should I change something in a configuration file or adapt the ae_eval file?

DateBro commented 4 years ago

@MartinSmeyer hi, I have started training keras-retinanet and get several model.h5. Should I use keras_to_tensorflow to convert it to a pb file and set the pb file path in the eval_group/eval_my_autoencoder.cfg?

MartinSmeyer commented 4 years ago

Hi, thanks and sorry for the late answer. ae_eval.py does not support running RetinaNet and the AAE together. You will first need to run RetinaNet on all test scenes and save the results in one yml file per scene. The yml files are called "{:02d}.yml".format(scene_id) and their structure is:

<view_id>
    [
    "obj_bb"
         [<xmin>, <ymin>, <width>, <height>] # in px
         "obj_id": <obj_id>
         "score": <score>
    ,
    "obj_bb"
         [<xmin>, <ymin>, <width>, <height>] # in px
         "obj_id": <obj_id>
         "score": <score>
     ...
     ]
<view_id>
....

Finally, set the "external" parameter in your evaluation config to the folder where all the yml files are located.

DateBro commented 4 years ago

It seems that if I want to use RetinaNet I should create my own ground truth yml file like the yml file created in the Generate a training dataset for T-Less using detection_utils/generate_sixd_train.py, right? By the way, is there a tutorial or tip to help me train my SSD-TensorFlow using the rendered dataset? I found that the SSD-TensorFlow seems not to support the custom dataset. I think it would be better if I can follow it to run SSD and AAE together and get a complete pipeline. Finally, I'll try your tips first and sincerely thanks for your help!

DateBro commented 4 years ago

Sorry for my naive question --- what does the scene id mean? I have generated only one gt.yml using detection_utils/generate_sixd_train.py and I have no idea about the scene id. It seems that it's not the obj_id. I found that scene id in T-LESS test dataset download page, does this mean that I should test T-LESS dataset to generate scene_id.yml rather than testing on test images of generate_sixd_train.py?

pengsida commented 4 years ago

tless has 20 scenes, and each scene has a scene id.

DateBro commented 4 years ago

@pengsida Thanks for your explanation.