numpy.resize(image,(IMG_HEIGHT,IMG_WIDTH,3)) 中的 3 是啥?
Posted
技术标签:
【中文标题】numpy.resize(image,(IMG_HEIGHT,IMG_WIDTH,3)) 中的 3 是啥?【英文标题】:What is 3 in numpy.resize(image,(IMG_HEIGHT,IMG_WIDTH,3))?numpy.resize(image,(IMG_HEIGHT,IMG_WIDTH,3)) 中的 3 是什么? 【发布时间】:2021-11-02 20:59:54 【问题描述】:在尝试在 ML 中构建字母分类器时,这是使用 PIL 从文件夹中的图像创建图像数据和标签的代码。
def create_dataset_PIL(img_folder):
img_data_array=[]
class_name=[]
for dir1 in os.listdir(img_folder):
print(dir1)
for file in os.listdir(os.path.join(img_folder, dir1)):
image_path= os.path.join(img_folder, dir1, file)
image= np.array(Image.open(image_path))
image= np.resize(image,(IMG_HEIGHT,IMG_WIDTH,3))
image = image.astype('float32')
image /= 255
img_data_array.append(image)
class_name.append(dir1)
return img_data_array , class_name
每个图像已经是数据集中的32 X 32
像素,我正在将其大小调整为32 X 32 X 3
维度的列表。
但我不明白,当我只需要 32 X 32 像素时,这个第 3 维是什么?
我偶然发现了Numpy Resize/Rescale Image,在那里我了解到这可能是插值参数。同样从 YouTube,我了解到调整图像大小时需要插值。但我不知道如何处理这些额外的数据?我的神经网络的输入层大小现在应该是 32 X 32 X 3
而不是 32 X 32
?
【问题讨论】:
【参考方案1】:Digital image 中的第 3 维包含有关图像中 (x,y) 坐标像素上的颜色信息,也称为color channel。
最常见的渠道类型
RGB 模式:如果值为 3 例如:image_shape: [32,32,3] 灰度模式:如果值为 1 例如:image_shape: [32,32,1]如果您的 ML 模型不需要颜色功能,您可以使用 Scikit-image 通过rgb2gray 转换为灰度
您可以在 NumPy here 中了解有关图像使用的更多信息
【讨论】:
感谢您的回答。如果我将 RGB 图像转换为灰度图像,请告诉我,这对图像分类器模型是否有害? 当涉及到机器学习时,它总是迭代实验,我们从基本参数开始,评估其性能,然后根据我们有根据的猜测调整参数,以检查我们的模型是否比我们的基本模型表现更好。循环继续,直到达到合理的性能。这里分别用RGB图像和灰度图像训练模型,然后根据其中更好的模型性能(预测精度)选择正确的参数 对。谢谢。【参考方案2】:3 表示 RGB(红-绿-蓝)值。 图像的每个像素由 3 个像素而不是 1 个像素表示。 在黑白图像中,每个像素将由 [pixel] 表示, 在 RGB 图像中,每个像素将由 [pixel(R),pixel(G),pixel(B)] 表示
实际上,图像的每个像素都有 3 个 RGB 值。这些范围在 0 到 255 之间,代表红色、绿色和蓝色的强度。较低的值代表较高的强度,较高的值代表较低的强度。例如,一个像素可以表示为这三个值的列表 [78, 136, 60]。黑色将表示为 [0, 0, 0]。
是的:你的输入层应该匹配这个 32X32X3。
【讨论】:
感谢您的回答。我有一个疑问,如果我的模型只是一个文本分类器,我不应该将我的 RGB 图像转换为灰度图像吗?这意味着 NN 的复杂性更低? 灰度只是降低复杂性:从 3D 像素值 (R,G,B) 到 1D 值。许多任务在使用 3D 像素(例如边缘检测)时效果并不好。但是,缩小维度数量可能会丢失重要信息。最后,你可以两者都尝试,然后找到更适合你的(准确/运行时..) 谢谢。我也会这样做。以上是关于numpy.resize(image,(IMG_HEIGHT,IMG_WIDTH,3)) 中的 3 是啥?的主要内容,如果未能解决你的问题,请参考以下文章
C# Image image = Image.FromStream()报错参数无效
CSS难题:background-image和border-image同时使用时,background-image会被border-image盖住,怎么解决