Adversarial Patch Attacks Against Person Detection

With the advancement of deep learning, adversarial attacks on neural networks have attracted growing attention. Surprisingly, small changes to a neural network's input can lead to drastically different outputs.

In the paper "Fooling Automated Surveillance Cameras: Adversarial Patches to Attack Person Detection", the authors successfully crafted adversarial patches that hide people from YOLO detectors—even in dynamic real-world environments.

Concept Overview

YOLOv2 Object Detection

YOLOv2 divides an image into a grid and applies a convolutional neural network (CNN) to predict bounding boxes and class probabilities. Each anchor within the grid outputs an objectness score, bounding box coordinates, and class predictions. The final detections are determined based on objectness confidence and box overlap.

YOLOv2 Detection

Patch Optimization Strategy

The goal is to generate a printable adversarial patch that deceives YOLOv2 in real-world scenarios using the Inria dataset. The loss function combines:

Three strategies for obj/class loss minimization:

The algorithm begins by randomly initializing a patch, applies transformations (rotation, noise, scaling), overlays it on images, and forwards them through YOLOv2. Based on the resulting scores and losses, the patch is iteratively optimized.

Patch Optimization Workflow

Our Improvements

Building upon this work, we made two key improvements:

1. Stealthy Obfuscation

A near-black patch can successfully suppress person detection.

loss = det_loss + nps_loss + max(tv_loss, 0.1) + mean(adv_patch)
    
Black Patch Result

2. Misclassification

Instead of hiding people, we aim to misclassify them as unrelated objects such as a bear or an umbrella.

attack_class = normal_confs[:, 25, :]  # class 25 → umbrella
return max(confs_for_class) - max(attack_class)
    
Bear Misclassification

Misclassified as a bear

Umbrella Misclassification

Misclassified as an umbrella