Я работаю над проектом по обнаружению присутствия человека на картине. У меня есть 4000 обучающих изображений и 1000 тестовых изображений, размер которых увеличен до (256,256,3)
Я попробовал модель CNN с 3 (слои Conv, MaxPool, BatchNormalization) и 2 полностью подключенными слоями.
model = Sequential()
model.add(Conv2D(32, kernel_size = (7, 7), activation='relu', input_shape=shape))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(BatchNormalization())
model.add(Conv2D(64, kernel_size=(7,7), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(BatchNormalization())
model.add(Conv2D(96, kernel_size=(5,5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(BatchNormalization())
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(1, activation = 'sigmoid'))
Точность поезда всегда сходится к 1 (всего 20-50 эпох), а точность теста всегда остается постоянной около 0,67.
![enter image description here](https://i.stack.imgur.com/IiQ13.png)
Я попробовал следующее:
- Я попытался изменить размер слоев и добавить больше слоев.
- Я попытался увеличить данные
- Я попытался меньшие изображения 128x128x3.
Но у меня всегда одни и те же результаты.
Я не знаю, связано ли это с несколькими изображениями, которые у меня есть, или архитектура не достаточно большой, чтобы учиться на сложных картинах.
Я думал о том, чтобы попробовать трансферное обучение (но я не знаю, поможет ли это, потому что я впервые пробую это). Кроме того, у вас есть идеи, где я могу найти обученных моделей?
Итак, я прошу некоторые предложения по улучшению моей модели.