인프런 - 권철민 님의 '딥러닝 컴퓨터 비전 완벽 가이드'를 정리한 내용입니다.
컴퓨터 비전의 업무
1. Classification : 이미지가 무엇인지 구분하는 것
2. Localization : 하나의 object의 위치를 찾는 것
3. Object Detection : 여러 개의 Object들에 대한 위치를 Bonding box(네모 박스)로 찾는 것
4. Segmentation : Detection보다 발전된 형태로 Pixel 단위로 Object를 구분하는 것
Localization과 Detection
이미지에서 해당 Object의 위치를 Bounding box로 찾고, Boundering box내의 Object를 판별한다.
boundering box를 찾는 과정은 regression과정이며 Object를 찾는 과정은 classification이다.
Object Detection의 역사
딥러닝(Alexnet) 이후에 빠르게 발전하였다.
현재는 크게 2가지 방식의 Detection으로 나뉘며 상대적으로 속도가 빨라 실시간 detection에 유리한 One-stage 방식과
더 정확도가 높은 Two-stage 방식으로 나뉜다. (자세한 알고리즘의 차이는 뒤에 나오는 듯하다.)
Object Detection의 주요 구성요소
1. 영역 추정 - 이미지에서 Object가 있을 만한 영역을 찾는다.
2. Detection을 위한 Deeplearning model - 영역 속에 Object를 classification 한다.
Two-Stage 방식의 RCNN계열은 ResNet을 주로 사용하며 Tensor flow사용 시 Inception과 Mobilenet을 많이 사용한다.
One-Stage방식의 YOLO계열은 다른 방법을 사용한다. (뒤에 나올 것이다.)
3. 기타 주요 지표 및 알고리즘 - IOU, NMS, mAP, Anchor box
Object Detection의 어려운 점
1. Classification과 regression을 동시에 학습하여야 한다. 여러 개의 물체를 위치 찾기와 분류를 동시에 해야 한다.
2. 이미지에서 다양한 크기와 유형의 Object가 섞여있다.
3. 실시간으로 이용하기 위해서는 빠른 계산 속도가 필요하다. 시간 단축
4. 가려지거나 명확하지 않은 Object를 찾아야 하고 이미지 중에 Object가 차지하는 비중이 크지 않다. (배경이 대부분이다.)
5. 데이터 부족 (이 것은 거의 모든 딥러닝의 어려운 점일 듯···)
Object Localization 모델 학습
Localization이기 때문에 1개의 Object만 존재 모델의 출력을 2가지로 받는다.
1. Object 판단 - 해당 이미지가 어떤 Object인지를 판단하는 출력
2. 영역 추정 - 해당 Object의 위치의 좌표를 출력
Object Detection 모델 학습
영역이 정해진다면 분류하는 문제는 Localization과 같은 방법을 사용한다.
Localization보다 Detection의 어려운 점은 정답이 몇 개 인지 알지 못한다는 것이다. 즉 이미지에서 모든 영역을 탐색하여 Object가 있
는 지 없는지 확인하는 과정이 필요하다.
● 영역을 찾는 2가지 방법
1. 슬라이딩 윈도우
윈도우(네모 Box)를 이미지 위에서 움직여 모든 영역을 탐색하는 방법이다.
다양한 형태의 윈도우(크기 및 모양)를 적용하여야 하기 때문에 엄청난 시간이 걸린다. (필요 없는 크기 및 지역을 스캔해야 한다.)
- 초기에 사용한 방법(지금은 사용하지 않는다.)
2. 영역 추정 방식(이미지 graph- based segment 기법)
Pixel Intensity에 기반하여 유사한 특징(컬러, 무늬, 밝기, 형태 등)에 따라 이미지의 영역을 나누어 합쳐 나가는 방식
즉 뭔가가 있을 만한 구역을 예측(추정)하는 방법이다.
슬라이딩 윈도우 방식에 비해 매우 빠르고 높은 Recall 성능을 만족하는 알고리즘이다.
성능 평가에 사용되는 Metric과 기법
● IoU - Intersection over Union
예측 Box의 정확도를 평가하는 기준 (두 영역의 교집합 넓이 / 두 영역의 합집합 넓이)
0 ~ 1의 값을 갖고 1일 수록 좋다. 모델의 Threshold로 사용
● mAP
예측 결과의 재현율(Recall)의 변화에 따른 정밀도(Presion)의 그래프 아래 넓이
ROC curve의 AUC와 비슷한 개념이다. (넓이는 같을 듯)
하나의 Object에 대해 그래프 아래 넓이를 AP라고 하며 Detection은 여러 가지 Object에 대한 개념으로 mAP를 사용한다.
모델의 NMS 방법(paraneter 변화)에 따라 다른 값을 갖는다.
● NMS (Non Max Suppression)
하나의 Object에 대해 여러 영역이 중복으로 검출될 수 있다. 이때 이 영역들을 하나로 합치는 방법이다.
아래 사진에서 NMS 전에는 하나의 차(Object)에 3개의 영역이 추정되었다. 이를 하나로 NMS를 통해 하나로 통합하였다.
▶ NMS 수행 로직
1. 추정된 영역을 Confidence threshold(분류에서 추정 확률)를 기준으로 필터링한다.
2. 가장 높은 Confidence score를 가진 box부터 다른 box와 비교하여
IoU threshold보다 높다면 Confidence score가 낮은 box를 제거한다.
3. 남은 box를 선택한다.
쉽게 설명하면 (분류기준 Confidence threshold : 0.5, IoU threshold : 0.4라고 가정)
1. 여러 선택된 영역들 중에 분류 모델에서 분류 모델이 0.5 이상 확신한 영역만 남긴다.
2. 겹치는 영역들은 하나의 Object에 대해 추정했을 가능성이 있으므로 일정 부분 겹친다면 제거해야 한다.
이때 겹치는 기준을 IoU값이 0.4 이상이면 더 높은 분류 점수(Confidence score)를 받은 영역만 남긴다.
'python > 딥러닝' 카테고리의 다른 글
[컴퓨터 비전] OpenCV 안에 있는 Detection 모델 사용하기 (0) | 2021.04.29 |
---|---|
[컴퓨터 비전] RCNN, SPP net, Fast RCNN, Faster RCNN (0) | 2021.04.28 |
[컴퓨터 비전] 주요 Dataset 과 openCV, 컴퓨터 비전 패키지 (0) | 2021.04.22 |
[딥러닝] - few shot learning, 적은 데이터로 학습하기 (0) | 2021.04.12 |
[밑러닝 1] 2장 퍼셉트론 (0) | 2021.01.02 |
댓글