猫鼠大战2:Pytorch实现猫狗大战(二) 2024-04-23 18:19:33 0 0 上一篇博客中,介绍了数据集的下载,现在开始下一个阶段,撸代码啦。 (注:发现github上一处可以数据,并且有代码,不过库函数更新的太快啦,有时候download的项目是不能直接跑起来的,所以我们需要进行微调。https://github.com/maples1993/Cats_vs_Dogs https://github.com/gzshan/dogsVScats 我们下载得到的数据集如下: 下载得到的数据,有2个压缩包,我们将他们进行解压,得到test1文件夹和train文件夹, 其中test1文件夹下: 既有猫也有狗的图片,图片的命名是有顺序阿拉伯数字。 在train文件夹下: 属于猫的类别图片命名:cat+数字 属于狗的类别图片命名:dog+数字 我们只需要train文件夹中的数据即可。 首先,我们新建一个Dataset文件夹,将train中的图片都拷贝进去, 然后,再新建train和val文件夹,在这两个文件夹下,分别新建cat和dog文件夹 像这样的目录结构: 编写数据分类代码:preprocess_data.py 其中90%的数据当做训练集,10%的数据当做测试集# -*- coding: utf-8 -*-import osimport shutil # 用来移动图片的库,直接移走def preprocess_data(): data_file = os.listdir('data/Dataset') # 读取所有图片的名字 #print(len(data_file)) # 查看数据大小 # 将图片名为cat和dog的图片分别取出来,存为两个list cat_file = list(filter(lambda x:x[:3]=='cat',data_file)) dog_file = list(filter(lambda x:x[:3]=='dog',data_file)) data_root = 'data/' train_root = 'data/train' val_root = 'data/val' for i in range(len(cat_file)): print(i) pic_path = data_root + 'Dataset/' + cat_file[i] if i < len(cat_file)*0.9: obj_path = train_root + '/cat/' + cat_file[i] else: obj_path = val_root + '/cat/' + cat_file[i] shutil.move(pic_path,obj_path) for j in range(len(dog_file)): print(j) # 查看进度 pic_path = data_root + 'Dataset/' + dog_file[j] if j < len(dog_file)*0.9: obj_path = train_root + '/dog/' + dog_file[j] else: obj_path = val_root + '/dog/' + dog_file[j] shutil.move(pic_path,obj_path) # 程序运行接口,调用函数if __name__ == '__main__': preprocess_data() 运行程序 我们的train下的cat文件夹和dog文件夹 val下的cat文件夹和dog文件夹 就会移入相应的图片。 等项目结束,我会把所有代码放在Github上。 记录学习的过程,让知识共享。 收藏(0)