首页 文章

使用Tensorflow和初始V3预训练模型训练高清图像

提问于
浏览
2

我'm looking to do some image classification on PDF documents that I convert to images. I' m使用tensorflow inception v3 pre trained model并尝试在张量流tuto之后用我自己的类别重新训练最后一层 . 我每个类别有大约1000个训练图像,只有4个类别 . 通过200k次迭代,我可以达到成功分类的90%,这不错但仍需要一些工作:
enter image description here

这里的问题是这个预先训练过的模型只需要300 * 300p的图像进行输入 . 很明显,我在文档中尝试识别的功能中涉及的字符会让人感到困惑 .

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

使用自制且简单的模型,我能获得更好的效果吗?

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

1 回答

  • 3

    如果要使用与预训练模型使用的图像分辨率不同的图像分辨率,则应仅使用卷积块并根据新大小设置一组完全连接的块 . 使用像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表示类的数量 . 通过此方法,您可以使用与卷积层关联的所有权重预训练模型的训练并仅训练最后的密集层 .

相关问题