使用 Tensorflow 和 inception V3 预训练模型训练高清图像
Train High Definition images with Tensorflow and inception V3 pre trained model
我希望对转换为图像的 PDF 文档进行一些图像分类。我正在使用张量流 inception v3 pre trained model and trying to retrain the last layer with my own categories following the tensorflow tuto。我每个类别大约有 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_top = False
只会给你卷积块。您可以使用 input_shape=(600,600,3)
来设置所需的形状。你可以添加几个密集的 blocks/Fully 连接 blocks/layers 到 model.The 最后一层应该包含所需的类别数。10 代表 classes.By 你使用的这种方法的数量与预训练模型的卷积层相关的所有权重,只训练最后的密集层。
我希望对转换为图像的 PDF 文档进行一些图像分类。我正在使用张量流 inception v3 pre trained model and trying to retrain the last layer with my own categories following the tensorflow tuto。我每个类别大约有 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_top = False
只会给你卷积块。您可以使用 input_shape=(600,600,3)
来设置所需的形状。你可以添加几个密集的 blocks/Fully 连接 blocks/layers 到 model.The 最后一层应该包含所需的类别数。10 代表 classes.By 你使用的这种方法的数量与预训练模型的卷积层相关的所有权重,只训练最后的密集层。