Использование модели TensorFlow - PullRequest
0 голосов
/ 15 марта 2020

https://www.tensorflow.org/tutorials/images/classification

В TensorFlow есть прекрасный учебник о том, как построить модель классификатора изображений для обнаружения кошек и собак ...

Но они оставили два важные шаги.

Шаг 1: Как подготовить изображение для подачи только что изготовленной модели?

Шаг 2: Как вы кормите модель?

Это то, что я пытался, с ошибочными результатами.

new_array = cv2.imread('cat.jpg')   "<--- CV2 Read Image"
dImg= new_array.reshape(1,150,150,3)  "<-- Convert it to 4D input "
prediction = model.predict(dImg/255)  "<---- Scale down by 255 ??? Idk im guessing "
print(str((prediction[0][0])) + " cat")   "<-- Print the list of list prediction which rn gives unusable results"

Обновление

new_array = cv2.imread('dog.jpg')
dImg= new_array.reshape(1,150,150,3)
prediction = model.predict(dImg/255)
print(str((int(prediction[0][0]))) + ' dog')
print(prediction[0][0])



new_array = cv2.imread('dog-2.jpg')
dImg= new_array.reshape(1,150,150,3)
prediction = model.predict(dImg/255)
print(str((int(prediction[0][0]))) + ' dog')
print(prediction[0][0])



new_array = cv2.imread('dog-3.jpg')
dImg= new_array.reshape(1,150,150,3)
prediction = model.predict(dImg/255)
print(str((int(prediction[0][0]))) + ' dog')
print(prediction[0][0])



new_array = cv2.imread('dog-4.jpg')
dImg= new_array.reshape(1,150,150,3)
prediction = model.predict(dImg/255)
print(str((int(prediction[0][0]))) + ' dog')
print(prediction[0][0])

результат

0 cat
0.5860402
-2 cat
-2.1347654
-1 cat
-1.380995
-4 cat
-4.0731945
1 dog
1.6571417
1 dog
1.759522
0 dog
-0.05260024
0 dog
-0.827193

1 Ответ

0 голосов
/ 16 марта 2020

Чтобы ответить на ваши вопросы и неопределенности:

"<---- Уменьшить на 255 ??? Idk im предположения" </p>

Это зависит от того, как Модель прошла обучение. Если перед подачей в модель изображения были разделены на 255, то при тестировании необходимо делить на 255.

Тестирование одного изображения в Keras и TensorFlow означает, что вам необходимо добавить batch_axis. В Keras и TensorFlow можно прогнозировать только пакеты данных.

Поэтому при загрузке изображения (независимо от OpenCV и PIL):

image = cv2.imread(image_path) #note that opencv loads in BGR format
#If necessary convert to RGB(depends again on how the model was trained)
image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)
#If necessary divide by 255
image /= 255
image = np.expand_dims(image,axis=0) #or tf.expand_dims(image, axis=0)
model.predict(image)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...