본문 바로가기
딥러닝

[딥러닝] Object Detection _ 20241107

by 황오독 2024. 11. 7.

** 들어가기 전

Computer Vision Task와 Datasets는 아래와 같다.

▶ 컴퓨터 비전에서 자주 쓰이는 데이터 셋 (이미지와 정답(레이블)을 모아둔 자료)

  MINIST CIFAR-10 CIFAR-100 ImageNet COCO
주요목적 손글씨 숫자 인식 기본적인 이미지 분류 복잡한 이미지 분류 다양한 물체 분류 및 인식 객체 탐지 및 세그멘테이션
카테고리수 10(0~9) 10 100 1,000+ 80
이미지수 70,000
(train:60,000
test:10,000)
60,000
(train:50,000
test:10,000)
60,000
(train:50,000
test:10,000)
약 1,400만 장 약 33만 장
이미지크기 28x28, 흑백 32x32, 컬러 32x32, 컬러 다양한 크기, 컬러 다양한 크기, 컬러
데이터구성 단순 이미지
(손글씨 숫자)
일상 물체 이미지
(비행기, 자동차, 고양이 등)
일상 물체 이미지, 더 다양함 다양한 물체와 복잡한 배경 포함 복잡한 장면과 여러 물체
사용난이도 쉬움 쉬움 중간 어려움 어려움
테스크종류 이미지 분류 이미지 분류 이미지 분류 이미지 분류, 객체 탐지, 세그맨테이션 객체 탐지, 세그멘테이션, 키포인트
응용분야 간단한 인식 모델 실험 기초 딥러닝 훈련 더 복잡한 모델 훈련 대규모 딥러닝 모델 학습 및 연구 자율주행, 이미지 캡셔닝 등

 

1. Object Detection

- Classification + Localization : 단 하나의 Object 분류 + 어디있는지 위치를 표시 (Bounding Box)

- Multi-Labeled Classfication + Bounding Box Regression

  :여러개의 Object 분류 + 어디있는지 위치 표시 (Bounding Box)

 

▶ 주요 개념

1) Class
Classification
2) Bounding
Box
3) IoU 4) Confidence
Score
5) Precision, Recall, AP, mAP 6) NMS 7) Annotation

 

1) Class Clasffication (클래스 분류) : 무엇인지 알아내기!

출처 : https://ganghee-lee.tistory.com/44

 

2) Bounding Box : 어디 있는지 네모로 표시하기!

  - 이미지 내에서 Object의 위치를 사각형 상자로 표현하기 위해, 상자의 x, y좌표와 width, height를 예측

    (왼쪽 상단 코너부터 오른쪽 하단 코너까지)

  - 손실 함수 : 모델이 얼마나 정확하게 상자를 그렸는지 평가하기 위해 사용, 값이 작을수록 더 정확히 예측

더보기
분류 손실 (Classfication Loss) 회귀 손실(Regression Loss) 총 손실 (Total Loss)
물체의 클래스 (ex. 강아지,고양이)
- Cross-Entropy Loss 주로 사용
- 위치를 예측
- MSE나 L1 손실함수 주로 사용
- ex. 실제 (12,22)와 예측 (10,20) 차이
- Object Detection은 분류 손실과 회귀 손실 함께 사용

3) IoU (Intersection over Union)

▶ IoU = Area of Overlap / Area of Union

- 두 박스의 중복 영역 크기를 통해 측정

- 겹치는 영역이 넓을수록 좋은 예측 (0~1 사이의 값)

 

4) Confidence Score

- Bounding Box 안에 object가 있는지, '모델의 확신, 자신'

- Predicted Bounding Box의 Confidence Score가 1에 가까울수록 박스 내 Object가 있다고 판단

- 0에 가까울수록 Object가 없다고 판단

- 모델에 따라 계산이 조금씩 다름

 

5) Precision, Recall, AP, mAP

* Confusion Matrix with O.D (Object Detection)

이건 이제 억시로 많이 봐서 눈 감고도 말할 수 있음

Precision TP / (TP + FP)
모델이 Object라 예측한 것 중 실제 Object의 비율
Recall TP / (TP + FN)
실제 Object 중 모델이 예측하여 맞춘 Object의 비율

 

(1) Confidence score threshold 값에 따라 Precision, Recall이 변화함.

** 예시

Threshold를 0.5로 설정한 경우

- Object 존재에 대한 확신이 0.5 이상인 예측만 유효한 것으로 간주

Box Confidence Score 판단
1 0.6 유효
2 0.2 제외
3 0.8 유효

 

Threshold를 0.9로 설정한 경우 (TP라 판단하는 기준이 높아짐, 등급컷이 올라감)

Box Confidence Score 판단
1 0.6 제외
2 0.2 제외
3 0.8 제외

 

Threshold를 0.1로 설정한 경우 (TP라 판단하는 기준이 낮아짐, 등급컷이 내려감)

Box Confidence Score 판단
1 0.6 유효
2 0.2 유효
3 0.8 유효

 

④ Threshold 변화에 따른 성능

Threshold TP FP (잘못 예측) FN (놓친 객체) Precision Recall F1-Score
0.9 10 1 4 0.91 0.71 0.87
0.5 12 4 3 0.75 0.80 0.77
0.1 14 8 2 0.64 0.88 0.69

 

- 높은 Threshold는 정확한 예측을 가능하게 하지만(Precision 증가), 놓친 객체가 많을 수 있음(Recall 감소).

- 낮은 Threshold는 놓친 객체는 많이 없지만(Recall 증가), 잘못 예측한 게 많음.(Precision 감소)

=> 적절한 Threshold 설정으로 모델의 성능을 조절하고, Precision과 Recall 사이의 균형을 맞추어야 함.

 

 (2) IoU threshold 영향

① Threshold를 0.5로 설정한 경우 : FP (틀렸다고 예측하였고, 실제로는 맞음)

② Threshold를 0.2로 설정한 경우 : TP (맞았다고 예측하였고, 실제로도 맞음)

 

(3) AP, mAP

Average Precision (AP) mean Average Precision (mAP)
Precision - Recall Curve : 모델의 "평가 과정"에서 그려진다.
그래프 아래의 면적이 클수록 정확하게 예측하고 놓친 객체가 적다는 뜻
각 클래스 별 AP를 합산하여 평균을 낸 것
mAP가 높을 수록 모델이 모든 클래스에서 고르게 잘 예측한다는 뜻
더보기

** 참고 : Average Precision

1. 특정 클래스 선택

2. IoU 임계값 설정 : 보통 0.50에서 시작

3. Confidence score 임계값이 다양하게 변화하면서 Precision, Recall이 계산되어 P-R curve가 그려짐

4. IoU 임계값 설정에 따른 P-R curve 아래의 면적(AUC) 계산

5. IoU 임계값을 0.05 높이고, 3~4번 과정 반복 (0.95까지)

6. 5번까지의 과정을 통해 구한 면적들의 평균 계산

=> 특정 클래스에 대한 최종 Average Precision

더보기

** 참고 : mean Average Precision

1. 모든 클래스에 AP 계산 과정을 적용하여 클래스별 AP 산출

2. 1번 과정을 통해 만들어진 AP들의 평균 계산

=> 이것이 mean Average Precision

 

6) NMS (Non-Maximum Suppression) => 예측값 끼리!

- 추론 과정의 알고리즘 (.predict())

- 동일 Object에 대한 중복 박스를 제거하는 후처리 과정

더보기
① Confidence score 임계값 이하의 Bounding Box 제거
② 남은 Bounding Box들을 Confidence score 내림차순으로 정렬
③ 첫 Bounding Box와의 IoU 값이 임계값 이상인 다른 박스들을 제거 (동일박스라고 판단)
④ Bounding Box가 하나 될 때까지 반복
* IoU가 임계값 이상인 경우, 두 Bounding Box가 동일한 Object를 나타내는 것으로 판단하여,
  상대적으로 Confidence score가 낮은 Bounding Box를 제거하는 것
  - IoU threshold가 낮아질수록 분리 기준이 엄격해진다! (조금만 겹쳐도 동일로 판단!)

 

ex) IoU Threshold=0.5일 때 (if-else)

Box confidence Score IoU if-else 결과
A 0.9 0.6 A, B IoU 0.5 이상이므로, 조건에 맞음. (동일한 object라고 판단)
Confidence Score이 더 높은 A를 남겨둠
남겨둠
B 0.8 0.7 버림
C 0.7 0.2 IoU가 0.5 미만이므로, A와 C는 겹치지 않음. (서로 다른 object라고 판단)
A,C 모두 남겨둠
남겨둠

=> Confidence Score와 IoU threshold는 HyperParameter로 사용자가 조절할 수 있다.

=> .predict()에서 설정!

 

7) Annotation

- 이미지 안의 정보에 대해서 별도의 파일로 제공되는 것

- 해당 파일 안에는 Object의 위치 정보, 클래스 정보, 클래스명 등의 정보가 있다.