图像识别实战代码分析

本文详细介绍了如何使用PyTorch进行图像分类任务,包括数据预处理(如resize、数据增强)、模型初始化(ResNet,迁移学习),以及训练过程中的数据加载、模型定义、优化器设置和验证。最后展示了预测结果的可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、准备

引包:torchvision,包含transforms、model(在这指的就是网络的模型)、datasets(对数据的处理)

注:.compose,表示代码的顺序执行

2、制作好数据源

对数据的操作(包含裁剪、旋转等)不会储存在本地

data_transforms = {
    'train': 
        transforms.Compose([
        transforms.Resize([96, 96]),
        transforms.RandomRotation(45),#随机旋转,-45到45度之间随机选
        transforms.CenterCrop(64),#从中心开始裁剪
        transforms.RandomHorizontalFlip(p=0.5),#随机水平翻转 选择一个概率概率
        transforms.RandomVerticalFlip(p=0.5),#随机垂直翻转
        transforms.ColorJitter(brightness=0.2, contrast=0.1, saturation=0.1, hue=0.1),#参数1为亮度,参数2为对比度,参数3为饱和度,参数4为色相
        transforms.RandomGrayscale(p=0.025),#概率转换成灰度率,3通道就是R=G=B
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])#均值,标准差
    ]),
    'valid': 
        transforms.Compose([
        transforms.Resize([64, 64]),
        transforms.ToTensor(),
        transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
    ]),
}

transform.resize:改变图像的大小。注意,卷积网络中要求每一张图像大小都是一样的,不同图像的大小会影响网络的迭代速度

 transforms.Normalize:对数据集的标准化操作「R,G,B」

设置datasets

batch_size = 128

image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x]) for x in ['train', 'valid']}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=batch_size, shuffle=True) for x in ['train', 'valid']}
dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'valid']}
class_names = image_datasets['train'].classes

datasets.ImageFolder(路径,数据名):图像数据的文件夹

with open('cat_to_name.json', 'r') as f:
    cat_to_name = json.load(f)

读取标签实际对应的名字

2、加载models中提供的模型,并且直接用训练的好权

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值