我对深度学习很陌生,做爱好项目。现在我正在对 200 个类进行多类图像分类。是否有我可以查看的教程或实际架构?
到目前为止,我尝试了基本的密集和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,但我会尝试编写自己的,因为这是为了学习目的)。是否有人有类似的项目或对此类问题有一些教程或任何建议?
提前谢谢。
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)