728x90
반응형
나의 정리
- YOLO는 전체 이미지를 입력으로 받아 하나의 Convolution network를 이용하여 bbox의 위치와 점수가 나온다.
또한 이미지 전체를 받아 background error가 덜 발생한다. - 이를 통하여 end-to-end 학습이 가능하고 매우 빠른 속도로 test가 가능해 real-time detection이 가능하다.
- 7x7 grid cell로 나누고 각 grid cell 당 2개의 bbox를 예측한다.
- 학습 시 보지 못한 새로운 이미지에 대해서도 강건하게 대응이 가능한 network이다.
- 하지만 아직 한계점도 많아 보이는 network
- Object가 겹쳐있으면 제대로 예측 불가
- 작은 바운딩 박스와 큰 바운딩 박스의 가중치가 동일하게 적용된다.
- real-time이라는 큰 장점이 있지만 정확도는 좋지 못하다..
Abstract
- Object detection의 새로운 접근 방식을 적용
- Object detection문제를 회귀 문제로 정의해 한개의 neural network로 전체 이미지를 이용해 한 번의 계산으로 bbox와 클래스 확률을 예측한다.
- end-to-end 학습이 가능하고 매우 빠르다.
Introduction
- YOLO는 Object detection을 하나의 회귀 문제로 정의 했다.
- single Conv net이 여러 bbox와 클래스 확률을 동시에 계산해준다.
따라서 전체 이미지를 학습해 바로 optimize를 진행한다. - YOLO의 장점
- 매우 빠르다 : 하나의 회귀 문제로 정의해 간단한 pipeline을 가져 매우 빨라 real-time detection이 가능하다.
- 이미지 전체를 사용한다 : 주변의 정보도 사용할 수 있어 background가 object라고 판단하는 background error를 줄일 수 있다.
- 일반적인 부분을 학습한다 : 자연 이미지로 학습하고 그림 이미지로 테스트할 때 성능이 월등히 뛰어나다. 새로운 이미지에 대해서 강건하다.
- YOLO의 단점
- 최신 SOTA 객체 검출 모델에 비해 정확도가 조금 떨어진다는 단점이 있다.
특히 작은 객체에 대한 검출 정확도가 떨어진다.
- 최신 SOTA 객체 검출 모델에 비해 정확도가 조금 떨어진다는 단점이 있다.
Unified Detection
- 전체 이미지에 대해 모든 object를 찾는다.
- input을 SxS grid로 나눈다.
- 각각의 grid cell은 B개의 bbox와 그 bbox에 대한 confidence score를 예측한다.
confidence score는 bbox가 얼마나 정확한지, 객체를 포함한다는 것이 얼마나 믿을 만 한지를 의미한다. - 각각의 bounding box는 cx, cy, w, h, confidence를 포함한다.
이때 confidence는 Pr(Classi|Object)이고 이는 grid cell에 object가 있다는 조건하에 그 객체가 어떤 class인지에 대한 조건부 확률이다.
- Test time에 각각의 confidence score를 곱해주어서 최종적으로 class specific confidence score를 구해준다.
score는 bbox에 특정 class가 나타날 확률과 예측된 클래스 객체에 얼마나 잘 들어맞는지를 나타낸다. - 최종 예측 tensor는 SxSx(B*5 + C)의 형태로 나오게 된다.
S : 처음에 나누는 grid의 수 B : 한 grid cell에 대해서 몇 개의 bbox를 예측할 것인지 C : labeling 된 class의 개수
Network Design
- Conv layer로 feature를 추출하고 이후에 FC layer로 클래스 확률과 bbox 좌표를 예측한다.
- 구조는 GoogLeNet에서 따왔지만 Inception module 대신 1x1 reduction layer와 3x3 conv layer를 사용했다.
- Fast yolo는 conv layer 수와 filter 수를 줄여서 디자인했다.
Training
- ImageNet에서 학습한 pre-trained network를 사용했고 이때 처음 20개의 conv layer를 pre-train network로 사용했다.
- 20개의 pre-trained conv layer 뒤에 4개의 conv layer와 2개의 FC layer를 추가하여 성능을 향상했다.
- x, y, w, y 모두 noramlize 되어 0부터 1 사이의 값을 가진다.
- YOLO 마지막 계층에는 linear activation function을 적용하고, 나머지 모든 계층에서는 Leaky ReLU를 적용한다.
- Sum-squared Error(SSE)를 이용해 optimize를 진행하는데 문제점이 3가지 있다.
최적화가 쉬워 사용하지만 mAP를 높이는 목적과 완벽하게 맞지는 않는다.- bbox 좌표에 대한 loss와 classification에 대한 loss를 동일 가중치로 학습하는 것은 좋지 않다.
- 대부분의 grid cell이 object가 없는 배경이라 confidence score가 0이 되어 대부분의 grid cell이 0으로 학습이 된다.
이는 모델의 불균형을 초래한다. - 작은 bbox와 큰 bbox에 대해 같은 가중치로 loss를 구한다.
작은 것이 위치 변화에 더 민감하다.
- [3] 해결책 - width와 height에 squared root 값을 취해주어 w, h가 커지면 증가율이 감소해 loss에 대한 가중치를 줄였다.
- 여러 개의 bounding box가 예측되는데 이중 GT와 IoU가 가장 높은 1개의 bbox를 선택한다.
- loss function
- 1_i^obj: grid cell i 안에 객체가 존재하는지 여부, 존재하면 1
1_ij^obj: grid cell i의 j번째 bounding box predictor가 사용되는지 여부를 의미한다.
첫째식의 의미 → Object가 존재하는 grid cell i의 bbox predictor j에 대해 x, y의 loss 계산
둘째식 → Object가 존재하는 grid cell i의 bbox predictor j에 대해 w, h의 loss 계산, 이때 큰 bbox에 대해 작은 분산을 반영하기 위해 제곱근을 취해준다.
셋째식 → Object가 존재하는 grid cell i의 bbox predictor j에 대해, confidence score의 loss를 계산
넷째식 → 셋째식과 동일하지만 Object가 존재하지 않는 grid cell i에 대해서 계산
다섯째식 → Object가 존재하는 grid cell i에 대해, conditional class probability의 loss를 계산
- batch size: 64, momentum : 0.9, weight decay: 0.0005
- Dropout p=0.5 사용, data augmentation → random scaling, translations, exposure and saturation (in HSV color space)
Inference
- Object가 크거나 cell의 경계에 인접해 있는 경우 여러 개의 cell에서 동시에 detection 되는 multiple detection 문제가 생길 수 있다.
이는 NMS를 이용하면 mAP를 2~3% 정도 개선이 가능하다.
Limitations of YOLO
- 한계점 3가지
- 공간적 제약(Spatial constraint) 발생 두 개 이상의 객체가 겹쳐있는 경우 detection이 어렵다.
- train시 학습하지 못한 새로운 종횡비(aspect ratio)를 test시에 만나면 고전한다.
- 큰 bbox와 작은 bbox의 loss를 구할 때 같은 가중치를 둔다.
Comparison to Other Detection Systems
- Deformable parts models
- sliding window를 이용하는 방식으로 여전히 pipeline이 나누어져 있다.
- YOLO가 더 빠르고 정확하다.
- R-CNN
- region proposal을 selective search를 이용하여 구하고 SVM을 이용하여 score를 매긴다. 이렇게 아직 나누어진 network를 사용하고 구하는 proposal도 R-CNN은 2000개 YOLO는 98개로 훨씬 적다.
- Other Fast Detectors
- YOLO가 통합된 pipeline을 가지고 있고 훨씬 더 빠르다.
- Deep MultiBox
- multibox는 general 한 object detection이 될 수 없고 큰 detection pipeline의 일부분이다.
- OverFeat
- OverFeat은 global context를 고려하지 않고 적절한 post-processing이 필요하다.
- MultiGrasp
- grasp은 object detection 보다는 더 간단한 작업이다.
Experiments
Comparison to Other Real-Time Systems
- DPM은 YOLO와 비교했을 때 여전히 느리고 mAP 또한 좋지 못하다.
- R-CNN 계열도 YOLO보다 여전히 느리다.
- YOLO VGG16을 사용하였을 때는 좀 느려지지만 정확도가 더 좋아졌다. (Real-time detection까진 불가능하다.)
VOC 2007 Error Analysis
- PASCAL VOC 2007 dataset에 대해 비교한다. Diagnosing Error in Object Detectors에 소개된 에러 측정 방법론을 사용한다.
- Correct: class가 정확하며 IOU > 0.5인 경우
Localization : class가 정확하고, 0.1 < IOU < 0.5인 경우
Similar : class가 유사하고 IOU > 0.1인 경우
Other : class는 틀렸으나, IOU > 0.1인 경우
Background : 어떤 object라도 IOU < 0.1인 경우
- YOLO는 Localization error가 상대적으로 크다.
Fast R-CNN은 background error가 상대적으로 크다.
(false positive error, 배경에 아무 물체가 없는데 물체가 있다고 판단하는 경우)
Combining Fast R-CNN and YOLO
- 위의 결과 Fast R-CNN과 YOLO를 결합하여 높은 성능을 낼 수 있을 것이다.
→ R-CNN이 예측한 bbox와 YOLO가 예측한 bbox가 유사하다면 두 bbox가 겹치는 부분을 bbox로 잡으면 된다.
- Fast R-CNN과 YOLO를 ensemble 해서 사용하는 것이 더 정확도가 좋았고 속도도 크게 차이 나지 않았다.
따라서 Fast R-CNN만을 사용하기보단 YOLO와 함께 앙상블로 사용하는 것이 좋다.
VOC 2012 Results
Generalizability: Person Detection in Artwork
- YOLO는 훈련 단계에서 접하지 못한 새로운 이미지도 잘 검출한다.
Conclusion
- 객체 검출을 위한 통합 모델 YOLO를 알아보았다.
- YOLO는 훈련 단계에서 보지 못한 새로운 이미지에 대해서도 강건하다.
728x90
반응형
'Paper review > 2D Object detection' 카테고리의 다른 글
[논문 리뷰] (RetinaNet) Focal Loss for Dense Object Detection (0) | 2022.07.01 |
---|---|
[논문 리뷰] SSD: Single Shot MultiBox Detector (0) | 2022.06.30 |
[논문 리뷰] Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks (0) | 2022.06.24 |
[논문 리뷰] Fast R-CNN (4) | 2022.06.24 |
[논문 리뷰] R-CNN: Rich feature hierarchies for accurate object detection and semantic segmentation (2) | 2022.06.23 |