首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用image_dataset_from_directory加载灰度png返回一个3通道张量。

用image_dataset_from_directory加载灰度png返回一个3通道张量。
EN

Stack Overflow用户
提问于 2020-09-07 11:11:07
回答 1查看 3K关注 0票数 5

我有一套灰度png图像分割在两个目录。根据文档,我使用image_dataset_from_directory作为Dataset对象加载它们。当我使用element_spec检查已经加载的内容时,它说图像有三个通道:

代码语言:javascript
复制
from tensorflow.keras.preprocessing import image_dataset_from_directory
Dataset = image_dataset_from_directory('path/to/files')
Dataset.element_spec

返回:

找到属于两个类的14000个文件。 (TensorSpec(shape=(None,256,256,3),dtype=tf.float32,name=None),TensorSpec(shape=(无,),dtype=tf.int32,name=None))

使用MATLAB将图像保存为灰度pngs,我已经使用Linux命令文件确认它们是灰度图像:

代码语言:javascript
复制
$ file path/to/files/class_1/file_1.png

路径/to/files/class_1/file_1.png: PNG图像数据,256 x 256,8位灰度,无交错

所以现在我需要告诉image_dataset_from_directory将这些文件作为灰度加载,或者我需要将3通道张量数据集对象转换为一个1通道张量。我该怎么做呢?

编辑:

有关使用标识(来自ImageMagick)的磁盘上文件的更多信息:

代码语言:javascript
复制
$ identify -verbose path/to/files/class_1/file_1.png
代码语言:javascript
复制
Image: AI_Optrap/Samples/Set4/relaxed/HL60_normoxia_1_1.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 256x256+0+0
  Units: Undefined
  Type: Grayscale
  Base type: Grayscale
  Endianess: Undefined
  Colorspace: Gray
  Depth: 8-bit
  Channel depth:
    gray: 8-bit
  Channel statistics:
    Pixels: 65536
    Gray:
      min: 0 (0)
      max: 255 (1)
      mean: 135.92 (0.533021)
      standard deviation: 36.3709 (0.142631)
      kurtosis: 1.51412
      skewness: 0.035325
      entropy: 0.87207
  Colors: 256
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-07 11:24:35

默认情况下,image_dataset_from_directory转换为3个通道。看看文档

代码语言:javascript
复制
tf.keras.preprocessing.image_dataset_from_directory(
    directory, labels='inferred', label_mode='int', class_names=None,
    color_mode='rgb', batch_size=32, image_size=(256, 256), shuffle=True, seed=None,
    validation_split=None, subset=None, interpolation='bilinear', follow_links=False
)

色彩模式:之一的“灰度”,"rgb","rgba“。默认值:"rgb“。是否将图像转换为有1、3或4个通道。

所以就用这句话:

代码语言:javascript
复制
Dataset = image_dataset_from_directory('path/to/files', color_mode='grayscale')

现在,您的图像将转换为(None, 256, 256, 1)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63776452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档