Любая модель зоопарка .tflite, которую я вижу, имеет размер не более 3 МБ. По ребру они бегут нормально. Однако, когда я тренирую свою собственную модель обнаружения объектов, размер файла .pb составляет 60 МБ, а файла .tflite также огромен - 20 МБ! Это также квантуется согласно ниже. Конечный результат - ошибки сегментации в модели edgetpu object_detection. Что делает этот файл таким большим? Из-за того, что изображения без изменения размера, вводимые в модель, приводят к тому, что модель становится большой (некоторые фотографии имеют размер 4096 × 2160 и не имеют размера)?
Из определения объекта
Обучить модель
python train.py \
--logtostderr \
--train_dir=training \
--pipeline_config_path=training/ssd_mobilenet_v1_coco.config
Остановить график - создает файл размером 60 МБ .pb
python export_tflite_ssd_graph.py \
--pipeline_config_path=training/ssd_mobilenet_v2_coco.config \
--trained_checkpoint_prefix=training/model.ckpt-2020 \
--output_directory=inference_graph \
--add_postprocessing_op=true
Конвертировать в .tflite - создает файл .tflite размером 20 МБ
tflite_convert
--graph_def_file=inference_graph/tflite_graph.pb \
--output_file=inference_graph/detect.tflite \
--inference_type=QUANTIZED_UINT8 \
--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 \
--mean_values=128 \
--std_dev_values=127 \
--allow_custom_ops \
--default_ranges_min=0 \
--default_ranges_max=6
На этом этапе файл .tflite помещается в файл Google Coral Edgetpu, и модель испытываетсяна USB-камере, подключенной к TPU.
export DISPLAY=:0 && edgetpu_detect \
--source /dev/video1:YUY2:1280x720:20/1 \
--model ${DEMO_FILES}/detect.tflite
Конечным результатом является ошибка сегментации.
INFO: Initialized TensorFlow Lite runtime.
glvideomixer name=mixer background=black ! glimagesink sync=False name=glsink qos=False
v4l2src device=/dev/video1 ! video/x-raw,height=720,framerate=20/1,format=YUY2,width=1280 ! glupload ! tee name=t
t. ! glupload ! queue ! mixer.
overlaysrc name=overlay ! video/x-raw,height=720,width=1280,format=BGRA ! glupload ! queue max-size-buffers=1 ! mixer.
t. ! queue max-size-buffers=1 leaky=downstream ! glfilterbin filter=glcolorscale ! video/x-raw,height=168,width=300,format=RGBA ! videoconvert ! video/x-raw,height=168,width=300,format=RGB ! videobox autocrop=True ! video/x-raw,height=300,width=300 ! appsink max-buffers=1 sync=False emit-signals=True drop=True name=appsink
Segmentation fault