Pytorch实现猫狗大战(二)

27 篇文章 3 订阅
24 篇文章 12 订阅

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

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器不学习我学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值