# 实现方案 — 2026-04-30 ## R1 — PyTorch CUDA + SAM2 安装 ### 步骤 1. `pip uninstall torch torchvision torchaudio -y` 2. `pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124` 3. `pip install sam2` 4. 验证: `torch.cuda.is_available()` → True 5. 修改 `backend/services/sam2_engine.py`,移除 stub fallback,使用真实 SAM2 ### SAM2 模型配置 - 模型文件: `/home/wkmgc/Desktop/Seg_Server/models/sam2_hiera_tiny.pt` (149MB) - 配置文件: 需下载对应 YAML 或使用默认配置 ## R2 — 视频封面 ### 后端 1. `frame_parser.py`: `parse_video()` 提取第一帧为 `thumbnail.jpg` 2. `upload_frames_to_minio()`: 同时上传 thumbnail 到 `projects/{id}/thumbnail.jpg` 3. `models.py`: Project 增加 `thumbnail_url` 字段 4. `schemas.py`: ProjectOut 增加 `thumbnail_url` 5. `projects.py`: list_projects / get_project 返回 thumbnail presigned URL ### 前端 1. `ProjectLibrary.tsx`: 卡片背景显示 `proj.thumbnail_url` 的 `` ## R3 — 帧率 ### 后端 1. `models.py`: Project 增加 `original_fps` (float), `parse_fps` (float, default=30) 2. `schemas.py`: ProjectOut / ProjectCreate 增加字段 3. `frame_parser.py`: - `parse_video()` 开头用 FFmpeg/FFprobe 读取原始帧率,返回给调用方 - 解析时按 `parse_fps` 参数提取帧 4. `media.py`: `parse_media()` 传入 parse_fps 5. `main.py`: 默认视频种子逻辑设置 original_fps ### 前端 1. `useStore.ts`: Project 增加 `original_fps`, `parse_fps` 2. `api.ts`: getProjects / createProject 映射字段 3. `ProjectLibrary.tsx`: 显示真实帧率 `original_fps` 4. 上传时弹窗允许设置 parse_fps ## R4 — DICOM 批量导入 ### 后端 1. `models.py`: Project 增加 `source_type` (str, default="video") 2. `schemas.py`: ProjectOut 增加 source_type 3. `media.py`: - `upload_media()` 支持批量上传(`List[UploadFile]`) - 新增 `/api/media/upload/dicom` 接口,专用于批量 .dcm 上传 - DICOM 文件存储到 `uploads/{project_id}/dicom/` - 上传完成后可直接触发解析 4. `frame_parser.py`: `parse_dicom()` 支持从 MinIO 读取整个 dicom 目录 ### 前端 1. `ProjectLibrary.tsx`: - 导入按钮支持两种模式: 视频导入 / DICOM 序列导入 - DICOM 模式: `` - 上传进度显示 2. `useStore.ts`: Project 增加 `source_type`