当前位置: 首页 > news >正文

PyTorch模型微调实战指南

微调 torchvision 模型完整指南

一、概述

本指南涵盖两种迁移学习场景:

  1. 目标检测与实例分割:使用 Mask R-CNN 在自定义数据集(Penn-Fudan 行人数据集)上微调,同时预测边界框和分割掩码。

  2. 图像分类:使用 ResNet、AlexNet、VGG、SqueezeNet、DenseNet、Inception v3 等模型在蜜蜂/蚂蚁二分类数据集上微调或特征提取。

两种方法的共同步骤:

  • 加载预训练模型

  • 根据自定义任务的类别数修改最后一层(或必要层)

  • 选择更新全部参数(微调)或仅更新新层(特征提取)

  • 定义损失函数、优化器、数据加载器

  • 训练并评估


二、目标检测与实例分割微调(Mask R-CNN)

2.1 数据集准备

官方源(推荐):Penn-Fudan Database for Pedestrian Detection and Segmentation。在页面中找到 "Download zipped file here" 的链接即可下载

Penn-Fudan 数据集结构:

PennFudanPed/ PNGImages/ # 原始图像 PedMasks/ # 分割掩码(不同实例用不同颜色编码)

每张图像对应一个掩码图,掩码中像素值 0 表示背景,非零值表示不同实例。

2.2 自定义数据集类 PennFudanDataset

关键要求:继承 torch.utils.data.Dataset,实现 __len__ 和 __getitem__
返回字典 target 必须包含

  • boxes (FloatTensor[N,4]):[x0, y0, x1, y1] 格式

  • labels (Int64Tensor[N])

  • image_id (Int64Tensor[1])

  • area (Tensor[N])

  • iscrowd (UInt8Tensor[N])

  • masks (UInt8Tensor[N,H,W]) – 可选,但 Mask R-CNN 需要

代码解释

class PennFudanDataset(object): def __getitem__(self, idx): # 加载图像和 mask img = Image.open(img_path).convert("RGB") mask = Image.open(mask_path) mask = np.array(mask) # 获取所有实例 ID(非零值) obj_ids = np.unique(mask)[1:] # 将 mask 拆分为多个二值 mask masks = mask == obj_ids[:, None, None] # 计算每个实例的边界框 boxes = [] for i in range(len(obj_ids)): pos = np.where(masks[i]) xmin, xmax = np.min(pos[1]), np.max(pos[1])
http://www.jsqmd.com/news/1068093/

相关文章:

  • temperature top-p
  • AI Agent 面试题 794:Agent的评估中的多轮对话质量评估方法
  • 软件|Navicat Premium16 免费安装配置教程(附安装包)
  • 简谈循环神经网络(RNN)以及现代变体
  • Linear自动化_linear-automation
  • 奥迪 AUDI 案例:母品牌和新业务怎么拆?
  • 山东大学软件学院项目实训:基于AI大模型的智能考研助手(五)
  • C# Binary读写流 / BufferedStream缓存流 全套笔记
  • PyTorch Tensor 完全指南:从基础概念到高级操作实战
  • 微信 iPad 协议登录认证与鉴权机制深度解析
  • 己所不欲勿施于人
  • 多源BFS最短路---矩阵 | 飞地的数量 | 地图中的最高点 | 地图分析
  • C语言学习笔记20260519—如何判断输入的自然数是否为素数
  • OpencvSharp 算子学习教案之 - Cv2.DrawContours 重载1
  • 3A分子筛乙醇脱水的实验装置设计方案
  • 2026年第一、二季度最新最全热门网站建设工具全面对比评测
  • SpringCloud Alibaba Sentinel 限流+熔断完整实战教程
  • 电阻、电容、电感,二极管、三极管、mos管
  • 江科大PWM笔记:呼吸灯、舵机控制、电机调速
  • Linux 实时优化的端到端延迟:从中断到任务执行的全链路优化
  • 2026山东大学软件学院创新项目实训(团队——6)
  • 山东大学项目实训6月20日
  • 【编号317】西安城市边缘区土地利用数据
  • 计算机毕业设计之取保候审人员管理系统设计与实现
  • (一)站稳脚:用Scikit-learn跑通第一条Pipeline
  • SQL必知必会——使用游标
  • 【Springboot毕设全套源码+文档】基于springboot蛋糕店线上预订销售系统的设计与实现(丰富项目+远程调试+讲解+定制)
  • TAP/TUN与自定义网络协议栈
  • c#软件开发学习笔记--Winform窗体第二期
  • NAT导致视频监控平台无法拉取视频流故障一例