В настоящее время я пытаюсь предсказать положение объекта в изображении, используя простую сверточную нейронную сеть, но данный прогноз всегда является полным изображением.
Набор данных Stanford Cars Dataset содержит около 8144 изображений автомобилей.
Я не пытаюсь предсказать, какой это тип автомобиля, только его положение
Объекты представляют собой изображения в оттенках серого 200x200, масштаб которых изменяется между [0,1]
Ярлыки есть LeftX, TopY, Ширина, Высота. Также масштабируется между [0,1]
Вот модель:
model = Sequential()
model.add(Conv2D(64,(3,3),input_shape = (200,200,1)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=2))
model.add(Conv2D(64,(3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=2))
model.add(Flatten())
model.add(Dense(4))
model.add(Activation("sigmoid"))
model.compile(loss="mean_squared_error",optimizer="Adam",metrics=[])
model.fit(X,y,batch_size=32, validation_split=0,epochs=30,verbose=2)
Модель прогнозов в основном всегда такова: [0,0,1,1].
Вы можете попробовать это, я использовал предварительно обученную сеть Xception, чтобы функционировать в качестве экстрактора функций. Вы можете поэкспериментировать с другими моделями Imagenet, такими как inception, resnet50 и т.д. Tf.keras.applications предоставляет большое количество предварительно обученных клиентов. Использование предварительно обученной сети может помочь вам получить хорошие результаты даже при небольшом количестве данных. больше о трансферном обучении
from tensorflow.python.keras.layers import GlobalAveragePooling2D, Dense, Input
from tensorflow.python.keras.applications.xception import Xception
inp = Input(shape=(299, 299, 3))
base_model = Xception(include_top=False, input_tensor=inp, weights='imagenet')
y = base_model.layers[-1].output
y = GlobalAveragePooling2D()(y)
y = Dense(4, activation='sigmoid')(y)
model = Model(inputs=inp, outputs=y)
выходная форма [Нет, 4], что означает, что каждая метка состоит из 4 чисел
Метки масштабируются от 0 до 1. (масштабируется по размерам изображения)
образец ограничительной рамки для изображения
[0.48, 0.4 , 0.58, 0.37]