Skip to content

Commit 92ffe0a

Browse files
authored
Merge branch 'main' into new_branch
2 parents 2bcc6dd + bc39091 commit 92ffe0a

File tree

73 files changed

+5584
-1071
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+5584
-1071
lines changed

.github/workflows/ci-pytorch-object-detectors.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ jobs:
5050
run: pytest --cov-report=xml --cov=art --cov-append -q -vv tests/estimators/object_detection/test_pytorch_object_detector.py --framework=pytorch --durations=0
5151
- name: Run Test Action - test_pytorch_faster_rcnn
5252
run: pytest --cov-report=xml --cov=art --cov-append -q -vv tests/estimators/object_detection/test_pytorch_faster_rcnn.py --framework=pytorch --durations=0
53+
- name: Run Test Action - test_pytorch_detection_transformer
54+
run: pytest --cov-report=xml --cov=art --cov-append -q -vv tests/estimators/object_detection/test_pytorch_detection_transformer.py --framework=pytorch --durations=0
5355
- name: Upload coverage to Codecov
5456
uses: codecov/codecov-action@v3
5557
with:

.github/workflows/dockerhub.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
with:
3636
images: adversarialrobustnesstoolbox/releases
3737
tags: |
38-
type=raw,value={{branch}}-1.14.1-{{sha}}
38+
type=raw,value={{branch}}-1.15.0-{{sha}}
3939
type=semver,pattern={{version}}
4040
4141
- name: Build and push Docker image

README-cn.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Adversarial Robustness Toolbox (ART) v1.14
1+
# Adversarial Robustness Toolbox (ART) v1.15
22
<p align="center">
33
<img src="docs/images/art_lfai.png?raw=true" width="467" title="ART logo">
44
</p>

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Adversarial Robustness Toolbox (ART) v1.14
1+
# Adversarial Robustness Toolbox (ART) v1.15
22
<p align="center">
33
<img src="docs/images/art_lfai.png?raw=true" width="467" title="ART logo">
44
</p>

art/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from art import preprocessing
1313

1414
# Semantic Version
15-
__version__ = "1.14.1"
15+
__version__ = "1.15.0"
1616

1717
# pylint: disable=C0103
1818

art/attacks/attack.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,10 +339,10 @@ def __init__(self):
339339
@abc.abstractmethod
340340
def poison(
341341
self,
342-
x: np.ndarray,
342+
x: Union[np.ndarray, List[np.ndarray]],
343343
y: List[Dict[str, np.ndarray]],
344344
**kwargs,
345-
) -> Tuple[np.ndarray, List[Dict[str, np.ndarray]]]:
345+
) -> Tuple[Union[np.ndarray, List[np.ndarray]], List[Dict[str, np.ndarray]]]:
346346
"""
347347
Generate poisoning examples and return them as an array. This method should be overridden by all concrete
348348
poisoning attack implementations.

art/attacks/evasion/adversarial_patch/adversarial_patch_pytorch.py

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -575,9 +575,9 @@ def __getitem__(self, idx):
575575
img = torch.from_numpy(self.x[idx])
576576

577577
target = {}
578-
target["boxes"] = torch.from_numpy(y[idx]["boxes"])
579-
target["labels"] = torch.from_numpy(y[idx]["labels"])
580-
target["scores"] = torch.from_numpy(y[idx]["scores"])
578+
target["boxes"] = torch.from_numpy(self.y[idx]["boxes"])
579+
target["labels"] = torch.from_numpy(self.y[idx]["labels"])
580+
target["scores"] = torch.from_numpy(self.y[idx]["scores"])
581581
mask_i = torch.from_numpy(self.mask[idx])
582582

583583
return img, target, mask_i
@@ -602,19 +602,33 @@ def __getitem__(self, idx):
602602
if isinstance(target, torch.Tensor):
603603
target = target.to(self.estimator.device)
604604
else:
605-
target["boxes"] = target["boxes"].to(self.estimator.device)
606-
target["labels"] = target["labels"].to(self.estimator.device)
607-
target["scores"] = target["scores"].to(self.estimator.device)
605+
targets = []
606+
for idx in range(target["boxes"].shape[0]):
607+
targets.append(
608+
{
609+
"boxes": target["boxes"][idx].to(self.estimator.device),
610+
"labels": target["labels"][idx].to(self.estimator.device),
611+
"scores": target["scores"][idx].to(self.estimator.device),
612+
}
613+
)
614+
target = targets
608615
_ = self._train_step(images=images, target=target, mask=None)
609616
else:
610617
for images, target, mask_i in data_loader:
611618
images = images.to(self.estimator.device)
612619
if isinstance(target, torch.Tensor):
613620
target = target.to(self.estimator.device)
614621
else:
615-
target["boxes"] = target["boxes"].to(self.estimator.device)
616-
target["labels"] = target["labels"].to(self.estimator.device)
617-
target["scores"] = target["scores"].to(self.estimator.device)
622+
targets = []
623+
for idx in range(target["boxes"].shape[0]):
624+
targets.append(
625+
{
626+
"boxes": target["boxes"][idx].to(self.estimator.device),
627+
"labels": target["labels"][idx].to(self.estimator.device),
628+
"scores": target["scores"][idx].to(self.estimator.device),
629+
}
630+
)
631+
target = targets
618632
mask_i = mask_i.to(self.estimator.device)
619633
_ = self._train_step(images=images, target=target, mask=mask_i)
620634

art/attacks/evasion/auto_conjugate_gradient.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,8 @@ def __call__(self, y_true: tf.Tensor, y_pred: tf.Tensor, *args, **kwargs) -> tf.
224224
nb_classes=estimator.nb_classes,
225225
input_shape=estimator.input_shape,
226226
loss_object=_loss_object_tf,
227-
train_step=estimator._train_step,
227+
optimizer=estimator.optimizer,
228+
train_step=estimator.train_step,
228229
channels_first=estimator.channels_first,
229230
clip_values=estimator.clip_values,
230231
preprocessing_defences=estimator.preprocessing_defences,

art/attacks/evasion/auto_projected_gradient_descent.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ def __call__(self, y_true: tf.Tensor, y_pred: tf.Tensor, *args, **kwargs) -> tf.
203203
nb_classes=estimator.nb_classes,
204204
input_shape=estimator.input_shape,
205205
loss_object=_loss_object_tf,
206-
train_step=estimator._train_step,
206+
optimizer=estimator.optimizer,
207+
train_step=estimator.train_step,
207208
channels_first=estimator.channels_first,
208209
clip_values=estimator.clip_values,
209210
preprocessing_defences=estimator.preprocessing_defences,

art/attacks/evasion/brendel_bethge.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2055,7 +2055,8 @@ def logits_difference(y_true, y_pred):
20552055
nb_classes=estimator.nb_classes,
20562056
input_shape=estimator.input_shape,
20572057
loss_object=self._loss_object,
2058-
train_step=estimator._train_step,
2058+
optimizer=estimator.optimizer,
2059+
train_step=estimator.train_step,
20592060
channels_first=estimator.channels_first,
20602061
clip_values=estimator.clip_values,
20612062
preprocessing_defences=estimator.preprocessing_defences,

0 commit comments

Comments
 (0)