Python. Нейросеть Tensorflow+Keras
Подскажите пожалуйста, решил побаловаться с нейросетями для распознавания объектов на изображениях. Нашел множество примеров реализации классификатора изображений. Немного не понимаю как добиться того, чтобы находился именно необходимый объект. То есть, если я ищу на большом изображении стола кружку, а в обучающем датасете были, например, кружка, ручка и книга, то даже просто кусок стола он обозначит не "-" или "non", а как один из этих объектов.
# Считывание изображения
img = Image.open(path)
# Загрузка модели
model = tf.keras.models.load_model("model.h5")
# Размеры матрицы
widthMatr = 100
heightMatr = 100
# Шаг смещения матрицы
widthSmeshenie = widthMatr/3
heightSmeshenie = heightMatr/3
# Количество проходов по ширине
widthNumMatr = int(img.size[0]/widthSmeshenie)
# По высоте
heightNumMatr = int(img.size[1]/heightSmeshenie)
# Итоговое количество проходов
allPhoto = widthNumMatr*heightNumMatr
array_img = []
array_result = []
array_search = []
# Проходим по большому изображению
for y in range(0, heightNumMatr):
for x in range(0, widthNumMatr):
img_crop = img.crop((widthSmeshenie*x,
heightSmeshenie*y,
widthSmeshenie*x+widthMatr,
heightSmeshenie*y+widthMatr))
array_img.append(img_crop)
img = img.convert('L')
img = (np.expand_dims (img, 0))
predictions = model.predict(img)
Class_Names = Read_Class_Names()
Result = Class_Names[np.argmax(predictions[0])]
array_result.append(Result)
# Отображение массива изображений с решением нейросети
plt.figure(figsize=(widthNumMatr, heightNumMatr))
for i in range(0, allPhoto):
plt.subplot(heightNumMatr, widthNumMatr, i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(array_img[i], cmap=plt.cm.binary)
plt.xlabel(array_result[i])
plt.show()
Обучаемая выборка обязательно нормируется. В данном случае входные картинки приводится к одинаковому размеру. Что-то накручено много для простого решения resample (Pillow). В качестве гипотезы: мабудь в этом ошибка. Там зачем-то crop задействован.
100х100 пикселов для распознавания таких сложных объектов по мне мало будет