Hi, I'm trying to use alpha-beta-CROWN for verifying a truncated YOLO-based model. However, I'm running into two different major issues depending on the bound propagation method:
When I try to use CROWN or CROWN-ibp, I immediately run into CUDA out-of-memory errors.
Reducing the batch size doesn't help much and neither do the parameters that are mentioned to help with memory problems. I suspect this indicates that the method may not scale to large models like YOLO (with large input size and many convolutional layers).
When I use IBP alone (method='IBP'), the model runs, but the computed lower bounds have absurdly large negative values, e.g., -1e+26.
After this, I get shape mismatch or value errors (like expected 3D got 2D) later in the pipeline.
Traceback (most recent call last):
File "/beegfs/home/u1266/abcrown/alpha-beta-CROWN/complete_verifier/abcrown.py", line 822, in <module>
abcrown.main()
File "/beegfs/home/u1266/abcrown/alpha-beta-CROWN/complete_verifier/abcrown.py", line 740, in main
incomplete_verification_output = self.incomplete_verifier(
File "/beegfs/home/u1266/abcrown/alpha-beta-CROWN/complete_verifier/abcrown.py", line 160, in incomplete_verifier
global_lb, ret = model.build(
File "/beegfs/home/u1266/abcrown/alpha-beta-CROWN/complete_verifier/beta_CROWN_solver.py", line 557, in build
lb, ub, A = ret
ValueError: not enough values to unpack (expected 3, got 2)
This is my YAML configuration file:
general:
device: cuda
save_adv_example: true
show_adv_example: true
model:
name: yolov5n
path: ../../myYolo/checkpoints/epoch_25.pt
input_shape: [1, 3, 224, 224]
data:
dataset: Customized("caltech.dataCaltech", "load_caltech_sample")
start: 1
end: 1
mean: [0]
std: [1]
num_outputs: 257
specification:
epsilon: 0.1
vnnlib_path: ../spec_eps001_class500.vnnlib
solver:
batch_size: 1024
bound_prop_method: crown
Is it expected that CROWN doesn’t scale to models like YOLO?
Should IBP produce such extreme values?
Any guidance on how to adapt this tool for larger models like YOLO?
Hi, I'm trying to use alpha-beta-CROWN for verifying a truncated YOLO-based model. However, I'm running into two different major issues depending on the bound propagation method:
When I try to use CROWN or CROWN-ibp, I immediately run into CUDA out-of-memory errors.
Reducing the batch size doesn't help much and neither do the parameters that are mentioned to help with memory problems. I suspect this indicates that the method may not scale to large models like YOLO (with large input size and many convolutional layers).
When I use IBP alone (method='IBP'), the model runs, but the computed lower bounds have absurdly large negative values, e.g., -1e+26.
After this, I get shape mismatch or value errors (like expected 3D got 2D) later in the pipeline.
Traceback (most recent call last):
This is my YAML configuration file:
Is it expected that CROWN doesn’t scale to models like YOLO?
Should IBP produce such extreme values?
Any guidance on how to adapt this tool for larger models like YOLO?