是否存在用于具有大量类的多类分类的体系结构?

时间:2019-04-28 05:26:37

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

我对深度学习非常陌生,从事业余项目。现在,我正在对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,但是我会尝试编写自己的项目,因为这是出于学习目的)。是否有人有类似的项目或有一些教程或有关此问题的任何建议?

谢谢。

1 个答案:

答案 0 :(得分:0)

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)