基于 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
.venv\Scripts\python.exe download_model.py从 ModelScope 下载 Qwen2.5-VL-3B-Instruct 到 model/ 目录。
.venv\Scripts\python.exe prepare_dataset.py解析 images/ 下所有图片的文件名,生成 dataset.json。
.venv\Scripts\python.exe train.py.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 节省显存