【发布时间】:2019-04-12 21:15:38
【问题描述】:
我正在尝试使用 keras 为 ocr 训练一个 cnn 模型。我通过转换为灰度、去除噪声然后将其转换为二进制来对图像进行预处理,因为二进制图像在 ocr 中效果更好。但我遇到的问题是二进制图像有 2 个维度,没有通道维度,并且 keras 中的 conv2d(以及一般的任何 conv 层)需要 3 个维度。那么我应该怎么做才能添加维度但保持图像二进制?我正在使用 cv2 进行图像处理,所以请告诉解决方案最好使用它。也告诉我我是否正确,使用二进制图像数据集对 ocr 更好。
【问题讨论】:
-
将 dnn 架构更改为仅使用一个通道。或者添加冗余通道,但这会使您的模型变得不必要地复杂。
-
@Micka 但 keras 的 conv2d 层需要 3 个输入维度。我该如何改变呢?至于添加冗余频道怎么添加?
-
根据文档:
"When using this layer as the first layer in a model, provide the keyword argument input_shape (tuple of integers, does not include the batch axis), e.g. input_shape=(128, 128, 3) for 128x128 RGB pictures in data_format="channels_last"."所以我认为您可以将input_shape=(height,width,1)用于灰度或二进制数据?对不起,从我的角度来看,这只是理论上的。而且我不知道如何复制频道或某事。在python中。 -
@Micka 我使用的是二进制,而不是灰度
-
是的,但是它将被用作灰度。重要的是,它只有 1 个频道。这是
input_shape=(height,width,1)中的 1@
标签: python opencv image-processing keras conv-neural-network