图片读取案例|学习笔记

简介: 快速学习图片读取案例

开发者学堂课程【深度学习框架 TensorFlow 入门图片读取案例学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/773/detail/13553


图片读取案例


内容介绍:

一、图像基本知识

二、图片特征值处理

三、数据格式

四、案例:狗图片读取


一、图像基本知识

特征抽取:

文本 — 数值(二维数组 shape(n_samples, m_features))

字典 — 数值(二维数组 shape(n_samples, m_features)

图片 — 数值(三维数组 shape(图片长度、图片宽度、图片通道数)

我们经常接触到的图片有两种,一种是黑白图片(灰度图),另一种是彩色图片。

组成图片的最基本单位是像素。

(1)图片三要素

组成一张图片特征值是所有的像素值,有三个维度:图片长度、图片宽度、图片通道数。

描述一个像素点,如果是灰度图,那么只需要一个数值来描述它,就是单通道。

如果一个像素点,有 RGB 三种颜色来描述它,就是三通道。

灰度图[长,宽,1]:单通道,由像素构成,每一个像素点是[0,255]的数,越接近于0越黑,越接近于255越白

彩色图片[长,宽,3]:三通道,由三个通道构成,每一个像素点用[0,255]的数表示

如果一张彩色图片的长200,宽200,通道数为3,那么总的像素数量为200*200*3。

(2)张量形状

在 TensorFlow 中如何用张量表示一张图片呢?

一张图片可以被表示成一个3D张量,即其形状为[height,width,channel], height 就表示高, width 表示宽, channel 表示通道数。我们会经常遇到3D和4D的表示

Tensor(指令名称,shape,dtype)

单个图片: shape = (height,width,channel)

多个图片: shape = (batch,height,width,channel),batch 表示一个批次的张量数量


二、图片特征值处理

iris 数据集

150个样本 4个特征 目标值

1)一个样本 327 * 499 * 3  数据量大

2)样本和样本的形状不统一,没办法进行批量操作和运算

为什么要缩放图片到统一大小?

在进行图像识别的时候,每个图片样本的特征数量要保持相同。所以需要将所有图片张量大小统一转换。

另一方面,如果图片的像素量太大,通过这种方式适当减少像素的数量,减少训练的计算开销。

tf.image.resize_images(images,size)

缩小放大图片

images :4-D形状[batch,height,width,channels]或3-D形状的张量[height,width,channels]的图片数据

size :1-D int32张量: new_height , new_width ,图像的新尺寸

返回4-D 格式或者3-D 格式图片


三、数据格式

存储:unit8(节约空间)

矩阵计算:float32(提高精度)


四、案例:狗图片读取

狗图片如下:

(1)读取流程分析

构造图片文件名队列

读取图片数据并进行解码

处理图片数据形状,使样本的形状和类型统一,放入批处理

开启会话线程运行

(2)完整代码

import tensorflow as tf

import os

def picture_read():

"""

狗图片读取案例

:return:

"""

# 1、构造文件名队列

file_queue = tf.train.string_input_producer(file_list)

# 2、读取与解码

# 读取阶段

reader = tf.WholeFileReader()

# key 文件名,value 一张图片的原始编码形状

key,value = reader.read(file_queue)

print("key:\n",key)

print("value:\n",value)

#解码阶段

image = tf.image.decode_jpeg(value)

print("image:\n",image)

# 图像的形状、类型修改

image_resized = tf.image.resize_images(image,[200,200])

print("image_resized:\n",image_resized)

# 静态形状修改

image_resized.set_shape(shape=[200,200,3])

print("image_resized:\n",image_resized)

# 3、批处理

image_batch=tf.train.batch([image_resized],batch_size=100,num_threads=1,capacity=100)

print("image_batch:\n",image_batch)

# 开启会话

with tf.Session() as sess:

# 开启线程

# 线程协调员

coord = tf.train.Coordinator()

threads=tf.train.start_queue_runners(sess=sess,coord==coord)

key_new,value_new,image_new,image_resized_new,image_batch_new = sess.run([key,value,image])

print("key_new:\n",key_new)

print("value_new:\n",value_new)

print("image_new:\n",image_new)

print("image_resized_new:\n",image_resized_new)

print("image_batch_new:\n",image_batch_new)

# 回收线程

coord.request_stop()

return None

if __name__ == "__main__":

# 构造路径+文件名的列表

filename = os.listdir("./dog")

# print(filename)

# 拼接路径+文件名

file_list = [os.path.join("./dog",file) for file in filename]

picture_read()

相关文章
|
缓存 负载均衡 安全
反向代理服务器如何提升信息安全
反向代理服务器如何提升信息安全
611 7
|
10天前
|
存储 人工智能 运维
云栖实录:重构可观测 - 打造大模型驱动的云监控 2.0 与 AIOps 新范式
大模型时代驱动智能运维变革,阿里云通过统一可观测平台、UModel数字孪生与AIOps Agent,实现数据、认知、决策的全链路升级,重构运维新范式。
104 0
|
3月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
398 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
3月前
|
数据采集 数据可视化 数据挖掘
ETL详解:从核心流程到典型应用场景
你是否常被数据混乱困扰?报表对不上、手工整合耗时、系统迁移困难——根源往往是数据分散、标准不一。解决这些问题的核心是ETL(抽取、转换、加载)。它通过自动化流程,将多源数据清洗、整合并加载至目标系统,提升数据质量与分析效率,支撑报表生成、数据仓库、BI分析等关键场景。掌握ETL,就是掌控数据价值的起点。
ETL详解:从核心流程到典型应用场景
|
3月前
|
监控 安全 网络协议
阿里云CDN域名怎么迁移到另一个账号?
阿里云CDN域名支持跨账号迁移,需确保原账号与目标账号均无欠费,且具备相应权限。仅支持单个迁移,需提前处理证书、回源鉴权及监控日志配置,避免业务中断。通过DNS或文件验证完成归属校验后,即可在控制台操作迁入。
|
6月前
|
缓存 Windows
电脑小白必看:C 盘满了怎么清理?软件搬到 D 盘的超简单步骤
C盘空间不足导致电脑卡顿?试试这些方法优化!首推FreeMove工具,不到1MB,简单两步搬软件,解放C盘空间。此外,清理临时文件、转移用户文件夹至D盘、调整虚拟内存位置、使用符号链接等技巧也能有效缓解压力。注意:系统核心目录不可移动,操作前请备份重要数据,确保安全!
606 5
|
6月前
|
Java
说一说 Collections 工具类的用法总结
我是小假 期待与你的下一次相遇 ~
169 1
|
9月前
|
机器学习/深度学习 人工智能 Rust
MoshiVis:语音视觉实时交互开源!7B模型秒懂图像,无障碍革命来袭
MoshiVis 是 Kyutai 推出的开源多模态语音模型,结合视觉与语音输入,支持实时交互,适用于无障碍应用、智能家居控制等多个场景。
450 28
MoshiVis:语音视觉实时交互开源!7B模型秒懂图像,无障碍革命来袭
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
505 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
存储 安全 Windows
移动硬盘删掉的文件怎么恢复?试试这5个方法
移动硬盘是常见的数据存储工具,因容量很大、携带方便,很多人都愿意选择移动硬盘作为备份数据或存储日常数据的工具。不过,有时候,我们在使用移动硬盘的时候难免会误操作,比如不小心删除了重要文件。这时候,很多人会问,移动硬盘上误删掉的文件还能恢复吗?今天小编就为大家介绍一下如何快速的恢复移动硬盘丢失的文件。