我希望对转换为图像的 PDF 文档进行一些图像分类。我正在使用 tensorflow inception v3 pre trained model并尝试按照 tensorflow tuto 使用我自己的类别重新训练最后一层。我每个类别有大约 1000 个训练图像,但只有 4 个类别。通过 20 万次迭代,我可以达到 90% 的成功分类,这还不错,但仍需要一些工作:
这里的问题是这个预训练模型仅需要 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/