7.1 사물 탐지 알고리즘의 일반적인 프레임워크
사물 탐지 프레임워크 4개 요소
- 영역 제안(region proposal)
- 이미지에서 시스템이 처리할 영역인 RoI(regions of interest)를 제안하는 딥러닝 모델 또는 알고리즘
* RoI: 이미지 내 물체가 존재할 것이라 예상되는 영역
- 이 컴포넌트는 각각 물체 존재 확신도(objectness score)가 매겨진 많은 수의 박스 정보 출력
- 이 중 높은 물체 존재 확신도가 매겨진 박스는 추가 처리를 위해 전달 - 특징 추출 및 예측
- 각 박스 영역의 시각적 특징 추출
- 이러한 특징을 평가하여 물체 존재 여부와 물체의 클래스 판단(ex: 사물 분류 컴포넌트) - 비최대 억제(non-maximum suppression, NMS)
- 이 단계쯤이면 모델이 같은 물체에 대해 복수의 박스를 발견했을 가능성 높음
- NMS는 같은 물체에 대한 중복된 박스 탐지&통합 → 물체 하나마다 하나의 박스만 남도록 역할 - 평가 지표
- 이미지 분류의 정확도, 정밀도, 재현율 등과 비슷하게 사물 탐지에도 성능을 측정하는 고유 평가 지표 있음
- 가장 널리 쓰이는 평균평균정밀도(mean average precision, mAP)와 PR 곡선(precision-recall curve), 중첩률(intersection over union, IoU)
7.1.1 영역 제안
시스템이 이미지를 관찰하고 추가 분석이 필요한 RoI를 제안
* RoI: 이미지 내 물체가 존재할 것이라 에상되는 영역
RoI(물체 존재 확신도)가 높은 영역은 다음 단계로 전달, 낮은 영역은 추가 분석 없이 폐기
- 영역을 제안하는 방식은 여러가지
- 초기에는 선택적 탐색(selective search) 알고리즘
- 그 외 방식은 딥러닝을 이용해 추출한 복잡한 시각적 트징에 근거해서 영역 제안
(나중에 자세히) - 신경망은 존재 확신도에 따라 전경과 배경으로 나눔
- RoI가 설정된 임곗값을 초과하는 영역은 전경으로 간주
- 신경망의 이후 층에서 추가 분석의 대상 - 임곗값은 문제에 따라 조절 가능
7.1.2 특징 추출 및 예측
- 특징 추출을 위해 사전 학습된 합성곱 신경망 포함
- 추출된 특징을 이용하여 당면한 문제를 해결하거나 물체의 유형 분류
- 물체를 포함했을 가능성이 높다고 판단된 모든 영역을 신경망이 분석
각 영역마다 다음 두 가지 예측
- 경계 박스 예측
- 물체를 감싸는 박스의 좌표를 예측
- 경계 박스의 좌표는 튜플 (x, y, w, h)로 표현
- x와 y는 경계 박스의 중심점 좌표
- w와 h는 경계 박스의 너미와 높이 - 클래스 예측
- 해당 영역의물체가 각 클래스에 속할 확률을 예측하는 소프트맥스 함수
제안되는 영역의 수가 매우 많아, 물체마다 여러 개의 경계 박스 생김
- 같은 사물을 포함하는 여러 개의 경계 박스 중 사물을 가장 잘 포함하는 박스로 통합
7.1.3 비최대 억제
사물 탐지 알고리즘의 문제점 중 하나
- 같은 물체를 여러 번 탐지할 수 있다는 것
비최대 억제(non-maximum suppression, NMS)
- 물체 하나에 경계 박스가 하나만 남도록 하는 기법
- 예측 확률이 가장 높은 경계 박스만 남기고 나머지는 배제
NMS 알고리즘 작동 과정
- 예측 확률이 미리 설정된 신뢰 임곗값(confidence threshold)에 미치지 못하는 경계 박스 폐기
- 남아 있는 경계 박스를 하나씩 살펴본 후 예측 확률이 가장 높은 것 선택
- 선택된 박스와 예측 클래스가 같은 박스의 중복 영역을 IoU로 계산
* 중첩률(intersection over union, IoU) : 같은 클래스를 예측한 경계 박스끼리의 평균 중복 영역 - IoU가 미리 설정한 임곗값(NMS 임곗값)에 미치지 못하는 경계 박스 배제
(대게 0.5를 임곗값으로 설정, 경계 박스를 얼마나 남기느냐에 따라 이 값을 조정할 수 있음)
NMS 알고리즘은 사물 탐지 프레임워크에서 거의 표준으로 사용
하이퍼파라미터 조정이 필요할 수도 있는 중요한 단계
7.1.4 사물 탐지 성능 평가 지표
크게 두가지
- 초당 프레임 수(frames per second, FPS)
- 평균평균정밀도(mean Average Precision, mAP)
초당 프레임 수(FPS) : 탐지 속도의 평가 지표
ex)
R-CNN의 처리 속도는 7FPS
SSD의 처리 속도는 59FPS
성능 비교 실험 결과를 언급한 논문에서도 다음과 같은 구절
- '신경망 X는 Z FPS의 속도에서 mAP Y%를 달성했다.'
평균평균정밀도(mAP) : 신경망 예측 정밀도의 평가 지표
- 0~100 사이의 값
- 값이 클수록 성능이 좋은 것은 정확도와 마찬가지
- 계산 방법은 정확도와 조금 차이가 있음
- IoU와 PR 곡선을 먼저 이해하자
중첩률(IoU)
- 2개의 경계 박스가 중첩되는 정도를 나타내는 값
- 정답 경계 박스와 예측 경계 박스의 IoU를 계산하여 결과를 결정
- 중첩률은 0(전혀 겹쳐지지 않음) ~ 1(완전히 겹침)까지의 값을 가짐
- 값이 클수록 좋음
예측 결과의 중첩률을 계산하는데 필요한 정보
- 정답 경계 박스(B_ground truth) : 수동으로 레이블된 경계 박스
- 예측 경계 박스(B_predicted) : 모델의 예측 결과
- 중첩률은 정확한 예측을 정의하는 용도로 사용
- 중첩률이 임곗값을 초과하면 해당 예측은 정답을 맞힌 것(TP), 그렇지 않으면 틀린 것(FP)
PR 곡선
- 진양성(TP)과 위양성(FP)를 정의했으니,
주어진 클래스에 대한 탐지 결과의 재현율(recall)과 정밀도(precision)을 계산할 수 있음
- 모든 대상 클래스에 대해 정밀도와 재현율을 계산하고 나면 PR 곡선을 그릴 수 있음
각 클래스마다 PR 곡선을 그려보면 사물 탐지 모델의 성능을 평가할 수 있음
- 성능이 뛰어난 모델
= 재현율이 증가할 때도 정밀도가 하락하지 않는다
= 임곗값을 변화시켜도 정밀도가 하락하지 않는다 - 성능이 낮은 모델
= 재현율을 끌어올리면 위양성(FP)의 수가 늘어남
→ 대부분의 PR 곡선이 높은 정밀도로 시작해서 정밀도가 하락하는 패턴 보이는 이유
PR 곡선 아래의 면적인 AUC(area under the curve)를 계산하여 평균정밀도(AP) 계산
그다음 각 클래스의 평균정밀도의 평균인 평균평균정밀도(mAP)를 계산
정리: mAP 계산법
- 각 경계 박스의 물체 존재 확신도 계산(해당 경계 박스 영역 안에 물체가 존재할 확률)
- 정밀도와 재현율 계산
- 각 분류 클래스마다 확률의 임곗값을 변화시키며 PR 곡선 그림
- PR 곡선의 AUC를 계산하여 평균정밀도 계산, 각 분류 클래스마다 평균정밀도 계산
- 각 클래스의 평균정밀도의 평균을 계산
7.2 영역 기반 합성곱 신경망(R-CNN)
2014 R-CNN
2015 Fast R-CNN
2016 Faster R-CNN
... 변종 늘어가는 중
7.2.1 R-CNN이란
- 영역 기반 신경망 구조 중 가장 기본적인 구조
- 다중 물체 인식 알고리즘의 동작을 이해하기 위한 밑바탕이 되는 구조
- 합성곱 신경망이 물체 인식 및 위치 특정 문제에서 대규모로 응용된 최초의 사례
- 입력 이미지
- 선택적 탐색 알고리즘을 이용해서 ROI 추출
- 추출된 영역
- 특징 추출을 학습한 CNN
- 분류기 및 경계 박스 회귀 모듈
R-CNN의 네 가지 구성 요소
- RoI 추출기
- 영역 제안 모듈
- 선택적 탐색 알고리즘을 이용해서 입력 이미지를 스캔하며 얼룩 패턴이 있는 영역을 찾아 다음 단계에서 추가 처리하도록 RoI로 제안
- 제안된 RoI는 고정된 크기로 추출
* RoI : 물체를 포함하고 있을 가능성이 높은 이미지의 영역 - 특징 추출 모듈
- 사전 학습된 합성곱 신경망에 앞서 제안된 RoI 영역을 입력해서 특징 추출
- 합성곱 신경망 특징 추출기가 수행 - 분류 모듈
- 서포트 벡터 머신 등 기존 머신러닝 알고리즘으로 분류기를 학습
- 특징 추출 모듈에서 추출한 특징으로 해당 영역의 물체가 무엇인지 분류 - 위치 특정 모듈
- 경계 박스 회귀 모듈(bounding-box regressor)
- 회귀 알고리즘은 연속값을 예측 대상으로 함
- 이 모듈의 예측 대상은 경계 박스의 위치와 크기
- 경계 박스는 (x, y, w, h)와 같은 튜플로 표현
선택적 탐색
- 물체를 포함하는 영역을 제안하는 데 사용하는 탐욕적 탐색 알고리즘
- 서로 비슷한 픽셀이나 질감을 가진 영역을 직사각형 박스 영역 안에 모으는 방식, 물체가 존재하는 영역 찾음
- 완전 탐색 알고리즘 : 이미지 내 가능한 모든 위치를 탐색
- 상향식 영역 통합 알고리즘 : 유사한 영역을 계층적으로 통합해가는 알고리즘
을 적용해서 가능한 모든 물체 위치를 감지
- 상향식 영역 통합 알고리즘은 다음의 과정을 통해 약 2,000개에 이르는 초기 분할된 영역을 비슷한 것끼리 계층적으로 통합
- 인접한 다른 모든 영역과의 유사도를 계산
- 가장 유사도가 높은 두 영역을 통합, 통합된 영역과 인접한 모든 영역과의 유사도 계산
- 물체 전체가 단일 영역이 될 때까지 이 과정 반복
Bbox reg : 경계 박스 회귀 모듈
SVMs : 서포트 벡터 머신
- 입력 이미지에서 선택적 탐색 알고리즘을 통해 RoI를 제안
- 제안된 영역이 이미지에서 추출되어 합성곱 신경망에 입력
- 각 영역을 합성곱 신경망에 통과시켜 특징을 추출
- 신경망이 각 영역의 경계 박스와 분류 결과를 예측
R-CNN 학습
RoI 추출기, 특징 추출 모듈, 분류 모듈, 경계 박스 회귀 모듈 4개의 구성 요소로 구성
- RoI 추출기를 제외한 모든 모듈은 학습이 필요
학습 절차
- 특징 추출 모듈로 사용할 합성곱 신경망을 학습
- 일반적인 합성곱 신경망의 학습 절차 따름
- 대게 사전 학습된 신경망을 미세 조정해서 사용 - SVM 분류기 학습
- SVM 알고리즘은 딥러닝 분류기와 마찬가지로 레이블링된 데이터를 학습 - 경계 박스 회귀 모듈 학습
- 이 모델의 출력은 K가지 클래스에 속하는 물체가 포함된 경계 박스를 나타내는 4개의 실숫값
R-CNN의 단점
장점 : 구조를 이해하기 쉽고, 당시 최고 성능
그러나 R-CNN은 하나의 신경망으로 구성된 완결적인 시스템이 아님
서로 독립된 여러 알고리즘이 조합되어 동작
단점
- 사물 탐지 속도가 느리다.
- 이미지 한 장마다 2,000개 이상의 RoI가 제안, 이들 영역이 모두 전체 파이프라인(CNN 특징 추출기 및 분류기)을 통과해야 하는 구조
- RoI 하나마다 합성곱 신경망의 순방향 계산이 필요, 그 결과를 재사용하지 못하므로 계산 부하가 크고 속도 느림
- 계산 부하가 크다는 점이 R-CNN이 널리 응용되지 못하는 원인 (특히 자율주행차 등 실시간 처리가 필요한 분야) - 학습 과정이 다단계로 구성된다.
- R-CNN을 학습하려면 CNN 특징 추출기, SVM 분류기, 경계 박스 회귀 모듈까지 세 모듈을 학습해야 함
- 이들 모듈의학습 과정은 복잡하고 각각 따로 진행해야 함 - 학습 공간 및 시간 복잡도가 높다.
- SVM 분류기와 경계 박스 회귀 모듈을 학습할 때 각 RoI에서 추출된 특징을 디스크에 저장해야 함
- VGG16 같은 대규모 신경망을 사용하면, 수천장 이미지 학습에 GPU를 사용해도 수일이 걸림
- 추출된 특징을 저장하기 위해 필요한 하드 디스크 용량은 수백 GB
R-CNN의 단점인 느린 소도와 정확도를 개선하면서도 딥러닝만으로 완결되는 시스템의 필요성
7.2.2 Fast R-CNN
R-CNN과 비슷한 점이 많지만, 다음 두 가지 설계 수정을 통해 처리 속도와 정확도가 개선
- 영역 제안 모듈로 파이프라인 시작
- CNN 특징 추출기를 맨 앞에 배치해 전체 입력 이미지로부터 영역 제안
- 이렇게 하면 2,000개 이상의 중첩된 영역을 2,000개 이상의 CNN으로 처리하는 대신 전체 이미지를 하나의 CNN으로 처리할 수 있음 - CNN에 SVM 분류기 대신 소프트맥스층을 추가해서 분류도 수행
- 하나의 모듈이 두 가지 일(특징 추출, 사물 분류)을 할 수 있게 됨
Fast R-CNN의 구조
- 신경망의 마지막 특징 맵을 바탕으로 영역을 제안
→ 전체 이미지를 입력받는 CNN 하나만 학습하면 됨 - 물체의 각 클래스를 대상으로 하는 SVM 분류기를 여러 개 학습하지 않고, 소프트맥스층을 두어 각 클래스의 확률을 직접 구함
- 신경망 하나와 여러 개의 SVM 분류기를 학습시켜야 했던 복잡한 학습 과정이 신경망 하나로 매우 간단해짐
Fast R-CNN의 구성 요소
- 특징 추출 모듈
- 신경망은 ConvNet으로 시작하여 전체 이미지에서 특징을 추출 - RoI 추출기
- 선택적 탐지 알고리즘을 사용해서 약 2,000개 영역을 제안 - RoI 풀링층
- Fast R-CNN에서 새로 추가된 요소, CNN 마지막 층의 특징 맵에서 전결합층에 입력하거나 출력층으로 출력할 고정 크기 영역을 추출하는 역할
- 제안된 RoI 영역에 해당하는 특징을 최대 풀링을 통해 고정 크기(HxW)로 추출
- RoI 풀링층은 Faster R-CNN을 설명 - 2개의 출력층
- RoI의 각 클래스에 속할 확률을 출력하는 소프트맥스층
- 최초 제안된 RoI와의 차이를 출력하는 경계 박스 회귀층
Fast R-CNN의 다중 과업 손실 함수
- 물체의 클래스 분류와 경계 박스 위치 및 크기를 함께 학습하는 완결된 신경망 구조
→ 손실 함수도 클래스 분류 & 경계 박스 위치 및 크기를 함께 다루는 다중 과업 손실 함수(multi-task loss)여야 함 - 사물 탐지 문제는 사물 분류와 물체 위치 특정의 두 가지 목표 최적화가 목표
* 손실 함수 2개 필요
- L_cls : 사물 분류의 손실 함수
- L_loc : 물체 위치 특정의 손실 함수
[Fast R-CNN에는 각각 다른 손실 함수가 적용되는 다음 2개의 출력층]
분류
- 첫 번째 출력은 K+1개 카테고리(RoI마다)에 대한 이산확률 분포(추가된 한 가지는 배경을 의미)
- 확률 P : K+1개 출력을 갖는 소프트맥스 함수가 계산
- 분류에 대한 손실 함수는 정답 클래스 u에 대한 로그 손실 함수
- 이때 정답 레이블 u ∈ 0, 1, 2, ... (K+1)이며, u=0은 배경을 의미
- p : RoI의 K+1가지 클래스에 대한 이산 확률 분포
회귀
- 두 번째 출력은 K가지 클래스에 대한 경계 박스의 오프셋값 v = (x, y, w, h)
- 정답 레이블 u에 대한 경계 박스의 손실 함수
- L1_smooth : 경계 박스 손실, t와 v의 차이를 매끈한 L1 손실 함수로 측정하는 함수
- L2 같은 회귀를 위한 다른 손실 함수보다 예욋값에 덜 민감하기 때문에 안정적 - v : 정답 경계 박스
- t^u : 예측 경계 박스
전체 손실 함수
- [u>=1]은 해당 영역에 물체가 포함되지 않고 배경(u=0)뿐일 때를 구분하기 위한 표시 함수
- 이 경계 박스는 무시됨
Fast R-CNN의 단점
- 성능 측정 시점에서는 매우 속도가 빠름
- 합성곱 신경망이 이미지 한 장마다 영역 제안을 2,000개나 처리할 필요 없음
- 합성곱 연산은 이미지 한 장 당 한 번뿐, 특징 맵도 이때 생성
- 특징 추출기, 사물 분류기, 경계 박스 회귀 모듈까지 모든 구성 요소가 CNN에 포함되어 있기 때문에 학습 속도도 빠름 - 큰 병목 지점 : 영역 제안을 생성하는 선택적 탐지 알고리즘은 여전히 속도가 느리며 별도의 모델이 들어 있음
- 딥러닝만으로 완결된 물체 인식 시스템을 만드는 마지막 마지막 단계는 이 영역 제안 알고리즘을 신경망에 통합시키는 단계
→ Faster R-CNN
7.2.3 Faster R-CNN
- Fast R-CNN과 마찬가지로 이미지가 합성곱 신경망에 그대로 입력되어 특징 맵 생성
- 그러나, 영역 제안을 위해 선택적 탐지 알고리즘 대신 영역 제안 신경망(region proposal network, RPN)을 도입해서 영역 제안을 학습 과정에 포함
- 예측 영역 제안은 RoI 풀링층을 사용하여 재구성되고 제안된 영역 내에서 이미지를 분류하고 경계 박스의 오프셋값 예측에 사용
- 두 가지 개선 사항 모두 영역 제안 수를 감소시켜 성능 측정 시점의 연산량을 줄이고 실시간에 가까운 처리를 수행하며 당시 최고 성능 달성
Faster R-CNN의 구조
영역 제안 신경망(RPN)
- 물체가 있을 수 있는 대략적인 위치의 영역을 식별하는 역할
- 선택적 탐색 알고리즘을 대체하는 합성곱 신경망
- 특징 추출기에서 생성한 특징 맵에서 추가 분석을 이어갈 RoI를 제안하는 역할
- RPN의 출력 : 물체 존재 확신도, 경계 박스 위치
Fast R-CNN
- 물체를 분류하고 경계 박스를 통해 그 위치를 정밀하게 바로 잡음
- 특징 추출기 역할을 하는 기본 신경망
: 입력 이미지에서 특징을 추출하는 일반적인 사전 학습 CNN 모델 - RoI를 고정 크기로 변환하는 RoI 풀링층
- 2개의 전결합층으로 나뉜 출력층
- 하나는 클래스 분류 확률을 출력하는 소프트맥스 분류기
- 다른 하나는 경계 박스를 예측하는 경계 박스 회귀 모듈 CNN
- 입력 이미지가 신경망에 입력
- 입력 이미지에서 사전 학습된 CNN을 이용해서 특징 추출
- 이 특징은 병렬로 Faster R-CNN의 다음 두 갈래 경로를 따라 전달
다음 두 갈래 경로
- RPN : 이미지 내 어느 위치에 물체가 존재하는지 판단하는 경로
- 이 시점에서는 이미지에 어떤 물체가 무엇인지 알 수 없음
- 어떤 위치에 물체가 있을 수도 있다는 가능성이 있을 뿐 - RoI 풀링층 : 고정 크기 특징을 추출하는 경로
이 신경망 구조는 전체 구조가 학습 가능, 다음 요소로 구성된 사물 탐지 파이프라인 전체를 신경망에 내장시키는 데 성공
- 기본 특징 추출기
- 영역 제안 모듈
- RoI 풀링층
- 사물 분류기
- 경계 박스 회귀 모듈
기본 특징 추출기
입력 이미지에서 특징을 추출하는 데 사용
- Fast R-CNN과 비슷하게 먼저 사전 학습된 CNN에서 분류기 부분 잘라냄
- 해결하려는 문제에 적합한 CNN 구조라면 어떤 것이라도 기본 특징 추출기로 사용 가능
- Faster R-CNN의 논문에서는 이미지넷 데이터셋으로 사전 학습된 ZF와 VGG 신경망 사용
- MobileNett : 효율적으로 규모를 줄여 속도에 최적화된 것이 특징, 330만 개 파라미터
- ResNet-152 : 신경망의 가중치 수는 6천만 개
- DenseNet : 파라미터 수 감축 + 성능 개선
* VGGNet vs. ResNet
- Resnet은 층수가 많으므로 더 복잡한 특징 학습
- 분류, 사물 탐지에서 마찬가지
- 잔차 연결과 배치 정규화를 적용한 ResNet은 층수가 많은 신경망 학습에 더욱 유리
합성곱층은 자신의 이전 층에서 전달된 정보를 더욱 추상화하는 효과
- 첫 번째 층은 대개 모서리 학습
- 두 번째 층은 모서리가 조합된 복잡한 도형 학습
- 마지막 층에서 RPN에 입력해서 물체가 있는 영역을 추출할 수 있는 특징 맵 만들어냄
영역 제안 모듈(RPN)
사전 학습된 합성곱 신경망에서 만든 특징 맵의 정보를 기초로 물체가 위치했을 법한 영역을 찾아내는 역할
- Faster R-CNN은 선택적 탐색 알고리즘 대신 RPN을 사용해서 RoI 제안 기능을 신경망 구조 안에 포함
RPN을 어텐션 네트워크(attention network)라고 부르기도 함
- 이 신경망이 전체 신경망의 관심사를 이미지 내 물체가 있을 만한 영역으로 유도하는 역할을 함
2개의 층으로 구성
- 3 x 3 전결합 합성곱층(512채널)
- 병렬로 배치된 2개의 1 x 1 합성곱층
- 하나는 해당 영역이 물체를 포함하는지 예측하는 분류층(배경인지 전경인지 판단하는 점수)
- 다른 하나는 경계 박스 회귀를 담당
- 3 x 3 크기의 슬라이딩 윈도우를 가진 기반 신경망의 마지막 특징 맵에 3 x 3 합성곱 연산 적용
- 합성곱 연산 결과는 2개의 1 x 1 합성곱층으로 전달
- 이 두 합성곱층은 각각 영역의 물체 포함 여부 예측과 경계 박스 회귀를 맡음
- 두 층의 예측 목표는 물체의 클래스나 경계 박스가 아님
- 해당 영역에 추가 분석이 필요한 물체가 존재하는지 여부 판단 - 현재 영역의 물체 존재 확신도를 판단하는 이진 분류기 포함
* 물체 존재 확신도 : 해당 영역이 전경에 해당하는지 배경에 해당하는지 확률
ex) '이 영역에 물체가 존재하는가?'를 확인
- 그렇다고 판단되면 이 영역을 추가 분석하기 위해 RoI 풀링층(이어서 출력층으로도)으로 전달
* 전결합 합성곱 신경망
- 사물 탐지에 사용되는 신경망의 중요한 특징, '전결합 합성곱층'
- 전결합 합성곱 신경망(FCN)에는 전결합층이 없음
* 전결합층(전결합 소프트맥스층) : 보통 신경망 마지막 층에 배치되어 예측 결과를 만듦 - 대신 평균 풀링을 적용
FCN의 장점
- 전결합층 없이 합성곱 연산만 사용하므로 속도가 빠름
- 이미지와 신경망을 읽어 들일 메모리만 충분하다면 받아들일 수 있는 이미지의 크기에 제한이 없음
FCN의 단점
- 입력 이미지의 크기가 고정됨
- 사실 알고리즘 구현상의 문제로 고정 크기 입력을 사용하는 것이 더 편한 경우 많음
ex)
배치 단위로 이미지를 처리해야 하는 경우
(속도 향상을 위해 GPU를 사용해서 이미지를 배치 단위로 다루는 경우)
- 모든 이미지의 가로세로 크기가 동일해야 함
경계 박스 회귀층에서 경계 박스를 예측하는 방법
- 경계 박스 : 튜플 (x, y, w, h)로 결정되는 사각의 물체를 둘러싼 영역
- x, y : 경계 박스 중심점 좌표
- w, h : 경계 박스 너비와 높이 - 연구 과정에서 좌표 (x, y)를 정의하는 데 어려움
- 신경망의 예측값을 이미지 내부에 해당하는 범위 내로 강제하는 규칙 적용해야 했기 때문 - 대안 : 이미지 안에 기준 역할을 할 앵커 박스 정의
- 다음 경계 박스 회귀층이 이 행커 박스를 기준으로 한 오프셋인 델타(Δx, Δy, Δw, Δh)를 예측하도록 하는 방법
앵커 박스
RPN은 슬라이딩 윈도우 접근 방식을 사용하여 특징 맵의 각 위치마다 k개의 영역을 생성
- 이들 영역은 앵커 박스로 표현
앵커
- 해당 슬라이딩 윈도우의 중심에 위치
- 각 앵커는 서로 다른 크기의 앵커 박스가 있음
- 다양한 물체 포함할 수 있도록 가로세로 비율, 크기 서로 다를 수 있음
- 중첩률을 기준으로 정답 경계 박스와 가장 많은 부분이 중첩되는 경계 박스 선택
앵커 박스
- 위치 고정
- 물체의 위치를 예측하기 위한 참조점 역할
- 논문에서는 중심점이 동일한 앵커 박스 9개 만듦
- 각각 세 가지 가로세로 비율과 크기
RPN 학습
- cls layer : 물체 유무 예측 전결합층
- reg layer : 경계 박스 오프셋 예측 전결합층
RPN
- 앵커 박스의 물체 존재 확신도를 출력할지 여부 결정
- 물체 좌표값의 네 가지 요소(위치 파라미터)를 예측하도록 학습
- 정답 경계 박스(ground truth) : 학습 데이터는 사람이 직접 레이블링한 경계 박스 사용, 수동 레이블링
중첩 확률 p
- 앵커 박스가 정답 경계 박스와 얼마나 중첩되는가
- 앵커 박스가 정답 경계 박스와 중첩되는 부분이 많다면, 물체 유무(object versus no object)는 참으로 분류
- 적다면 물체 유무가 거짓으로 분류
학습 과정
- 물체 유무가 참과 거짓인 앵커 박스가 2개의 전결합층에 입력
- 한 위치에서 생성되는 앵커 박스 수가 k라고 할 때 RPN은 2k개의 물체 존재 확신도 점수와 4k개의 좌표를 출력
- ex) 슬라이드 윈도우당 앵커 박스 수가 9개라면 RPN은 18개의 물체 존재 확신도와 36개의 좌표 출력
* 독립 애플리케이션으로서의 RPN
RPN을 독립 애플리케이션으로 불 수도 있음
- ex) 물체 클래스가 한 가지뿐이라면 물체 존재 확신도 자체를 해당 클래스로 확률로 해석 가능
→ 전경이 클래스, 배경이 클래스 아님
RPN을 클래스가 한 가지인 사물 탐지에 사용하는 이유
- 학습과 예측 모두에서 속도 향상을 기대할 수 있기 때문
- RPN은 합성곱층으로만 구성된 간단한 신경망
- 분류용 기본 신경망과 비교하면 예측 속도 더 빠름
전결합층
- 출력층에 해당하는 전결합층은 두 가지 값 입력받음
- 합성곱층에서 출력한 특징 맵
- RPN에서 제안한 RoI - 출력층은 RoI를 분류하고 해당 영역에 있는 물체의 클래스와 경계 박스를 결정하는 파라미터 출력
- Faster R-CNN에서는...
- 소프트맥스층이 사물 분류를 담당
- 위치 회귀층은 선형 회귀 모델이 경계 박스의 위치를 예측 - 이들 전결합층의 파라미터 역시 다중 과업 손실 함수를 최적화하는 방법으로 학습
다중 과업 손실 함수
Fast R-CNN과 마찬가지로 Faster R-CNN도 학습에 다중 과업 손실 함수 사용
기호 설명
- p : 앵커 박스 i에 물체가 있을 확률, p*는 앵커 박스 i의 물체 존재 여부의 정답
- t : 예측한 경계 박스를 결정하는 네 가지 파라미터, t*는 정답 파라미터
- Ncls : 분류 손실의 정규화항. 논문에서는 미니배치의 크기에 마줘 156 이하로 설정
- Nloc : 경계 박스 회귀의 정규화항, 논문에서는 앵커 박스 수에 맞춰 2400 이하로 설정
- Lcls(p, p*) : 이진 분류의 로그 손실 함수. 다중 분류를 대상이 각 클래스에 속하늕지 여부로 해석하면 다음과 같이 어렵지 않게 이진 분류로 변환 가능
- L1smooth : 경계 박스의 손실 함수는 예측한 경계 박스의 파라미터와 정답 경계 박스의 파라미터(t, t*)의 차이를 L1 손실 함수로 측정. L1 손실 함수는 L2 손실 함수에 비해 예외 값에 민감하지 않음
- λ : 조정용 파라미터. 논문에서는 10 이하의 값으로 설정해 Lcls와 Lloc의 가중치가 비슷
다중 과업 손실 함수의 수식
(잠시 정규화항과 인덱스 i는 없다고 생각)
수식을 단순화시키고 보니, 분류 손실과 위치 손실(경계 박스) 이 두 손실 함수의 합
- 모든 손실 함수는 정답에서 예측값을 빼는 형태로 오차 계산
* 교차 엔트로피 : 예측 확률 p와 정답 p*의 오차를 계산하는 로그 손실 함수
- 위치 손실(location loss)
- 경계 박스의 에측된 위치와 실제 위치(t, t*)의 차이를 매끈한 L1 손실 함수로 측정한 것
- 이 차이에 해당 영역의 물체 존재 여부인 p*를 곱
- 이 영역에 물체가 없다면 p*는 0이 되어 전체 위치 손실도 0이 됨
마지막으로 두 손실 함수를 합해 다중 과업 손실 함수 만듦
7.2.4 R-CNN과 그 변종 정리
R-CNN
- 경계 박스를 선택적 탐색 알고리즘이 제안
- 각 경계 박스의 영역 이미지에서 (AlexNet 등의) 합성곱 신경망이 특징 추출
- 이 특징을 통해 선형 SVM이 물체의 클래스, 선형 회귀 모델이 경계 박스의 위치를 각각 예측
Fast R-CNN
- 완결된 단일 모델이 되도록 R-CNN의 설계를 단순화
- CNN 뒤에 배치된 RoI 풀링층이 각 경계 박스 영역의 크기를 고정 크기로 변환하는 것이 특징
- 모델이 물체의 클래스 레이블과 RoI를 모두 직접 예측
Faster R-CNN
- 전체 과정을 하나의 딥러닝 모델로 만든 사물 탐지 모델
- 선택적 탐색 알고리즘을 영역 제안 신경망으로 대체
- 영역 제안 신경망은 CNN에서 추출한 전체 이미지의 특징 맵으로부터 RoI를 제안하도록 학습
R-CNN의 단점
실시간 사물 탐지기를 구현하지 못함
R-CNN 및 그 변종의 단점
- 학습 과정이 번잡하고 시간이 오래 걸림
- 학습이 여러 단게에 걸쳐 일어남(ex. 영역 제안과 분류)
- 추론 단계에서 신경망의 속도가 느림
개선 & 실시간 사물 탐지 달성
- 싱글샷 탐지기(single-shot detector, SSD), YOLO(you only look once)
다단계 탐지기와 단일 단계 탐지기
R-CNN 및 그 변종은 모두 영역 기반 방식
- 탐지 과정이 두 단계로 나뉨, '2단계 탐지기'
- 선택적 탐지 알고리즘이나 RPN을 통해 RoI를 추출, 가능한 경계 박스 수가 무한대이기 때문에 영역 제안 수는 상대적으로 희소
- 분류기는 제안된 영역만 처리
단일 단계 탐지기
- 영역 제안 추출 단계 건너뜀
- 이미지 내 가능한 모든 위치를 대상으로 직접 탐지 시도
- 처리가 빠르고 간단하지만, 성능이 소폭 하락
- ex) SSD, YOLO
'AI > 컴퓨터비전 기초' 카테고리의 다른 글
[CV 기초] 고급 합성곱 신경망 구조(LeNet, AlexNet, VGGNet, GoogLeNet, ResNet) (0) | 2024.04.19 |
---|---|
[CV 기초] 딥러닝 프로젝트 시동 걸기와 하이퍼파라미터 튜닝 (1) | 2024.04.17 |
[CV 기초] SSD, YOLO를 이용한 사물 탐지 (0) | 2024.04.15 |