Community
cancel
Showing results for 
Search instead for 
Did you mean: 
SC_Huang
Beginner
110 Views

ssd_mobilenet_v1 Inference Error

I'm trying to convert and inference a mobilenet SSD v1 model, using model optimizer with following script and successfully create IR format file.

python3 mo_tf.py --input_model <strong>ssd_mobilenet_v1_coco.frozen.pb</strong> --output_dir "${MODEL_LOC}/../../ir/${FPV}/object_detection/common/ssd_mobilenet/ssd_mobilenet_v1_coco/tf" --data_type FP32 --tensorflow_use_custom_operations_config ${INTEL_OPENVINO_DIR}/deployment_tools/model_optimizer/extensions/front/tf/ssd_support.json --output="detection_boxes,detection_scores,num_detections" --tensorflow_object_detection_api_pipeline_config ssd_mobilenet_v1_coco.config

But when I tried to inference by the sample code (object_detection_ssd_async) the result become a mess...

Why i can't get the correct detection result? Is there anything wrong?

 

Screenshot from 2019-05-20 14-31-24.png

0 Kudos
6 Replies
Aung_N_Intel
Employee
110 Views

Hi S.C:

I think you would need to do scaling/normalizing of the input data. Model optimizer has options to do mean subtraction and scaling depending on how your model was trained. 

Aung. 

SC_Huang
Beginner
110 Views

Hi Aung,

Thanks for your reply.

Could you kindly tell me how to do that? In case of the "ssd_mobilenet_v1_coco.frozen.pb" downloaded from dldt model zoo via model_downloader.py?

Shubha_R_Intel
Employee
110 Views

Dear SC Huang,

in your mo command there are switches like 

 --scale SCALE, -s SCALE
                        All input values coming from original network inputs
                        will be divided by this value. When a list of inputs
                        is overridden by the --input parameter, this scale is
                        not applied for any input that does not match with the
                        original input of the model.

--mean_values MEAN_VALUES, -ms MEAN_VALUES
                        Mean values to be used for the input image per
                        channel. Values to be provided in the (R,G,B) or
                        [R,G,B] format. Can be defined for desired input of
                        the model, for example: "--mean_values
                        data[255,255,255],info[255,255,255]". The exact
                        meaning and order of channels depend on how the
                        original model was trained.
  --scale_values SCALE_VALUES
                        Scale values to be used for the input image per
                        channel. Values are provided in the (R,G,B) or [R,G,B]
                        format. Can be defined for desired input of the model,
                        for example: "--scale_values
                        data[255,255,255],info[255,255,255]". The exact
                        meaning and order of channels depend on how the
                        original model was trained.

You'd have to experiment with those and create a new IR.

Thanks,

Shubha

 

 

SC_Huang
Beginner
110 Views

Thanks Shubha,

Finally, I've solved the problem by changing the "ssd_support.json" to "ssd_v2_support.json".

 

Shubha_R_Intel
Employee
110 Views

Wow SC Huang,

I certainly learned something. Interesting. Thank you very much for reporting back here and I'm sorry for the trouble you've had. Really appreciate your reaching back and sharing your results with the OpenVino community.

Thanks,

Shubha

Shubha_R_Intel
Employee
110 Views

Dear SC Huang,

Thank you for teaching me something ! I was curious so I did a diff between ssd_support.json and ssd_v2_support.json. There's not much but I  guess these are crucial. 

ssd_diff.png

Reply