● 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
● 🍦 参考文章:Pytorch实战 | 第P9天:YOLOv5-Backbone模块
● 🍖 原作者:K同学啊|接辅导、项目定制
一、我的环境
● 语言环境:Python3.8
● 编译器:pycharm
● 深度学习环境:Pytorch
● 数据来源:链接: https://pan.baidu.com/s/1SEfd8mvWt7BpzmWOeaIRkQ 提取码: gdie
二、代码实现
1、mian.py
# -*- coding: utf-8 -*-
import copy
import torch.utils.data
from torchvision import datasets, transforms
from model import train1, test1, YOLOv5f_backbone
import torch.nn as nn
# 一、导入和转换数据
img_path = './data/'
# 加载数据
train_transforms = transforms.Compose([
transforms.Resize([224, 224]),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
total_data = datasets.ImageFolder(img_path, transform=train_transforms)
# 训练数据和测试数据切分
train_size = int(len(total_data) * 0.8)
test_size = len(total_data) - train_size
train_data, test_data = torch.utils.data.random_split(total_data, [train_size, test_size])
# 按批次处理
batch_size = 4
train_dl = torch.utils.data.DataLoader(train_data, batch_size=batch_size, shuffle=True)
test_dl = torch.utils.data.DataLoader(test_data, batch_size=batch_size, shuffle=True)
# 二、模型网络结构 model.py
# 三、训练函数 model.py train1()和test1()函数
device = 'cuda' if torch.cuda.is_available() else 'cpu'
print('using:{}'.format(device))
model = YOLOv5f_backbone().to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)
loss_fn = nn.CrossEntropyLoss()
epochs = 60
train_loss = []
test_loss = []
train_acc = []
test_acc