【问题标题】:Is there an architecture for multiclass-classification with large amount of classes?是否存在具有大量类的多类分类架构?
【发布时间】:2019-04-28 20:13:18
【问题描述】:

我是深度学习的新手,我正在做一些业余项目。现在我正在做 200 个类的多类图像分类。有教程或实际架构我可以看看吗?

到目前为止,我尝试了基本的 Dense 和 CNN 网络,但我的准确率永远无法超过 5%。

到目前为止,我非常基本的 CNN 看起来像这样。

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=input_shape,
                 data_format='channels_first'))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(128, (4, 4), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(256, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adam(),
              metrics=['accuracy'])

我寻找解决方案,但找不到任何具有如此大量类的项目(除了 VGG-19 或其他 SOTA CNN,但我会尝试自己编写,因为这是出于学习目的)。有没有人有类似的项目或有一些关于此类问题的教程或任何建议?

提前致谢。

【问题讨论】:

    标签: python tensorflow keras deep-learning multiclass-classification


    【解决方案1】:

    200 节课实在是太少了。

    试试

    from keras.applications.resnet50 import ResNet50
    
    model = ResNet50(weights=None, classes=200)
    model.compile(loss=keras.losses.categorical_crossentropy,
                  optimizer=keras.optimizers.Adam(),
                  metrics=['accuracy'])
    

    这个模型(ResNet50)应该足以胜任大多数任务。

    keras.applications 中的每个模型都经过训练,拥有 1000 个类别,如果您的任务是一些真实世界的图像,您可以使用经过训练的权重

    from keras.applications.resnet50 import ResNet50
    from keras.layers import Dense
    from keras.models import Model
    
    model = ResNet50(weights='imagenet')
    x = model.get_layer('avg_pool').output
    x = Dense(200, activation='softmax')(x)
    model = Model(model.input, x)
    

    【讨论】:

    • 嗯,200张可能不是很多,但对我来说绝对是一个新的水平,因为每个班级的图片都非常不同。 :) 谢谢你的回答,去看看。
    • “每个班级的图片都非常不同”意味着它比每个班级几乎相同要容易。如果它们真的不同,像 MobileNet 这样的轻量级模型可能就足够了,不过它比其他模型快得多。
    • 想象一下,一个 5 岁的孩子可以很容易地分辨出汽车和船的区别,但即使是成年人也可能很难分辨出这辆车是哪一年制造的。
    • 对不起我的英语,我的意思是示例 A 类包含狗的图片,从 chiuauas 到哈士奇。这就是我所说的“不同”。
    • 如果你的意思是,50 种狗,20 种猫,10 种马等。总共 200 类,那很难。但如果它只是 1 个包含许多物种的狗类,那么只要你有足够的例子,现在深度学习就很容易了。试了这些大模型后你会看到的。
    猜你喜欢
    • 2020-04-05
    • 2019-07-17
    • 2018-02-06
    • 2018-03-08
    • 1970-01-01
    • 2019-12-14
    • 2015-11-07
    • 2015-01-11
    相关资源
    最近更新 更多