【问题标题】:Train High Definition images with Tensorflow and inception V3 pre trained model使用 Tensorflow 和 inception V3 预训练模型训练高清图像
【发布时间】:2018-03-10 08:01:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    如果您想使用与预训练模型不同的图像分辨率,则应仅使用卷积块并拥有一组与新尺寸相关的全连接块。使用像 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 只会给你卷积块。您可以使用input_shape=(600,600,3) 设置所需的形状。您可以在模型中添加几个密集块/完全连接的块/层。最后一层应包含所需的类别数量。10 代表类的数量。通过这种方法,您可以使用与卷积层相关的所有权重预训练模型,只训练最后的密集层。

    【讨论】:

    • 您愿意详细说明一下吗?我想如果我重用初始模型的卷积块,我仍然需要修改所有这些块以适应我的新尺寸,不是吗?您所说的“具有一组关于新大小的完全连接的块”是什么意思?我看了一下 Keras,它似乎比 tensorflow 提供了一点抽象,但我不确定这对我的问题有帮助
    • 用一个例子修改了答案。希望对您有所帮助。
    猜你喜欢
    • 2017-03-28
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    相关资源
    最近更新 更多