Skip to content

Repository files navigation

cell3d — Qwen2.5-VL LoRA 微调

基于 Qwen2.5-VL-3B-Instruct 模型,通过 LoRA 微调实现细胞显微图像特征识别。给定一张细胞图像,模型输出文件名中编码的特征信息(细胞系、编号、时间、代次、位置、放大倍率)。

任务说明

数据

图片位于 images/ 目录,文件名按下划线 _ 分割,编码以下特征:

MCF7_2_6h_P0_LL_40x.tif
  ↑    ↑  ↑  ↑  ↑    ↑
细胞系 编号 时间 代次 位置 倍率

各字段取值:

字段 含义 取值
cell_line 细胞系 MCF7
id 编号 2
time 培养时间 6h
passage 代次 P0
position 拍摄位置 CT(中央), LL(左下), LR(右下), UL(左上), UR(右上)
magnification 放大倍率 10x, 20x, 40x

目标

输入一张细胞图像 → 输出结构化特征描述

输入: images/MCF7_2_6h_P0_LL_40x.tif
输出: 细胞系: MCF7, 编号: 2, 时间: 6h, 代次: P0, 位置: 左下, 放大倍率: 40倍

环境配置

硬件

  • GPU: NVIDIA GeForce RTX 4070 Ti (12GB VRAM)
  • CUDA Driver: 13.2
  • Python: 3.13

安装步骤

# 1. 创建虚拟环境
uv venv

# 2. 安装 PyTorch (CUDA 13.2)
.venv\Scripts\python.exe -m pip install path\to\torch-2.12.0+cu132-cp313-cp313-win_amd64.whl

# 3. 安装 ML 依赖
$env:UV_INDEX_URL = "https://mirrors.aliyun.com/pypi/simple/"
$env:UV_EXTRA_INDEX_URL = "https://mirrors.aliyun.com/pytorch-wheels/cu132/"
uv pip install torchvision transformers peft accelerate datasets tifffile pillow tensorboard numpy scipy qwen-vl-utils modelscope --index-strategy unsafe-best-match

国内用户已在 pyproject.toml 中预配置阿里云镜像。

项目结构

cell3d/
├── .venv/                          # Python 虚拟环境
├── images/                         # 训练图片 (15 张 .tif)
├── model/                          # 基座模型 (ModelScope 下载)
│   └── Qwen/
│       └── Qwen2.5-VL-3B-Instruct/
├── lora_output/                    # 训练好的 LoRA 权重
├── dataset.json                    # 生成的标注数据
├── download_model.py               # 从 ModelScope 下载模型
├── prepare_dataset.py              # 解析文件名生成数据集
├── train.py                        # LoRA 微调脚本
├── predict.py                      # 推理脚本
├── pyproject.toml                  # 项目配置
└── README.md

使用流程

1. 下载模型

.venv\Scripts\python.exe download_model.py

从 ModelScope 下载 Qwen2.5-VL-3B-Instruct 到 model/ 目录。

2. 准备数据集

.venv\Scripts\python.exe prepare_dataset.py

解析 images/ 下所有图片的文件名,生成 dataset.json

3. 训练

.venv\Scripts\python.exe train.py

4. 推理

.venv\Scripts\python.exe predict.py images/MCF7_2_6h_P0_LL_40x.tif
# 输出: 细胞系: MCF7, 编号: 2, 时间: 6h, 代次: P0, 位置: 左下, 放大倍率: 40倍

训练配置

参数
基座模型 Qwen/Qwen2.5-VL-3B-Instruct
微调方法 LoRA
LoRA 秩 r 16
LoRA alpha 32
LoRA dropout 0.1
作用模块 q_proj, k_proj, v_proj, o_proj
可训练参数 7.37M (0.196%)
精度 bfloat16
训练轮数 25
有效 Batch size 4 (per_device=1, grad_accum=4)
学习率 2e-4, cosine 调度
优化器 AdamW
Loss 2.455 → 0.031
训练耗时 ~6.5 分钟 (RTX 4070 Ti)
显存占用 ~10.5 GB / 12 GB
图片缩放 缩放到最长边 384px (保持宽高比)

关键实现细节

  • 模型类: Qwen2_5_VLForConditionalGeneration (transformers 5.9.0 原生支持)
  • 处理器: Qwen2_5_VLProcessor 处理图片和文本
  • pixel_values 为扁平 patch 列表,按 patch 维度拼接而非加 batch 维度
  • image_grid_thw 保持 (num_images, 3) 形状
  • 图片使用 thumbnail 缩放到 384px 以避免 OOM
  • 使用 gradient checkpointing 节省显存

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages