这是一个可独立运行的 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)。& .\.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.01 到 0.99 的变化概率阈值,默认值为 0.5;实际阈值会写入run_metadata.json 的 thresholds.change_probability。
处理分辨率也可按运行选择长边上限:1024(快速预览,默认)、1536(标准)、2048(小目标优先)或 3072(高细节)。分辨率越高越容易保留车辆等小目标,
但 CPU 耗时和内存占用会增加;实际处理尺寸记录在 run_metadata.json 的max_dimension 和 processed_shape 中。
GeoTIFF 模式还支持 0,表示保持原始像素尺寸和地理分辨率;普通图片的 0 会
自动回退到 1024。
每次运行目录包含:
before.tif、after_registered.tif:处理输入;GeoTIFF 模式保留 CRS 和仿射变换。change_probability.tif:模型输出的 float32 变化概率。change_mask_raw.tif、change_mask.tif:阈值前后二值栅格(0/255)。change_overlay.png:第二期影像上的红色变化叠加和双期对比。changes.geojson:通过 geoai.masks_to_vector 导出的变化图斑,附带面积和概率FeatureCollection。change_features.json:图斑面积、概率统计和像素边界。run_metadata.json:版本、模型、阈值、配准、缩放、耗时、坐标和限制说明。已验证两类代表性样本:
07-16.jpg 与自身比较,期望变化比例接近 0,检查管线的空变化07-16.jpg 对 07-19.jpg,检查特征配准、有效区域遮罩、栅格另外对城市停车场双期样本做了分辨率对照: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 元数据标为保留权利,需EVER-Z/Changen2-ChangeStar1x256:CC BY-NC-SA 4.0,当前用户提供的 baseData 图片:版权/使用授权未知,需由数据提供方确认。
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.geojson 和 changes_rectangles.geojson(FeatureCollection,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,用于叠加原图,不伪造经纬度。