Releases: IntelLabs/MART
MART v0.6.1
What's Changed
We decouple the vision component from Adversary, so that users who work on audio adversary or text adversary do not need to install vision components any more.
By moving many dependency to optional groups, we make it flexible for developers to integrate MART into existing projects.
We add support to ImageNet-normalized input and [0,1] image input by adding batch canonicalization transforms and reverse transforms in configs.
The detailed changes are listed below.
Adversary
- Prepare target models before running attacks by @mzweilin in #249
- Add batch_c15n for image of [0,1] or imagenet-normalized by @mzweilin in #248
- Add utils for config instantiation. by @mzweilin in #250
- Add mart.nn.Get() to extract a value from the kwargs dict. by @mzweilin in #251
Dependency
- Upgrade flake8 to 7.0.0 in pre-commit by @mzweilin in #245
- Upgrade pydantic to avoid CVE-2024-3772 by @mzweilin in #253
- Make dependencies flexible with optional groups by @mzweilin in #254
- Make mart importable with the core dependency group alone by @mzweilin in #255
- Update dependency by @mzweilin in #252
Development and CI
- Specify read-all permissions in workflows. by @mzweilin in #246
- Hash-pin dependency in GitHub Actions by @mzweilin in #247
- Skip object detection tests if pycocotools is not installed. by @mzweilin in #257
Full Changelog: v0.6.0...v0.6.1
v0.6.0
What's Changed
Dataset
- Add FiftyOne datamodule by @lumurillo in #209
- Enhance FiftyOne datamodule on bbox-only datasets by @mzweilin in #234
Adversary
- Tolerate tiny errors in enforcer. by @mzweilin in #212
- Make reusable attack config components by @mzweilin in #211
- Make adversarial training callback work by @mzweilin in #210
- Add Adversary.batch_c15n by @mzweilin in #215
- Move batch_c15n out of Adversary by @mzweilin in #220
- Add composable functions to Composer by @mzweilin in #228
- Fix adversarial image visualizer with canonical batches by @mzweilin in #227
- Move Perturber to Composer.Perturber by @mzweilin in #231
- Add learning rate schedulers in Adversary by @mzweilin in #233
- Make mask key configurable. by @mzweilin in #225
- Allow trainer.precision options in Adversary. by @mzweilin in #235
- Modular Composer by @mzweilin in #240
- Add unbounded patch adversary for object detection by @mzweilin in #241
- Add Lp-bounded patch adversary for object detection by @mzweilin in #242
- Simulation-in-loop adversary by @mzweilin in #243
- Visualize intermediate images of Composer by @mzweilin in #244
Misc
- Disable FiftyOne's tracker. by @mzweilin in #223
- Add a YAML config file generator by @mzweilin in #224
- Add python-fire in MART's dependency. by @mzweilin in #236
- Upgrade pre-commit flake8 to 6.0.0 by @mzweilin in #239
Full Changelog: v0.5.3...v0.6.0
MART v0.5.3
What's Changed
Full Changelog: v0.5.2...v0.5.3
MART v0.5.2
What's Changed
Full Changelog: v0.5.1...v0.5.2
MART v0.5.1
What's changed
- Revert "Make input a dictionary for multi-modal object detection" #95
Full Changelog: v0.5.0...v0.5.1
MART v0.5.0
What's Changed
Improve Adversary
using LightningModule
and Trainer
from Lightning
- Configuring optimization hyper-params in Perturber by @mzweilin in #91
- Remove
NoAdversary
by @dxoigmn in #102 - Decorate initializers
__call__
withtorch.no_grad
instead of usingtensor.data
by @dxoigmn in #107 - Decorate projectors
__call__
withtorch.no_grad
instead of usingtensor.data
by @dxoigmn in #108 - Enforcing threat models by @mzweilin in #92
- Make IterativeGenerator a Trainer by @dxoigmn in #113
- Remove BatchComposer in favor of batch-aware Composer by @dxoigmn in #121
- Remove BatchEnforcer in favor of batch-aware Enforcer by @dxoigmn in #122
- Make Enforcer modality-aware by @mzweilin in #124
- Add
MaskAdditive
composer. by @mzweilin in #129 - Make Projector batch aware by @dxoigmn in #120
- Update GradientModifier to be an in-place operation by @dxoigmn in #123
- Replace tuple with Iterable[torch.Tensor] by @dxoigmn in #134
- Better Perturber by @dxoigmn in #146
- Better Optimizer by @dxoigmn in #147
- Adversary as
pl.LightningModule
by @dxoigmn in #103 - Improve Adversary's progress bar by @mzweilin in #161
- Move load_state_dict into LitModular by @dxoigmn in #145
- Allow
LitModular
to load from checkpoints with states ofAdversary
by @mzweilin in #160 - Add gradient monitor callback by @dxoigmn in #144
- Add Image initializer by @dxoigmn in #142
- Make the Adversary Trainer accept loggers. by @mzweilin in #164
- Hide parameters of
Adversary
'sPerturber
from DDP by @mzweilin in #166
Improve LitModular
and mart.nn
- Allow modules to skip CallWith by @dxoigmn in #106
- Allow
LitModular.*_step_log
to be a dictionary by @dxoigmn in #168 - Let loss/preds/target output keys be configurable in
LitModular
by @dxoigmn in #169 - Remove
*_step_end
fromLitModular
by @dxoigmn in #170 - Make
SequentialDict
return outputs from all modules asDotDict
by @dxoigmn in #171 - Don't lookup non-str keys in
SequentialDict
by @dxoigmn in #174 - Enable overriding of special args in
SequentialDict.forward
by @dxoigmn in #175 - Add
_train_mode_
and_inference_mode_
special args toSequentialDict
by @dxoigmn in #176 - Add
_call_
special arg toSequentialDict
by @dxoigmn in #184 - Allow
LitModular
'sload_state_dict
to accept a str by @dxoigmn in #189
Update dependency
Improve performance
Move non-essential functionalities to examples
- Fix the autoattack wrapper by @mzweilin in #80
- Remove test on RobustBench. by @mzweilin in #179
- Purge tests on RobustBench by @mzweilin in #181
- Move RobustBench and Carla stuff from
mart
toexamples
by @mzweilin in #183 - Move ART to extras by @dxoigmn in #186
- Move ART Wrapper to examples by @mzweilin in #195
Improve datamodule
- Make input a dictionary for multi-modal object detection by @mzweilin in #95
- Quantize datamodule input by @mzweilin in #112
Miscellaneous
- Fix source header license by @mzweilin in #99
- Fix source header license in tests by @mzweilin in #100
Full Changelog: v0.4.1...v0.5.0
MART v0.4.1
v0.4.0
MART v0.3.1
What's Changed
Bug fixes
Full Changelog: v0.3.0...v0.3.1
You can install v0.3.1 by running $ pip install https://github.com/IntelLabs/MART/archive/refs/tags/v0.3.1.zip
.
MART v0.3.0
What's Changed
New features
- Composable model sequences that are easy to change in command line. (#55)
- Add more options to profilers. (#20)
Bug fixes
- Multi-GPU training. (#24)
- Allow
—resume=?
without other parameters. (#46) - Add GroupNorm32 to namespace
mart.nn
. (#45) - Capture exceptions with empty error messages. (#61)
Misc.
- Type annotations. (#29)
- Return stdout for debugging failed tests. (#62)
- Automatically installing developer's dependency. (#59)
- Update installation instructions. (#21)
Full Changelog: v0.2.1...v0.3.0
You can install v0.3.0 by running $ pip install https://github.com/IntelLabs/MART/archive/refs/tags/v0.3.0.zip
.