Spaces:
Running
Running
Commit History
-
ux: move the large-raster note to the footer and shorten it
AyoubIt sat directly under the header intro, where it was the first thing a visitor read. The same string is reused in the soft and hard limit messages, so those get shorter too. The CSS card follows it down: bottom margin instead of top, and the code-wrapping rule moves from #app-header to #local-note.542ee97 -
docs: drop the claim that the RGB+DEM models ignore the DEM
AyoubThe two 4-channel models carried a shared note saying the DEM channel was trained effectively constant and does not change their prediction. It is not correct, so it is removed rather than softened. - src/models.py: replace DEM_INERT_NOTE with plain per-model notes giving the architecture, patch size and input range, as the RGB models have - README.md, model/README.md, CLAUDE.md: remove the same claim, including the ablation figures and the dataset_benchm.py explanation behind itd1996c7 -
ux: drop the "DEM currently unused" suffix from the RGB+DEM model labels
Ayoub33a31c3
-
feat: reimplement metrics on numpy/scikit-image
AyoubReplace the torchmetrics implementation in train.py::eval_single, which was the Space's last reason to install torch. Also moves dilate_labels here, because dataset_benchm.py imports torch and torchvision at module level. Parity against torchmetrics on the example pair: the ten confusion-matrix metrics (acc, f1, prec, rec, spec, dice, iou, ck) and mean absolute error agree to <1e-7; mse agrees to 4e-5, which is float32-vs-float64 accumulation. Two do not agree, both traceable to eval_single passing 0-255 data to metrics configured with data_range=1.0: - ssim 0.307 vs 0.639. With the dynamic range misdeclared by 255x, the stabilising constants are negligible against the signal and the result becomes an artifact of which SSIM implementation you happen to use. - roc_auc 0.900 vs 0.888. torchmetrics applies a sigmoid to inputs outside [0,1], which saturates every value above ~10 and destroys the ranking AUROC depends on. The value here is the true rank-based AUROC. The 0-255 con…384d7c1 -
feat: port FraXtex vectorization stage
AyoubAdd stage 2 ported from the FraXtex QGIS plugin: threshold, remove small objects, skeletonize, polygonize, buffer/dissolve, pygeoops centerline, simplify, write GeoPackage. Distances are given in pixels and scaled by the raster resolution, so they behave the same on a georeferenced raster and on a plain PNG. Expects the inference convention that high values mean fracture. One fix over the plugin: an adaptive threshold is a per-pixel array, so the plugin's log line prints a whole 2D array. Summarise it instead. Claude-Session: https://claude.ai/code/session_01PMtrdVLnNcKxDGfurm5Wkpfa7174b -
feat: port FraXtex ONNX inference pipeline
AyoubAdd the ONNX inference pipeline ported from the FraXtex QGIS plugin, which is canonical for this logic. Replaces the Space's non-overlapping patchify approach with the plugin's Hann-blended overlapping tiles and model-declared input contract. - src/inference.py: contract read from the ONNX graph (channel count, patch size, input range), overlapping tiles with separable Hann coverage normalization, DEM handling and sanity guards identical to the plugin. - src/models.py: registry of the four published models, fetched lazily from the ayoubft/fraXteX HF repo rather than committed here. - src/feedback.py: QgsProcessingFeedback-shaped shim so the ported code stays line-comparable with the plugin. - src/limits.py: input size limits, which the plugin has no need for because it runs on the user's own machine rather than a shared container. One deliberate deviation from the plugin: the out-of-range output check gets a 1e-5 tolerance. A sigmoid saturating to exactly 1.0 picks up ~1.2e…c4a9f4d
-
add metrics computation
Ayoubce5153c
-
first commit
Ayoub325985e