神奇宝贝五分类:数据预处理,可以推广到任意图片集

我们知道我们采集的图片大小可能是任意的,但是网络的输入大小通常是固定的,所以我们需要变换尺寸。

数据预处理步骤

第一步Image Resize

第二步 data argumentation(数据增强)使图片数量增多,模型计算更精准。比如随机的裁剪和旋转工作

第三步Normalize,把原来的从0-1分布的像素点变换成0附近,比如-1到1或-0.5到0.5等

第四步ToTensr,把数据类型转换到tensor上

import torch
import os,glob
import random,csv

from torch.utils.data import Dataset  # 所有自定义数据集的母类




class Pokemon(Dataset):
    # 初始化函数,首先需要接收的是文件位置,固定大小(在这里接收方便更改,适用所有网络),mode即代表区分train vaild test三种类型
    def __init__(self,root,resize,mode):
        super(Pokemon, self).__init__()

        # 把参数保存下来
        self.root=root
        self.resize=resize
        # 之后要把每一个保存下来的类,做一个映射,即你对应的类别的label是多少,人为编码并且编好之后不能改变。
        # 字典类型
        self.name2label = {} # ‘bulbasaur(妙蛙种子)’=>0
        # 创建映射表,谁先加载进来就编码为0
         # root下边所有文件夹都遍历一下
        for name in sorted(os.listdir(os.path.join(root))): # listdir返回的顺序不固定,所以进行一个排序,固定好顺序
            # listdir可能会把目录和文件都包含进来,我们把文件过滤掉
            if not os.path.isdir(os.path.join(root,name)):
                continue

            # 拿到了目录的名字,然后保存到上边创建的表里,name作为key
            # 把你当前的元素数量的长度作为最新的元素的label值,比如你当前只有一个映射,label=0再进来的一个就是1
            self.name2label[name] = len(self.name2label.keys())
        print(self.name2label)




    def __len__(self):
        pass
    def __getitem__(self, idx):
        pass


# 写一个验证的函数
def main():
    db=Pokemon('pokeman',224,'train')


if __name__ == '__main__':
    main()



# 结果输出:{'bulbasaur': 0, 'charmander': 1, 'mewtwo': 2, 'pikachu': 3, 'squirtle': 4}

我们拿到了数据和标签的表格了然后来接受图片

然后创建一个文件来接收图片

    # 输出表格后,只是第一步,然后来接收图片
        # 希望拿到一个文件,文件是image path+image label
    def load_csv(self,filename):
# 把所有的图片放进来
        images=[]
        for name in self.name2label.keys():
            # 把当前类别里的png和jpg文件合并到image里面去,即所有图片都放到images这个list里面
            # 比如保存进去的格式‘pokeman\\mewtwo\\00001.png’
            images += glob.glob(os.path.join(self.root,name,'*.png')) # 把当前所有的len下边的文件都保存进来。
            images += glob.glob(os.path.join(self.r
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值