일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- c++
- tensorflow 예제
- 영상처리
- TensorFlow
- 모두의 딥러닝 예제
- 미디언 필터링
- 컴퓨터 비전
- 가우시안 필터링
- MFC 프로그래밍
- pytorch zero to all
- 골빈해커
- 팀프로젝트
- Pytorch Lecture
- 딥러닝 스터디
- 딥러닝 공부
- 딥러닝
- 파이토치
- c언어 정리
- matlab 영상처리
- C언어 공부
- c++공부
- object detection
- 김성훈 교수님 PyTorch
- 해리스 코너 검출
- 파이토치 김성훈 교수님 강의 정리
- pytorch
- 모두의 딥러닝
- 케라스 정리
- 파이토치 강의 정리
- c언어
Archives
- Today
- Total
ComputerVision Jack
You Only Look Once: Unified, Real-Time Object Detection 본문
Reading Paper/Object Detection
You Only Look Once: Unified, Real-Time Object Detection
JackYoon 2022. 3. 30. 10:27반응형
You Only Look Once: Unified, Real-Time Object Detection
Abstract
- YOLO 새로운 object detection 방법을 제시한다. 이전 방법들은 classifier 재구성하여 detection 수행한다. 하지만 저자는 object detection 대해 공간적으로 분리된
bounding box
와class probabilities
예측하는 Regression 문제로 바라본다. - single neural network는 bounding box와 class probabilities 전체 이미지에 대해 직접적으로 한번에 평가한다. detection pipeline이 single network 구성되어 있기 때문에
end-to-end
방식으로 최적화 될 수 있다. - 통합된 구조는 매우 빠르다. YOLO 경우 많은
localization error
가 발생하지만background error(false positive)
강인하다. YOLO는 object의 대표되는 특징을 학습한다.
- R-CNN과 같은 최근 연구는
region proposal methods
사용하여 image에서 잠재적 bounding box 발생 시킨다. 그리고 제안한 box에 대해 classifier 작동한다. - classification 끝나면,
post-processing
사용하여 bounding box 재 정의 하고, 다른 객체에 대해 박스에 대한 평가를 진행한다. 이러한 복잡한 pipelines은 각각의 구성 요소가 분리되어 학습되기 때문에 느리고 최적화 하기 힘들다. - YOLO 사용하면 image에서 객체를 찾고 위치까지 찾는다. Figure 1 참고하면 single convolutional network는 다중
bounding box
예측하고 이 box에 대해class probabilities
까지 예측한다. YOLO는 전체 image 학습하기 때문에 detection 성능이 직접적으로 최적화 된다. - YOLO 매우 빠르다. 왜냐하면 regression problem에 대해 복잡한 pipeline 필요 없기 때문이다. 게다가 다른 real-time 시스템 보다 2배 더 많은
mean average precision (mAP)
갖는다. - YOLO는 predict 진행할 때, image 전체적인 부분을 합리화 한다. Fast R-CNN 경우 큰 맥락을 보지 못하기 때문에 이미지 안에서 객체를 background 부터 분리 시키지 못한다. YOLO는 이와 비교해서 적은 background error 만든다.
- YOLO는 객체의 특징을 일반화 하여 학습한다. 따라서 예상하지 못한 input이나 domain에 대해 적용 시킬 때 망가지는 경우가 적다.
- YOLO는 여전히 정확도 측면에서 state-of-the-art detection 시스템이다. image에서 객체를 빠르게 탐지하는 반면 특히 작은 몇몇 객체의 위치 정보를 얻기는 살짝 힘들다.
Unified Detection
- Network는 각각의 bounding box 예측하기 위해 전체의 이미지에서 얻은
feature
사용한다. 또한 모든 class에 대해 동시에 모든 bounding box 예측한다. - 해당 시스템은 input image 대해 S x S grid 나눈다. 객체의 중심은 grid cell에 위치하고,
grid cell
은 object 검출을 책임진다. - 각 grid cell은 B개의 bounding box 예측하고 해당 box의 confidence score 또한 예측한다. 이러한
confidence score
는 box가 객체를 포함한 정도를 반영하고 box가 얼마나 잘 예측 했는지 정확도도 반영한다. - $Pr(Object) * IOU^{truth-pred}$ 식으로 confidence score 정의한다. 그리고 이 값이 예측된 box와 ground truth 간의
intersection over union (IOU)
와 같아 지길 원한다. - 각 bounding box는 5개의 prediction 제공한다. [x, y, w, h, confidence]
- 각 grid cell은 C class의
probability
예측한다. 이는 grid cell이 객체를 포함하는 것을 나타낸다. 따라서 grid cell에 대해 하나의 class set만 예측한다. box의 개수와는 상관이 없다.
$Pr(Class_i | Object) * Pr(Object) * IOU = Pr(Class_i) * IOU$
Network Design
- network의 초기
convolution layer
는 image에서 feature 추출하는 역할을 한다. 반면fully connected layer
는 output probability와 coordinate 예측한다. - network 구조는 image classfication에서 사용했던 GoogLeNet에서 영감을 받았다. 24개의 convolutional layer와 2개의 fully connected layer 구성되어 있다.
- Fast YOLO의 경우 9개의 convolutional layer와 2개의 fully connected layer 구성된다.
- 최종 output은
7 x 7 x 30 tensor
예측된다.
Training
- classfication 모델을
pretrain
하고 detection 수행에 맞게 모델을 변화하였다. 이 과정에서 4개의 convolution layer와 2개의 fully connected layer 추가하고 무작위로weights
초기화 하였다. - detection 종종 잘 정제된 이미지 정보를 원하기 때문에
resolution 448 x 448
변경하여 진행하였다. - 마지막 layer는 class probability와 bounding box coordinate 예측한다. 여기서 해당 bounding box 정보를
normalize
하여 0~1 사이의 값으로 나오도록 했다. - 활성화 함수로
leaky rectified linear activation(leaky-relu)
사용하였다. - output에 대해
sum-squared error
사용하였는데 이 error가 쉽게 최적화 되기 때문이다. 하지만 저자들이 원하는 정확도를 달성하기엔 완벽하진 않다. - bounding box가 잘 예측한 경우 loss 증가 시키고 객체를 포함하지 않은 경우 loss 감소 시켰다. 이를 2개의 parameter 통해 관리하는데 $λ{coord} = 5$ 이고 $λ{noobj} = 0.5$ 이다.
- 또한 큰 box와 작은 box의 error 동등하게 할 경우 오류가 적용되지 않기 때문에 width와 height에 대해 루트를 적용 시킨다.
- loss function 경우 객체가 있는 경우에만 classification error 처리한다. 또한 ground thruth box 책임지는 경우 bounding box coordinate error만 처리한다.
Inference
- YOLO는 단일 network 평가만 진행하기 때문에 classifier-based 방식보다 test 시간이 빠르다.
- grid 설계는 bounding box 예측할 경우 공간적 다양성을 보강한다. 어떤 grid cell에 객체가 있는지 분명하기 때문에 각 객체에 대해서 하나의 box 예측한다.
- 그러나 큰 객체나 다중 cell의 경계에 위치한 객체에 대해선 다중 객체가 담당한다.
Limitation of YOLO
- YOLO는 강한 공간적 제약이 bounding box 예측할 때 동반된다. 왜냐하면 각 grid cell이 한 객체에 대해서 2개의 box만 예측하기 때문이다.
Conclusion
- YOLO 소개한다. 이는 통합된 object detection 모델이다. 해당 모델은 간단하게 설계가 가능하며 전체 이미지를 직접적으로 학습할 수 있다.
- classifier-based 접근과 다르게 YOLO는 detection 성능과 상응하는 loss function 학습하고 전체 모델은 자연스럽게 학습된다.
반응형
'Reading Paper > Object Detection' 카테고리의 다른 글
YOLOv3: An Incremental Improvement (0) | 2022.04.14 |
---|---|
Focal Loss for Dense Object Detection (0) | 2022.03.31 |
Feature Pyramid Networks for Object Detection (0) | 2022.03.31 |
YOLO 90000: Better, Faster, Stronger (0) | 2022.03.30 |
SSD: Single Shot MultiBox Detector (0) | 2022.03.30 |
Comments