객체 검출용 앵커 상자
딥러닝 신경망을 사용한 객체 검출은 영상에서 객체의 위치와 크기를 예측하는 빠르고 정확한 방법을 제공할 수 있습니다. 이상적인 경우라면 신경망은 객체의 스케일에 관계없이 제때에 유효한 객체를 반환합니다. 앵커 상자를 사용하면 딥러닝 신경망 프레임워크 검출에 대한 속도와 효율성이 향상됩니다.
앵커 상자란?
앵커 상자는 특정 높이와 너비를 갖는 미리 정의된 경계 상자 세트입니다. 이러한 상자는 검출하려는 특정 객체 클래스의 스케일과 종횡비를 캡처하도록 정의되며 일반적으로 훈련 데이터셋의 객체 크기를 기반으로 선택됩니다. 미리 정의된 앵커 상자는 검출 과정에서 영상 전체에 걸쳐 타일 형식으로 배치됩니다. 신경망은 타일 형식으로 배치된 모든 앵커 상자에 대한 확률과 함께, 배경, IoU(Intersection over Union), 오프셋 등의 기타 특성을 예측합니다. 예측은 각 개별 앵커 상자를 미세 조정하는 데 사용됩니다. 각기 다른 객체 크기에 여러 앵커 상자를 정의할 수 있습니다. 앵커 상자는 고정된 초기 경계 상자 추측값입니다.
신경망은 경계 상자를 직접 예측하지 않고 타일 형식 앵커 상자에 해당하는 확률과 미세 조정을 예측합니다. 신경망은 정의된 모든 앵커 상자에 대해 고유한 예측 세트를 반환합니다. 최종 특징 맵은 각 클래스에 대한 객체 검출을 나타냅니다. 앵커 상자를 사용하면 신경망이 여러 객체, 스케일이 서로 다른 객체, 겹치는 객체를 검출할 수 있습니다.
앵커 상자 사용 시 이점
앵커 상자를 사용하면 모든 객체 예측값을 한 번에 계산할 수 있습니다. 앵커 상자는 모든 잠재적 위치에서 별도의 예측값을 계산하는 슬라이딩 윈도우로 영상을 스캔할 필요성을 없애줍니다. 슬라이딩 윈도우를 사용하는 검출기의 예로는 ACF(Aggregate Channel Features) 또는 HOG(Histogram Of Gradients) 특징을 기반으로 하는 검출기를 들 수 있습니다. 앵커 상자를 사용하는 객체 검출기는 전체 영상을 한 번에 처리할 수 있으므로 실시간 객체 검출 시스템이 가능해집니다.
컨벌루션 신경망(CNN)은 입력 영상을 컨벌루션 방식으로 처리할 수 있기 때문에 입력의 공간 위치를 출력의 공간 위치와 관련지을 수 있습니다. 이 컨벌루션 대응점은 CNN으로 전체 영상의 영상 특징을 한 번에 추출할 수 있다는 것을 의미합니다. 이렇게 추출된 특징은 해당 영상의 해당 위치에 다시 연결할 수 있습니다. 앵커 상자를 사용하면 영상에서 특징을 추출하기 위한 슬라이딩 윈도우 방식을 사용할 필요가 없으므로 이에 대한 비용을 크게 절약할 수 있습니다. 앵커 상자를 사용하면 슬라이딩 윈도우 기반 객체 검출기의 세 단계(검출, 특징 인코딩, 분류)를 모두 포함하는 효율적인 딥러닝 객체 검출기를 설계할 수 있습니다.
앵커 상자 작동 방식
앵커 상자의 위치는 신경망 출력의 위치를 입력 영상에 다시 매핑하는 방식으로 결정됩니다. 이 과정은 모든 신경망 출력에 대해 복제됩니다. 그 결과 전체 영상에 걸쳐 일련의 타일 형식 앵커 상자가 생성됩니다. 각 앵커 상자는 한 클래스에 대한 특정 예측값을 나타냅니다. 예를 들어 아래 영상에는 위치당 두 개의 예측값을 생성하는 두 개의 앵커 상자가 있습니다.
각 앵커 상자는 영상 전체에 걸쳐 타일 형식으로 배치됩니다. 신경망 출력의 수는 타일 형식 앵커 상자의 수와 같습니다. 신경망은 모든 출력에 대한 예측값을 생성합니다.
위치추정 오차 및 미세 조정
타일 형식 앵커 상자 사이의 거리, 즉 스트라이드는 CNN에서의 다운샘플링의 양을 결정짓습니다. 4에서 16 사이의 다운샘플링 인자가 일반적입니다. 이 다운샘플링 인자는 타일 형식으로 성기게 배치되는 앵커 상자를 생성하여 위치추정 오차를 유발할 수 있습니다.
위치추정 오차를 수정하기 위해 딥러닝 객체 검출기는 각 타일 형식 앵커 상자에 적용할 오프셋을 학습하여 앵커 상자의 위치와 크기를 미세 조정합니다.
다운샘플링 계층을 제거하여 다운샘플링을 줄일 수 있습니다. 다운샘플링을 줄이려면 컨벌루션 또는 최대 풀링 계층(예: convolution2dLayer
(Deep Learning Toolbox) 및 maxPooling2dLayer
(Deep Learning Toolbox))의 Stride
속성값을 줄이십시오. 신경망 앞쪽에 있는 특징 추출 계층을 선택할 수도 있습니다. 신경망 앞쪽에 있는 특징 추출 계층은 공간 분해능이 더 높지만 신경망 하위의 계층에 비해 의미론적 정보를 더 적게 추출할 수 있습니다.
객체 검출 생성하기
최종 객체 검출을 생성하기 위해 배경 클래스에 속하는 타일 형식 앵커 상자가 제거되고 나머지는 신뢰 점수를 기준으로 필터링됩니다. 신뢰 점수가 가장 높은 앵커 상자가 NMS(Nonmaximum Suppression)를 사용하여 선택됩니다. NMS에 대한 자세한 내용은 selectStrongestBboxMulticlass
함수를 참조하십시오.
앵커 상자 크기
다중 스케일 처리를 통해 신경망은 다양한 크기의 객체를 검출할 수 있습니다. 다중 스케일 검출을 달성하려면 64×64, 128×128, 256×256과 같은 다양한 크기의 앵커 상자를 지정해야 합니다. 훈련 데이터의 객체의 스케일과 종횡비를 가장 근접하게 나타내는 크기를 지정합니다. 크기 추정을 보여주는 예제는 훈련 데이터에서 앵커 상자 추정을 참조하십시오.
관련 예제
세부 정보
- Getting Started with YOLO v4
- MATLAB의 딥러닝 (Deep Learning Toolbox)
- 사전 훈련된 심층 신경망 (Deep Learning Toolbox)