Computer Vision Theory : 객체 검출
객체 검출(Object Detection)
이미지 인식에서 다룬 이미지 분류는 사진 한 장을 보고 무엇이 찍혀 있는지 하나의 답을 냅니다. 그러나 실제 장면에는 대개 여러 물체가 함께 있습니다. 도로 사진에는 자동차 여러 대와 보행자, 신호등이 동시에 있으며, 자율 주행 자동차는 그 각각이 어디에 있는지까지 알아야 합니다.
객체 검출(Object Detection)은 이미지 안의 모든 물체에 대해 종류와 위치를 함께 찾는 작업입니다. 위치는 물체를 감싸는 사각형인 경계 상자(Bounding Box)로 나타내며, 보통 왼쪽 위와 오른쪽 아래 꼭짓점의 좌표 \((x_{1}, y_{1}, x_{2}, y_{2})\) 또는 중심 좌표와 너비, 높이 \((c_{x}, c_{y}, w, h)\)로 표현합니다. 검출 결과는 상자마다 범주와 그 범주일 확률인 신뢰도(Confidence)를 함께 가집니다.
분류와 비교하면 검출은 훨씬 어려운 문제입니다. 이미지에 물체가 몇 개 있는지 미리 알 수 없으므로 출력의 개수가 정해져 있지 않고, 같은 물체라도 크기와 비율이 제각각이며, 물체끼리 서로 가리기도 합니다. 분류는 이미지마다 답이 하나이지만, 검출은 답이 몇 개인지부터 스스로 정해야 합니다.
유사성 검출에서 다룬 템플릿 매칭이나 하르 특징 기반 얼굴 검출도 넓게 보면 객체 검출입니다. 그러나 이 방법들은 특정 대상 하나를 찾도록 설계되어, 수십 수백 종류의 물체를 한 번에 찾기 어려웠습니다. 이 강좌에서는 합성곱 신경망을 기반으로 한 현대적인 객체 검출을 중심으로, 검출기가 공통으로 사용하는 개념부터 차례대로 다룹니다.
IoU(Intersection over Union)
검출 결과가 맞았는지 판단하려면, 예측한 상자와 정답 상자가 얼마나 겹치는지를 재야 합니다. 이때 사용하는 기준이 IoU(Intersection over Union)로, 두 상자의 교집합 넓이를 합집합 넓이로 나눈 값입니다.
두 상자가 완전히 일치하면 1, 전혀 겹치지 않으면 0이 됩니다. 정답 상자가 \((0, 0, 4, 4)\)일 때, 예측 상자가 \((1, 0, 5, 4)\)라면 가로로 한 칸 밀린 것입니다. 교집합은 \(3 \times 4 = 12\)이고 합집합은 \(16 + 16 - 12 = 20\)이므로 IoU는 0.6입니다. 예측 상자가 \((2, 2, 6, 6)\)으로 대각선 방향으로 두 칸 밀리면, 교집합은 \(2 \times 2 = 4\), 합집합은 28이 되어 IoU는 약 0.143으로 크게 떨어집니다.
두 번째 예에서 상자의 위치는 가로세로로 두 칸씩만 어긋났지만 IoU는 0.143에 불과합니다. IoU는 가로와 세로의 어긋남이 곱으로 작용하므로 생각보다 엄격한 기준입니다. 일반적으로 IoU가 0.5 이상이면 올바르게 검출한 것으로 보며, 더 정밀한 위치가 필요한 평가에서는 0.75 이상을 요구하기도 합니다.
이미지 분할에서 픽셀 단위 마스크를 평가할 때 사용한 IoU와 같은 개념이며, 상자 대신 사각형 넓이로 계산한다는 점만 다릅니다.
비최대 억제(Non-Maximum Suppression)
검출기는 물체 하나에 대해 비슷한 위치의 상자를 여러 개 출력하는 경우가 많습니다. 물체 주변의 여러 위치에서 각각 “여기에 자동차가 있다”고 판단하기 때문입니다. 이렇게 겹친 상자들 중 가장 좋은 하나만 남기고 나머지를 지우는 후처리를 비최대 억제(Non-Maximum Suppression, NMS)라 합니다.
- 모든 상자를 신뢰도가 높은 순으로 정렬합니다.
- 신뢰도가 가장 높은 상자를 결과에 남깁니다.
- 남긴 상자와 IoU가 기준값(보통 0.5) 이상인 상자를 같은 물체를 가리킨 중복으로 보고 지웁니다.
- 남은 상자에 대해 2~3을 반복합니다.
신뢰도가 0.9, 0.8, 0.7인 상자가 있고, 첫 번째 상자와의 IoU가 각각 0.6, 0.1이라고 하겠습니다. 0.9인 상자를 먼저 남기면, IoU가 0.6인 두 번째 상자는 기준값 0.5를 넘으므로 중복으로 지워지고, IoU가 0.1인 세 번째 상자는 다른 물체로 보고 남습니다. 결과적으로 두 개의 상자가 남습니다.
비최대 억제는 단순하지만 한계가 있습니다. 사람이 많이 모인 사진처럼 실제로 다른 물체가 크게 겹쳐 있으면, 뒤쪽 사람의 상자가 앞쪽 사람의 중복으로 오인되어 지워질 수 있습니다. 기준값을 높이면 이 문제가 줄지만, 대신 진짜 중복이 남게 됩니다. 이 상충 관계를 완화하기 위해 상자를 지우는 대신 IoU에 따라 신뢰도를 깎는 Soft-NMS 같은 변형이 쓰입니다.
2단계 검출기(Two-Stage Detector)
초기의 신경망 검출기는 문제를 두 단계로 나누었습니다. 먼저 물체가 있을 만한 후보 영역을 찾고, 그다음 각 후보 영역을 분류하는 것입니다. 이 방식을 2단계 검출기(Two-Stage Detector)라 합니다.
R-CNN
2014년 기르식(Ross Girshick) 연구진이 발표한 R-CNN(Regions with CNN features)은 신경망 검출의 출발점입니다. 먼저 색과 질감이 비슷한 영역을 묶는 전통적인 알고리즘인 선택적 탐색(Selective Search)으로 이미지마다 약 2,000개의 후보 영역을 찾습니다. 그다음 각 후보 영역을 잘라 일정한 크기로 늘린 뒤 합성곱 신경망에 넣어 특징을 추출하고, 그 특징으로 범주를 분류합니다.
R-CNN은 기존 방법보다 정확도를 크게 높였지만 매우 느렸습니다. 이미지 하나에 대해 합성곱 신경망을 2,000번 실행해야 했기 때문입니다. 후보 영역들은 서로 많이 겹치므로 같은 픽셀에 대한 계산이 수없이 반복되었습니다.
Fast R-CNN과 Faster R-CNN
2015년의 Fast R-CNN은 순서를 바꾸었습니다. 이미지 전체에 합성곱 신경망을 한 번만 적용해 특징 맵을 만들고, 후보 영역은 그 특징 맵 위에서 잘라 냅니다. 크기가 제각각인 후보 영역을 같은 크기로 맞추기 위해 RoI 풀링(RoI Pooling)을 사용하며, 이로써 같은 계산의 반복이 사라졌습니다.
그러나 후보 영역을 찾는 선택적 탐색은 여전히 신경망 밖의 느린 알고리즘이었습니다. 같은 해 발표된 Faster R-CNN은 이 단계마저 신경망으로 바꾸었습니다. 특징 맵 위에서 물체가 있을 만한 위치를 제안하는 작은 신경망인 영역 제안 신경망(Region Proposal Network, RPN)을 두고, 검출 신경망과 특징 맵을 공유하게 했습니다. 처음으로 검출의 모든 과정이 하나의 신경망 안에서 학습되었으며, 이후 2단계 검출기의 표준이 되었습니다.
앵커 박스(Anchor Box)
영역 제안 신경망은 특징 맵의 각 위치마다 미리 정해 둔 여러 모양의 상자를 기준으로 물체를 찾습니다. 이 기준 상자를 앵커 박스(Anchor Box)라 합니다. 예를 들어 크기 세 가지와 가로세로 비율 세 가지(1:1, 1:2, 2:1)를 조합하면 위치마다 아홉 개의 앵커가 생깁니다.
신경망은 상자의 좌표를 처음부터 예측하는 대신, 각 앵커에 대해 두 가지를 예측합니다. 하나는 그 앵커에 물체가 있는지이고, 다른 하나는 앵커를 물체에 맞게 얼마나 옮기고 늘릴지입니다. 서 있는 사람은 세로로 긴 앵커에서, 자동차는 가로로 긴 앵커에서 출발하면 조금만 조정해도 정확한 상자가 됩니다. 아무것도 없는 상태에서 좌표를 맞히는 것보다 기준에서 약간 고치는 것이 훨씬 쉬운 문제입니다.
학습할 때는 정답 상자와 IoU가 높은 앵커를 양성으로, 낮은 앵커를 배경으로 정해 정답을 만듭니다. 앵커는 효과적이지만, 크기와 비율을 데이터에 맞게 사람이 정해야 하고, 대부분의 앵커가 배경이라는 불균형 문제를 낳습니다.
1단계 검출기(One-Stage Detector)
2단계 검출기는 정확하지만, 후보 영역마다 분류를 따로 수행하므로 실시간 처리에는 부족했습니다. 1단계 검출기(One-Stage Detector)는 후보 영역을 찾는 단계를 없애고, 특징 맵의 모든 위치에서 범주와 상자를 한 번에 예측합니다.
YOLO
2016년 레드먼(Joseph Redmon) 연구진이 발표한 YOLO(You Only Look Once)는 이름 그대로 이미지를 한 번만 보고 검출합니다. 이미지를 \(7 \times 7\) 격자로 나누고, 각 격자 칸이 자기 칸 안에 중심이 있는 물체를 책임지도록 했습니다. 칸마다 상자 두 개의 좌표와 신뢰도, 그리고 20개 범주의 확률을 예측하므로, 신경망의 출력은 \(7 \times 7 \times 30\) 크기의 텐서 하나입니다.
검출 전체가 신경망 한 번의 실행으로 끝나므로 매우 빨라, 초당 수십 장의 영상을 처리할 수 있었습니다. 또한 이미지 전체를 한 번에 보므로 배경을 물체로 오인하는 일이 적었습니다. 대신 칸 하나가 물체 몇 개만 맡을 수 있어 작은 물체가 모여 있으면 놓치기 쉬웠고, 위치의 정밀도도 2단계 검출기보다 낮았습니다. 이후의 YOLO 계열은 앵커 박스, 여러 크기의 특징 맵 등을 도입하며 정확도를 꾸준히 높여, 현재 실시간 검출의 대표적인 선택지가 되었습니다.
SSD와 다중 크기 특징 맵
같은 해 발표된 SSD(Single Shot MultiBox Detector)는 여러 깊이의 특징 맵에서 각각 검출을 수행했습니다. 합성곱 신경망에서 다룬 것처럼 얕은 층의 특징 맵은 해상도가 높고 수용 영역이 좁아 작은 물체에 적합하고, 깊은 층의 특징 맵은 해상도가 낮고 수용 영역이 넓어 큰 물체에 적합합니다. 크기별로 알맞은 층에서 검출하면 물체의 크기 변화에 강해집니다.
이 아이디어는 깊은 층의 의미 정보를 얕은 층으로 다시 전달해 모든 크기의 특징 맵이 풍부한 의미를 갖도록 만든 특징 피라미드 신경망(Feature Pyramid Network, FPN)으로 발전했으며, 오늘날 대부분의 검출기가 이 구조를 사용합니다.
RetinaNet과 클래스 불균형
1단계 검출기는 속도가 빠른 대신 2단계 검출기보다 정확도가 낮았습니다. 2017년 린(Tsung-Yi Lin) 연구진은 그 원인을 클래스 불균형에서 찾았습니다. 1단계 검출기는 이미지마다 수만 개의 앵커를 평가하는데, 그중 물체가 있는 앵커는 몇 개뿐이고 나머지는 모두 배경입니다. 쉬운 배경 앵커 수만 개의 작은 손실이 모이면, 소수의 물체 앵커에서 나오는 손실을 압도해 버립니다.
이들은 손실 함수에서 다룬 포컬 손실(Focal Loss)을 제안해, 이미 잘 맞히는 쉬운 배경의 손실을 크게 줄였습니다. 이를 적용한 RetinaNet은 1단계 검출기이면서 2단계 검출기보다 높은 정확도를 기록했습니다. 2단계 검출기는 첫 단계에서 대부분의 배경을 걸러 내므로 이 문제를 자연스럽게 피했던 것입니다.
앵커 없는 검출과 DETR
앵커 박스는 크기와 비율을 사람이 정해야 하고, 양성과 음성을 정하는 규칙도 복잡합니다. 그래서 앵커 없이 검출하는 앵커 없는 검출기(Anchor-free Detector)가 등장했습니다. 특징 맵의 각 위치가 물체의 중심인지를 예측하고, 그 위치에서 상자의 네 변까지의 거리를 직접 예측하는 방식입니다. 물체를 점으로 보고 그 점의 위치와 상자 크기를 예측하는 CenterNet 등이 대표적입니다.
2020년 페이스북 연구진이 발표한 DETR(DEtection TRansformer)은 접근 자체를 바꾸었습니다. 합성곱 신경망으로 추출한 특징을 트랜스포머에 넣고, 정해진 개수(예를 들어 100개)의 질의 벡터가 각자 물체 하나씩을 찾아 상자와 범주를 출력합니다. 물체가 없으면 “물체 없음” 범주를 출력합니다.
학습할 때는 예측 100개와 정답 상자들을 일대일로 짝지어 손실을 계산합니다. 각 정답에 가장 잘 맞는 예측 하나만 짝이 되므로, 신경망은 처음부터 중복 없이 예측하도록 학습되어 비최대 억제가 필요 없습니다. 앵커도, 비최대 억제도 없는 간결한 구조를 보여 주었지만, 초기 모델은 학습이 매우 느리고 작은 물체에 약했습니다. 이후 개선된 변형들이 이 단점을 크게 줄였습니다.
검출 성능의 평가
분류는 정답과 비교해 정확도를 계산하면 되지만, 검출은 상자의 위치와 개수가 함께 맞아야 하므로 평가가 더 복잡합니다. 먼저 각 예측 상자를 맞음과 틀림으로 나눕니다. 예측 상자가 아직 짝지어지지 않은 같은 범주의 정답 상자와 IoU 0.5 이상으로 겹치면 맞은 예측인 참 양성(True Positive)이고, 그렇지 않으면 틀린 예측인 거짓 양성(False Positive)입니다. 어떤 예측과도 짝지어지지 못한 정답 상자는 놓친 것입니다.
여기서 지도 학습(Supervised Learning)에서 다룬 두 지표를 사용합니다. 정밀도(Precision)는 예측한 상자 중 맞은 비율이고, 재현율(Recall)은 정답 상자 중 찾아낸 비율입니다. 신뢰도 기준을 낮추면 더 많은 상자를 출력하므로 재현율은 오르지만 틀린 상자도 늘어 정밀도는 떨어집니다. 그래서 하나의 기준값이 아니라, 기준값을 바꿔 가며 두 지표가 함께 변하는 모습 전체를 평가합니다.
정답 물체가 4개인 이미지에서 검출기가 상자 5개를 출력했고, 신뢰도 순으로 맞음, 맞음, 틀림, 맞음, 틀림이었다고 하겠습니다. 상위 1개까지 보면 정밀도 1.0과 재현율 0.25, 상위 2개까지는 1.0과 0.5, 3개까지는 0.667과 0.5, 4개까지는 0.75와 0.75, 5개까지는 0.6과 0.75입니다. 이 점들을 재현율을 가로축으로 이어 그린 것이 정밀도-재현율 곡선(Precision-Recall Curve)입니다.
평균 정밀도(Average Precision, AP)는 이 곡선 아래의 넓이입니다. 곡선이 들쭉날쭉하므로, 각 재현율에서의 정밀도를 그보다 높은 재현율에서 얻을 수 있는 최대 정밀도로 바꾸어 계산합니다. 위의 예에서는 재현율이 0.25만큼 늘어날 때마다 정밀도 1.0, 1.0, 0.75가 적용되어 \(0.25 \times 1.0 + 0.25 \times 1.0 + 0.25 \times 0.75 = 0.6875\)가 됩니다. 정답 물체 하나를 끝내 찾지 못했으므로, 마지막 0.25 구간은 넓이에 더해지지 않습니다.
AP는 범주마다 계산하며, 모든 범주의 AP를 평균한 값을 mAP(mean Average Precision)라 합니다. IoU 기준 0.5에서 계산한 AP@0.5가 오랫동안 쓰였고, 현재 널리 쓰이는 COCO 데이터셋의 기준은 IoU 기준을 0.5부터 0.95까지 0.05 간격으로 바꿔 가며 계산한 AP를 평균합니다. 위치가 조금만 어긋나도 점수가 깎이므로, 상자를 얼마나 정밀하게 맞추는지까지 반영합니다.
- Tip : 논문이나 모델 소개에 적힌 mAP는 사용한 IoU 기준과 데이터셋에 따라 크게 달라집니다. AP@0.5로 계산한 값과 COCO 기준으로 계산한 값은 같은 모델이라도 차이가 크므로, 두 모델을 비교할 때는 반드시 같은 기준인지 확인해야 합니다.
검출기 정리
| 방식 | 대표 모델 | 원리 | 장점 | 한계 |
|---|---|---|---|---|
| 2단계 검출 | R-CNN, Faster R-CNN | 후보 영역을 제안한 뒤 분류 | 높은 정확도 | 상대적으로 느림 |
| 1단계 검출 | YOLO, SSD | 모든 위치에서 범주와 상자를 한 번에 예측 | 빠른 속도, 실시간 처리 | 작은 물체와 위치 정밀도에 약했음 |
| 포컬 손실 | RetinaNet | 쉬운 배경의 손실을 줄임 | 1단계로 2단계 수준의 정확도 | 손실 함수 조정 필요 |
| 앵커 없는 검출 | CenterNet | 물체의 중심점과 상자 크기를 예측 | 앵커 설계가 필요 없음 | 겹친 물체의 중심이 가까우면 혼동 |
| 트랜스포머 검출 | DETR | 질의 벡터가 물체를 하나씩 찾음 | 비최대 억제가 필요 없음 | 초기 모델은 학습이 느림 |
객체 검출의 발전은 반복되는 계산을 없애고, 사람이 정하던 규칙을 학습으로 바꾸는 과정이었습니다. R-CNN은 후보 영역마다 신경망을 실행했고, Faster R-CNN은 계산을 공유하고 후보 제안까지 학습했으며, YOLO는 후보 제안 단계를 없앴고, DETR은 앵커와 비최대 억제까지 없앴습니다.
어떤 검출기를 고를지는 속도와 정확도의 균형에 달려 있습니다. 감시 카메라나 자율 주행처럼 실시간 처리가 필요하면 1단계 검출기가, 의료 영상이나 위성 사진처럼 정밀함이 중요하고 시간 여유가 있으면 정확도가 높은 검출기가 적합합니다. 검출할 물체의 크기 분포와 밀집 정도도 함께 고려해야 합니다.
- Writer by : 윤대희
댓글 남기기