728x90
반응형

키워드

1. 전체 이미지를 한 번에 처리하여 객체를 검출. 실시간 객체 검출 가능.

2. "You Only Look Once: Unified, Real-Time Object Detection"

3. YOLO, single Network, Real-time object detection

Real-Time object detection

  인간은 이미지를 보면 이미지에 어떤 개체가 있는지, 어디에 있는지, 어떻게 상호 작용하는지 즉시 알 수 있다. 그렇기에 운전과 같은 복잡한 작업을 수행할 수 있다. 이와 같이 object detection 을 포함한 여러 판단을 수행하는 빠르고 정확한 알고리즘을 갖춘 컴퓨터는 범용 로봇 시스템으로써 잠재력을 가지고 있다. 이를 위해서 정확성 만큼 빠른 속도도 중요하다.

  이전 detection은 classifier를 재활용하여 detection을 수행하였다. 객체로 판단할 수 있는 여러 region을 생성한 후, 각 region을 객체에 대한 classification을 진행한다. 이 후 객체로 판단된 region을 기반으로 다양한 위치와 규모를 후처리하는 방식이다. 이에 그 과정이 복잡하고 길어 시간이 오래걸린다. 이를 해결하기 위해 단일 신경망으로 한 번의 평가를 통해 전체 이미지에서 bounding box와 클래스를 동시에 예측하는 YOLO (You Only Look Once)가 등장하였다. 이는 다양한 물체를 동시에 감지하는 방법을 학습하는 범용 detector로 기존의 대규모 파이프라인의 개별 구성 요소를 최적화하는 대신 새로운 파이프라인을 사용하였다.

YOLO

  YOLO의 파이프라인은 단일 네트워크이므로 전체를 한번에 End-to-End 로 최적화하며, 속도가 매우 빠르다.(초당 45프레임) 또한, 훈련 및 테스트 중 전체 이미지를 확인하므로 단순 클래스의 모양 뿐만 아니라 클래스에 대한 상황적인 정보까지 암시적으로 인코딩한다. 이를 통해 객체의 일반화까지 가능한 표현을 학습할 수 있다. 다만 정확성 면에서 여전히 SOTA보다 다소 뒤떨어져 있으며, 일부 물체, 특히 작은 물체의 위치를 ​​정확하게 파악하는 데는 어려움이 있다.

Detection 메커니즘

  YOLO는 전체 이미지의 feature를 사용하여 모든 클래스의 모든 bounding box를 동시에 예측한다. 즉, 네트워크가 전체 이미지와 이미지의 모든 객체에 대해 한번에 추론한다는 것을 의미한다. 이러한 디자인은 높은 mAP를 유지하면서 훈련과 테스트시 속도를 향상시켜준다. 기본적으로 아래 예시처럼 입력 이미지를 S × S의 그리드로 나누며, 객체의 중심이 그리드 셀에 들어가면 해당 그리드 셀은 해당 물체를 감지하는 역할을 한다. 

YOLO

  Bounding box + confidence. 각 그리드 셀은 B개의 bounding box 및 각 상자에 대한 신뢰도(confidence) 점수를 예측한다. 신뢰도 점수는 상자에 객체가 포함되어 있다는 신뢰도와 box 예측이 얼마나 정확한지를 반영한다. 해당 셀에 객체가 없으면 신뢰도 점수는 0이 되며, 그렇지 않으면 신뢰도 점수가 예측과 GT 간 IOU와 같다.

  Class probability map. 또한 각 그리드 셀은 또한 클래스 확률을 예측한다. 그리드 셀당 하나의 클래스 확률이 존재하며, 이후 테스트 시에 클래스 확률과 bounding box의 신뢰도를 곱하여 객체가 detection된다. 이를 통해 각 상자에 대한 클래스별 신뢰도 점수를 제공 해당 클래스가 상자에 나타날 확률과 예측된 상자가 개체에 얼마나 잘 맞는지 모두 인코딩한다고 볼 수 있다.

728x90

Architecture

YOLO

  네트워크의 초기 컨벌루션 레이어는 이미지에서 특징을 추출하는 반면, FC 레이어는 출력 확률과 좌표를 예측한다. Base 아키텍처는 이미지 분류를 위한 GoogLeNet 모델에서 응용했다. GoogLeNet에서 사용하는 inception모듈을 간단하게 변형하였으며, 1 × 1개의 conv에 이어 3 × 3 이 혼합되어 사용된다. 추가로 “Fast’ YOLO는 더 적은 레이어(24개 대신 9개)와 filter 수로 구성되었다.

  이 아키텍처는 여러 down sampling 레이어를 가지고 있기 때문에 경계 상자를 예측하기 위해 상대적으로 정교하지 않은 feature를 사용한다. 이에 새롭거나 특이한 종횡비 또는 구성의 개체를 일반화하는 데 어려움이 있을수 있다. 추가로 테스트 시엔 NMS(Non-maximal suppression) 이 적용되었는데, 이는 일부 큰 물체나 셀의 경계에 있는 물체는 여러 셀에 의해 분류되는 문제가 있어 이러한 다중 감지를 수정하기 위함이다.

Loss

YOLO

  기본적으로 sum-squared error를 활용하여 loss를 계산한다. 또한 다른 모델들과 달리 classification 오류와 localization 오류에 동일한 가중치를 부여한다. 반면 이미지 내 대부분의 그리드 셀에는 객체가 포함되어 있지 않은데, 이에 해당하는 신뢰도 점수 0이 객체를 포함하는 신뢰도 점수보다 매우 영향이 커지는 현상이 존재한다. 이에  λcoord = 5 and λnoobj = 0.5를 반영하여 객체 존재 여부에 따라 가중치를 설정하였다.

  또한 큰 상자와 작은 상자의 오류에 동일한 가중치를 부여하게 되는데, 큰 상자의 편차는 작은 상자의 편차보다 학습에 반영이 덜 된다. 이를 해결하기 위해 너비와 높이를 직접 예측하는 대신 제곱근을 통해 예측하게 된다. 다만 이를 통해 작은 상자의 작은 오류는 IoU에 훨씬 더 큰 영향을 미치게 되고 localization 오류를 유발하는 원인이 되기도 한다.

  이미지에서 그리드 셀당 여러 boundng box가 예측될 수 있다. 다만 훈련 시에는 각 객체에 대해 하나의 bounding box만 학습되도록 설계되었다. 이는 IoU가 가장 높은 예측을 기반으로 개체를 예측하는 "책임(responsible)"이 주어진 하나의 box만 학습하여 구현된다. 이를 통해 특정 크기, 종횡비 또는 객체 클래스를 더 잘 예측하여 전반적인 재현율을 향상된다.   1obj 항에서 i번째 cell의 j번째 bounding box가 “책임”이 주어진 box를 의미하며 1로 계산된다. 다만 이렇게 학습되는 box의 제한은 모델이 사전에 예측할 수 있는 주변 객체 수의 제한을 유발하여, 새 떼와 같이 그룹으로 나타나는 작은 물체를 처리하는데 어려움이 있다.

  최종적으로 정리하면 객체가 해당 그리드 셀에 존재하는 경우에만 classification에 영향을 주며, "책임"이 있는 경우에만 bounding box 좌표 오류에 영향을 주는 구조다.

Pre-trained

  기본적으로 ImageNet 데이터셋에서 pre-trained 된 처음 20개 conv 레이어를 사용한다. 이후 모델을 변경하여 detection을 수행하며, pre-trained된 네트워크에 conv, fc layer를 추가하는 것이 성능적은 측면에서 유리하다. 4개의 conv 레이어와 2개의 FC 레이어가 추가되었으며, 마지막 레이어는 클래스 확률과 bounding box 좌표를 예측한다. 또한 Bounding box의 너비와 높이를 이미지 너비와 높이로 정규화하여 0과 1 사이에 속하도록 한다.

결과

YOLO

  Baseline 모델로 빠른 속도를 보이는 (30Hz or 100Hz) DPM과 비교 시, Fast YOLO는 가장 빠른 속도에도 52.7% mAP로 실시간 탐지에 대한 좋은 성능을 보인다. YOLO는 mAP를 63.4%의 성능을 보였다. DPM은 성능 저하를 최소화하며 속도를 높이지만 절대적인 성능은 떨어진다. 추가적으로  VGG-16을 사용하여 YOLO를 테스트하면, YOLO보다 더 정확하지만 상당히 느린 결과를 확인 할 수 있다. 

오류 분석

YOLO

  테스트 시 카테고리 별 상위 N개의 예측을 분석한 결과이다. 각 예측은 정확하거나 오류 유형에 따라 분류되었으며 자세한 기준은 아래와 같다. YOLO는 객체의 위치를 ​​올바르게 파악하는 데 어려움이 있으며, 다른 모든 오류를 합친 것보다 더 많은 부분을 차지한다. 비교한 Fast R-CNN은 Loc 오류가 훨씬 적지만 BG 오류는 훨씬 더 많다.

  • Correct : 클래스 및 위치가 정확함 IoU > 0.5 
  • Localization : 올바른 클래스이나 위치가 부정확. 0.1 < IoU < .5
  • Similar : 클래스가 유사함. IoU > 0.1 
  • Other : 클래스가 틀림. IoU > 0.1 
  • Background : 모든 객체에 대해, IoU < 0.1 

YOLO

  이러한 결과를 바탕으로 Fast R-CNN과 YOLO의 결합하였다. Fast R-CNN에서 BG 오류를 제거하기 위해 YOLO를 사용함으로써 성능이 크게 향상되었다. 다만 이 조합은 각 모델을 별도로 실행한 다음 결과를 결합하기 때문에 YOLO의 속도 이점을 활용하지 못한다.

일반화

YOLO

  위는 다른 데이터셋에서의 일반화 성능을 비교한 자료다. Picasso에서는 VOC 2012에서 훈련을 받았고, People-Art에서는 VOC 2010에서 훈련을 받았다. R-CNN은 기존 VOC 2007에서 높은 AP를 보이나 아트워크에 적용하면 상당히 저하되는 것을 알 수 있다. 하지만 YOLO는 AP 성능 저하가 상대적으로 적었다. 이는 개체의 크기와 모양은 물론 개체 간의 관계와 개체가 일반적으로 나타나는 형태를 모델링하기 때문이라고 볼 수 있다.

YOLO

Reference

논문 링크 : https://arxiv.org/abs/1506.02640

 

728x90
반응형

'딥러닝 > Object Detection' 카테고리의 다른 글

[Object Detection] YOLOv2 (YOLO9000)  (1) 2024.09.21
[Object Detection] SSD  (0) 2024.09.19
[Object detection] Faster R-CNN  (0) 2024.09.12
[Object Detection] Fast R-CNN  (3) 2024.09.07
[Object Detection] R-CNN  (0) 2024.09.05

+ Recent posts