모델의 이름 "YOLO: You Only Look Once"에서 알 수 있듯이, YOLO모델은 이미지를 단 한번만 보고 객체를 감지하고 분류한다는 특징을 가지고 있다.
전통적인 객체 탐지 시스템들이 여러 단계를 거치며 여러 번 이미지를 확인하는 것과 반대로,
YOLO는 전체 이미지를 한 번만 처리하여 속도와 효율성을 극대화한다.
이러한 접근 방식으로 인해 YOLO는 실시간 처리가 가능하고 빠른 속도를 자랑한다.
YOLO(You Only Look Once) 시스템의 논문은 객체 인식을 회귀 문제로 재구성하여 실시간으로 이미지에서 객체의 위치와 종류를 예측하는 새로운 방법을 제시한다.
소개 (Introduction)
사람은 시각을 통해 어떠한 사물이나 이미지를 보았을 때, 즉각적으로 이미지 내 객체를 인식하고 요소들의 상호작용을 파악할 수 있다.
YOLO는 사람처럼 이미지 내 객체를 즉각적으로 인식하는 것을 목표로 한다.
기존의 탐지 시스템들은 객체를 탐지하기 위해, 하나의 이미지를 여러 장 분할해 여러 번 분석한다.
YOLO는 이러한 과정을 단순화해 전체 이미지를 한 번만 보고 객체를 분석한다.
YOLO의 주요 이점
- 속도: 매우 빠르다
- 여러 단계의 파이프라인으로 구성된 전통적인 객체인식 시스템들과 달리, 하나의 통합 신경망으로 이루어진 모델
- 높은 정확도
- 기존의 영역을 나누고 여러 번에 걸쳐 분석하는 Sliding-window, Region proposal-based과는 다르게 전체 이미지를 한 번에 처리
- 전체 이미지를 고려함으로써 객체와 배경을 더 정확하게 구분한다. (Background error가 적음)
- 컨텍스트 정보 활용: 일반화에 유리
- 특정 데이터에 과하게 최적하되지 않고, 일반적인 특성과 패턴을 학습하여, 본 적 없는 이미지나 다른 도메인의 데이터에서도 객체를 효과적으로 인식
YOLO 동작 과정
YOLO는 객체 탐지를 단일 신경망을 통해 통합하여 처리하는 방식을 제시한다.
전체 이미지에서 특징을 추출하고, 각각의 Bounding-Box(경계 상자)를 예측하는데 필요한 정보를 활용한다.
1. Input 이미지를 SxS 그리드로 나눈다.
각 Bounding-Box와 해당 Box에 대한 신뢰도 $B$ 를 예측
2. 각 그리드 영역에 대해 사물이 어디에 존재하는지 바운딩박스를 만들고, 박스에 대한 신뢰도 점수를 예측한다.
바운딩 박스(Bounding Box): x, y, w, h, 신뢰도(Confidence)로 구성
- 좌표(x, y): 셀의 경계를 기준으로 바운딩 박스의 중심을 나타냄
- 높이,너비(w, h): 전체적인 이미지를 기준으로 예측
- 신뢰도(Confidence): 예측 상자, 실제 상자와의 IOU
IOU(Intersection Over Union): 모델이 예측한 결과와 ground truth 실측 box가 얼마나 겹치는가에 대한 지표
신뢰도 점수(Confidence) : 모델이 상자 내에 객체가 존재한다고 확신하는 정도, 상자의 정확도
- Pr(Object) ∗ IOUtruth pred
- 객체가 없으면 신뢰도 점수는 0
3. 내부에 객체가 존재하는 모든 그리드 셀에 대해 각 조건부 클래스 확률 $C$ 를 예측한다.
조건부 클래스 확률, $C$ :
$$ C = Pr(Classi_{i]}|Object)$$
4. Test(테스트) 시, 조건부 클래스 확률(S)과 바운딩박스(B) 신뢰도 예측을 곱한다.
$$ Pr(Class_{i}|Object)\,*\,(Pr(Object)\,*\,IOU\frac{truth}{pred}\,=\,Pr(Class_{i})\,*\,IOU\frac{truth}{pred} $$
이는 각 각 박스에 대해 클래스의 확률, 예측 박스가 객체에 fit하는지를 제공한다.
YOLO 신경망 구조 (Network Design)
YOLO의 신경망은 총 24개의 Convolution layer와 2개의 FC(Fully Connected layer, 완전연결 계층) or Dense layer로 구성되었다. GoogLeNet의 구조로 영감을 받았으나, GoogLeNet 의 Inception블록 대신 간단한 1x1 Reduction Layer와 3x3 Convolutional Layer로 네트워크를 구성했다고 한다.
처음 몇 개의 Convolution Layer는 주로 이미지로부터 특징을 추출하는 데 사용되고, 이후의 이어지는 FC Layer들은 상자의 좌표와 클래스 확률을 예측한다.
YOLO의 최종 Output은 7x7x30크기의 tensor다.
이는 7x7 그리드 각 셀에 대해 2개의 Bounding-Box(각 Box에 대해 5개의 예측 정보: x, y, w, h, confidence)와 20개의 클래스에 대한 확률 정보를 포함한다.
학습 (Training)
Pre-Training
YOLO의 Convolutional layer를 ImgeNet의 1000-class competition Dataset을 통해 사전학습 한다.
Pre-Training을 위해 첫 20개의 Convolutional Layer와 연결된 average-pooling layer, FC layer를 사용해 약 일주일동안 훈련한 결과, ImageNet 2012 Validation Dataset에서 단일 크롭 상위 5% 정확도 88%를 달성했다고 한다.
이후 Detaction을 위해, 랜덤한 가중치를 가진 나머지 4개의 Convolution layer와 FC(Fully Conected) layer 2개를 추가했다.
마지막 layer는 클래스의 확률과 boudning-box의 좌표를 예측한다. 이 때 Bounding-Box의 좌표(x, y), 너비(width), 높이(height)는 정규화되어 0~1사이의 값을 가진다.
이 때 사용하는 활성화 함수(Activation function) Leaky ReLU는, 아래와 같다.
Loss Function SSE 문제점 및 최적화
Loss function으로 SSE(Sum of squares for error, 오차제곱합) 을 사용하려고 하지만 아래와 같은 문제점이 발생한다.
- optimizing하기는 쉽지만, Localization Error(LE)와 Classification Error(CE)를 동일하게 취급
- 많은 image에서, 대부분 grid가 객체를 포함하지 않아 confidence가 0으로 수렴하게 되어서 모델이 불안정해질 수 있고(instability) 훈련이 조기에 발산할 수 있다(초기에 최적해를 찾지 못하고, Loss가 점점 커짐
이를 해결하기 위해 Bounding-Box 좌표의 Loss를 늘리고, 신뢰도(confidence)의 Loss를 감소시키도록 두 매개변수의 값을 λcoord = 5 and λnoobj = .5.로 설정하였다.
- Large Bounding-Box와 Small Bounding-Box의 가중치를 동일하게 줌
이를 해결하기 위해 Bounding-Box의 너비(width), 높이(height)에 제곱근을 취함
-> LE(Localization Error)의 증가율이 작아져 Bounding-Box의 오류에 덜 민감해짐
최적화된 Loss Function
학습 시 하이퍼파라미터(Hyper Parameter)
- Dataset: PASCAL VOC 2007, PASCAL VOC 2012
- Epochs: 135
- Batch_size: 64, momentum of 0.9, decary of 0.0005
- Leaning_rate: 0.001에서 0.01로 천천히 증가 (높게 시작하면 기울기 발산)
- Dropout: 0.5 (Over-fitting 방지)
- Augmentation: 원본 이미지 크기의 최대 20%까지 무작위 스케일링 및 변환
추론 (Inference)
- 훈련과 같이, 추론하는 데에는 하나의 network evaluation만 요구한다.
-> 매우 빠름 - PASCAL VOC에서 이미지 당 98개의 Bounding-Box에 대한 클래스 확률을 예측한다.
- 종종 '다중 검출' 문제가 발생한다.
- 최대 억제(non-maximal suppression)을 사용하여 mAP를 2~3% 향상시킴.
다중 검출: 하나의 객체가 여러개의 그리드 셀에서 검출되는 현상
YOLO의 한계 (Limitations of YOLO)
- 공간적 제약: 각 그리드 셀이 두 개의 상자만 예측, 하나의 클래스만 가질 수 있음
- 인접한 여러 객체를 예측하는 능력 떨어짐. ex) 새 떼
- 일반화의 어려움: 학습한 새로운 형태, 비율 ,배치를 가진 객체에 대해 일반화 어려움
- 학습한 데이터셋의 Bounding-Box를 기반으로 예측하기 때문
- 손실함수의 한계: YOLO의 손실 함수는 Large Bounding-Box, Small Bounding-Box를 동등하게 취급한다.
- Large Bounding-Box에서는 영향이 작지만, Small Bounding-Box에서는 영향이 큼
실험 (Experiments)
다른 실시간 탐지 시스템들과 비교 (Comparison to Other Real-Time Systems)
PASCAL VOC 2007 데이터셋을 기반으로 다른 탐지 시스템들과 비교를 진행한다.
많은 탐지 시스템에 대한 연구에서는 빠른 처리 속도에 중점을 두고있다.
하지만, 실제로 실시간 성능(초당 30프레임 이상)을 달성하는 시스템은 매우 드물다.
Fast YOLO는 가장 빠른 객체 탐지 시스템에도 불구하고, 이전 실시간 탐지 기법보다 두 배 이상 정확한 52.7%의 mAP을 기록했다.
YOLO 또한 실시간 객체 탐지 시스템 중 가장 높은 정확도인 63.4%의 mAP를 기록하면서, 실시간 처리능력을 보유한다.
-> 현존하는 실시간 탐지 시스템들 중에서 가장 빠르고 정확함.
YOLO vs Fast R-CNN (Error Analysis, 오류 분석)
당시 SOTA모델이었던 Fast R-CNN과 오류 분석을 통해 비교를 진행해본다.
오류 유형
- 정확 (Correct): 정확한 클래스와 IOU(Intersection Over Union)가 0.5 이상
- 위치 오류 (Localization): 정확한 클래스지만 0.1 < IOU < 0.5
- 유사 클래스 (Similar): 유사한 클래스, IOU > 0.1
- 기타 (Other): 클래스가 틀리고, IOU > 0.1
- 배경 (Background): 모든 객체에 대해 IOU < 0.1
- Fast R-CNN의 취약점: 배경(Background) 오류, 배경을 탐지할 확률이 YOLO의 약 3배
- YOLO의 취약점: 위치(Location) 오류, 객체의 위치 or 크기 탐지 오류 확률이 Fast R-CNN의 약 2배 이상
-> 모델 tunning 및 사용 시, 고려사항이 될 수 있음.
YOLO, Fast R-CNN의 결합 (Combining Fast R-CNN and YOLO)
YOLO와 Fast R-CNN 모델을 결합하여 객체 탐지의 성능을 향상시키는 방법에 대해 설명한다.
성능 향상 원리
YOLO: 적은 배경 오류, 전체 이미지를 기반으로 객체 탐지
Fast R-CNN: 배경 오류가 잦지만 높은 정확도 제공, 지역적인 제안(Region Proposals)을 통한 객체 탐지
두 모델의 강점을 결합함으로써, 각 모델의 약점을 상쇄시키고 전체적인 탐지 정확도 향상
모델 결합 방법
- Fast R-CNN이 예측한 각각의 Bounding-Box에 대해 YOLO가 유사하게 예측하는지 확인
- 유사하다면, Bounding-Box에 대한 Fast R-CNN의 예측으로 YOLO 재조정·재강화
실험 결과
이러한 방식의 결합을 통해 VOC 2007 테스트셋에서의 실험 결과, 기존 Fast R-CNN의 정확도 71.8% -> 75%로 향상되었음. 두 모델이 독립적으로 사용될떄보다 더욱 효과적임.
결론 (Conclusion)
YOLO는 단일 신경망을 사용한 시스템으로서, 기존 분류기 기반의 복잡한 탐지 시스템들과 비교하여 구조가 매우 단순하고 처리 속도가 빠르다.
이는 실시간 객체 탐지 모델에서의 SOTA(State-Of-The-Art, 최첨단) 기능을 제공한다.
'Data Science > 딥러닝 논문 리뷰' 카테고리의 다른 글
[딥러닝 논문리뷰] An overview of gradient descent optimization algorithms (0) | 2025.04.30 |
---|---|
[딥러닝 논문 리뷰]Attention Is All You Need 논문 리뷰 (Transformer) (10) | 2024.10.09 |
Cycle GAN이란? (1) | 2024.04.07 |