Конечная цель: расчет средней точки объекта.
У меня есть небольшой набор данных (около 120 изображений), в котором есть объект (одинаковый во всех случаях), а метки - это нормализованные координаты x, y средней точки объекта на изображении (всегда между 0 и 1)
например x = image_005; y = (0,1, 0,15) для изображения с объектом, расположенным в нижнем левом углу
Я пытаюсь использовать архитектуру ResNet, но настроенную под размер моего изображения (все изображения идентичны). Поскольку выходные значения всегда находятся в диапазоне от 0 до 1 для обеих координат, мне было интересно, можно ли использовать сигмовидную активацию в моем последнем слое:
X = Dense(2, activation='sigmoid', name='fc', kernel_initializer = glorot_uniform(seed=0))(X)
вместо линейной активации (как часто советуют, когда вы пытаетесь добиться результата регрессии)
Для функции потерь я использую MSE с оптимизатором rmsprop, и в дополнение к точности и MSE я написал настраиваемую метрику, которая сообщает мне, отклоняются ли прогнозируемые точки от меток более чем на 5%.
model.compile(optimizer='rmsprop', loss='mean_squared_error', metrics=['mse','acc',perc_midpoint_err])
Я не получаю хороших результатов после обучения модели примерно на 150 эпохах (я тоже экспериментировал с разными размерами пакетов)
Стоит ли менять слой активации на линейный? Или я могу сделать другую модификацию своей модели? Или ResNet совершенно не подходит для этой задачи?