terça-feira, 16 de abril de 2019

Usando modelo quantizado ssd mobilenet v1 no exemplo Android do Tensoflow Lite para Object Detection

colocando modelo quantizado ssd mobilenet v1 no Android
1- App
https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection
Baixe no seu computador, abra com o Android Studio, e teste no seu celular

2- Download do modelo (ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18):
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md
Especificamente
http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v1_0.75_depth_quantized_300x300_coco14_sync_2018_07_18.tar.gz


3- Convertendo
funcionou (4 outputs), QUANTIZED_UINT8 (tflite de 6,7MB): :
toco --graph_def_file=C:\tmp\my_object_detection\ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18-ModelZoo\tflite_graph.pb --output_file=C:\tmp\my_object_detection\ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18-ModelZoo\tflite\ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18.tflite --input_shapes=1,300,300,3 --input_arrays=normalized_input_image_tensor --output_arrays=TFLite_Detection_PostProcess,TFLite_Detection_PostProcess:1,TFLite_Detection_PostProcess:2,TFLite_Detection_PostProcess:3 --inference_type=QUANTIZED_UINT8 --mean_values=128 --std_dev_values=128 --change_concat_input_ranges=false --allow_custom_ops

2-Labels (opcional, pois o labelmap.txt original serve para este modelo, mas vou colocar a instrução mesmo assim)
https://github.com/nightrome/cocostuff/blob/master/labels.txt
troque ": " por ";" mude a extensão para .csv, abra no Excel, delete a primeira coluna.
salve como txt.
substitue a primeira linha de "unlabeled" por "???" (sem aspas)
delete todas linhas depois da 91, O arquivo deve ter 91 linhas e a última label é toothbrush. (São 90 objetos fora a primeira linha que tem ???)
Salve o arquivo como: labels_map_ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18.txt

3-Copie para:
C:\object_detection\app\src\main\assets
(este diretório só vai existir depois de abrir o Android Studio e sincronizar tudo)

4-Edite DetectorActivity.java para usar o modelo e as labels.

private static final String TF_OD_API_MODEL_FILE = "ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18.tflite";

Se o arquivo com labels foi trocado use isso, senão use labelmap.txt original.
private static final String TF_OD_API_LABELS_FILE = "file:///android_asset/labels_map_ssd_mobilenet_v1_quantized_300x300_coco14_sync_2018_07_18.txt";

Para este modelo use o mesmo do exemplo para estas variáveis:
private static final int TF_OD_API_INPUT_SIZE = 300;
private static final boolean TF_OD_API_IS_QUANTIZED = true;

Nenhum comentário:

Postar um comentário