12 KiB
객체 탐지
지금까지 다룬 이미지 분류 모델은 이미지를 입력받아 '숫자'와 같은 범주형 결과를 생성했습니다. 그러나 많은 경우 우리는 단순히 사진이 객체를 나타내고 있다는 것을 아는 것만으로는 충분하지 않습니다. 우리는 객체의 정확한 위치를 결정할 수 있어야 합니다. 이것이 바로 객체 탐지의 핵심입니다.
사전 강의 퀴즈
이미지 출처: YOLO v2 웹사이트
객체 탐지에 대한 단순한 접근법
사진에서 고양이를 찾고자 한다고 가정할 때, 객체 탐지에 대한 매우 단순한 접근법은 다음과 같습니다:
- 이미지를 여러 개의 타일로 나눕니다.
- 각 타일에 대해 이미지 분류를 실행합니다.
- 충분히 높은 활성화 결과를 얻은 타일은 해당 객체를 포함하고 있다고 간주할 수 있습니다.
이미지 출처: 연습 노트북
하지만 이 접근법은 이상적이지 않습니다. 왜냐하면 알고리즘이 객체의 경계 상자를 매우 부정확하게 위치시키는 것만 허용하기 때문입니다. 더 정확한 위치를 위해서는 경계 상자의 좌표를 예측하기 위한 일종의 회귀를 수행해야 하며, 이를 위해서는 특정 데이터셋이 필요합니다.
객체 탐지를 위한 회귀
이 블로그 포스트는 도형 탐지에 대한 훌륭한 소개를 제공합니다.
객체 탐지를 위한 데이터셋
이 작업에 사용할 수 있는 데이터셋은 다음과 같습니다:
- PASCAL VOC - 20개 클래스
- COCO - Common Objects in Context. 80개 클래스, 경계 상자 및 분할 마스크
객체 탐지 메트릭
교차 비율 (Intersection over Union)
이미지 분류의 경우 알고리즘의 성능을 측정하는 것이 쉽지만, 객체 탐지에서는 클래스의 정확성과 추론된 경계 상자 위치의 정밀도를 모두 측정해야 합니다. 후자의 경우, 두 상자(또는 두 임의의 영역)가 얼마나 겹치는지를 측정하는 교차 비율(IoU)을 사용합니다.
그림 2는 이 훌륭한 IoU 블로그 포스트에서 발췌함
아이디어는 간단합니다. 두 도형 간의 교차 영역을 그들의 합집합 영역으로 나눕니다. 두 개의 동일한 영역의 경우 IoU는 1이 되고, 완전히 분리된 영역의 경우 0이 됩니다. 그렇지 않으면 0에서 1 사이의 값을 가집니다. 우리는 일반적으로 IoU가 특정 값을 초과하는 경계 상자만 고려합니다.
평균 정밀도 (Average Precision)
주어진 클래스 C가 얼마나 잘 인식되는지를 측정하고자 한다면, 평균 정밀도 메트릭을 사용합니다. 이는 다음과 같이 계산됩니다:
- 정밀도-재현율 곡선을 고려하여 탐지 임계값(0에서 1까지)에 따라 정확도를 나타냅니다.
- 임계값에 따라 이미지에서 탐지되는 객체의 수가 달라지며, 정밀도와 재현율의 값도 달라집니다.
- 곡선은 다음과 같이 나타납니다:
이미지 출처: NeuroWorkshop
주어진 클래스 C에 대한 평균 정밀도는 이 곡선 아래의 면적입니다. 보다 정확하게, 재현율 축은 일반적으로 10개 부분으로 나뉘며, 정밀도는 모든 점에 대해 평균화됩니다:
AP = {1\over11}\sum_{i=0}^{10}\mbox{Precision}(\mbox{Recall}={i\over10})
AP와 IoU
우리는 IoU가 특정 값을 초과하는 탐지만 고려합니다. 예를 들어, PASCAL VOC 데이터셋에서는 일반적으로 \mbox{IoU Threshold} = 0.5로 가정하며, COCO에서는 다양한 \mbox{IoU Threshold} 값에 대해 AP가 측정됩니다.
이미지 출처: NeuroWorkshop
평균 평균 정밀도 - mAP
객체 탐지를 위한 주요 메트릭은 평균 평균 정밀도 또는 mAP라고 합니다. 이는 모든 객체 클래스에 대해 평균화된 평균 정밀도의 값이며, 때때로 \mbox{IoU Threshold}에 대해서도 평균화됩니다. mAP를 계산하는 과정에 대한 자세한 설명은
이 블로그 포스트와 여기 코드 샘플과 함께에서 확인할 수 있습니다.
다양한 객체 탐지 접근법
객체 탐지 알고리즘에는 두 가지 주요 클래스가 있습니다:
- 영역 제안 네트워크 (R-CNN, Fast R-CNN, Faster R-CNN). 주요 아이디어는 관심 영역(ROI)을 생성하고 CNN을 통해 최대 활성화를 찾는 것입니다. 이는 단순한 접근법과 유사하지만, ROI는 보다 정교한 방식으로 생성됩니다. 이러한 방법의 주요 단점 중 하나는 이미지에 대해 CNN 분류기를 여러 번 통과해야 하므로 속도가 느리다는 것입니다.
- 단일 패스 (YOLO, SSD, RetinaNet) 방법. 이러한 아키텍처에서는 네트워크를 설계하여 클래스와 ROI를 한 번의 패스로 예측합니다.
R-CNN: 영역 기반 CNN
R-CNN은 선택적 검색을 사용하여 ROI 영역의 계층 구조를 생성하고, 이를 CNN 특징 추출기와 SVM 분류기를 통해 객체 클래스를 결정하며, 선형 회귀를 통해 경계 상자 좌표를 결정합니다. 공식 논문
이미지 출처: van de Sande et al. ICCV’11
이미지 출처: 이 블로그
F-RCNN - Fast R-CNN
이 접근법은 R-CNN과 유사하지만, 영역이 컨볼루션 레이어가 적용된 후 정의됩니다.
Faster R-CNN
이 접근법의 주요 아이디어는 신경망을 사용하여 ROI를 예측하는 것입니다. 이를 영역 제안 네트워크라고 합니다. 논문, 2016
이미지 출처: 공식 논문
R-FCN: 영역 기반 완전 합성곱 네트워크
이 알고리즘은 Faster R-CNN보다 더 빠릅니다. 주요 아이디어는 다음과 같습니다:
- ResNet-101을 사용하여 특징을 추출합니다.
- 특징은 위치 민감 점수 맵에 의해 처리됩니다.
C클래스의 각 객체는k\times k영역으로 나뉘며, 우리는 객체의 부분을 예측하도록 훈련합니다. k\times k영역의 각 부분에 대해 모든 네트워크가 객체 클래스에 투표하고, 최대 투표를 받은 객체 클래스가 선택됩니다.
이미지 출처: 공식 논문
YOLO - You Only Look Once
YOLO는 실시간 단일 패스 알고리즘입니다. 주요 아이디어는 다음과 같습니다:
- 이미지를
S\times S영역으로 나눕니다. - 각 영역에 대해 CNN이
n개의 가능한 객체, 경계 상자 좌표 및 신뢰도 = 확률 * IoU를 예측합니다.
이미지 출처: 공식 논문
기타 알고리즘
- RetinaNet: 공식 논문
- Torchvision의 PyTorch 구현
- Keras 구현
- Keras 샘플에서의 RetinaNet을 이용한 객체 탐지
- SSD (Single Shot Detector): 공식 논문
✍️ 연습문제: 객체 탐지
다음 노트북에서 학습을 계속하세요:
결론
이번 수업에서는 객체 탐지를 수행할 수 있는 다양한 방법을 빠르게 살펴보았습니다!
🚀 도전 과제
YOLO에 대한 이 기사와 노트북을 읽고 직접 시도해 보세요.
강의 후 퀴즈
복습 및 자가 학습
- Nikhil Sardana의 객체 탐지
- 객체 탐지 알고리즘의 좋은 비교
- 객체 탐지를 위한 딥 러닝 알고리즘 리뷰
- 기본 객체 탐지 알고리즘에 대한 단계별 소개
- Python으로 객체 탐지를 위한 Faster R-CNN 구현
과제: 객체 탐지
면책 조항:
이 문서는 기계 기반 AI 번역 서비스를 사용하여 번역되었습니다. 정확성을 위해 노력하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있음을 유의하시기 바랍니다. 원본 문서는 해당 언어로 작성된 권위 있는 출처로 간주되어야 합니다. 중요한 정보에 대해서는 전문적인 인간 번역을 권장합니다. 이 번역의 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 우리는 책임을 지지 않습니다.









