Skip to content

ART Summary Writer

Beat Buesser edited this page Jan 14, 2022 · 10 revisions

[wiki work in progress]

Default Summary Writer

ART 1.9 introduces a Summary Writer API which collects metrics about losses, gradients, adversarial patches and textures, etc. at strategic locations in the supported attacks. ART 1.9 provides a default implementation art.summary_writer.SummaryWriterDefault and allows users to implement custom summary writers by implementing base class art.summary_writer.SummaryWriter.

Attacks supporting Summary Writer

  • art.attacks.evasion.ProjectedGradientDescent*
  • art.attacks.evasion.AdversarialPatch*
  • art.attacks.evasion.AdversrialTexture*

The attack’s Summary Writer is activated with argument summary_writer:

  • Boolean: Default writer and output in current location
  • String: Default writer and output in defined path
  • SummaryWriter: Custom writer in custom location

Default Metrics (so far)

  • All metrics as function of iteration step

1. Total Loss and available loss components per sample

2. Norms of gradients per mini-batch

3. Adversarial Patch and Texture

4. Indicators of Attack Failure per sample (Pintor et al., 2021)

  • Silent Success (I1)

Tracks if adversarial example switches back to benign.

  • Break-point Angle (I2)

Quantifies attack convergence.

  • Increasing Loss (I3)

Quantifies attack convergence rate.

  • Zero Gradients (I4)

Checks quality of loss gradients.

TensorBoard Analysis of Scalar Values

TensorBoard Analysis of Adversarial Patches

Custom Summary Writer

Users can create custom summary writers to collect custom metrics by implementing art.summary_writer.SummaryWriter and adding custom metrics in method update:

def update(self, batch_id, global_step, grad=None, patch=None, estimator=None, x=None, y=None, **kwargs):

providing access to current batch ID and global step, gradients, patches, estimator, input and label data.