【图像分类】实战——使用ResNet实现猫狗分类(pytorch)

本文介绍了如何在PyTorch中使用ResNet18进行图像分类,包括使用预训练模型、数据预处理、模型结构调整和优化,以及在实战项目中的应用。

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

ResNet有不同的网络层数,比较常用的是18-layer,34-layer,50-layer,101-layer,152-layer。他们都是由上述的残差模块堆叠在一起实现的。 下图展示了不同的ResNet模型。

本次使用ResNet18实现图像分类,模型使用pytorch集成的模型。

具体的实现方式可以查考这篇文章。里面说的很详细了。但是我们在实战项目中能用官方的还是优先选用官方的,有预训练模型,而且有的模型还做了优化。

手撕ResNet——复现ResNet(Pytorch)_AI浩-优快云博客

导入项目使用的库

========

import torch.optim as optim

import torch

import torch.nn as nn

import torch.nn.parallel

import torch.optim

import torch.utils.data

import torch.utils.data.distributed

import torchvision.transforms as transforms

import torchvision.datasets as datasets

import torchvision.models

from effnetv2 import effnetv2_s

from torch.autograd import Variable

设置全局参数

======

设置BatchSize、学习率和epochs,判断是否有cuda环境,如果没有设置为cpu。

设置全局参数

modellr = 1e-4

BATCH_SIZE = 64

EPOCHS = 20

DEVICE = torch.device(‘cuda’ if torch.cuda.is_available() else ‘cpu’)

图像预处理

=====

在做图像与处理时,train数据集的transform和验证集的transform分开做,train的图像处理出了resize和归一化之外,还可以设置图像的增强,比如旋转、随机擦除等一系列的操作,验证集则不需要做图像增强,另外不要盲目的做增强,不合理的增强手段很可能会带来负作用,甚至出现Loss不收敛的情况。

数据预处理

transform = transforms.Compose([

transforms.Resize((224, 224)),

transforms.ToTensor(),

transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])

])

transform_test = transforms.Compose([

transforms.Resize((224, 224)),

transforms.ToTensor(),

transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])

])

读取数据

=====

使用Pytorch的默认方式读取数据。数据的目录如下图:

训练集,取了猫狗大战数据集中,猫狗图像各一万张,剩余的放到验证集中。

读取数据

dataset_train = datasets.ImageFolder(‘data/train’, transform)

print(dataset_train.imgs)

对应文件夹的label

print(dataset_train.class_to_idx)

dataset_test = datasets.ImageFolder(‘data/val’, transform_test)

对应文件夹的label

print(dataset_test.class_to_idx)

导入数据

train_loader = torch.utils.data.DataLoader(dataset_train, batch_size=BATCH_SIZE, shuffle=True)

test_loader = torch.utils.data.DataLoader(dataset_test, batch_size=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值