StabilEdge is a verification framework that extends the Marabou solver with a high‑level workflow and graphical interface. It simplifies the specification of verification problems, monitors solver progress, and visualises results, thereby lowering the entry barrier for rigorous analysis of neural networks in safety‑critical applications.
| Category | Description |
|---|---|
| Verification Modes | Four distinct verification procedures (see accompanying paper) covering local and targeted robustness analyses. |
| GUI | Cross‑platform graphical interface with integrated Netron viewer. |
| Flexible Input | Accepts ONNX models, data sets, and a Feature JSON file specifying task type, domain constraints, and perturbation settings. |
| Interactive Configuration | Users select pixel or time‑series features to perturb, set delta (δ) and epsilon (ε) thresholds, and choose single or multiple values. |
| Progress Monitoring | Real‑time progress bar tracking remaining SAT/UNSAT instances; optional visualisation of results on completion. |
| Adaptive Timeout | Extended Marabou timeout that analyses solver statistics and recommends when to prolong or disable the limit. |
git clone https://github.com/NeuralNetworkVerification/Marabou.git
# Follow Marabou documentation for build optionsgit clone https://github.com/your‑organisation/StabilEdge.gitYou’ll need a Conda environment called verify_gui with all required dependencies.
# Using the provided environment file
conda env create -f environment.yml
conda activate verify_guiManual install (alternative)
conda create -n verify_gui python=3.8 pyqt matplotlib ...
conda activate verify_guicd StabilEdge
./run_gui.shThe script automatically
- activates the correct Conda environment
- sets the necessary Qt plugin paths
- forces software rendering to avoid OpenGL / ROS / CUDA conflicts
- launches
StabilEdge_GUI.py
- Right‑click
run_gui.sh→ Properties → Permissions - ✔️ Enable “Allow executing file as program”
- Double‑click
run_gui.shand choose Run
💡 Some desktop environments need a
.desktopfile for a true menu launcher (see below).
Create StabilEdge.desktop:
[Desktop Entry]
Type=Application
Version=1.0
Name=StabilEdge
Comment=Formal verification GUI for ONNX models
Exec=sh -c "cd /path/to/StabilEdge && ./run_gui.sh"
Icon=/path/to/StabilEdge/icon.png
Terminal=false
Categories=Development;Science;
StartupWMClass=StabilEdge_GUI.pyMove it to:
mv StabilEdge.desktop ~/.local/share/applications/- Import the Model: Load an ONNX network; inspect its architecture via the embedded Netron viewer.
- Load Metadata: Supply the Feature JSON describing task type (classification/regression), number of classes, input domain, and perturbation options. Example files are provided in
examples/. - Configure Analysis: Set δ values for input perturbations and ε thresholds for acceptable output deviation. For images, select specific pixels; for time‑series data, choose features and time steps via the grid.
- Run Verification: Monitor progress in real time. When the timeout is near, the system evaluates solver statistics and issues recommendations.
- Inspect Results: Visualise outcomes through interactive plots or export logs for further analysis.
- ONNX Model – Neural network to be verified.
- Dataset – Input samples used during verification (CSV/NPZ supported).
- Feature JSON – Contains:
task:classification|regressionnum_classes: integer (for classification)perturbation: domain constraints and pixel/feature selections- Additional optional fields (see examples).
If you use StabilEdge in academic work, please cite:
@inproceedings{StabilEdge2025,
title = {StabilEdge:},
author = {Author Names},
booktitle = {Proceedings of the XYZ Conference},
year = {2025}
}StabilEdge is released under the MIT License. See LICENSE for details.
This project builds upon the Marabou verification engine and the Netron network visualiser. We thank their respective contributors for making their software available to the community.