MXNet中im2rec将图片转换成二进制RecordIO格式
创始人
2024-03-14 21:03:22
0

我们在前面的 计算机视觉之目标检测训练数据集(皮卡丘)《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 npdata_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()

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...