• MXNet.gluon——图像I/O


    MXNet gluon如何从文件夹读入图像

    分类任务中需要将图像从文件夹中读入,并以迭代器的形式进行训练。gluon 的api 提供了一个方便的函数gluon.data.vision.ImageFolderDataset(),只需要将图像文件根据分类进行预处理,就可以方便的使用这个函数来读入数据。

    1.图像预处理

    首先这个函数要求不同分类的图像需要按照下面的格式来组织:

    ./train_image
    |--class1
        |--001.png
        |--002.png
        |--003.png
        |--xxx.png
    |--class2
    |--class3
    |--classxxx

    其中train_image是保存训练图像的目录;
    这里可以参考如何将json格式的标签数据进行预处理

    2. 生成图像image-label对儿

    mxnet.gluon.data.vision.datasets.ImageFolderDataset(root, flag=1, transform=None)
    这一函数中root 为图像存储的根目录,它会根据子文件夹为所有图像生成对应的标签。
    - 其中flag为读入图像的属性,1为rgb图,0为灰度图。

    transform为对图像进行变化的函数,但一般都在dataloader中进行。
    得到的结果有两个属性:
    - syset 会输出所有类并用整数表示
    - items 则表示读入的所有图像,并按照元组的形式(filename, label)组成list

    3.读入数据生成迭代器

    上面的工作主要生成了一个图片和对应标签的检索表,随后需要利用生成dataiter才能在实际训练中使用,主要使用mxnet.gluon.data.DataLoader函数.
    其参数如下:
    mxnet.gluon.data.DataLoader(dataset, batch_size=None, shuffle=False, sampler=None, last_batch=None, batch_sampler=None, batchify_fn=None, num_workers=0, pin_memory=False)
    - dataset: 上一步从文件夹load进来的检索;
    - batch_size: 每次输出批量的大小
    - shuffle:是否要打乱顺序

    4.实例

    from mxnet.gluon import data as gdata
    #读取数据文件
    train_set = gdata.vision.ImageFolderDataset('./train_imgs/',flag=1)
    valid_set = gdata.vision.ImageFolderDataset('./valid_imgs/',flag=1)
    #check data classes
    print(train_set)    #这里检索表的长度与数据集的大小相同
    print(train_set.synsets)  #also has items attributes
    print(valid_set)
    print(valid_set.synsets)  #also has items attributes
    
    #生成迭代器
    #data into iter and realized argumentation
    batch_size = 32
    
    train_iter = gdata.DataLoader(train_set, batch_size, shuffle=True, last_batch='keep')  #生成训练集迭代
    valid_iter = gdata.DataLoader(valid_set, batch_size, shuffle=True, last_batch='keep')  #生成验证集迭代
    #这里迭代器的大小为数据集大小/批量大小,即将整个数据集分为了多少个batch来计算
    
    #验证是否在一次迭代中输出batch_size 个的数据
    for imgs, labels in train_iter:
        print(labels)
        print(imgs.shape)
        break
    

  • 相关阅读:
    MUI(5)
    MUI(4)
    MUI(3)
    如何查找僵尸进程并Kill之,杀不掉的要查看父进程并杀之
    Linux下查看文件和文件夹大小
    CentOS,Ubuntu,Gentoo,Freebsd,RedHat,Debian的区别及选择
    eclipse4.3 安装tomcat8
    maven 代理
    ldap基本命令
    ssh-keygen
  • 原文地址:https://www.cnblogs.com/Tom-Ren/p/9897822.html
Copyright © 2020-2023  润新知