MXNet框架用于做图像相关的项目时,读取图像主要有两种方式:第一种是读.rec格式的文件,优点是.rec文件比较稳定,移植到别的电脑上也能复现,缺点是占空间(.rec文件的大小基本上和图像的存储大小差不多),而且增删数据不大灵活。第二种是.lst和图像结合的方式,首先在前面生成.rec文件的过程中也会生成.lst文件,这个.lst文件就是图像路径和标签的对应列表,也就是说通过维护这个列表来控制你训练集和测试集的变化,优点是灵活且不占空间,缺点是如果图像格式不符合要求的话容易出错而且如果列表中的某些图像路径对应的图像文件夹中图像被删除,就寻找不到,另外如果你不是从固态硬盘上读取图像的话,速度会很慢。
分类与目标检测的制作流程会有所不同。
这边先简要介绍下idx,lst以及rec文件,可以跟后面结合看。
1、分类.lst文件样例:第一列是index,第二列是label,第三列是图像路径,图片一般同一个类别放同一个文件夹中,文件夹名称作为label
1812 1.000000 not-hotdog/83.png
294 0.000000 hotdog/363.png
1168 1.000000 not-hotdog/25.png
785 0.000000 hotdog/805.png
1735 1.000000 not-hotdog/760.png
444 0.000000 hotdog/499.png
1199 1.000000 not-hotdog/278.png
747 0.000000 hotdog/771.png
#检测样例,一般形式如下:
# I A B C D ~ id xmin ymin xmax ymax id xmin ymin xmax ymax ~ im_path
#I表示该图片样本的整数索引;A表示Header的长度(即ABCD长度),至少是 2;B表示每个bbox记录长度,C,D,…可选,
#表示存储的一些额外信息,一般C会表示样本 width,D表示样本 Height;id 表示该 bbox 所属的类别id;xmin,ymin,xmax,ymax表示bbox左上角和右下角的点坐标,且被归一化到[0,1]
3 4 5 500 333 6.0 0.312 0.2912912912912913 0.702 0.8108108108108109 ..DatasetVOC2007_set000012.jpg
4 4 5 334 500 1.0 0.2754491017964072 0.144 0.9131736526946108 0.946 ..DatasetVOC2007_set000016.jpg
7 4 5 375 500 6.0 0.088 0.296 0.9893333333333333 0.832 ..DatasetVOC2007_set000020.jpg
#.idx文件样例,idx 文件第一列与 lst 文件第一列对应,表示图片的索引,第二列是编码位