63 lines
2.3 KiB
Markdown
63 lines
2.3 KiB
Markdown
# 实现方案 — 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`
|