如何使keras ImageGenerator正确加载16位图像?

问题描述 投票:3回答:1

我已经搜索了类似的问题,但没有找到解决方案。我有16位灰度图像,并且正在尝试将它们适合keras ImageDataGenerator。使用像flow_from_dataframe之类的函数时,它会产生全部具有相同像素值(不正确)的图像。

我尝试使用keras preprocess_input,使用自定义预处理功能将其重新缩放为[0,1],再缩放为[-1,1],但是这些都不起作用。我还在ImageDataGenerator中设置了color_mode ='grayscale'。

我进一步测试了转换为8位的方法,并且可以正常工作。我将通道数增加了三倍,这不是问题,因为它仍然适用于8位。我已经知道在这种情况下keras使用PIL库读取图像,并且由于它不能正确处理16位,因此它会返回该错误。我看到我们可以为加载图像设置一个不同的库,但是我不知道该怎么做。

有人知道使用16位图像的替代方法吗?在最后一种情况下,我会尝试使用自定义生成器,但是我真的很想从已经构建和测试的功能中受益。

[我旨在使用这些图像来微调预先训练的网络,因此我想标准化我使用的输入类型。

谢谢。

keras python-imaging-library generator conv-neural-network 16-bit
1个回答
2
投票

您可能想要编写自己的ImageDataGenerator并覆盖一些方法来按预期加载数据。

some great blog articles解释了您需要的一切。

然后您必须确保覆盖的__data_generation方法将您的.tiff图像正确加载到numpy数组中,或者您事先将其转换并仅加载它们。

测试生成器(do it!),并检查它是否产生了您期望的输出,也非常简单。

© www.soinside.com 2019 - 2024. All rights reserved.