Какие слои использовать при сравнении 2 массивов из 2 изображений - PullRequest
0 голосов
/ 22 января 2020

У меня есть 2 массива изображения: одно из ухудшенного изображения, другое из того же изображения, но в чистом виде. Их shape=(576, 720, 3), поскольку эти изображения 720*576 и имеют 3 каналы (RGB). В настоящее время я пытаюсь тренировать свою модель с использованием ухудшенного массива изображений в качестве входных данных и чистого массива изображений в качестве выходных данных. Он отлично работает, однако я точно знаю, какой слой добавить в мою модель, и как повысить точность, которая у меня есть на данный момент.

Вот моя текущая модель (которая НЕ хорошая Я просто в случайном порядке размещаю здесь слои):

model = models.Sequential()

model.add(layers.Conv2D(32, 5, activation='relu', padding='same', input_shape=(576, 720, 3)))
model.add(layers.AveragePooling2D(pool_size=(2, 2), strides=(2, 2)))

model.add(layers.Conv2D(64, 3, activation='relu', padding='same'))
model.add(layers.AveragePooling2D(pool_size=(2, 2)))

model.add(layers.Conv2D(3, 3, activation='relu', padding='same'))
model.add(layers.UpSampling2D((4, 4)))

Model Description

И вот как я это скомпилирую:

model.compile(optimizer='rmsprop', loss='mean_absolute_error', metrics=["accuracy"])

В настоящее время у меня есть 5000 искаженных / чистых изображений, и мне удается получить ~ 75% точности и ~ 20 потерь, но я не могу улучшить модель.

Я хотел бы понять что я делаю здесь, так как я не могу найти что-либо на Inte rnet, кроме Image Classification, что я не делаю. Я хотел бы знать, какой слой может быть полезен и почему. Я знаю, что Conv2D полезен, так как я хочу найти fl aws в изображениях и исправить их, и я знаю, что LSTM полезен, если я работаю с видео, но кроме этого, я не знаю правильную последовательность слоев для настройки , ни правильные слои.

Любая помощь будет высоко ценится, спасибо.

1 Ответ

0 голосов
/ 22 января 2020

У меня был проект, похожий на этот.
Как отметил @ meowonga c в своем комментарии, Unet показывал довольно хорошие результаты и его легко построить.

Посмотрите на это репо , чтобы реализовать его. Обратите внимание, что есть более красивый способ записать его, особенно если вы хотите сделать количество фильтров / количество блоков conv в качестве параметров. Если вы хотите понять, почему Unet хорош в вашем случае, прочитайте его документ . Вкратце, он использует путь для получения небольших объектов на пути сжатия, а затем расширяющийся путь для получения пространственного расположения.

В моем проекте Unet работал хорошо, но я хотел лучшую модель, я наткнулся на Плотное UNET репо , которое добавляет Плотные слои, чтобы превзойти Unet, и это было случай.

Редактировать: я также пытался se gnet, который показывал хорошие результаты, но не так хорошо, как Unet, это еще проще реализовать.

Также вы не могли бы смотреть на точность , поскольку вы используете регрессионную парадигму. Это полезно только в классификации с вероятностью от 0 до 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...