终极鼠标键盘跟踪可视化工具:MouseTracks完整使用指南
2026/8/3 0:25:04
ResNet18是深度学习领域最经典的图像分类模型之一,就像相机界的"傻瓜相机"——简单好用但效果不俗。它能轻松识别猫狗、男女、果蔬等常见物体分类任务,是很多AI项目的入门首选。
但问题来了:跑ResNet18需要显卡支持,而普通笔记本(尤其是MacBook)的集成显卡根本带不动。传统解决方案要么花几千块买显卡,要么忍受卡成PPT的训练速度——直到你发现云端GPU这个神器:
💡 真实案例:用云端GPU跑ResNet18分类男女图像,10分钟完成训练,测试准确率97%,而MacBook Air需要3小时
部署完成后,在Jupyter Notebook中运行以下代码:
import torch from torchvision import models # 加载预训练模型(自动下载权重) model = models.resnet18(pretrained=True) model.eval() # 切换到推理模式 # 打印模型结构(验证是否加载成功) print(model)看到类似下面的输出就说明环境就绪了:
ResNet( (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False) (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) ... (fc): Linear(in_features=512, out_features=1000, bias=True) )用这段代码测试图像分类(以猫咪图片为例):
from PIL import Image from torchvision import transforms # 预处理(必须和训练时一致) preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize( mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # 加载测试图片(替换为你的图片路径) img = Image.open("cat.jpg") img_tensor = preprocess(img).unsqueeze(0) # 执行分类 with torch.no_grad(): outputs = model(img_tensor) _, predicted = torch.max(outputs, 1) print("预测类别ID:", predicted.item())现成的预训练模型只能识别1000种ImageNet类别。如果想区分"男人/女人"或"苹果/香蕉",需要微调模型:
按这个结构组织你的图片(以男女分类为例):
dataset/ ├── train/ │ ├── male/ # 存放男性图片 │ └── female/ # 存放女性图片 └── val/ ├── male/ └── female/ResNet18原输出是1000类,我们需要改为2类:
import torch.nn as nn # 修改全连接层 model.fc = nn.Linear(512, 2) # 512是原维度,2是二分类 # 定义损失函数和优化器 criterion = nn.CrossEntropyLoss() optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)from torchvision import datasets # 加载数据集 train_data = datasets.ImageFolder( 'dataset/train', transform=preprocess ) train_loader = torch.utils.data.DataLoader( train_data, batch_size=32, shuffle=True ) # 训练循环 for epoch in range(10): # 跑10轮 for images, labels in train_loader: optimizer.zero_grad() outputs = model(images) loss = criterion(outputs, labels) loss.backward() optimizer.step() print(f'Epoch {epoch+1}, Loss: {loss.item():.4f}')python model.load_state_dict(torch.load('resnet18.pth'))python transforms.RandomHorizontalFlip(), # 随机水平翻转 transforms.RandomRotation(15), # 随机旋转±15度python scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=5, gamma=0.1)python for param in model.parameters(): # 冻结所有层 param.requires_grad = False model.fc.requires_grad = True # 只训练最后一层现在就可以上传你的数据集,试试训练一个专属分类器!
💡获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。