Я создал классификатор изображений с помощью керасов, а затем сохранил модель в формате .pb
. Модель проста, она может обнаружить только кошку и собаку.
Я хочу использовать эту сохраненную модель в Android.
Это то, что я пробовал до сих пор. Я использую следующие зависимости
implementation 'org.tensorflow:tensorflow-android:1.13.1'
Затем я конвертирую изображение в байтовый массив.
private static final String MODEL_FILE = "file:///android_asset/tf_model.pb";
TensorFlowInferenceInterface inferenceInterface = new TensorFlowInferenceInterface(getAssets(), MODEL_FILE);
inferenceInterface.feed("conv2d_4_input", readBytes(ims), 1,64,64);
inferenceInterface.fetch("output_node/Softmax",output);
inferenceInterface.run(new String[]{"output_node/Softmax"});
Но я получаю следующую ошибку.
Caused by: java.lang.IllegalArgumentException: buffer with 136886 elements is not compatible with a Tensor with shape [1, 64, 64]
Не уверен, что мне теперь делать. Тем не менее, я могу классифицировать изображения в Python, используя следующий код.
import numpy as np
from keras.preprocessing import image
test_image = image.load_img('dataset/single_prediction/cat_or_dog_1.jpg', target_size = (64, 64))
test_image = image.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
result = classifier.predict(test_image)
training_set.class_indices
if result[0][0] == 1:
prediction = 'dog'
else:
prediction = 'cat'