我正在尝试使用EMNIST数据训练一个resnet50模型,该数据集包含30万个字母和数字图像。 Resnet50需要3维图像作为其输入,而不是灰度图像,因此我尝试将所有灰度图像都转换为RGB,但它却不能像我想要的那样工作。当我使用pyplot.imshow查看它们时,RGB图像确实与灰度图像不同,这是奇怪的,因为这些命令实际上只是在3维上复制粘贴相同的灰度矩阵。
我尝试过的3个命令如下:
> resizedImageRGB = cv2.cvtColor(resizedImage,cv2.COLOR_GRAY2RGB)
> resizedImageRGB = np.repeat(resizedImage[:,:,np.newaxis],3,-1) arr =
> np.expand_dims(resizedImage, axis=2) resizedImageRGB =
> np.concatenate((arr,arr,arr), axis=2)
分别给出字母之一的灰度和RGB图像:
答案 0 :(得分:0)
从灰度到RGB逼近在数学上很难。考虑从RGB到灰度值Y的公式(其中之一):
Y = 0.299R + 0.587G + 0.114B
现在您可以想象在另一个方向上尝试从Y导出R,G和B值需要太多的信息(1个等式3未知)。人们实际上将神经网络用于此类工作。.
相反,适合您的方法是相反的方法。 也就是说,如果您只能访问灰度数据(或与此相关的1通道数据),则应修改网络以使其接受正确的输入。
我不确定您要从问题中使用什么库或确切的代码,但是总的来说这应该不太难。
通常,您在网上找到的代码具有使用提供的正确输入参数为您创建这些网络的功能。
def ResNET(shape=(256,256,3), ...):
some_code()
然后,您通常只需传递自己的输入即可:
net = ResNET(shape=(256,256,1))
希望这会有所帮助。