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