通过cifar-10数据集理解numpy数组的高(H)、宽(W)、通道数(C)

news2024/11/15 20:23:04

文章目录

    • 1、CIFAR-10数据集介绍
      • 1.1 CIFAR-10数据集的构成
      • 1.2 batches.meta
      • 1.3 data_batch_n.py & test_batch.py
    • 2、获取一张图片的data数据
      • 2.1 反序列化获得numpy数据
      • 2.2 清楚numpy中的H、W、C的含义
      • 2.3 清楚RGB图片在numpy中的表示
    • 3、处理图片数据的代码

1、CIFAR-10数据集介绍

1.1 CIFAR-10数据集的构成

  CIFAR-10数据集由60000张32x32的彩色图像组成,分为10类,每类有6000张图像。有50000张训练图像和10000张测试图像。

  该数据集被分为五个训练集的batch和一个测试集的batch,每个batch有10000张图像。

  测试集的batch包含从每个类中随机选择的1000张图像。

  训练集的batch包含其余的随机顺序的图像,但一些训练集的batch可能包含一个类别的图像多于另一个。
在它们之间,训练集的batch恰好包含了来自每一类的5000张图像。

1.2 batches.meta

  • num_cases_per_batch: 10000
  • label_names: [‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’]
  • num_vis: 3072

1.3 data_batch_n.py & test_batch.py

  • batch_label
  • labels
  • data
  • filenames

2、获取一张图片的data数据

2.1 反序列化获得numpy数据

# cifar10的数据在python中使用picklec模块序列化并保存在文件中
def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes') 
    return dict

label_loc = '../raw_Data/cifar-10-batches-py/batches.meta'
label_dict = unpickle(label_loc)

pic_loc = '../raw_Data/cifar-10-batches-py/data_batch_1'
pic_dict = unpickle(pic_loc)

  在官网这样介绍data:它保存了10000 × \times × 3072的uint8的numpy数组。该数组的每一行都存储了一个32 × \times × 32的彩色图像。前1024个条目包含红色通道的值,接下来的1024个是绿色,最后的1024个是蓝色。图像是按行主顺序存储的,所以数组的前32个条目是图像第一行的红色通道值。
  行主顺序,顾名思义,就是把图片的宽按顺序存储在数组中。每一个像素代表着一个值(像素点的模糊程度),每一个颜色通道有 (32 × \times × 32) 1024个值。RGB图片一共有三个通道,故每一张图片有 (3 × \times × 1024) 3074个值。

2.2 清楚numpy中的H、W、C的含义

  高、宽、通道数,分别对应numpy数组的三个维度和图片的长、宽、通道数。可以这样理解:这是一个三层嵌套的数组,对第一层数组的取len函数,获得的取值是高度;对第二层数组的取len函数,获得的取值是宽度;第三层数组的取len函数,获得的取值是通道数。
  读取data数据,给出直观理解:

import numpy as np
array = np.reshape(pic_dict[b'data'][9999], (3, 32, 32)).astype('uint8')

  下面框起来的是array数组的高,一共有三个:
H
  下面框起来的是array数组的宽,一共有32个:
W
  最后框起来的是array数组的通道数,一共有32个:
C

2.3 清楚RGB图片在numpy中的表示

  这是处理后的一张cifar-10图片的部分数组。可以清楚地看到,我用红、绿、蓝标好的通道数。该图片是处理后的data_batch_1中的第9999即最后一张图片,处理的代码我将在第三部分给出。

  我按照上图数组的表示,用PPT画了一下这张图片像素的表示:

在这里插入图片描述

3、处理图片数据的代码

import numpy as np
array = np.reshape(pic_dict[b'data'][9999], (3, 32, 32)).astype('uint8')
print(array)
# 可以理解成矩阵的转置
array = np.transpose(array, (1, 0, 2))
print(array)
array = np.transpose(array, (0, 2, 1))
print(array)
# RGB变成BGR
# [...,::-1]是对最内层的列表进行逆序取值
array = array[...,::-1]
print(array)
import cv2
# # 图像是按行主顺序存储的,所以前32个数值是红色通道
cv2.imwrite('图片.png', array)
  1. 难点一:理解np.shape重构一维数组的方法,且为什么要以(3, 32, 32)的方式读取。
  2. 难点二:理解np.transpose的调换x、y、z轴的顺序,转置的目的是变成RGB图片格式的数组。
    我相信在第二部分中的讲解,以及对照代码的分布输出后,你会有一个全新的理解。
    原创不易,如果觉得不错,请给个支持,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA启动报错:Process finished with exit code 0

问题 SpringBoot项目启动后自动关闭 方案一 在pom中添加spring-boot-starter-web依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId> </dependency>方案二 在pom中…

CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!) A-D

1842A - Tenzing and Tsondu 题意 丁真和珍珠宝可梦对决, 每个宝可梦都有x战力, 假设有两个宝可梦, 其战力分别为a和b(a>b), 战力为a的宝可梦获胜后战力-b, 而战败的宝可梦会消失 最后还有宝可梦的人获胜 问你丁真和珍珠谁赢了 题解 显而易见, 赢下来的宝可梦可以继续打…

GcWord 6.1.4 Crack -GrapeCity Documents for Word

用于 Microsoft Word 文档的 .NET 6 API 通过代码完全控制您的 Word 文档&#xff0c;而不依赖于 Microsoft Word。 生成、加载、编辑和保存 Word 文档 基于 Microsoft Office API 的功能丰富的对象模型 从头开始或使用生成报告 报告模板 兼容多种平台&#xff0c;例如 Window…

vue-cli2 碎碎念念

vue create 和 vue init webpack 的区别&#xff1a; https://blog.csdn.net/qq_45955152/article/details/123506724 https://blog.csdn.net/qq_22182989/article/details/103611934 区别1&#xff1a; 区别2&#xff1a; 实践&#xff1a;

CadLib 4.0.2023.31601 net for Windows Crack

CadLib 4.0 for Windows&#xff1a;在 C# VB .NET 中读取、写入和显示 AutoCAD DWG 和 DXF 文件 CadLib 4.0 for Windows仅在Windows上运行&#xff0c;并且基于.NET 4.x。 CadLib 4.0读取、写入和显示 C#、VB.NET 或任何其他 .NET 语言的 AutoCAD™ DWG 和 DXF 文件。下载试…

Selenium教程__浏览器窗口大小(6)

本文将介绍如何使用Selenium来获取和设置浏览器窗口的大小&#xff0c;以及一些实际应用场景。 学习本文内容将能够轻松地控制浏览器窗口的大小&#xff0c;从而更好地适应不同的屏幕分辨率和设备&#xff0c;并确保网页在各种窗口大小下都能够良好地展示。 import time fro…

机器学习(二)逻辑回归

Logistic Regression 虽然被称为回归&#xff0c;但其实际上是分类模型&#xff0c;并常用于二分类。 Logistic 回归的本质是&#xff1a;假设数据服从这个分布&#xff0c;然后使用极大似然估计做参数的估计。 逻辑回归API介绍 sklearn.linear_model.LogisticRegression(sol…

配置apache只允许通过域名通过ssl访问

配置好IP&#xff0c;配置好bind解析 Yum安装相关软件包 进入证书目录 先用date –s 设置正确的系统时间。 创建私钥 创建证书 把私钥转换成不需要密码的 把私钥移动到私钥目录 编辑/etc/httpd/conf.d/ssl.conf 设置根目录&#xff0c;主机名。 限制80端口访问。在最后插入 设…

蜘蛛池包收录 - 百度代发排名

蜘蛛池包收录 - 百度代发排名 通话时长越长点击扣费越多吗&#xff1f; 相信这个是很多推 OCPC 用户都关注的问题&#xff0c;因为有时候接了一个电话&#xff0c;跟客户通了十几分钟&#xff0c;挂断之后发现竟然点一下扣了一百多&#xff0c;甚至二百多&#xff0c;这是什么…

Elasticsearch 分组分页排序查询

背景&#xff1a;elasticsearch聚合之后进行分页是非常常见的操作 实现思路&#xff1a; 基于es聚合函数bucket_sort、terms和指标聚合cardinality实现 实现方式&#xff1a;(以会员编码分组分页展示会员最近一条时间记录排序为例)&#xff1a; 1、查询实现 // 桶排序聚合Bu…

【数据库七】搭建MySQL主从复制和读写分离详解

详解搭建搭建MySQL主从复制和读写分离 1.案例实施&#xff1a;搭建MySQL主从复制1.1 主节点数据库&#xff08;CentOS 7-5&#xff09;1.2 从节点数据库&#xff08;CentOS 7-6&#xff09;1.3 从节点数据库&#xff08;CentOS 7-7&#xff09;1.4 验证MySQL主从复制 2.案例实施…

Scala的foldLeft与foldRight详解

foldLeft与foldRight是特质TraversableOnce定义的高阶函数&#xff0c;直译过来为向左折叠和向右折叠。具体实现如下摘出的代码所示&#xff1a; trait TraversableOnce[A] extends Any with GenTraversableOnce[A] {deprecated("Use foldLeft instead of /:", &quo…

lesson7-1 Zigbee协议栈的使用

目录 协议栈的使用 协议栈的安装和协议栈工程创建 协议栈工程配置 选项卡选择 用户代码编写注意 信道选择及PANID分配 协议栈的使用 协议栈的安装和协议栈工程创建 首先进行协议栈的安装 如何创建自己的协议栈工程&#xff1a; &#xff08;1&#xff09;先把整个协议…

ansible实训-Day1(Liunx基础问题总结及ansible安装环境前置部署)

一、前言 该篇是对本学期Ansible实训第一天内容的原理性总结&#xff0c;主要包括Liunx相关问题等基础性的问题总结以及ansible安装环境的前置部署。 二、Liunx是什么 Linux是一种自由和开放源代码的Unix操作系统&#xff0c;最初由芬兰人Linus Torvalds于1991年创建。与其他许…

hot20-旋转图像

leetcode原题链接&#xff1a;旋转图像 题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&am…

OpenCV 学习笔记(C++)(1.4W字)

一切图像皆Mat OpenCV中图像对象的创建与复制 Mat基本结构 Mat对象数据组成&#xff1a;头部和数据部分&#xff0c;头部存储图像的属性&#xff08;大小、宽高、图像类型&#xff1a;浮点数类型、字节类型、16位整型、32位整型、双精度浮点型&#xff0c;通道数量和获取途径…

【半监督图像分类 2022 CVPR 】Semi-ViT

【半监督图像分类 2022 CVPR 】Semi-ViT 论文题目&#xff1a;Semi-supervised Vision Transformers at Scale 中文题目&#xff1a; 论文链接&#xff1a;https://arxiv.org/abs/2208.05688 论文代码&#xff1a;https://github.com/amazon-science/semi-vit 发表时间&#xf…

数据结构07:查找[C++][平衡二叉排序树AVL]

图源&#xff1a;文心一言 考研笔记整理1w字&#xff0c;小白友好、代码可跑&#xff0c;请小伙伴放心食用~~&#x1f95d;&#x1f95d; 第1版&#xff1a;查资料、写BUG、画导图、画配图~&#x1f9e9;&#x1f9e9; 参考用书&#xff1a;王道考研《2024年 数据结构考研复习…

Linux 超级漂亮的 Shell

先来一张美图 zsh 介绍 1 Linux shell Linux/Unix 提供了很多种 Shell&#xff0c;为毛要这么多 Shell&#xff1f; 难道用来炒着吃么&#xff1f;那我问你&#xff0c;你同类型的衣服怎么有那么多件&#xff1f;花色&#xff0c;质地还不一样。写程序比买衣服复杂多了&#xf…

在vite+vue3中使用less

目录标题 一、首先&#xff0c;安装插件二、在 vite.config.js中配置三、最后在模版里声明css类型 一、首先&#xff0c;安装插件 npm install less npm install less-loader二、在 vite.config.js中配置 css: {preprocessorOptions: {less: {math: "always", // 括…