我是GAN领域的新手,我尝试了一些教程,但是,大多数教程使用的是Cifar或mnist数据集。因此,大多数文件都是以这样的格式构建的(xxxx,28,28)。
最近,我想尝试一下其他图片。例如,
from scipy import misc
data = misc.imread("1.PNG") #this can be any images from JPEG or any
print(data.shape)
我的输出:
(842, 1116, 4) # Seriously I dont understand what does this mean. 842 means 842 files? I thought I have only 1 image loaded.
我的预期输出:
由于我是新来的,我真的很想就是否应该是(1、28、28)或其他问题提出疑问。这样我就可以适应GAN,因为它在本教程中使用了784
通常,在mnist数据集中,我们有(60000,28,28),表示60k图片,每个形状为28x28。那我上面的输出呢? (842、1116、4)并不意味着842张形状为1116 x 4的图片不是吗?我只加载一张图像。有人可以协助我进行转换,也可以理解它。谢谢
答案 0 :(得分:1)
imread使用PIL或Pillow读取图像,它以以下格式返回图像: 高x宽x通道 其中通道通常是3个通道(普通彩色图像的红色,绿色,蓝色[RGB]),有时是4个通道(红色,绿色,蓝色,alpha /透明度[RGBA])。
因此,您读取的图像大小为842x1116
像素,具有4个颜色通道。您说您使用形状(xxxx,28、28)的训练数据,所以您使用灰度而不是彩色图像。第一步是将彩色图像转换为灰度图像。 Pillow
(作为PIL的替代品)是一个很好的图像操作库。另外,您也可以只使用一个频道
gray_data = data[:,:,0]
要将其用作训练数据,您现在可以将其调整为28x28的大小,或从中提取尺寸为28x28的小块。
small_data = gray_data[:28,:28]
这将导致(28,28)。大多数学习算法期望的不是一张图像,而是几张图像,大多采用以下格式(#images,高度,宽度)。因此,您需要重塑它:
final_data = small_data.reshape(1,28,28)
应该这样做。但是,将RGB(A)正确转换为灰度并调整大小将是更好的解决方案。有关详细信息,请查看枕头文档。
答案 1 :(得分:0)
图像x,y(842x1116)的大小(以像素为单位)和颜色通道数-4(R,G,B,Alpha)