Files
Pre_Seg_Server/工程分析/实现方案-20260430_001744.md

63 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实现方案 — 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``<img>`
## 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 模式: `<input multiple accept=".dcm">`
- 上传进度显示
2. `useStore.ts`: Project 增加 `source_type`