【问题标题】:multi label classification in keraskeras中的多标签分类
【发布时间】:2019-02-26 04:21:29
【问题描述】:

我尝试构建一个模型来帮助我识别多标签分类问题的图像,例如,如果我有猫、狗和牛的照片。 我运行了一个 CNN 模型,但它根本没有捕捉到(精度为 33%)。 任何人都可以分享一个有效的模型(即使准确性是合理的)? 在此先感谢大家! [附上我上面提到的代码]

from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, 
BatchNormalization
from keras.callbacks import LearningRateScheduler
from keras.optimizers import adam, SGD
from keras.preprocessing.image import ImageDataGenerator
from keras.applications.vgg16 import VGG16


# 2 - Create network layers
image_width = 200
image_height = 200

model = Sequential()
model.add(Conv2D(filters=16, kernel_size=(3,3), 
activation='relu',input_shape=( 
(image_width,image_height,3)))
model.add(BatchNormalization())
model.add(Conv2D(filters=16, kernel_size=(3,3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPool2D(strides=(2,2)))
model.add(Dropout(0.25))
# Stage II = make it more compex with 'filters = 32'
model.add(Conv2D(filters=32, kernel_size=(3,3), activation='relu'))
model.add(BatchNormalization())
model.add(Conv2D(filters=32, kernel_size=(3,3), activation='relu'))
model.add(BatchNormalization())
model.add(MaxPool2D(strides=(2,2)))

model.add(Flatten())
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.25))
model.add(Dense(1024, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))


# We'll Randomize the training set (shuffle), to avoid overfitting 
(augmentation)
datagen = ImageDataGenerator(zoom_range = 0.1,
                        height_shift_range = 0.1,
                        width_shift_range = 0.1,
                        rotation_range = 10)

model.compile(optimizer='adam',loss='categorical_crossentropy',metrics= 

['准确度'])

# automatically retrieve images and their classes for train and validation 
train_generator = datagen.flow_from_directory(
    train_dataset,
    target_size=(image_width, image_height),
    batch_size=32,
    class_mode='categorical')


validation_generator = datagen.flow_from_directory(
    validation_dataset,
    target_size=(image_width, image_height),
    batch_size=32,
    class_mode='categorical')

# Now let's fit the model on the validation set

model.fit_generator(
    train_generator,
    steps_per_epoch=50,
    epochs=500,
    validation_data=validation_generator,
    validation_steps=15)

【问题讨论】:

  • 为什么不考虑迁移学习?你可以参考我写的代码here
  • 嘿@LokeshKumar,我很乐意参考你的一些代码,但是我在阅读它并试图看看有什么可以解决我的问题时有点迷失......

标签: deep-learning image-recognition multilabel-classification


【解决方案1】:

我在您的代码中看到的一个问题是,flow_from_directory 不支持多标签分类。它只会根据子目录返回一个标签。链接到docs

这可能是一个大问题,因为您的模型甚至没有执行多标签分类。

【讨论】:

    猜你喜欢
    • 2018-08-04
    • 2019-05-21
    • 1970-01-01
    • 2018-06-23
    • 2019-01-06
    • 2018-07-02
    • 2020-04-25
    • 2021-11-18
    • 2018-07-07
    相关资源
    最近更新 更多