edit | blame | history | raw

变化检测

这是一个可独立运行的 CPU Demo,用 geoai-py 0.42.0 的 ChangeStar 接口对双期
影像生成变化概率栅格、二值变化栅格和变化图斑 GeoJSON。能力边界为 A(直接
GeoAI 能力)
;OpenCV 只负责普通 JPG 的特征配准和尺寸处理,Rasterio/GeoPandas
负责无 CRS 输入的栅格与矢量写出。

输入契约

  • --before:第一期影像(用户样例为 baseData/07-16.jpg)。
  • --after:第二期影像(用户样例为 baseData/07-19.jpg)。
  • 普通图片模式支持 JPG/PNG 和无 CRS 的 TIFF,先转换为内部 RGB GeoTIFF 并使用
    像素坐标;GeoTIFF 模式要求两期输入都是带相同 CRS 的 RGB GeoTIFF。若像元大小、原点、
    旋转方向或尺寸不同,流程只在处理副本中将第二期双线性重投影到第一期网格;不会改写原始 TIFF。
  • 自动模式会在两期输入都具备有效 CRS/仿射变换时启用 GeoTIFF 模式,否则使用普通
    图片模式。带 CRS 的 GeoTIFF 会保留空间参考,普通 JPG/PNG 结果不能解释为米或经纬度。

运行

& .\.venvs\00-change-detection\Scripts\python.exe `
  .\capabilities\00-change-detection\run_change_detection.py `
  --before .\baseData\07-16.jpg `
  --after .\baseData\07-19.jpg `
  --threshold 0.5 `
  --processing-mode auto `
  --output .\shared\outputs\00-change-detection\validation-real-20260817

带空间参考的双期 GeoTIFF 可显式使用 --processing-mode geotiff --max-dimension 0
普通图片可使用 --processing-mode image --max-dimension 2048。省略模式时使用
auto,省略 --max-dimension 时普通图片默认 1024,带 CRS 的 GeoTIFF 默认保持原始尺寸。

首次运行会从 Hugging Face 缓存 ChangeStar s1_s1c1_vitb 权重;CPU 运行时间与
机器和缩放参数有关。--max-dimension 默认 1024,--tile-size 默认 512,适合
先做代表性验证;增加尺寸或批量运行前应先人工检查配准和误报。每次运行可单独
选择 0.010.99 的变化概率阈值,默认值为 0.5;实际阈值会写入
run_metadata.jsonthresholds.change_probability
处理分辨率也可按运行选择长边上限:1024(快速预览,默认)、1536(标准)、
2048(小目标优先)或 3072(高细节)。分辨率越高越容易保留车辆等小目标,
但 CPU 耗时和内存占用会增加;实际处理尺寸记录在 run_metadata.json
max_dimensionprocessed_shape 中。
GeoTIFF 模式还支持 0,表示保持原始像素尺寸和地理分辨率;普通图片的 0
自动回退到 1024

输出

每次运行目录包含:

  • before.tifafter_registered.tif:处理输入;GeoTIFF 模式保留 CRS 和仿射变换。
  • change_probability.tif:模型输出的 float32 变化概率。
  • change_mask_raw.tifchange_mask.tif:阈值前后二值栅格(0/255)。
  • change_overlay.png:第二期影像上的红色变化叠加和双期对比。
  • changes.geojson:通过 geoai.masks_to_vector 导出的变化图斑,附带面积和概率
    统计;无变化时也会写出空 FeatureCollection
  • change_features.json:图斑面积、概率统计和像素边界。
  • run_metadata.json:版本、模型、阈值、配准、缩放、耗时、坐标和限制说明。

验收口径

已验证两类代表性样本:

  1. 正常基线:07-16.jpg 与自身比较,期望变化比例接近 0,检查管线的空变化
    输出、GeoJSON 和元数据是否完整。
  2. 困难真实样本:07-16.jpg07-19.jpg,检查特征配准、有效区域遮罩、栅格
    和矢量输出是否可读。该样本是近景边坡照片,不是 ChangeStar 训练分布,不能
    据此宣称工程变化检测准确率。

另外对城市停车场双期样本做了分辨率对照:1024 档位输出 1 个图斑,2048
档位输出 16 个图斑,更多车辆和停车区域变化被覆盖;2048 档位 CPU 用时约
84 秒,仍存在误报和漏检,结果不能视为车辆变化检测准确率。

没有人工变化真值,Demo 不报告 precision、recall、IoU 或“变化类型”。后续若要
用于边坡/排洪沟等业务,需要同 CRS 正射影像、人工掩膜、误报/漏报统计和许可审查。

许可

  • geoai-py 0.42.0:MIT。
  • torchange 0.0.4:Apache-2.0;ever-beta 的 PyPI 元数据标为保留权利,需
    单独复核。
  • ChangeStar 权重 EVER-Z/Changen2-ChangeStar1x256CC BY-NC-SA 4.0,当前
    只能用于非商业验证,不可直接用于商业产品。
  • 用户提供的 baseData 图片:版权/使用授权未知,需由数据提供方确认。

    Candidate parameter-scan outputs

The low-cost scan reuses the existing change_probability.tif and does not rerun ChangeStar. Complete GeoJSON outputs are materialized for threshold-0.40_area-256 (45 features), threshold-0.40_area-64 (104 features), and threshold-0.30_area-256 (47 features). The console exposes their overlays and downloads; compare them with manual labels before treating any combination as an accuracy improvement.

The console can also run a scan from a new user upload. It performs one ChangeStar inference at a neutral threshold, applies the selected threshold/minimum-area combinations to that probability raster, and materializes per-combination GeoJSON in a separate parameter-scans/<scan-id>/ directory. The API runs this as a background job so CPU inference and vectorization do not depend on a browser request remaining open.

最小连通区域适用于普通图片和 GeoTIFF:它表示处理后掩膜中的像素数量,不是平方米。普通图片参数扫描无需手工填写,留空时控制台使用 256 px;数值越小越容易保留小变化,也会保留更多噪声,数值越大则相反。

当某个阈值组合没有任何变化像素时,仍会生成空的 changes.geojsonchanges_rectangles.geojsonFeatureCollection,0 个要素),不会因为矢量化阶段缺少文件而使整个扫描失败。

扫描结果默认只属于参数试验区,不会自动进入案例库。人工确认某个阈值/面积组合后,在扫描结果区点击“将当前组合转为正式案例”,控制台会复制该组合的掩膜、规则四边形 GeoJSON、经纬度 GeoJSON(若输入有 CRS)和预览图到新的正式运行目录,并保留扫描原始输入引用;随后它才会出现在案例库。这样可以避免未经复核的扫描组合被误认为正式结果。

矢量输出分为两层:changes.geojson 保留清理后掩膜的每一个不规则图斑,changes_rectangles.geojson 为每个图斑生成外接规则矩形,适合产品中按四边形消费,但可能覆盖比原图斑更大的区域,仍需人工复核。最小连通区域只在掩膜阶段以像素面积应用一次;矢量导出使用 rasterio.features.shapes 保持区域一一对应,不使用 GeoAI 通用矢量函数的形态学闭运算或 NMS,以免将已保留的掩膜区域再次合并或过滤。带有效 CRS/仿射变换的 GeoTIFF 另外生成 changes_rectangles_wgs84.geojson(EPSG:4326)用于地图叠加;普通 JPG/PNG 或无 CRS TIFF 只输出像素坐标,单位为 px,用于叠加原图,不伪造经纬度。