MXNet中im2rec将图片转换成二进制RecordIO格式

news2024/9/24 3:26:35

我们在前面的 计算机视觉之目标检测训练数据集(皮卡丘)《2》其中有提到这个二进制的RecordIO格式,使用的是MXNet自带的im2rec工具,源码在tools里面

import mxnet as mx
#D:\Anaconda3\envs\myd2l\lib\site-packages\mxnet\tools\
print(mx.__path__[0])

在这路径的下面有一个im2rec.py文件,根据自己的环境,前面目录有所区别。

生成.lst文件

lst文件类似一个清单文件,图片索引与位置信息,下面是最终完成的目录结构图:


将在myimgs目录下面生成一个my.lst文件
list参数是生成.lst文件,recursive参数可以递归下面的目录
python D:\Anaconda3\envs\myd2l\lib\site-packages\mxnet\tools\im2rec.py myimgs/my myimgs --list --recursive

将在myimgs目录下面分别生成my_train.lst和my_val.lst文件
train-ratio 0.8表示提取80%作为训练集,20%作为验证集,这里使用取整不是四舍五入。
python D:\Anaconda3\envs\myd2l\lib\site-packages\mxnet\tools\im2rec.py myimgs/my myimgs --list --recursive --train-ratio 0.8

t1 0
t1\t2 1

这里我是有两个目录,t1目录下面有一些图片, 还有一个t2的目录,t2目录也有一些图片,图片是网上下载的一些水果图片。

lst文件的内容如下,索引-->标签类别-->图片所在位置 

生成rec文件

将在myimgs目录下面分别生成my_train.rec,my_train.idx和my_val.rec,my_val.idx文件
python D:\Anaconda3\envs\myd2l\lib\site-packages\mxnet\tools\im2rec.py myimgs/my myimgs
也可以使用多线程,指定参数num-thread
python D:\Anaconda3\envs\myd2l\lib\site-packages\mxnet\tools\im2rec.py myimgs/my myimgs --num-thread 4

读取rec文件

将生成的rec和idx文件一起结合起来解析,就可以得到这些图片的数据,然后我们现实图像来看下:

import matplotlib.pyplot as plt
import mxnet as mx
import numpy as np

data_iter = mx.image.ImageIter(batch_size=8, data_shape=(3, 600, 600),
                               path_imgrec="./myimgs/my_train.rec", path_imgidx="./myimgs/my_train.idx")
data_iter.reset()
batch = data_iter.next()
data = batch.data[0]
label = batch.label[0]
print(label)#[0. 0. 0. 1. 0. 0. 0. 1.]
for i in range(8):
    plt.subplot(2, 4, i+1)
    plt.title(i+1)
    plt.imshow((data[i].asnumpy()/255).transpose((1, 2, 0)))#通道维放最后
    #plt.imshow(data[i].asnumpy().astype(np.uint8).transpose((1, 2, 0)))
    if i%4:plt.yticks([])
plt.show()

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

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

相关文章

农大毕业7年后,转行软件测试,我拿到了一块结实的敲门砖

“经过这段时间的学习,让我摸清了这个行业的游戏规则,可以说是让我拿到了一块结实的敲门砖。” 今天跟大家分享的是近期就业的学员刘同学的转行故事,希望他的经历能给同样在向梦想奔跑的你一些帮助。 毕业7年后,从网信办主任转行…

基于STM32单片机的直流电机PWM调速(数码管显示)(Proteus仿真+程序)

编号:24 基于STM32单片机的直流电机PWM调速 功能描述: 由 STM32单片机数码管显示模块键盘模块L298N电机驱动模块直流电机 1、采用STM32F103单片机为主控制器 2、四个按键,分别为启动/暂停、方向切换、加速、减速功能 3、数码管显示PWM占空比…

[附源码]计算机毕业设计演唱会门票售卖系统Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SMART PLC高速脉冲输出如何断电保持当前位置

S7-200 SMART PLC脉冲轴控制相关的内容,可以参看下面的博客: S7-200 SMART PLC自定义脉冲轴控功能块AxisControl_FB(梯形图)_RXXW_Dor的博客-CSDN博客博途1200/1500PLC的相关总线轴PN总线控制可以参考相关专栏的博客,链接地址如下:博途PLC 1200/1500PLC轴控功能块Servo_A…

[附源码]Python计算机毕业设计Django基于Vuejs的中国名茶销售平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

历史名人鲁迅介绍HTML个人网页作业作品下载 历史人物介绍网页设计制作 大学生英雄人物网站作业模板 dreamweaver简单个人网页制作

🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

Java分布式系统和云计算教程

Java分布式系统和云计算教程 大规模学习分布式 Java 应用程序、并行编程、分布式计算和云软件架构 课程英文名:Distributed Systems & Cloud Computing with Java 此视频教程共4.0小时,中英双语字幕,画质清晰无水印,源码附…

【数据可视化】Data Reduction和加利福尼亚的房价数据集数据可视化以及Kettle的初步介绍

一.数据归约Data Reduction 对海量数据进行复杂的数据分析和机器学习将需要很长时间,使得这种分析不现实或不可行。数据归约技术可以用来得到数据集的归约表示,它小得多,但仍接近保持原数据的完整性。对归约后的数据集计算将更有效&#xff…

[附源码]计算机毕业设计JAVA校园拓展活动管理系统

[附源码]计算机毕业设计JAVA校园拓展活动管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

[附源码]Python计算机毕业设计Django基于vue的软件谷公共信息平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

A-Level化学例题解析及练习Co-ordinate bond

今日知识点:Co-ordinate bond (or Dative covalent bond)例题 Q: When solid aluminium chloride is heated, Al2Cl6 is formed. Which bonding is present in Al2Cl6? A Covalent and co-ordinate (dative covalent) B Covalent only C Ionic and co-ordina…

MySQL8高级_读写分离和分库分表

MySQL8高级_读写分离和分库分表 第01章 高性能架构模式 互联网业务兴起之后,海量用户加上海量数据的特点,单个数据库服务器已经难以满足业务需要,必须考虑数据库集群的方式来提升性能。高性能数据库集群的第一种方式是“读写分离”&#xff…

你知道MySQL锁,到底在锁什么吗?

前言 MySQL锁写过不少,那么这篇文章还是来和大家聊一聊MySQL的锁。 只要学计算机,「锁」永远是一个绕不过的话题。MySQL锁也是一样。 一句话解释MySQL锁: MySQL锁是解决资源竞争的一种方案。 短短一句话却包含了3点值得我们注意的事情&a…

C++——隐式类型转换

隐式类型转换&#xff08;构造函数的隐式调用&#xff09; 先看一下隐式类型转换如何发生吧&#xff1a; #include <iostream> using namespace std;class point {public:int x,y;point(int x0, int y0):x(x),y(y) {} }void displayPoint(const point &p) {cout &l…

基于场景分析法的电动车优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f389;作者研究&#xff1a;&#x1f3c5;&#x1f3c5;&#x1f3c5;主要研究方向是电力系统和智能算法、机器学…

计算机图形学中的曲线问题

文章目录免责前言拉格朗日插值多项式第一步&#xff1a;得到一个基函数第二步&#xff1a;得到所有基函数第三步&#xff1a;对所有基函数进行线性组合举例验证三次埃尔米特插值多项式第一步&#xff1a;得到第一维基函数第二步&#xff1a;得到第二维基函数第三步&#xff1a;…

【Linux03-基本工具之make和makefile】Linux下的项目构建工具+进度条小程序

前言 接上篇&#xff0c;接着学习基本工具。 博主水平有限&#xff0c;不足之处望请斧正。 三、make和makefile 是什么 makefile(Makefile)&#xff1a;用来写入 依赖关系和依赖方法 的文件。 make&#xff1a;用来执行 makefile 的命令。 为什么 允许我们自动化构建项目…

必看知识点:Redis 中的原子操作(1)-Redis 中命令的原子性

必看知识点&#xff1a;Redis 中的原子操作(1)-Redis 中命令的原子性 Redis 如何应对并发访问 Redis 中处理并发的方案 业务中有时候我们会用 Redis 处理一些高并发的业务场景&#xff0c;例如&#xff0c;秒杀业务&#xff0c;对于库存的操作。。。 先来分析下&#xff0c…

CMake中add_executable的使用

CMake中的add_executable命令用于使用指定的源文件向项目(project)添加可执行文件&#xff0c;其格式如下&#xff1a; add_executable(<name> [WIN32] [MACOSX_BUNDLE][EXCLUDE_FROM_ALL][source1] [source2 ...]) # Normal Executables add_executable(<name> I…

芯片漫游指南(1)-- UVM世界观

目录1 uvm中的学习内容2 类库地图3 工厂机制3.1 工厂的意义3.2 工厂提供的便利3.3 覆盖方法4 核心基类4.1 uvm_object4.2 域的自动化4.3 拷贝&#xff08;copy&#xff09;4.4 比较4.5 打印4.6 打包和解包5 phase机制5.1 概述5.2 phase的九个执行机制5.3 UVM仿真顺序6 config机…