RetinaNet is the dense object detection model with ResNet50 backbone, originally trained on Keras*, then converted to TensorFlow* protobuf format. For details, see paper, repository.
- Clone and install the original repository (tested on
47fdf189
commit) following the installation steps. Make sure you ranpython setup.py build_ext --inplace
from the root of repository. - Download the original model from here
- Get conversion script:
- Get conversion script from repository:
git clone https://github.com/amir-abdi/keras_to_tensorflow.git
- Checkout the commit that the conversion was tested on:
git checkout c841508a88faa5aa1ffc7a4947c3809ea4ec1228
- Apply
keras_to_tensorflow.patch
from<omz_dir>/models/public/retinanet-tf
:
git apply keras_to_tensorflow.patch
- Run script:
python keras_to_tensorflow.py --input_model=<model_in>.h5 --output_model=<model_out>.pb
NOTE: The conversion was tested with keras==2.3.1, tensorflow==1.15 and h5py<3.0.0.
Metric | Value |
---|---|
Type | Object detection |
GFlops | 238.9469 |
MParams | 64.9706 |
Source framework | TensorFlow* |
Metric | Value |
---|---|
coco_precision | 33.15% |
Image, name: input_1
, shape: 1, 1333, 1333, 3
, format: B, H, W, C
, where:
B
- batch sizeH
- image heightW
- image widthC
- number of channels
Expected color order: BGR
.
Mean values: [103.939, 116.779, 123.68]
Image, name: input_1
, shape: 1, 1333, 1333, 3
, format: B, H, W, C
, where:
B
- batch sizeH
- image heightW
- image widthC
- number of channels
Expected color order: BGR
.
- Classifier, name:
filtered_detections/map/TensorArrayStack_2/TensorArrayGatherV3
. Contains predicted bounding boxes classes in a range [1, 80]. The model was trained on Common Objects in Context (COCO) dataset version with 80 categories of objects, 0 class is for background. Mapping to class names provided in<omz_dir>/data/dataset_classes/coco_80cl_bkgr.txt
file - Probability, name:
filtered_detections/map/TensorArrayStack_1/TensorArrayGatherV3
. Contains probability of detected bounding boxes. - Detection box, name:
filtered_detections/map/TensorArrayStack/TensorArrayGatherV3
. Contains detection boxes coordinates in a format[y_min, x_min, y_max, x_max]
, where (x_min
,y_min
) are coordinates of the top left corner, (x_max
,y_max
) are coordinates of the right bottom corner. Coordinates are rescaled to input image size.
The array of summary detection information, name - DetectionOutput
, shape - 1, 1, 300, 7
in the format 1, 1, N, 7
, where N
is the number of detected
bounding boxes. For each detection, the description has the format:
[image_id
, label
, conf
, x_min
, y_min
, x_max
, y_max
], where:
image_id
- ID of the image in the batchlabel
- predicted class ID in range [1, 80], mapping to class names provided in<omz_dir>/data/dataset_classes/coco_80cl_bkgr.txt
fileconf
- confidence for the predicted class- (
x_min
,y_min
) - coordinates of the top left bounding box corner (coordinates stored in normalized format, in range [0, 1]) - (
x_max
,y_max
) - coordinates of the bottom right bounding box corner (coordinates stored in normalized format, in range [0, 1])
You can download models and if necessary convert them into Inference Engine format using the Model Downloader and other automation tools as shown in the examples below.
An example of using the Model Downloader:
omz_downloader --name <model_name>
An example of using the Model Converter:
omz_converter --name <model_name>
The original model is distributed under the
Apache License, Version 2.0.
A copy of the license is provided in <omz_dir>/models/public/licenses/APACHE-2.0.txt
.