深度学习Week5——运动鞋识别

文章目录
深度学习Week5——运动鞋识别
一、前言
二、我的环境
三、前期工作
1、配置环境
2、导入数据
3、划分数据集
四、构建CNN网络
五、训练模型
1、设置超参数
2、编写训练函数
3、编写测试函数
六、结果可视化
1、Loss图和Accuracy图
2、指定图片识别
3、加载并保存模型
七、拔高训练

一、前言

大家新年快乐呀🐉🎉
过年期间休息(摆大烂)了一段时间,好多内容忘记了😭,因此作为新年第一篇,我们就以复习巩固为主。
新的一年,我更换了设备,如今也是支持GPU啦

二、我的环境

  • 电脑系统:Windows 10
  • 语言环境:Python 3.11.3
  • 编译器:Pycharm2023.2.3
    深度学习环境:Pytorch
    显卡及显存:RTX 3060 8G

三、前期工作

1、导入库并配置环境

import torch
import torch.nn as nn
import torchvision.transforms as transforms
import torchvision	
from torchvision import transforms, datasets
import os,PIL,pathlib,random
import numpy as np

device = torch.device("cuda")

device

输出:

device(type='cuda')

至此,我们的环境已经配置完成。

2、 导入数据

我们下载好文件到自己的文件夹目录中,复制文件地址备用,注意这里要将[str(path).split("\\")[4] for path in data_paths][]里的数字改为自己路径所对应的数字,例如我的是“2”
这里引用K同学对于下列函数的解释。

  • 第一步:使用pathlib.Path()函数将字符串类型的文件夹路径转换为pathlib.Path对象。

  • 第二步:使用glob()方法获取data_dir路径下的所有文件路径,并以列表形式存储在data_paths中。

  • 第三步:通过split()函数对data_paths中的每个文件路径执行分割操作,获得各个文件所属的类别名称,并存储在classeNames中

  • 第四步:打印classeNames列表,显示每个文件所属的类别名称。

data_dir = 'Data/Week5'
data_dir = pathlib.Path(data_dir)

data_paths  = list(data_dir.glob('*'))
classeNames = [str(path).split("\\")[2] for path in data_paths]
classeNames
输出:
['test', 'train']

其实通过前5周的学习,前面导入数据,构建模型的过程已经十分熟练了,因此不再过多废话啦

data_dir = 'Data/Week5/train'
data_dir = pathlib.Path(data_dir)

image_count = len(list(data_dir.glob('*/*.jpg')))
print("训练图片总数为:",image_count)

输出:

训练图片总数为: 502

然后我们可以指定最后一张鞋的照片作为测试是否导入数据成功。

roses = list(data_dir.glob('Adidas/*.jpg'))
PIL.Image.open(str(roses[-1]))

在这里插入图片描述

# 关于transforms.Compose的更多介绍可以参考:https://blog.youkuaiyun.com/qq_38251616/article/details/124878863
train_transforms = transforms.Compose([
    transforms.Resize([224, 224]),  # 将输入图片resize成统一尺寸
    # transforms.RandomHorizontalFlip(), # 随机水平翻转
    transforms.ToTensor(),          # 将PIL Image或numpy.ndarray转换为tensor,并归一化到[0,1]之间
    transforms.Normalize(           # 标准化处理-->转换为标准正太分布(高斯分布),使模型更容易收敛
        mean=[0.485, 0.456, 0.406], 
        std=[0.229, 0.224, 0.225])  # 其中 mean=[0.485,0.456,0.406]与std=[0.229,0.224,0.225] 从数据集中随机抽样计算得到的。
])

test_transform = transforms.Compose([
    transforms.Resize([224, 224]),  # 将输入图片resize成统一尺寸
    transforms.ToTensor(),          # 将PIL Image或numpy.ndarray转换为tensor,并归一化到[0,1]之间
    transforms.Normalize(           # 标准化处理-->转换为标准正太分布(高斯分布),使模型更容易收敛
        mean=[0.485, 0.456, 0.406], 
        std=[0.229, 0.224, 0.225])  # 其中 mean=[0.485,0.456,0.406]与std=[0.229,0.224,0.225] 从数据集中随机抽样计算得到的。
])

train_dataset = datasets.ImageFolder("Data/Week5/train/",transform = train_transforms)
test_dataset  = datasets.ImageFolder("Data/Week5/test/",transform = train_transforms)

train_dataset.class_to_idx

输出:

{'adidas': 0, 'nike': 1}

3、划分训练集

batch_size = 32

train_dl = torch.utils.data.DataLoader(train_dataset,
                                           batch_size = batch_size,
                                           shuffle 
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值