키워드
1. "Rich feature hierarchies for accurate object detection and semantic segmentation"
2. Selective Search를 사용하여 후보 영역을 생성하고, CNN을 통해 각 영역을 분류.
3. R-CNN, Region proposal, selective search,
CNN을 통한 Object detection
이미지 인식 알고리즘의 발전은 SIFT및 HOG의 사용을 기반을 두었으며, CNN은 1990년대에 많이 사용되었지만 서포트 벡터 머신이 등장하면서 유행에 뒤쳐졌다. 그러나 2012년 AlexNet의 등장으로 다시 많은 관심을 불러 일으켰다. 이에 classification 뿐만 아닌 "영역을 사용한 인식" 을 통해 CNN을 활용한 object detection 문제를 해결하였다.
Region proposal과 CNN이 결합한다는 점에서 R-CNN이라 부르며, 약 2000개의 영역을 생성하고 CNN을 사용하여 각 제안에서 고정 길이 feature 벡터를 추출한 다음 카테고리별 linear SVM으로 각 지역을 분류하는 방식이다. 또한 레이블이 지정된 데이터가 부족하고 현재 사용 가능한 양이 CNN을 학습하는 데 충분하지 않은 문제를, pre-trained 된 파라미터를 fine tuning하는 방식으로 해결하였다.
R-CNN
R-CNN은 크게 Region proposal - CNN - linear SVM으로 세 가지 모듈로 구성되어있다. Region proposal은 selective search 를 사용하여 2000개의 region을 생성한다. CNN은 각 region으로부터 4096차원 특징 벡터를 추출하며, SVM을 통해 클래스를와 bounding box를 예측한다. CNN 아키텍처의 선택은 R-CNN 탐지 성능에 큰 영향 미친다.
Region proposal
R-CNN은 5개의 Conv 레이어와 2개의 FC 레이어를 통해 227 × 227 RGB 이미지를 feed-forward를 계산한다. 이 과정에서 region의 크기나 종횡비에 관계없이 CNN의 맞는 크기로 변환해야한다. 이를 위한 방법은 여러가지가 있으며 그 예시가 위 이미지와 같다. (A)는 원본 이미지이며, (B)는 해당 사각형에 포함된 이미지를 CNN 입력 크기로 확장하는 것이다. (C)는 원래 개체를 둘러싸는 다른 이미지를 제외하는 것이며, (D)는 227 x 227로 맞게 변환하는 warp 변환이다. Warp 변환에 대해선 개체 주위의 추가 이미지를 포함하는 것도 고려되었다. 또한 모든 방법에서 범위기 이미지를 벗어나는 경우 누락된 데이터는 이미지 평균으로 대체되었다. 이 중 구현이 간단한 (D) 워프 방식으로 region proposal이 구현되었다. 테스트 이미지에 대해서도 동일하게 진행된다. 아래는 Warp 변환된 이미지 예시다.
이후 Ground-Truth 상자와 0.5 IoU (Intersection-Over Union) 이상의 중첩이 있는 모든 region을 해당 상자의 클래스에 대해 positive으로 처리하고 나머지는 negative로 처리한다. Negative로 처리된 모든 이미지는 객체가 없는 “배경”이라는 라벨이 존재하게 된다. 이에 classifier는 (N + 1)D의 출력을 가지게 된다. 또한 여러 region을 처리하는 과정에서 특정 region(A)이 높은 점수로 객체로 분류되었으나, 동일한 객체로 분류된 더 높은 점수의 region(B)과 IoU가 겹치면 해당 region(A) 또한 negative로 판단에서 제외된다.
Bounding Box
객체의 범위를 나타내는 bounding Box는 어떻게 예측되는가. 이는 간단한 bounding box regression을 통해 구현된다. 클래스별 linear SVM을 사용하여 모든 region에 점수를 매긴 후, 클래스별 bounding box regressor를 사용하여 새로운 bounding box를 예측한다.
훈련 세트는 (Pi, Gi)의 쌍으로 이루어져 있다. 여기서 Pi = (Pix, Piy, Piw, Pih)는 region의 영역을 나타내며, 각 Ground truth의 영역인 G도 동일한 방식 G = (Gx, Gy, Gw, Gh) 으로 지정된다. 목표는 P를 G에 mapping하는 변환을 구하는 것이다. 이에 dx(P), dy(P), dw(P), dh(P)로 변환을 parameterize한다. 이러한 함수를 학습한 후 변환을 적용하여 P를 예측된 정답 상자 G로 변환하는 것이다.
각 함수 d(P)는 P의 5번째 pooling layer의 feature에 대한 선형 함수로 모델링되며 Φ5(P)로 표시된다. 즉, d(P) = wTΦ5(P)가 되며 여기서 w는 학습 가능한 파라미터의 벡터다. 최종적으로 목표 t는 훈련 쌍(P, G)에 대해 아래와 같이 정의된다. 여기서 P가 GT box와 거리가 멀다면 변환하는 작업은 의미가 없습니다. 중첩이 threshold보다 큰 경우에만 IoU 중첩이 최대인 있는 G에 P를 할당하여 "근접성"을 구현한다.
Classifer
객체와 부분적으로 겹치는 영역에 라벨을 지정하는 방법은 명확하지않다. 이를 IoU overlap threshold을 사용하여 이 문제를 해결하고자 했다. 이 과정에서 threshold 관리가 매우 중요했고, linear SVM을 최적화하는 방식을 채택했다. 사실 softmax를 classifier로 적용하는 것이 간단하고 더 깔끔할 것이다. 다만 VOC 2007의 성능이 54.2%에서 50.9% mAP로 감소한 것을 확인하여, SVM의 성능이 더 우수하다는 것을 확인하였다.
최종적으로 R-CNN은 두 가지 속성으로 인해 탐지가 효율적으로 이루어진다. 첫째, 모든 CNN 파라미터는 모든 카테고리에서 공유된다. 둘째, CNN이 계산한 특징 벡터는 bag-of-visual-word을 사용하는 spatial 피라미드와 같은 접근 방식과 비교할 때 저차원이다. 이로 인해 R-CNN이 수천 개의 객체 클래스로 확장될 수 있음을 보여주며, UVA 시스템은 고차원 기능으로 인해 100,000개의 선형 예측 변수를 저장하는 데 134GB의 메모리가 필요한 반면 저차원 기능의 경우 1.5GB만 필요하다.
결과
위 표는 VOC 2010의 전체 결과이다. Baseline으로 UVA 시스템을 선정할 수 있다. 그 이유는 R-CNN과 동일한 region proposal 알고리즘을 사용하기 때문이다. 그결과는 mAP가 35.1%에서 53.7%로 크게 향상됨을 확인할 수 있다.
위 이미지는 ILSVRC2013 결과이다. R-CNN은 31.4%의 mAP를 달성했는데, 이는 OverFeat의 두 번째로 좋은 결과인 24.3%보다 훨씬 앞서 있다. OverFeat는 R-CNN의 특별한 경우 해석 할 수 있다. R-CNN의 selective search를 정사각형 영역의 multi-scale pyramid로 대체하고, 클래스별 bounding box regressor를 단일 bounding box regressor로 변경한다면 OverFeat 시스템과 매우 유사하다. 성능은 떨어지나 OverFeat는 R-CNN에 비해 상당한 속도 이점을 가지고 있다는 점은 추가로 고민해봐야 하는 부분이다.
시각화
ZFNet에서 deconvolutional 접근 방식을 활용하였다. Region에 대한 activation을 계산하고 deconvolution을 통해 최고 점수를 보인 region을 표시했다. 이를 통해 입력에서 어떤 영역에서 fire되는지 정확하게 표시가 가능하다.
위 이미지는 pool5 레이어를 시각화한 예시다. 227×227 픽셀 입력에서 195×195 픽셀의 receptive field를 가지며, 중앙의 pooling 유닛은 거의 전체적 시야를 갖고 있는 반면, 가장자리 근처의 유닛은 더 작거나 잘린 이미지를 볼 수 있다. 세 번째 행에 해당하는 단위는 빨간색 얼룩 감지기인 것을 볼 수 있다.
Fine-tuning
우선 fine-tuning 없이 ILSVRC 2012에서만 pre-trained된 마지막 3개 레이어에 대해 VOC 2007 데이터 세트의 결과를 분석해보면, fc7의 기능이 fc6의 기능보다 더 나쁘게 일반화됨을 알 수 있다. 또한 pool5가 전체 파라미터의 6%만 사용하여 계산되었음에도 불구하고 fc7과 fc6을 모두 제거하면 꽤 좋은 결과를 얻었다. 이는 CNN의 표현 능력의 대부분은 FC 레이어가 아닌 conv 레이어에 있다는 것을 의미한다.
Fine-tuning한 후 CNN의 결과를 살펴보자. Fine-tuning은 mAP를 8.0% 포인트 증가시켜 54.2%로 증가시킵니다. 또한 Fine-tuning으로 인한 향상은 pool5보다 fc6 및 fc7에서 훨씬 더 크다. 이를 통해 pool5 feature는 상대적으로 일반적인 기능을 하여 fine-tuning의 영향이 적으나, classifier는 많은 학습하여 모델 성능 개선에 영향을 끼친다는 점을 의미한다.
Reference
논문 링크 : https://arxiv.org/abs/1311.2524
'딥러닝 > Object Detection' 카테고리의 다른 글
[Object Detection] SSD (0) | 2024.09.19 |
---|---|
[Object Detection] YOLO (0) | 2024.09.14 |
[Object detection] Faster R-CNN (0) | 2024.09.12 |
[Object Detection] Fast R-CNN (3) | 2024.09.07 |
[Object Detection] Object Detection의 발전 과정 (0) | 2024.08.31 |