猫鼠大战2:Pytorch实现猫狗大战(二)

上一篇博客中,介绍了数据集的下载,现在开始下一个阶段,撸代码啦。
(注:发现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上。
记录学习的过程,让知识共享。

相关推荐

相关文章