machine-learning - 使用 Tensorflow 和 inception V3 预训练模型训练高清图像

标签 machine-learning tensorflow deep-learning image-recognition

我希望对转换为图像的 PDF 文档进行一些图像分类。我正在使用 tensorflow inception v3 pre trained model并尝试按照 tensorflow tuto 使用我自己的类别重新训练最后一层。我每个类别有大约 1000 个训练图像,但只有 4 个类别。通过 20 万次迭代,我可以达到 90% 的成功分类,这还不错,但仍需要一些工作: enter image description here

这里的问题是这个预训练模型仅需要 300*300p 图像作为输入。显然,它与我试图在文档中识别的功能中涉及的字符混淆了很多。

是否可以更改模型输入层,以便我可以为他提供分辨率更高的图像?

使用自制且更简单的模型可以获得更好的结果吗?

如果是这样,我应该从哪里开始构建此类图像分类的模型?

最佳答案

如果您想使用与预训练模型不同的图像分辨率,则应仅使用卷积 block ,并拥有一组相对于新尺寸的完全连接的 block 。使用像 Keras 这样的更高级别的库会让事情变得更容易。下面是有关如何在 Keras 中执行此操作的示例。

import keras
from keras.layers import Flatten,Dense,GlobalAveragePooling2D
from keras.models import Model
from keras.applications.inception_v3 import InceptionV3

base_model = InceptionV3(include_top=False,input_shape=(600,600,3),weights='imagenet')
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024,activation='relu')(x)
#Add as many dense layers / Fully Connected layers required
pred = Dense(10,activation='softmax')(x)
model = Model(base_model.input,pred)

for l in model.layers[:-3]:
    l.trainable=False

input_top = False 只会为您提供卷积 block 。您可以使用input_shape=(600,600,3)来设置您想要的形状。您可以向模型添加几个密集 block /完全连接的 block /层。最后一层应包含所需数量的类别。10 表示类的数量。通过这种方法,您可以使用与卷积层关联的所有权重预训练模型的一部分并仅训练最后的密集层。

关于machine-learning - 使用 Tensorflow 和 inception V3 预训练模型训练高清图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46471468/

相关文章:

machine-learning - 如何使用 to_categorical 将 [[4,7,10],[10,20,30]] 转换为一种热编码

python - 在新数据集中进行预测

python - 在 Keras 中实现 LSTM

python - Tensorflow 2.0如何从Keras模型导出预测和训练模式

python - TensorFlow 训练多个 epoch 的批处理?

python - 如何在二进制张量中找到相邻真值组?

tensorflow - Keras:为什么我的 val_acc 在 Epoch 42/50 突然下降?

machine-learning - 从本地运行 ML 训练和测试迁移到 Google Cloud

python - 在featuretools中使用cutoff_times进行预测

tensorflow - 对如何在 Web 应用程序中使用一些基本的机器学习感到好奇