<Daedalus: Breaking Non-Maximum Suppression in Object Detection via Adversarial Examples>

라는 논문에서 NMS의 오작동을 유발하는 적대적 예시 공격을 제안한다.

이 논문을 정확히 이해하기 위해서 NMS에 대한 내용을 자세히 알아보고자 한다.

★ NMS란?

 

→ object detector가 예측한 bounding box 중에서 정확한 bounding box를 선택하도록 하는 기법

 

비-최대 억제를 뜻하는 NMS(Non-Maximum Suppression)을 알기 전에 IoU에 대한 내용을 살펴봐야 한다.

 

▶ IoU란 무엇일까?

 

IoU(Intersection over Union)은 object detector의 정확도를 측정하는데 이용되는 평가 지표이다.

→ object detector가 예측한 bounding box는 IoU를 이용해서 평가될 수 있다.

 

IoU를 적용하기 위해서는 두 가지가 필요하다.

① ground-truth bounding boxes : testing set에서 object 위치를 labeling한 것

② prediceted bounding boxes : model이 출력한 object 위치 예측값

 

이미지에서 정지 신호를 감지하는 예시

 

위 그림에서 predicted bounding box는 빨간색, ground-truth bounding box는 녹색으로 그려진다.

 

object detector가 얼마나 정확하게 객체 위치를 탐지했는지 알아보기 위한 IoU 계산법은 다음과 같다.

 

Area of Overlap : prediceted bounding box와 ground-truth bounding box가 겹치는 부분

Area of Union : prediceted bounding box와 ground-truth bounding box를 둘러싸는 영역

 

→ 겹치는 영역을 합집합 영역으로 나누면 합집합에 대한 교차 점수를 알아낼 수 있다.

→ Intersection over Union 점수 > 0.5는 일반적으로 좋은 예측으로 간주된다.

 

▶ 그렇다면 왜 IoU를 사용할까?

 

predicted bounding box가 ground-truth bounding box와 얼마나 일치하는지 측정하기 위해 평가 지표를 정의해야 함

 

다양한 bounding box에 대한 IoU를 계산한 예

 

위처럼 정확한 일치는 아니더라도 predicted bounding box가 얼마나 가깝게 일치하는지 확인할 수 있음

 

 

▶ NMS란 무엇일까?

 

이미지에서 객체는 다양한 크기와 형태로 존재하고,

이를 완벽하게 검출하기 위해 object detection 알고리즘은 여러 개의 bounding boxes를 생성한다.

 

이때 하나의 정확한 bounding box만을 선택하도록 하는 기법이 Non-Maximum Suppression이다.

 

 

위와 같이 여러 개의 boxes 중 NMS를 이용하여 하나의 box를 생성해준다.

 

▶ Non-Maximum Suppression 알고리즘

 

<input>

- bounding box list

- bounding box confidence scores

- threshold

 

<output>

- filtered bounding box list

 

 

NMS 알고리즘

 

① 하나의 클래스에 대한 bounding boxes 목록에서 가장 높은 점수를 갖고 있는 bounding box를 선택하고 목록에서 제거한 후 final box에 추가한다.

② 선택된 bounding box를 bounding boxes 목록에 있는 모든 bounding box와 IoU를 계산하여 비교한 후 IoU가 threshold(임계값)보다 높으면 bounding boxes 목록에서 제거한다.

③ bounding boxes에 아무것도 남아 있지 않을 때까지 반복

④ 각각의 클래스에 대해 위 과정 반복

 

 

 

※ 참고자료

https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

 

Intersection over Union (IoU) for object detection - PyImageSearch

Discover how to apply the Intersection over Union metric (Python code included) to evaluate custom object detectors.

www.pyimagesearch.com

docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?

 

YOLO

YOLO You Only Look Once: Unified, Real-Time Object Detection Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi

docs.google.com

https://inspace4u.github.io/dllab/lecture/2017/09/27/NMS_Algorithm.html

 

비최대값 억제 (NMS) 알고리즘

본 포스트에서는 영상 처리 및 객체 검출에서 흔히 사용되는 비최대값 억제(Non maximum supression) 알고리즘에 대해서 설명하겠습니다. 캐니 엣지 비최대값 억제 알고리즘은 국지적인 최대값을 찾아

inspace4u.github.io

https://www.youtube.com/watch?v=XXYG5ZWtjj0 

 

<Daedalus: Breaking Non-Maximum Suppression in Object Detection via Adversarial Examples> - Derui Wang, Chaoran Li, Sheng Wen, Qing-Long Han, Fellow, IEEE, Surya Nepal, Xiangyu Zhang, and Yang Xiang, Fellow, IEEE

 

 

중복 탐지 결과를 필터링하기 위해 OD 작업에서 일반적으로 사용되는 NMS가 더 이상 안전하지 않음을 보여준다.

※ OD(Object Detection) : 객체 검출

- 어떤 이미지를 입력했을 때 그 결과가 해당 객체를 Localization 해주고, 해당 box 안에 있는 객체가 무엇인지 분류

※ NMS(Non-Maximum Suppression) : 네트워크 관리 시스템

- 컴퓨터 네트워크 또는 네트워크들을 모니터링하고 관리하는데 사용되는 하드웨어와 소프트웨어의 조합을 총칭

 

NMS는 OD 시스템의 필수적인 부분이므로 NMS 기능 방해 시 시스템에 치명적인 결과 초래 가능

 

이 논문에서는 end-to-end OD 모델에서 NMS의 오작동을 유발하는 적대적 예시 공격을 제안한다.

 

 

1. Introduction

 

 

YOLO-v3 에 대한 디지털  Daedalus  공격의 데모

 

위 그림과 같이 적절하게 제작된 적대적 예제는 YOLO-v3에서 NMS 구성 요소의 오작동을 유발할 수 있으며, 이는 밀집되고 노이즈가 많은 탐지 결과를 출력하는 방식이다.

오탐지 결과로 구성된 미로를 생성하기 때문에 이 공격을 Daedalus라고 명명한다.

 

OBJECT Detection(OD)은 컴퓨터 비전 분야의 기본 작업이며 자율주행차, 로봇 공학, 감시 시스템 및 생체 인증 분야에서 반복적으로 사용된다.

CNN(Convolutional Neural Network)은 많은 최첨단 OD 모델의 핵심에 내장되어 있다.

 

왼쪽 상단 이미지 : COCO 데이터 세트에서 가져온 원본 이미지

오른쪽 상단 이미지 : OD 결과

왼쪽 하단 이미지 : 적대적 예

오른쪽 하단 이미지 : 적대적 예의 OD 결과

적대적인 예는 NMS 이후에 최종 탐지 상자의 수를 크게 늘리고 탐지기를 사용할 수 없게 만든다.

 

OD 시스템의 NMS 구성 요소가 제대로 작동하지 않으면 시스템이 실패하고, CNN은 적대적 예시 공격에 취약하다.

 

※ 가양성률(False Positive Rate, FPR) : 인벤토리 관리 및 군용 물체 인식과 같은 OD 임무에서 중요한 메트릭

 

가양성 비율을 높이는 공격은 OD 시스템에 매우 치명적이다.

 

이 논문의 기여 내용은 다음과 같다.

1) 단순히 오분류를 목표로 하는 기존의 최첨단 공격과 달리 NMS를 깨는 것을 목표로 하는 새로운 적대적 예제 공격을 제안하여 결과적으로 공격은 탐지 결과에 많은 오탐지를 생성한다.

2) 다양한 모델에서 NMS 오작동을 일으킬 수 있는 보편적인 적대 사례를 생성하기 위해 ensemble-of-substitutes 공격이 제안되었는데, 이러한 방식으로 블랙박스 공격은 부분적으로 화이트박스 공격으로 전환될 수 있다.

3) Daedalus의 작은 변화가 포함된 실제 포스터는 실제 OD 응용 프로그램을 실제로 공격하도록 제작되었다.

 

 

2. PRELIMINARIES

 

A. 적대적 예제

 

 

 

F : DNN 모델

x : 원본 데이터 예제

δ : 섭동(작은 변화)

L : 공격자가 설정한 적대적 목표

y : F에 대한 정답 출력 또는 원하는 적대적 출력

c : 적대적 손실과 왜곡의 균형을 맞추기 위한 상수

|δ|p : δ의 표준p값에 의해 경계가 지정된 허용된 왜곡

x+δ : 적대적 예제 생성

 

F와 x가 주어지면 공격자는 섭동 δ를 추가하여 x의 기능을 변경하고, x의 적대적 예제를 만들 수 있다.

 

적대적 예를 생성하는 것은 적대적 목표를 향한 예시 기능을 최적화하는 것으로 해석될 수 있고,

기울기 기반 최적화 방법은 일반적으로 적대적 예를 검색하는 데 사용된다.

box-constrained non-convex 최적화 문제는 일반적으로 경사하강법으로 해결된다.

 

 

B. 객체 감지 모델의 인기 조사

 

 

Github에서 수행한 OD 프로젝트의 인구 조사

 

OD 작업에 사용되는 모델과 백본이 매우 제한적이다.

※ 백본(backbone) : 다양한 네트워크를 상호 연결하는 컴퓨터 네트워크의 일부

 

OD 모델에 대한 블랙박스 공격은 부분적으로 화이트박스 공격으로 전환될 수 있다.

→ 공격자는 먼저 모든 인기 있는 화이트박스 OD 모델을 깨는 보편적인 적대적 예제를 만든 다음 이 예제를 사용하여 블랙박스 모델에 대한 공격을 시작할 수 있고, 이 공격은 블랙박스 모델과 동일한 매개변수를 가질 수 있기 때문에 블랙박스 모델을 깨뜨릴 가능성이 높기 때문이다.

 

 

C. 객체 감지

 

입력 프레임이 주어지면 종단 간 OD 모델은 FCN을 통해 감지된 회귀 상자 및 분류 확률을 출력한다.

여기서는 YOLO-v3(You Only Look Once) 감지기를 예로 사용

→ YOLO-v3는 서로 다른 스케일(즉, 13 × 13, 26 × 26, 52 × 52)의 3개의 메쉬 그리드를 사용하여 입력 이미지를 분할

→ 모델은 이 세 가지 척도에 대한 검출 결과를 출력

 

Darknet-53 백본은 경계 상자 매개변수, 상자 신뢰도 및 객체 클래스 확률을 포함하는 기능 맵을 출력

→ 높이 th, 너비 tw, 중심 좌표(tx, ty), 클래스 확률 p1, p2, ..., pn 및 객체 t0이 포함

→ t0은 상자에 개체가 포함되어 있다는 신뢰도

→ 각 감지 상자의 위치는 pw 및 ph 이전의 앵커 상자 차원과 이미지의 왼쪽 상단 모서리로부터의 중심 오프셋(cx, cy)을 기반으로 계산

 

최종 상자 치수 및 위치

 

bw : 상자 너비

bh : 상자 높이

bx, by : 상자 중심의 좌표

 

상자 신뢰도 b0

 

물체가 미리 설정된 임계값 미만인 상자는 폐기되고, 출력은 NMS에서 처리되어 최종 감지 결과 생성

 

 

D. NMS(Non-Maximum Suppression)

 

NMS는 OD 알고리즘에 통합되어 탐지 상자를 필터링한다.

NMS는 탐지 상자 중 IoU(Intersection over Union)를 기반으로 선택하고,

IoU는 두 상자 간의 결합 영역에 대한 중첩 영역의 비율을 측정한다.

 

※ NMS의 단계

→ 나머지 상자 내에서 NMS는 후보 집합에 남은 상자가 없을 때까지 아래 두 단계를 반복

1) 주어진 객체 범주에 대해 범주(즉, 후보 집합)에서 감지된 모든 경계 상자는 상자 신뢰도 점수에 따라 높음에서 낮음으로 정렬

2) NMS는 가장 높은 신뢰도 점수를 가진 상자를 탐지 결과로 선택하고 선택된 상자의 IoU 값이 임계값을 초과하는 다른 후보 상자를 폐기

 

NMS 알고리즘

 

NMS는 모든 원시 제안이 처리될 때까지 모든 객체 범주의 원시 탐지 제안에서 중복 탐지 상자를 재귀적으로 버린다.

 

 

3. THE DAEDALUS ATTACK

 

Daedalus 공격 가이드라인

→ NMS를 깨기 위해 악용하는 취약점 분석

→ 적대적 예제를 만드는 데 사용되는 일반적인 최적화 기술 소개

→ Daedalus 적대적 예제를 생성하기 위한 일련의 적대적 손실 함수 제안

→ 알고리즘을 조합하여 Daedalus 공격 제시

 

이 공격은 탐지 네트워크가 NMS의 오작동을 일으키는 적대적 특징 맵을 출력하도록 할 수 있다.

 

NMS를 공격하는 데 사용한 체계

 

1) 모든 상자 쌍 간의 IoU(중첩 영역의 비율) 최소화 → 왼쪽 체계

2) 모든 상자의 차원을 최소화하고 모든 상자의 상자 중심 간의 유클리드 거리를 최대화 → 오른쪽 체계

3) 모든 상자의 차원만 최소화 → 저비용 근사

 

 

A. NMS 공격

 

★ NMS 취약점

- NMS는 IoU를 기반으로 상자 필터링

- 원시 탐지 상자를 얻은 후 주어진 임계값 미만의 신뢰도 점수를 가진 상자는 폐기

- 주어진 객체 클래스와 상자 신뢰도 점수가 가장 높은 이 클래스의 상자(즉, 최종 탐지 상자)에 대해 NMS는 최종 탐지 상자가 있는 IoU를 기반으로 다른 나머지 상자를 버림

→ NMS가 출력 경계 상자 간의 IoU를 억제하는 공격에 취약하게 만듦

 

다음 세 가지 기본 체계가 NMS를 깨는 것으로 간주된다.

1) 대부분의 경계 상자가 상자 신뢰도에 따라 상자를 버리는 첫 번째 필터링 라운드에서 살아남을 수 있도록 하기 위해 상자 신뢰도를 최대화한다.

2) IoU를 압축하기 위해 각 상자 쌍에 대한 IoU를 직접 최소화한다.

3) 모든 경계 상자에 대한 상자 차원의 기대치를 최소화하고 모든 상자 쌍에 대한 상자 중심 간의 유클리드 거리 기대치를 최대화한다.

 

 

B. 적대적 예시 생성

 

최적화된 문제로 공격 공식화

 

x : 원본 예제

x' : x의 적대적 예제

δ = x' − x : 적대적 섭동

f : 적대적 손실 함수

c : 왜곡과 적대적 손실 f의 균형을 유지하는 상수

 

적대적 예제의 픽셀 값을 0과 1 사이로 제한하기 위해 변수를 변경하는 아이디어 채택

→ 최적화 변수를 δ에서 ω로 변경

 

 

최적화 수렴을 더 빠르게 하기 위해 쌍곡선 탄젠트 함수를 선택하여 변수 변경

→ δ의 δi에 대해 위와 같은 쌍곡선 탄젠트 함수를 적용

 

 

C. 적대적 손실 함수

 

NMS의 오작동을 유발하는 적대적 예를 찾기 위해 아래와 같은 세 가지 손실 함수를 설계

 

세 가지 손실 함수 f1, f2, f3

 

f1 : 먼저 탐지된 개체가 공격 범주 집합 Λ에 있는 모든 상자에 대해 상자 신뢰도와 1 사이의 평균 제곱 오차의 기대치를 최소화

f2 : 상자 차원의 기대치를 최소화하고 상자 거리의 기대치를 최대화

→ 상자 크기를 압축하고 감지된 영역에 상자를 더 고르게 분배하여 IoU를 직접 최소화하는 효과

f3 : IoU의 기대치를 직접 최소화하는 대신 상자 크기의 기대치를 최소화

 

∴ 상자는 NMS에 의해 필터링되는 것을 피할 수 있다.

 

 

D. Ensemble of Alternatives

 

현재 OD 작업에 대한 관찰을 기반으로 블랙박스 공격을 화이트박스 공격으로 변환하는 앙상블 방법 개발

 

※ 블랙박스 공격 : 공격자가 모델에 대한 정보를 알지 못하고 공격하는 것

→ 공격자는 사전에 제작된 값을 입력하여 출력되는 결과를 관찰하며 모델의 취약성을 분석한다.

※ 화이트박스 공격 : 공격자가 모델에 대한 모든 정보를 알고 공격하는 것

→ 공격자는 모델의 취약성을 파악하기 쉬워지고 적대적 예제를 만들어 충분한 시뮬레이션을 수행할 수 있기 때문에 치명적인 결과를 초래할 수 있다.

 

Daedalus 공격은 오분류를 유발하는 대신 다른 공격 목적을 가지고 있다. (즉, NMS 비활성화)

 

백본에서 추출한 피쳐 맵이 매우 다양하기 때문에 OD 분야에서 블랙박스 모델을 공격하는 또 다른 경로를 선택함

→ Daedalus를 사용하여 블랙박스 공격을 시작하기 위해 인기 있는 OD 모델의 앙상블을 대용으로 사용하여 적대적 예제를 생성

 

생성된 적대적 예제는 모든 인기 있는 모델에 대해 효과적일 수 있고,

보편적인 적대적 사례는 블랙박스 모델의 NMS를 깨뜨릴 가능성이 높다.

 

 

 

M : 인기 있는 OD 모델과 백본을 포함하는 인기 있는 백본이 있는 OD 모델 세트

fm : M에서 m번째 모델의 손실 값

 

 

E. NMS에 대한 Daedalus 공격

 

Daedalus 공격은 모든 FCN 기반 탐지기에 적용될 수 있고,

FCN 기반 감지기는 감지된 상자 크기, 상자 위치 및 분류 확률을 완전히 미분 가능한 종단 간 방식으로 출력한다.

∴ 공격은 종단 간 적대적 기울기를 계산하고 FCN 기반 탐지기에 대한 적대적 예를 최적화할 수 있다.

 

 

 

 

 

입력으로 이미지 x가 있는 OD 작업이 주어지면 NMS의 경계 상자 수가 최대화된다.

1) 최종 탐지 결과를 얻기 위해 특징 맵 뒤에 변형 레이어 추가

2) 변환 레이어는 기능 맵의 tx 및 ty에 시그모이드 변환을 적용하여 상자 중심 좌표 bx 및 by를 얻음 

3) 상자 너비 bw와 상자 높이 bh를 얻기 위해 tw와 th에 지수 변환이 적용

4) 손실 함수 값 계산

5) 왜곡과 함께 손실 값을 최소화하여 Daedalus 적대적 예제 생성

 

※ Daedalus는 공격을 시작하기 위해 상자 매개변수만 필요로 한다.

 

다른 백본 네트워크를 사용하더라도 경계 상자의 기하학적 정보를 포함하는 특징 맵을 출력하는 탐지 모델에

공격이 적용될 수 있다.

 

 

4. EVALUATION

 

A. 실험 설정

- 이 실험에서는 공격 대상 모델로 YOLO-v3를 이용했으며, YOLO-v3에서는 임계값이 0.5로 사용된다.

- 최적의 손실 함수를 선택한 다음 NMS를 사용한 YOLO-v3 기반 Daedalus 공격의 성능을 정량화한다.

- 최상의 상수 c를 찾기 위한 이진 검색 중 최대 검색 단계 수는 5로 설정된다.

- 평가 결과를 통합하기 위해 COCO 데이터셋의 80개 객체 범주를 모두 공격 대상 집합 Λ에 포함시킨다.

- 공격 대상인 사람과 자동차 카테고리를 선택한다.

 

B. 손실 함수 선택

- COCO 데이터 세트에서 10개의 임의 이미지를 선택한 후 이 이미지에 대한 적대적 예시가 생성된다.

- 각 기능의 성능은 서로 다른 신뢰 점수에서 적대적 사례를 찾는 성공률을 보고 측정된다.

- 기록된 런타임과 GPU 사용률은 평균을 낸다.

 

이 논문에서는 f3(수식8)이 서로 다른 γ 값에서 적대적 사례를 찾는 데 가장 좋은 성공률을 보이는 것을 관찰할 수 있었다.

또한, f3은 런타임과 GPU 활용도가 가장 낮기 때문에 Daedalus의 손실 함수로 선택된다.

 

C. 정량적 성능

- 이 공격을 다음과 같은 두 가지 관점에서 평가할 필요가 있다.

① Daedalus 공격이 다양한 NMS 임계값에서 어떻게 수행되는지 평가

② 공격 신뢰 수준(γ)이 탐지 결과에 어떤 영향을 미치는지 조사

- 공격 성능은 FP(False Positive) 비율, 평균 mAP(Average Precision) 및 예제의 왜곡이라는 세 가지 메트릭을 기반으로 정량화됨

 

 

Nφ : 위양성 탐지 상자의 수

N : 다음으로 찾은 경계 상자의 총 수

 

NMS 임계값 및 공격 신뢰도와 관련한 IoU 임계값 0.5에서 위양성 비율

 

NMS 임계값 범위 : 0.5~0.95

신뢰도 범위 : L2공격 - 0.1~0.9, L0공격 - 0.1~0.8

 

NMS 임계값 및 공격 신뢰도와 관련한 IoU 임계값 0.75에서 위양성 비율

 

FP rate : NMS에 의해 필터링되지 않은 중복 상자의 비율 측정

→ FP는 최대 1이며 FP 값이 높을수록 공격 성공률이 높아진다.

 

NMS 임계값과 관련한 IoU 임계값 0.5에서 L0 공격 오탐지율

 

각 FP rate는 100개의 Daedalus 사례의 탐지 결과에서 평균을 낸다.

 

NMS 임계값과 관련한 IoU 임계값 0.75에서 L0 공격 오탐지율

 

공격 신뢰도가 0.1인 경우에도 다양한 NMS 임계값에서 최소 90%의 FP rate가 존재하고,

NMS 임계값을 높이면 신뢰도가 낮은 공격의 FP rate가 약간 감소한다.

 

 

mAP : 평균 정밀도, OD 모델의 성능을 평가하는 데 사용

M : 객체 범주의 수

 

NMS 임계값 및 공격 신뢰도에 대한 Daedalus 예제 탐지 결과의 mAPIoU=.50

 

임계값 범위 : 0.5~0.95

 

NMS 임계값 및 공격 신뢰도에 대한 Daedalus 예제 탐지 결과의 mAPIoU=.75

 

위 2개의 그림들은 NMS 임계값과 γ를 변경했을 때의 검출 결과의 mAP 값을 보여준다.

결과에 따르면 L0 및 L2 공격 모두 탐지기의 mAP를 45% ~ 59%에서 0% ~ 17.8% 사이의 값으로 감소시키고,

공격의 신뢰도가 0.2를 초과하면 mAP가 0%로 떨어진다.

 

적대적 사례의 왜곡은 γ와 양의 상관관계가 있음을 알 수 있다.

신뢰도가 0.6에 도달하기 전까지는 왜곡이 천천히 증가하다가 신뢰도가 0.6을 넘으면 왜곡량이 급격히 증가한다.

→ L0 및 L2 공격 모두 신뢰도가 낮은 예를 만들기 위해 중간 정도의 왜곡이 필요하다.

 

NMS 임계값에 대한 L0 및 L2 Daedalus 공격의 mAPIoU=.50

 

임계값 범위 : 0.5~0.95

각 mAP는 100개의 Daedalus 예제의 탐지 결과에서 평균을 낸다.

 

NMS 임계값에 대한 L0 및 L2 Daedalus 공격의 mAPIoU=.75

 

L0 공격은 신뢰도가 0.8 이상일 때 왜곡을 줄일 수 있다.

FCN 기반 물체 감지기에서 분할한 각각의 그리드 셀은 정상적인 검출 결과를 출력할 수 있고, 이는 NMS로 필터링 할 수 있다.

결과적으로 L0 공격은 대부분의 픽셀을 교란시켜 잘 검증된 적대적 예제를 생성하며, 이는 예제에서 높은 왜곡을 의미한다.

 

 

5. ANALYSIS OF THE ATTACK

 

A. Soft-NMS 깨기

→ Daedalus 공격이 NMS 알고리즘의 변형, 즉 soft-NMS로 확장될 수 있는지의 여부를 알아보자.

 

Soft-NMS : 겹치는 상자를 버리는 대신 신뢰 점수를 반복적으로 감소시키는 공격

Soft-NMS가 처리할 수 있는지의 여부를 조사하기 위해 L0과 L2 버전을 모두 공격했다.

 

(a) soft-NMS에 대한 L0 Daedalus 공격, (b) soft-NMS에 대한 L2 Daedalus 공격

 

왼쪽 상단 : 신뢰도 0.3으로 제작된 예시

오른쪽 상단 : NMS 탐지 결과

왼쪽 하단 : 선형 soft-NMS의 결과

오른쪽 하단 : 가우시안 soft-NMS의 결과

 

위의 그림을 통해 결과적으로 L0과 L2 모두 선형 Soft-NMS와 Gaussian Soft-NMS를 깨뜨릴 수 있음을 알 수 있다.

 

B. Universal Daedalus의 예

→ RetinalNetResnet-50 공격에 적용하여 공격의 보편성을 시연해보자.

 

YOLO-v3, SSD 및 RetinaNet에 대한 범용 Daedalus 예는 이미 1,696개 리포지토리 중 54.9%를 깰 수 있다.

 

적대적 예시는 모든 모델에 대해 NMS 오작동을 유발할 수 있다.

OD 모델이 많은 경우 공격자는 Multi-task Learning과 같은 방법을 사용하여 손실 함수에서 각 항에 대한 적절한 계수를 찾아 공격 성능을 향상시킬 수 있다.

 

적대적 예시의 탐지 결과는 다음과 같다.

 

ensemble-of-substitutes 접근 방식으로 만든 Daedalus 적대적 예제의 탐지 결과

 

위와 같이 RetinaNet, SSD, YOLO-v3를 사용하여 적대적인 예를 감지한다.

첫 번째 행에는 원본 예제와 탐지 결과, 두 번째 행에는 적대적 예제와 적대적 예제의 탐지 결과를 나타낸다. 

 

C. 물리적 Daedalus의 예

 

실제 세계에서 Daedalus 공격을 시작하기 위해 발견된 섭동을 포스터로 인스턴스화해야 한다.

포스터가 물체 감지 시스템의 카메라에 포착되면 NMS 오작동을 유발한다.

 

 

Φ : 임의의 변환(확대/축소, 회전)의 집합

SNPS : 포스터 δ의 하위 샘플링된 비인쇄성 점수

NPS(Non-Printability Score) : 인쇄된 픽셀과 해당 디지털 픽셀 간의 오류를 측정하는 데 사용됨

 

큰 이미지의 NPS를 계산하는 데는 비용이 많이 들기 때문에 샘플 속도 β와 δ의 픽셀이 주어지면 픽셀의 하위 집합을 샘플링하여 SNPS를 계산한다.

효과적인 Daedalus 포스터를 만들기 위해서는 0.1% ~ 1%의 픽셀에서만 NPS를 계산해야 한다.

 

D. Adaptive defences

 

Daealus는 탐지 상자를 최소화하여 NMS 오작동을 유발한다.

 

YOLO-v3의 탐지 결과에서 경계 상자 차원의 분포

 

분포는 각각 100개의 COCO 이미지 및 적대적 사례의 탐지 결과를 기반으로 한다.

양성 결과에는 총 812개의 상자가 있고 적대적 결과에는 286,469개의 적대적 상자가 있는데, 방어를 위해 NMS 프로세스에서 치수가 103.62 미만인 상자는 폐기된다.

 

NMS 방어가 있는 YOLO-v3의 FP 속도 및 mAP

 

NMS 프로세스(즉, NMS 방어)에서 허용되는 최소 탐지 상자 크기를 제한한다.

위 그림에서 볼 수 있는 것과 같이 결과에 따르면 NMS 방어는 효과적인 방어가 아니다.

 

▶ 방어에 대한 평가

① 방어가 적대적 예제를 재구성하여 mAP를 증가시키고 FP 비율을 감소시킬 수 있는지의 여부

② 적대적 사례를 양성으로 전환할 수 없는 경우 재구성 오류를 감지할 수 있는지의 여부

→ 이 두가지의 질문에 답하기 위해 FP rate를 측정한다.

 

MagNet 방어가 있는 YOLO-v3의 FP 속도 및 mAP

 

위와 같이 자동 인코더로 Daedalus 예제를 수정하면 YOLO-v3의 성능이 약간 향상될 수 있다.

그러나 FP-rate@.50은 여전히 ​​0.6 이상, FP-rate@.75는 0.7 이상으로 유지되고, mAP@.50은 0.45 미만, mAP@.75는 0.3 미만으로 유지된다.

또한, 공격 신뢰도가 0.7 이상으로 올라가면 모델 성능이 떨어진다.

 

★ 평가 결과

① 적대적 사례를 재구성하는 것은 탐지 모델의 성능을 거의 향상시킬 수 없다.

② 공격 신뢰도가 0.5에 도달한 후에야 재구성 오류가 증가한다. (즉, 신뢰 수준이 0.5 미만인 공격을 탐지하기 어렵다.)

∴ Daedalus 공격은 OD 작업에 위협적이며 NMS는 더 이상 OD에 대한 보안 솔루션이 아니다.

 

 

6. CONCLUSION

 

이 논문에서는 객체 탐지 모델에서 NMS 기능을 비활성화하는 것을 목표로 하는 새로운 유형의 적대적 예제를 제안했다.

Daedalus 공격은 기존의 모든 공격과 달리 NMS의 오작동을 일으키는 적대적 사례를 생성하며 공격 대상 개체 클래스를 모두 제어하여 공격받은 모델은 더 이상 작동하지 않을 정도로 노이즈가 심한 탐지 결과를 출력한다.

즉, Daedalus 공격은 실제 세계에서 치명적인 결과를 초래할 수 있는 객체 탐지 알고리즘 자체의 취약점을 보여준다.

또한, Daedalus 공격의 전송 가능성은 선택한 대체물의 영향을 받기 때문에 상자 차원의 기대치를 최소화하는 데 의존하며, 이는 여러 감지 모델에서 NMS가 오작동할 수 있다.

'2021 INCOGNITO > Object Detection' 카테고리의 다른 글

NMS(Non-Maximum Suppression)  (1) 2021.07.28
Perception  (0) 2021.07.13

1. Ubuntu 18.04 LTS Desktop

 

 

설치 과정 중 오류가 저장용량의 문제인 것 같아 하드디스크 40GB, 메모리 8GB로 설정하였다.

 

 

2. ROS Melodic

 

 

Ubuntu 18.04에 맞는 ROS Melodic 버전을 설치해야 한다.

 

1) source.list, keys 설정

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

 

 

2) Desktop-Full 설치

sudo apt update 

 

 

sudo apt install ros-melodic-desktop-full

 

 

3) 환경(환경변수) 설정

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

 

 

4) 패키지 빌드를 위한 의존성

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

 

 

5) rosdep 초기화

sudo apt install python-rosdep

sudo rosdep init
rosdep update

 

 

6) roscore

 

 

roscore했을 때 별 문제 없이 실행된다면 성공

 

 

3. Qt 5.14.2

 

http://download.qt.io/archive/qt/

위 링크에서 qt-opensource-linux-x64-5.14.2.run 다운로드

 

1) 패키지 업데이트

sudo apt-get update

 

 

2) build-essential 패키지 설치

sudo apt-get install build-essential

 

 

3) 기존 Qt 설치되어 있다면 제거 

sudo apt-get purge --auto-remove libqt4-dev

 

 

4) Qt 설치 프로그램 실행

chmod +x qt-opensource-linux-x64-5.14.2.run

./qt-opensource-linux-x64-5.14.2.run

 

 

Qt 설치가 처음이라면 sign-up 부분에 정보 입력 후 이메일 인증하기

 

 

인증 완료 후 모두 체크 후 설치

 

5) .bashrc 파일 수정

nano ~/.bashrc

 

 

nano 편집기 저장: Ctrl+O, 끝내기: Ctrl+X

 

6) 수정 파일 적용 후 버전 확인

source ~/.bashrc
qmake -version

 

 

 

4. Autoware.ai

 

 

Ubuntu 18.04이므로 여기에서는 Autoware 1.14.0버전을 설치했다.

 

 

1) System dependencies for Ubuntu 18.04 / Melodic

 

sudo apt update

 


sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin

 


sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool

 


pip3 install -U setuptools

 

 

2) build

 

Create a workspace

mkdir -p autoware.ai/src 

cd autoware.ai

 

 

② Download the workspace configuration for Autoware.AI

wget -O autoware.ai.repos "https://raw.githubusercontent.com/Autoware-AI/autoware.ai/1.14.0/autoware.ai.repos"

 

 

③ Download Autoware.AI into the workspace

vcs import src < autoware.ai.repos

 

 

④ Install dependencies using rosdep

rosdep update

 

 

rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

 

 

⑤ Compile the workspace

 

without CUDA Support (그래픽 X)

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

 

 

3) run

 

cd autoware.ai
source install/setup.bash
roslaunch runtime_manager runtime_manager.launch

 

 

 

위 화면이 뜨면 성공!!

 

 

※ 참고자료

1. 우분투 18.04 Desktop
https://gabii.tistory.com/entry/Ubuntu-1804LTS-%EC%84%A4%EC%B9%98
2. ros melodic
https://whiteknight3672.tistory.com/248
3. qt
https://webnautes.tistory.com/1413
4. autoware.ai
https://github.com/Autoware-AI/autoware.ai/wiki/Source-Build

'2021 INCOGNITO > ROS' 카테고리의 다른 글

Week02_ROS_TOPIC  (0) 2021.06.27
Week 01_ROS  (0) 2021.05.30

1) Topic이란?

 

 

- 노드들 간에 통신할 수 있는 채널

- 프로세스 간의 통신 발생 시 주고 받는 메시지의 경로

- Publisher node : 메시지를 전송하는 노드

- Subscriber node : 메시지를 수신하는 노드

 

 

2) Topic 예제 과정

 

- 패키지 생성 

- 패키지 설정 파일, 빌드 설정 파일 수정

- 메시지 파일 작성

- Publisher node 작성

- Subscriber node 작성

- 패키지 빌드 및 노드 실행

 

 

3) Topic 실습

 

① 패키지 생성

 

 

cd catkin_ws/src                

catkin_create_pkg ros_tutorials_topic message_generation std_msgs roscpp

→ message_generation, stsd,_msgs, roscpp를 의존성으로 하는 ros_tutorials_topic 패키지 생성

 

 

 

 

② 패키지 설정 파일, 빌드 설정 파일 수정

 

- 패키지 설정 파일 ( package.xml )

 

 

<?xml version="1.0"?>

→ xml 버전 명시
<package format="2">

<name>ros_tutorials_topic</name> 

→ 위에서 정한 패키지 이름 명시

<version>0.0.0</version>
<description>The ros_tutorials_topic package</description>

→ 생성한 패키지의 간략한 설명

 

 

- 의존성 관계를 설명해주는 명령어들

<buildtool_depend>catkin</buildtool_depend>

<build_depend>message_generation</build_depend>

→ 빌드할 때의 의존성
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>

→ 헤더를 export할 때 해당 헤더가 포함되어 있다면 추가해야 함
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>

→ 패키지를 실행하는 도중 의존성이 필요하다면 추가해야 함
<exec_depend>std_msgs</exec_depend>

 

 

- 빌드 설정 파일 ( CMakeLists.txt )

 

 

cmake_minimum_required(VERSION 3.0.2)

project(ros_tutorials_topic)

→ 위에서 생성한 패키지명과 동일해야 함

 

find_package(catkin REQUIRED COMPONENTS message_generation std_msgs roscpp)

→ catkin을 빌드할 때 요구되는 구성요소 패키지

→ 의존성 패키지로 message_generation, std_msgs, roscpp를 의미

 

 

include_directories(${catkin_INCLUDE_DIRS})

→ 인클루드 디렉터리 설정

 

 

MsgTutorial.msg add_message_files(FILES MsgTutorial.msg) 

→ 메시지 선언 ( MsgTutorial.msg )

generate_messages(DEPENDENCIES std_msgs) 

→ catkin 패키지 옵션으로 라이브러리, catkin 빌드 의존성, 시스템 의존 패키지 기술

 

add_executable(publisher src/publisher.cpp)

add_dependencies(publisher ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

target_link_libraries(publisher ${catkin_LIBRARIES})

→ publisher 노드에 대한 빌드 옵션

 

add_executable(subscriber src/subscriber.cpp)

add_dependencies(subscriber ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

target_link_libraries(subscriber ${catkin_LIBRARIES})

→ subscriber노드에 대한 빌드 옵션

 

 

 

③ 메시지 파일 작성

 

cd catkin_ws/src/ros_tutorials_topic

mkdir msg

cd msg   

gedit MsgTutorial.msg 

 

 

- time, int32 : 메시지 형식

- stamp, data : 메시지 이름

 

※ ROS 변수 형식

 

 

 

 

④ Publisher node 작성

 

cd catkin_ws/src/ros_tutorials_topic/src/

gedit publisher.cpp

 

 

 

 

⑤ Subscriber node 작성

 

cd catkin_ws/src/ros_tutorials_topic/src/

gedit subscriber.cpp

 

 

 

 

⑥ 패키지 빌드 및 노드 실행

 

cm ros_tutorials_topic

 

 

위 명령어 정상 실행 시 3개의 터미널 열고 아래 명령어 입력 

 

roscore

rosrun ros_tutorials_topic publisher

rosrun ros_tutorials_topic subscriber

 

 

 

※ 참고자료

https://www.g.camp/41

 

표윤석 박사 ROS 강의 자료

로보티즈의 표윤석 박사의 ROS강의 노트사이트입니다. https://github.com/robotpilot/ros-seminar ROS 강의 Chapter1. 로봇 소프트웨어 플랫폼 ROS 강의 Chapter2. 로봇 운영체제 ROS ROS 강의 Chapter3. ROS 개..

www.g.camp

 

'2021 INCOGNITO > ROS' 카테고리의 다른 글

Ubuntu 18.04 + Autoware 설치  (0) 2021.07.13
Week 01_ROS  (0) 2021.05.30

1. ROS란?

 

1) 개념

 

- Robot Operation System의 약자로 로봇 운영체제를 말함

- 로봇이 사용자의 목적에 따라 움직이고 제어되도록 할 수 있는 플랫폼

- 사용자가 작성한 소스코드를 통해 사용자가 원하는 대로 움직이고 다른 기기로부터 값을 받아 제어 가능

 

2) 용어

 

- 패키지 : ROS 소프트웨어의 기본 단위로 패키지는 노드, 라이브러리, 환경설정 파일들을 통합하는 최소의 빌드 단위

- 패키지 매니페스트 : 패키지의 작성자, 라이선스, 의존성, 컨피그레이션 플레그 등을 포함하는 패키지 정보

- 메타 패키지 : 특수한 목적을 위한 패키지 그룹을 지칭 ex) 내비게이션 스택

- 메시지 : 한 ROS 프로세서에서 다른 ROS 프로세서로 정보를 전달하는 한 형태

- 서비스 : 프로세스간의 요청/응답 상호작용

- 노드

: 최소 단위의 실행 가능한 프로세서를 가리키는 용어로 하나의 실행 가능한 프로그램을 의미

: 각 노드는 메시지 통신으로 데이터를 주고 받음

: 메시지를 보내는 노드는 publisher(발행자), 메시지를 받는 노드는 subscriber(구독자)이라고 함

- 마스터 : 각 노드들의 정보를 가지고 있으며 어떤 노드가 어떤 토픽으로 메시지를 주고 받는지 관리하는 일종의 서버

 

 

2. ROS 동작 원리

 

1) ROS 동작 원리

 

 

① 마스터 실행

② 노드 실행

③ 마스터가 구독자에 발행자 정보 전달

④ 구독자가 발행자에 접속 요청

⑤ 발행자가 구독자에 접속 응답

⑥ 발행자가 구독자 노드에 TCP/IP 방식 접속

⑦ 발행자가 구독자에 메시지 전달

 

 

3. ROS 특성

 

1) 특성

 

- 하드웨어를 직접 구동하는 것보다 데이터와 알고리즘 처리를 통한 행동 결정이나 제어에 초점을 맞춤

- 사용자가 쉽게 개발을 하고 로봇을 만들 수 있도록 도와주는 역할이 부각된 개발 환경

- 노드 간의 메시지 교환 방법으로 복잡한 프로그램을 나눠 공동 개발 가능

- 명렁어 도구, 시각화 도구 Rviz, GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원

- 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원

- 같은 디바이스 간의 통신(움직이거나 데이터를 주고받음) 지원 가능

- 유닉스 기반의 다양한 운영체제에서 사용 가능

 

2) 통신 인프라

 

- 노드 간 데이터 통신 제공

- 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원

- 메시지 파싱 기능

: 로봇 개발 시 사용되는 통신 시스템 제공

: 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스

- 메시지의 기록 및 재생

: 노드 간 송/수신되는 데이터인 메시지를 저장하고 필요 시 재사용 가능

: 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이

- 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능

: 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능

- 분산 매개 변수 시스템

: 시스템에서 사용되는 변수를 글로벌 키 값으로 작성하여 공유 및 수정하여 실시간으로 반영 가능

 

3) 로봇 소프트웨어 플랫폼

 

- 하드웨어 플랫폼과 소프트웨어 플랫폼 간의 인터페이스 확립

- 모듈형 하드웨어 플랫폼 확산

- 하드웨어에 대한 지식 없이 응용 프로그램 작성 가능

- 더 많은 소프트웨어 인력들이 로봇 제품에 참여 가능

- 유저에게 제공할 서비스에 집중하여 유저 계층 형성 및 피드백 가능

- 로봇 개발 급속도 발전 가능

 

 

4. ROS 관련 명령어

 

- roscd : 지정한 ros 패키지의 디렉터리로 이동

- roscore : -master(ROS 네임서비스) -rosout(로그기록) -parameter server(파라미터관리)

- rosrun : 노드 실행

- roslaunch : 노드를 여러개 실행 및 실행 옵션 설정

- rostopic : ros 토픽 정보 확인

- rosservice : ros 서비스 정보 확인

- rosnode : ros 노드 정보 확인

- rosparam : ros 파라미터 정보 확인 및 수정

- rosbag : ros 메시지 기록 및 재생

- catkin_create_pkg : 패키지 자동 생성

- catkin_make : 캐킨 빌드 시스템에 기반을 둔 빌드

- rospack : ros 패키지와 관련된 정보 보기

'2021 INCOGNITO > ROS' 카테고리의 다른 글

Ubuntu 18.04 + Autoware 설치  (0) 2021.07.13
Week02_ROS_TOPIC  (0) 2021.06.27

+ Recent posts