是否有大量 类 的多类分类架构?
Is there an architecture for multiclass-classification with large amount of classes?
我是深度学习的新手,正在做业余项目。现在我正在用 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,但我会尝试自己编写,因为这是为了学习目的).有没有人有类似的项目或有一些教程或任何关于此类问题的建议?
提前致谢。
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 类 进行多类图像分类。有教程或实际架构我可以看一下吗?
到目前为止,我尝试了基本的 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,但我会尝试自己编写,因为这是为了学习目的).有没有人有类似的项目或有一些教程或任何关于此类问题的建议?
提前致谢。
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)