Форма входа Keras Conv2D - PullRequest
       2

Форма входа Keras Conv2D

1 голос
/ 23 апреля 2019

Я использую Keras для моей модели CNN. В этой модели я тренирую это, используя изображения. Мои изображения в форме 256 * 256. Однако я тренировался как 64 * 64. Когда я изменяю размеры моих изображений как 64 * 64 и снова тренируюсь, мой уровень точности резко снижается. Чего мне не хватает?

Когда я размещаю входную форму Convolution2D как

classifier.add(Convolution2D(32,3,3,input_shape = (256,256), activation ='relu'))

Это занимает много времени. Из-за этого я настроил свой Convolution2D как classifier.add(Convolution2D(32,3,3,input_shape = (64,64), activation ='relu')) и обучил свою первую модель. Это очень хорошо предсказывает.

Когда я изменил размер моих входных изображений как 64 * 64 и тренировался с Convolution2D как

classifier.add(Convolution2D(32,3,3,input_shape = (64,64) 

моя точность была уменьшена. В чем проблема?

Вот код

classifier = Sequential()
classifier.add(Convolution2D(32,3,3,input_shape = (64,64,3), activation ='relu'))
classifier.add(MaxPooling2D(pool_size=(2,2)))
classifier.add(Flatten())
classifier.fit_generator(
        training_set,
        steps_per_epoch=8000,
        epochs=10,
        validation_data=test_set,
        validation_steps=800)

Вот мой код изменения формы

from PIL import Image
import os
path = 'TestForTrain2'
for file in os.listdir('TestForTrain2'):
    img = Image.open(os.path.join('TestForTrain2', file))
    width, height = img.size
    stringName = str(file)
    print(width," === ",height)
    print(stringName)
    f, e = os.path.splitext(path + file)
    imResize = img.resize((64, 64), Image.ANTIALIAS)
    imResize.save( stringName + '.jpg', 'JPEG', quality=90)

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Когда проводить предварительную обработку: Это может быть изображение предварительной обработки. Мы выполняем предварительную обработку данных только тогда, когда это необходимо, поскольку при предварительной обработке наших данных мы теряем некоторую информацию. Если в некоторых случаях мы не выполняем предварительную обработку наших данных, то алгоритмам может потребоваться время для обработки больших значений (не предварительно обработанных данных).

  1. Мы будем предварительно обрабатывать данные, когда у нас будет меньше ресурсов для обучения нашей модели
  2. Мы предварительно обрабатываем данные, потому что они являются очень большими и очень маленькими значениями в наших данных. чем мы нормализуем это, стандартизируем это и получаем наши данные в некотором диапазоне. как (0,1)
  3. У них много других причин для предварительной обработки.

Но мы не обрабатываем все данные. Сначала вы знаете природу данных, а затем предварительно обрабатываете их.

Ваше решение: Теперь вы предварительно обрабатываете свои данные, изменяя размеры изображений. Путем преобразования вашего изображения из ((256,256)) в ((64,64)) теперь, когда у вас изображение большого размера, в вашем изображении больше пиксельных значений, и каждый пиксель дает нам некоторую информацию. Теперь, когда вы изменяете размер изображения, у вас меньше пикселей, поэтому поэтому меньше информации, которую ваша модель может использовать для классификации. Но когда вы не изменяете размеры своих данных, вашей машине требуется время для обработки ваших изображений. Теперь экспериментально определите, какой размер вы выберете и который даст достаточно информации для вашей модели и машины, будет меньше усилий для ее обработки. попробуй (180 * 180) (164 * 164) продолжайте снижаться, пока не достигнете требуемой точности в соответствии с данными.

1 голос
/ 21 июня 2019

Определение вашей модели не выглядит полным, кажется, что для выполнения фактической классификации отсутствует хотя бы последний слой Dense(). Однако уменьшение входного разрешения на 4 в 2 измерениях уменьшит ваш ввод «необработанной информации» на 16 (4ˆ2), что в конечном итоге отрицательно скажется на точности вашего прогноза.

Имея гораздо меньше информации, логично, что ваша модель не может предсказать классы так же точно, как раньше.

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