This commit is contained in:
2026-03-10 17:29:24 +08:00
parent 64692d8382
commit b8b6c6227d
4 changed files with 993 additions and 147 deletions

117
README_water_GUI.md Normal file
View File

@ -0,0 +1,117 @@
# water_GUI.py 使用说明SAM3 水体分割 GUI
本说明文档对应脚本:[water_GUI.py](file:///e:/code/sam3-main/sam3-main/water_GUI.py)。
该脚本是 **纯 GUI 启动器**:界面负责参数编辑、提示说明、日志与进度展示;真正的分割计算由 [water_V5.py](file:///e:/code/sam3-main/sam3-main/water_V5.py) 提供的 `run_segmentation()` 执行,并在点击“运行”时才会被懒加载导入。
## 1. 功能概览
- 选择输入 GeoTIFF待分割遥感影像与输出掩膜 GeoTIFF 路径
- 编辑分割参数Overview/Coarse/Fine/Region/Post
- 鼠标悬停在参数输入框上显示详细提示tooltip
- 后台线程执行分割GUI 不会卡死
- 右侧日志窗口实时输出运行信息
- 进度条显示子区域处理进度
- 支持“停止”(会在子区域边界处响应)
## 2. 运行方式
在项目目录下运行:
```bash
python e:\code\sam3-main\sam3-main\water_GUI.py
```
运行后:
- 点击“浏览”选择输入影像(`.tif/.tiff`
- 点击“浏览”选择输出掩膜路径(建议 `.tif`
- 调整参数(可保持默认)
- 点击“运行”
## 3. 依赖与环境
GUI 本身依赖:
- Python 标准库 `tkinter`
执行分割时会懒加载并依赖(来自 water_V5.py
- torch建议 CUDA 可用)
- rasterio
- numpy
- scipy
- pillow
- tqdm
- 以及 sam3 模型代码与权重(由项目现有加载逻辑处理)
## 4. 参数说明(界面分组)
### 4.1 Overview 兜底
用于减少“中心水域漏检”。Overview 会对每个子区域做一次低分辨率全局预测,并在最终输出中与 coarse/fine 结果取并集。
- `overview_max_side`:兜底预测的最大边长。越大越准越慢。
- `overview_threshold`:兜底阈值。偏低可减少漏检,但误检会增加。
### 4.2 Coarse 粗分割
粗分割用于提高召回、生成精修的边缘带band并与 overview 一起决定精修区域范围。
- `coarse_threshold`:粗分割阈值。偏低提高召回,偏高减少误检。
- `coarse_tile_size`:粗分割分块大小(原图像素)。
- `coarse_tile_overlap`:粗分割块重叠像素。
- `coarse_downsample_factor`粗分割输出降采样比例。2 更细更慢4 折中8 更快更粗。
- `band_radius`:边缘带半径(原图像素)。越大精修范围越大,速度越慢。
### 4.3 Fine 精修
只对边缘带覆盖到的区域进行精细分割,补足边界细节。
- `final_threshold`:最终阈值。偏低更易连通,偏高更干净。
- `fine_tile_size`:精修分块大小(原图像素)。一般 1536 更稳2048 更快但更吃显存/更慢。
- `fine_overlap`:精修块重叠像素。越大接缝越少但更慢。
### 4.4 Region 子区域
将整图划分成多个有重叠的子区域,降低内存峰值。
- `num_splits_y`:纵向切分数。
- `num_splits_x`:横向切分数。
- `region_overlap`:子区域重叠像素,减少子区域边界断裂。
### 4.5 Post 后处理
- `min_area`:移除小碎片的最小连通域面积(像素)。
- `keep_largest_only`:只保留最大连通域(适合只要最大水体)。
## 5. 输出说明
输出文件为单通道 `uint8` 掩膜 GeoTIFF
- 0非水体
- 1水体
输出文件的空间参考CRS/transform来自输入影像的 profile。
## 6. 使用建议16GB 显存)
优先按以下顺序调参:
- 先把 `fine_tile_size` 从 2048 降到 1536更稳
- `fine_overlap` 从 256 降到 128更快可能稍有拼接缝
- `coarse_downsample_factor` 从 4 改 2更细更慢但中心/边缘召回更稳)
- `overview_threshold` 从 0.4 降到 0.35(召回更强,误检更可能增加)
## 7. 常见问题
### 7.1 点击“运行”后报 `ModuleNotFoundError: water_V5`
确保 `water_GUI.py``water_V5.py` 在同一目录:
- `e:\code\sam3-main\sam3-main\water_GUI.py`
- `e:\code\sam3-main\sam3-main\water_V5.py`
并从该目录执行运行命令,或将该目录加入 Python 路径。
### 7.2 界面正常但运行很慢
这通常是正常的:粗分割/精修会对大量瓦片做模型推理。优先调小 `fine_tile_size``fine_overlap`,并提高 `coarse_downsample_factor`
### 7.3 “停止”不立即生效
停止信号会在子区域边界处检查,因此可能需要等待当前子区域处理完成后才退出。