Display Driver Uninstaller深度解析:专业显卡驱动清理与系统性能优化指南
2026/4/17 18:14:16
当你只有少量训练样本时,直接训练ResNet18这样的深度神经网络很容易导致过拟合。就像让一个小学生只做5道数学题就去考试,他可能会记住这5道题的答案,但遇到新题目就束手无策了。
数据增强就是通过一些技巧,从现有数据中"变"出更多样本来:
传统方法是在本地电脑上处理,但遇到大量图片时,CPU处理速度慢,GPU又贵又难配置。这就是为什么我们要用云端GPU来加速。
CSDN星图平台提供了预装PyTorch和CUDA的镜像,内置了完整的ResNet18实现和数据增强工具包。你只需要:
部署完成后,你会获得一个云端Jupyter Notebook环境,所有工具都已预装好。
假设你的图片存放在/data/raw目录下,按类别分文件夹存放:
/data/raw/ ├── cat/ │ ├── 1.jpg │ └── 2.jpg ├── dog/ │ ├── 1.jpg │ └── 2.jpg在Notebook中创建一个Python脚本:
from torchvision import transforms # 定义数据增强变换 aug_transform = transforms.Compose([ transforms.RandomHorizontalFlip(), # 随机水平翻转 transforms.RandomRotation(15), # 随机旋转±15度 transforms.ColorJitter( # 颜色抖动 brightness=0.2, contrast=0.2, saturation=0.2 ), transforms.RandomResizedCrop(224), # 随机裁剪并缩放到224x224 transforms.ToTensor() # 转为Tensor格式 ])from torchvision.datasets import ImageFolder from torch.utils.data import DataLoader import os # 加载原始数据集 dataset = ImageFolder('/data/raw', transform=aug_transform) # 创建输出目录 os.makedirs('/data/augmented', exist_ok=True) # 每张原始图片生成10个增强版本 for i in range(10): loader = DataLoader(dataset, batch_size=1, shuffle=True) for j, (img, label) in enumerate(loader): class_name = dataset.classes[label.item()] save_path = f'/data/augmented/{class_name}/{j}_aug{i}.jpg' os.makedirs(os.path.dirname(save_path), exist_ok=True) transforms.ToPILImage()(img[0]).save(save_path)运行这段代码查看增强前后的对比:
import matplotlib.pyplot as plt original = ImageFolder('/data/raw').__getitem__(0)[0] augmented = ImageFolder('/data/augmented').__getitem__(0)[0] plt.figure(figsize=(10,5)) plt.subplot(1,2,1) plt.title("原始图片") plt.imshow(original) plt.subplot(1,2,2) plt.title("增强版本") plt.imshow(augmented) plt.show()现在可以用增强后的数据训练了:
import torch import torch.nn as nn import torch.optim as optim from torchvision import models # 加载增强后的数据集 train_set = ImageFolder('/data/augmented', transform=transforms.ToTensor()) train_loader = DataLoader(train_set, batch_size=32, shuffle=True) # 初始化ResNet18 model = models.resnet18(pretrained=True) num_features = model.fc.in_features model.fc = nn.Linear(num_features, len(train_set.classes)) # 修改最后一层 # 训练配置 criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9) # 训练循环 for epoch in range(10): # 训练10轮 for inputs, labels in train_loader: optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}')问题1:CUDA out of memory - 解决方法:减小batch size或使用更小的图片尺寸
问题2:增强后的图片不自然 - 解决方法:调整ColorJitter参数,降低变化幅度
问题3:训练准确率不升反降 - 解决方法:检查增强是否过度,适当减少变换种类
训练完成后,建议:
现在你就可以在CSDN星图平台尝试这个方案,实测下来生成1万张增强图片只需不到5分钟,比本地快太多了!
💡获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。