zoukankan      html  css  js  c++  java
  • 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
    

  • 相关阅读:
    python 安装Crypto.Ciphe
    ProxyPool 爬虫代理IP池配置采坑
    2020渗透测试面试问题大全
    Windows Server 2016抓取明文密码
    应用安全 – 端口漏洞整理
    .net core docker+ gogs + jenkins 自动化部署
    .net HttpClient 回传实体帮助类
    .net list转树状结构
    ABP 临时禁用TenantId IsDelete过滤
    ABP 使用cache缓存
  • 原文地址:https://www.cnblogs.com/Tom-Ren/p/9897822.html
Copyright © 2011-2022 走看看