Да, это плохая вещь, если использовать более подходящую модель как лучшую модель.По определению, подходящая модель не очень хорошо работает в реальных сценариях, то есть на изображениях, которых нет в обучающем или тестовом наборе.
Чтобы избежать чрезмерной подгонки, используйте увеличение изображения, чтобы сбалансировать и увеличить количество сэмплов для обучения.Также попытайтесь увеличить долю выпадения, чтобы избежать перебора.Я лично использую ImageGenerator от Keras для увеличения изображений и их сохранения.
from keras.preprocessing.image import ImageDataGenerator,img_to_array, load_img
import glob
import numpy as np
#There are other parameters too. Check the link given at the end of the answer
datagen = ImageDataGenerator(
brightness_range = (0.4, 0.6),
horizontal_flip = True,
fill_mode='nearest'
)
for i, image_path in enumerate(glob.glob(path_to_images)):
img = load_img(image_path)
x = img_to_array(img) # creating a Numpy array
x = x.reshape((1,) + x.shape)
i = 0
num_of_samples_per_image_augmentation = 8
for batch in datagen.flow(x, save_to_dir='augmented-images/preview/fist', save_prefix='fist', save_format='jpg'):
i += 1
if i > num_of_samples_per_image_augmentation : #
break
Вот ссылка на параметры увеличения изображения с использованием Keras, https://keras.io/preprocessing/image/
Не стесняйтесь использовать другие библиотеки по вашему усмотрению.
Несколько других способов уменьшитьпереоснащение:
1) Настройте модель CNN, добавив дополнительные параметры обучения.
2) Сократите полностью подключенные слои.
3) Используйте трансферное обучение (предварительно обученные модели))