Как узнать, правильно ли конвертирован мой файл tflite? - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь проверить, правильно ли конвертирован мой файл tflite, сделав простой вывод.

Я использовал данные поезда из Deeplab с набором данных PASCAL VO C. https://github.com/tensorflow/models/tree/master/research/deeplab

Теперь я могу сделать вывод без ошибки, но все, что я получаю в ответ, это массив нулей. Я не уверен, что мой процесс преобразования неверен или мой процесс вывода неверен.

Что я сделал

Сделал файл pb в коллаборации Google

Я клонировал tf / models и запустил local_test_mobilenetv2.sh. https://github.com/tensorflow/models/blob/master/research/deeplab/local_test_mobilenetv2.sh

Эта часть экспортируется в сценарии.

python "${WORK_DIR}"/export_model.py \
  --logtostderr \
  --checkpoint_path="${CKPT_PATH}" \
  --export_path="${EXPORT_PATH}" \
  --model_variant="mobilenet_v2" \
  --num_classes=21 \
  --crop_size=513 \
  --crop_size=513 \
  --inference_scales=1.0
преобразование в tflite
!tflite_convert \
  --graph_def_file=/content/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set_mobilenetv2/export/frozen_inference_graph.pb \
  --output_file=/content/models/research/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set_mobilenetv2/export/frozen_inference_graph.tflite \
  --output_format=TFLITE \
  --input_shape=1,513,513,3 \
  --input_arrays="MobilenetV2/MobilenetV2/input" \
  --change_concat_input_ranges=true \
  --output_arrays="ArgMax"

вывод

from PIL import Image
import numpy
import sys
import cv2

# load tflite
interpreter = tf.lite.Interpreter(model_path="/frozen_inference_graph.tflite")
interpreter.allocate_tensors()

# get input/output details
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# check the input/output format
print('input/output format')
print(input_details)
print(output_details)

# get input shape
input_shape = input_details[0]['shape']
print('input shape')
print(input_shape)

# test image
test_img = "/content/deeplab_sample/bicycle513x513.jpg"
image = Image.open(test_img)
image = image.convert("RGB")
image = image.resize((513, 513))
img_data = np.asarray(image, dtype=np.uint8)

# reshape test image
reshaped_img = img_data.reshape(input_shape)
print('input data')
print(reshaped_img)
interpreter.set_tensor(input_details[0]['index'], reshaped_img)

# inference
interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])
print('output data')
print(output_data)
print(np.count_nonzero(output_data)) # number of nonzero elements

вывод

input/output format
[{'name': 'MobilenetV2/MobilenetV2/input', 'index': 6, 'shape': array([  1, 513, 513,   3], dtype=int32), 'shape_signature': array([  1, 513, 513,   3], dtype=int32), 'dtype': <class 'numpy.float32'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]
[{'name': 'ArgMax', 'index': 0, 'shape': array([  1, 513, 513], dtype=int32), 'shape_signature': array([  1, 513, 513], dtype=int32), 'dtype': <class 'numpy.int64'>, 'quantization': (0.0, 0), 'quantization_parameters': {'scales': array([], dtype=float32), 'zero_points': array([], dtype=int32), 'quantized_dimension': 0}, 'sparsity_parameters': {}}]

input shape
[  1 513 513   3]

input data
[[[[239. 247. 250.]
   [239. 247. 250.]
   [238. 246. 249.]
   ...
   [244. 247. 252.]
   [244. 247. 252.]
   [244. 248. 251.]]

  [[239. 247. 250.]
   [238. 246. 249.]
   [237. 245. 248.]
   ...
   [244. 247. 252.]
   [244. 247. 252.]
   [244. 248. 251.]]

  [[238. 245. 251.]
   [237. 244. 250.]
   [236. 243. 249.]
   ...
   [244. 248. 251.]
   [244. 248. 251.]
   [244. 248. 251.]]

  ...

  [[112. 120.  45.]
   [102. 111.  44.]
   [105. 112.  58.]
   ...
   [127. 113.  64.]
   [115. 101.  52.]
   [108.  88.  37.]]

  [[109. 126.   0.]
   [111. 128.  16.]
   [105. 118.  26.]
   ...
   [135. 121.  72.]
   [132. 118.  69.]
   [132. 112.  61.]]

  [[128. 135.  65.]
   [104. 111.  43.]
   [ 94. 100.  36.]
   ...
   [145. 124.  71.]
   [152. 131.  78.]
   [143. 126.  72.]]]]

output data
[[[0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  ...
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]
  [0 0 0 ... 0 0 0]]]
0

Я попробовал пару разных изображений и получил тот же результат.

...