Я пытаюсь привлечь внимание к модели, созданной на основе бумаги http://openaccess.thecvf.com/content_cvpr_2018/html/Li_CSRNet_Dilated_Convolutional_CVPR_2018_paper.html У меня истек срок действия с несколькими решениями, но я нашел для своей цели привлечь очень простое внимание, которое я лучше всего добавляю уровни внимания в модели vgg16. Я не очень хорошо осведомлен в этой области, но большинство моделей внимания слишком усложняют дизайн. Проблема даже в том, что добавление одного плотного слоя приводит к очень плохим результатам. MAE инструмента изначально составляет 65, а мой твик заставляет его становиться больше 500.
if(batch_norm):
model.add(Conv2D(64, kernel_size = kernel, input_shape = (rows,cols,3),activation = 'relu', padding='same'))
model.add(BatchNormalization())
model.add(Conv2D(64, kernel_size = kernel,activation = 'relu', padding='same'))
model.add(BatchNormalization())
#model.add(Dense(64, activation = 'softmax', kernel_initializer = init))
model.add(MaxPooling2D(strides=2))
model.add(Conv2D(128,kernel_size = kernel, activation = 'relu', padding='same'))
model.add(BatchNormalization())
model.add(Conv2D(128,kernel_size = kernel, activation = 'relu', padding='same'))
model.add(BatchNormalization())
model.add(Dense(256, activation = 'softmax', kernel_initializer = init))
model.add(BatchNormalization())
model.add(MaxPooling2D(strides=2))
model.add(Conv2D(256,kernel_size = kernel, activation = 'relu', padding='same'))
model.add(BatchNormalization())
model.add(Conv2D(256,kernel_size = kernel, activation = 'relu', padding='same'))
model.add(BatchNormalization())
model.add(Conv2D(256,kernel_size = kernel, activation = 'relu', padding='same'))
model.add(BatchNormalization())
model.add(MaxPooling2D(strides=2))
model.add(Conv2D(512, kernel_size = kernel,activation = 'relu', padding='same'))
model.add(Dense(256, activation = 'softmax', kernel_initializer = init))
model.add(BatchNormalization())
model.add(Conv2D(512, kernel_size = kernel,activation = 'relu', padding='same'))
model.add(BatchNormalization())
#model.add(Dense(512, activation = 'softmax', kernel_initializer = init)) # Eq. 9
model.add(Conv2D(512, kernel_size = kernel,activation = 'relu', padding='same'))
model.add(BatchNormalization())
else:
model.add(Conv2D(64, kernel_size = kernel,activation = 'relu', padding='same',input_shape = (rows, cols, 3), kernel_initializer = init))
#model.add(Dense(64, activation = 'softmax', kernel_initializer = init))
model.add(Conv2D(64, kernel_size = kernel,activation = 'relu', padding='same', kernel_initializer = init))
model.add(MaxPooling2D(strides=2))
model.add(Conv2D(128,kernel_size = kernel, activation = 'relu', padding='same', kernel_initializer = init))
#model.add(Dense(128, activation = 'softmax', kernel_initializer = init))
model.add(Conv2D(128,kernel_size = kernel, activation = 'relu', padding='same', kernel_initializer = init))
model.add(MaxPooling2D(strides=2))
model.add(Conv2D(256,kernel_size = kernel, activation = 'relu', padding='same', kernel_initializer = init))
model.add(Conv2D(256,kernel_size = kernel, activation = 'relu', padding='same', kernel_initializer = init))
model.add(Conv2D(256,kernel_size = kernel, activation = 'relu', padding='same', kernel_initializer = init))
model.add(Dense(256, activation = 'softmax', kernel_initializer = init))
model.add(MaxPooling2D(strides=2))
model.add(Conv2D(512, kernel_size = kernel,activation = 'relu', padding='same', kernel_initializer = init))
model.add(Conv2D(512, kernel_size = kernel,activation = 'relu', padding='same', kernel_initializer = init))
#model.add(Dense(512, activation = 'softmax', kernel_initializer = init))
model.add(Conv2D(512, kernel_size = kernel,activation = 'relu', padding='same', kernel_initializer = init))
Я знаю, что добавление слоя равно единице. из причин, но я также должен исключить, если причиной является оптимизатор, так как оригинальная модель использовала sgd, но не работала, или я изменил оптимизатор на adam следующим образом
adam= adam(lr = 1e-8, decay = (5*1e-4))
model.compile(loss='mean_squared_error',optimizer=adam,metrics=['mse'])
Я просто хотел бы знать что именно портит результаты, так это в основном мое добавление плотного слоя или изменение оптимизатора