Machine learning 使用Tensorflow和Preception V3预训练模型训练高清晰度图像

Machine learning 使用Tensorflow和Preception V3预训练模型训练高清晰度图像,machine-learning,tensorflow,deep-learning,image-recognition,Machine Learning,Tensorflow,Deep Learning,Image Recognition,我想对转换成图像的PDF文档进行一些图像分类。我正在使用tensorflow,并尝试使用tensorflow之后的我自己的类别重新训练最后一层。我有约1000训练图像每个类别,只有4个类别。通过200k次迭代,我可以达到90%的成功分类,这还不错,但仍需要一些工作: 这里的问题是这个预先训练好的模型只需要300*300p的图像作为输入。很明显,我试图在文档中识别的特性中包含的字符会把它弄得一团糟 有没有可能改变模型输入层,这样我就可以给他更高分辨率的图像 我会用一个自制的更简单的模型得到更好的

我想对转换成图像的PDF文档进行一些图像分类。我正在使用tensorflow,并尝试使用tensorflow之后的我自己的类别重新训练最后一层。我有约1000训练图像每个类别,只有4个类别。通过200k次迭代,我可以达到90%的成功分类,这还不错,但仍需要一些工作:

这里的问题是这个预先训练好的模型只需要300*300p的图像作为输入。很明显,我试图在文档中识别的特性中包含的字符会把它弄得一团糟

有没有可能改变模型输入层,这样我就可以给他更高分辨率的图像

我会用一个自制的更简单的模型得到更好的结果吗


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

如果您希望使用与预训练模型不同的图像分辨率,则应仅使用卷积块,并具有一组与新大小完全连接的块。使用更高级别的库(如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\u top=False
将只提供卷积块。您可以使用
input_shape=(600600,3)
设置所需的形状。您可以向模型中添加几个密集块/完全连接的块/层。最后一层应包含所需数量的类别。10表示类的数量。通过这种方法,您可以使用与预训练模型的卷积层相关联的所有权重,只训练最后一个密集层。

您愿意吗请详细说明?我想如果我重用inception模型中的卷积块,我仍然需要修改所有的卷积块以适应我的新尺寸?您所说的“拥有一组与新尺寸相关的完全连接的块”是什么意思?我看了一下Keras,它似乎比tensorflow提供了一点抽象,但我不确定这是否有助于解决我的问题。用一个例子修改了答案。希望能有帮助。