Я обучил модель на дар knet, используя модель YOLOv3-SPP. Мне нужно иметь возможность использовать эту модель в моем приложении iPhone, поэтому мне нужно преобразовать ее в CoreML. Я начал с преобразования файла .weights в файл .pb. Сейчас я пытаюсь преобразовать его из TensorFlow в CoreML с tfcoreml
. Однако я не могу определить мои имена входных и выходных тензоров. Я попытался использовать тензорную доску для визуализации модели и определения входных и выходных данных, но, поскольку я довольно новичок в TensorFlow, я не могу понять, что использовать. Я использую этот скрипт для преобразования модели из TensorFlow в CoreML:
import tfcoreml
import os
import tensorflow as tf
frozen_model_file = os.path.abspath('frozen_darknet_yolov3_model.pb')
input_tensor_shapes = {"input/placeholder:0": [1, 32, 32, 9]}
# Output CoreML model path
coreml_model_file = './model.mlmodel'
output_tensor_names = ['output/prediction:0']
def convert():
# Read the pb model
with tf.gfile.GFile(frozen_model_file, "rb") as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
# Then, we import the graph_def into a new Graph
tf.import_graph_def(graph_def, name="")
# Convert
tfcoreml.convert(
tf_model_path=frozen_model_file,
mlmodel_path=coreml_model_file,
input_name_shape_dict=input_tensor_shapes,
output_feature_names=output_tensor_names)
convert()
Вот как выглядит моя тензорная доска:
![enter image description here](https://i.stack.imgur.com/H3yVz.png)
Что я должен установить input_tensor_shapes
и output_tensor_names
тоже, чтобы я не получил ошибку, говоря, что мой график TensorFlow не содержит тензор с таким именем.