Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds the working code for the SoSym journal extension of the FormaliSE'25 paper on robustness verification of video classification neural networks. The extension adds support for two new real-world action recognition datasets (UCF11 and KTH Actions) alongside the existing synthetic datasets.
Key changes:
- New verification support for UCF11 and KTH Actions datasets
- Data preparation notebooks for new datasets
- Updated experiment runner scripts with configurable algorithm selection
- Enhanced documentation with Docker-based setup instructions
- Addition of GlobalAveragePooling3DLayer support in NNV
- Modified result directory structure using
/tmpfor Docker compatibility
Reviewed changes
Copilot reviewed 38 out of 57 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
src/vvn/verifyucf11.m |
New verification function for UCF11 dataset with PGD falsification |
src/vvn/verifykthactions.m |
New verification function for KTH Actions dataset |
src/vvn/verify.py |
Added run_ucf11() and run_kthactions() functions with results management |
src/run_ucf11.py |
Experiment runner for UCF11 with varying model sizes |
src/run_kthactions.py |
Experiment runner for KTH Actions dataset |
src/run.py, src/run_gtsrb.py, src/run_stmnist.py |
Refactored with argparse for algorithm selection |
README.md |
Comprehensive update with Docker setup, data prep, and experiment instructions |
requirements.txt |
Simplified to essential dependencies |
.env |
Updated with Docker container paths |
run_vvn.sh |
Updated to run all experiments including new datasets |
engine/nn/layers/GlobalAveragePooling3DLayer.m |
New layer implementation for global 3D average pooling |
engine/utils/matlab2nnv.m |
Added parsing support for GlobalAveragePooling3DLayer |
| Data prep notebooks | Jupyter notebooks for UCF11, KTH Actions, and ST-MNIST preprocessing |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| s = squeeze(s); | ||
| label = labels(index) + 1; | ||
|
|
||
| % get the true output (we know this is coreect) |
There was a problem hiding this comment.
Typo in comment: "coreect" should be "correct".
| output = net.evaluate(s); | ||
| [~, P] = max(output); | ||
|
|
||
| % choose the epsilon vaue |
There was a problem hiding this comment.
Typo in comment: "vaue" should be "value".
| @@ -0,0 +1,47 @@ | |||
| import os | |||
| import sys | |||
There was a problem hiding this comment.
Import of 'sys' is not used.
| @@ -0,0 +1,62 @@ | |||
| import os | |||
| import sys | |||
There was a problem hiding this comment.
Import of 'sys' is not used.
| "!apt-get install unrar -y" | ||
| ] | ||
| }, |
There was a problem hiding this comment.
The cell that downloads the UCF11 dataset uses wget over plain HTTP (http://crcv.ucf.edu/data/UCF11_updated_mpg.rar) without any integrity verification before extracting it with unrar. A network attacker (or malicious proxy) could tamper with this archive in transit and deliver poisoned data or exploit vulnerabilities in the RAR parser. Use HTTPS if the server supports it and/or verify a known-good checksum or signature of the archive before extraction (and avoid --no-check-certificate when using HTTPS).
The working code for the SoSym journal extension of the FormaliSE'25 paper Robustness Verification of Video Classification Neural Networks.