Я работаю над проектом двоичного классификатора спама, в котором мне нужно определить, является ли изображение спамом или нет. Чтобы получить более подробную информацию, позвольте мне сначала показать вам, что такое не спам :
введите описание изображения здесь
Любое изображение в мире, которое не является изображением вопроса на бумаге, является спамом, будь то велосипед, черный экран или что-то еще.
Я использовал манекен, сделанный на заказ модель а также ResNet50
с тонкой настройкой и без. У меня много изображений вопросов, но я использовал 47000 изображений вопросов и тест COCO 2017 набор данных как спам. Модель показала хорошие результаты, но когда я использовал ее с imagenet
изображениями набора данных, она работала очень плохо. Я хочу спросить, делаю ли я здесь что-то не так или нет, что мне делать, чтобы сделать мою модель обобщенной.
train_data_gen = ImageDataGenerator(preprocessing_function=preprocess_input,validation_split=0.20)
train_set = train_data_gen.flow_from_directory(TRAIN,batch_size=BATCH_SIZE,target_size=(224,224),
subset='training',class_mode='categorical')
val_set = train_data_gen.flow_from_directory(TRAIN,batch_size=128,target_size=(224,224),
subset='validation',class_mode='categorical')
res_net = ResNet50(include_top=False,weights='imagenet',input_shape=(224,224,3),pooling='avg')
fc1 = Dense(1024,activation='relu')(res_net.output)
d1 = Dropout(0.79)(fc1)
out_ = Dense(1,activation='sigmoid',name='output_layer')(d1)
model = Model(inputs=res_net.input, outputs= out_)
for layer in res_net.layers:
layer.trainable = False
model.compile(loss='binary_crossentropy', optimizer=adam,
metrics=['accuracy'])
history = model.fit(train_set,epochs=3,validation_data=val_set,
steps_per_epoch=len(train_set)//BATCH_SIZE,callbacks=callbacks)
Я использовал softmax
с categorical_crossentropy
(2 нейрона) и sigmoid
с binary_crossentropy
(1 нейрон). Модель работает хорошо во всех случаях обучения и проверки, но Почему не обобщает ? Что-то не так с тем, как я обучаю свою модель, неправильный ли код? Нужно ли мне больше данных, тренировать ли я resnet
с нуля.
Думаю, мне нужно больше данных, но на сколько данных я должен ориентироваться, чтобы УЗНАТЬ, ЧТО ВОПРОС ИЗОБРАЖЕНИЕ ВЫГЛЯДИТ НА , потому что спамом может быть что угодно.