MART
MART copied to clipboard
Modality dispatch
What does this PR do?
- Implement
modality_dispatch()
in thesingledispatch
manner. - Add
modality_dispatch()
inPerturber
forInitializer
andProjector
.- Remove list-dispatch in
Initializer
andProjector
.
- Remove list-dispatch in
- Make
Enforcer
andComposer
modality-aware withmodality_dispatch()
-
GradientModifier
is different because of the way we handle trainable parameters.
-
- Annotate modality-aware params in
Optimizer
forGradientModifier
. - Add a modality-aware adversary example.
Benign:
CUDA_VISIBLE_DEVICES=0 \
python -m mart \
experiment=ArmoryCarlaOverObjDet_TorchvisionFasterRCNN \
trainer=gpu \
fit=false \
+trainer.limit_test_batches=1 \
+model.load_state_dict.losses_and_detections.model=/home/weilinxu/coder/GARD-with-MART/oscar/model_zoo/carla_rgb_weights_eval6.pt
│ test_metrics/map_50 │ 0.6349384784698486
Adversarial:
CUDA_VISIBLE_DEVICES=0 \
python -m mart \
experiment=ArmoryCarlaOverObjDet_TorchvisionFasterRCNN \
trainer=gpu \
fit=false \
+trainer.limit_test_batches=1 \
+model.load_state_dict.losses_and_detections.model=/home/weilinxu/coder/GARD-with-MART/oscar/model_zoo/carla_rgb_weights_eval6.pt \
[email protected]_adv_test=object_detection_rgb_mask_adversary \
+model.test_sequence.seq005=input_adv_test \
model.test_sequence.seq010.preprocessor=["input_adv_test"]
│ test_metrics/map_50 │ 0.4633878767490387 │
Type of change
Please check all relevant options.
- [ ] Improvement (non-breaking)
- [ ] Bug fix (non-breaking)
- [x] New feature (non-breaking)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] This change requires a documentation update
Testing
Please describe the tests that you ran to verify your changes. Consider listing any relevant details of your test configuration.
- [x]
pytest
- [x]
CUDA_VISIBLE_DEVICES=0,1 python -m mart experiment=CIFAR10_CNN_Adv trainer=ddp trainer.precision=16 trainer.devices=2 model.optimizer.lr=0.2 trainer.max_steps=2925 datamodule.ims_per_batch=256 datamodule.world_size=2
reports 70% (14 sec/epoch).
Before submitting
- [x] The title is self-explanatory and the description concisely explains the PR
- [x] My PR does only one thing, instead of bundling different changes together
- [ ] I list all the breaking changes introduced by this pull request
- [x] I have commented my code
- [ ] I have added tests that prove my fix is effective or that my feature works
- [x] New and existing unit tests pass locally with my changes
- [x] I have run pre-commit hooks with
pre-commit run -a
command without errors
Did you have fun?
Make sure you had fun coding 🙃
Do you think we should wait to merge this until we change MART to bound inputs between [0, 1]
instead of [0, 255]
? See #70.