You are looking for information, articles, knowledge about the topic nail salons open on sunday near me yolo 논문 on Google, you do not find the information you need! Here are the best content compiled and compiled by the https://chewathai27.com/to team, along with other related topics such as: yolo 논문 You Only Look Once, you only look once: unified real-time object detection, YOLO 논문 리뷰, YOLO 모델, YOLOv3, YOLO paper, yolo란, yolo 딥러닝
논문 리뷰 – YOLO(You Only Look Once) 톺아보기
- Article author: bkshin.tistory.com
- Reviews from users: 7596 Ratings
- Top rated: 3.1
- Lowest rated: 1
- Summary of article content: Articles about 논문 리뷰 – YOLO(You Only Look Once) 톺아보기 YOLO는 객체 검출의 개별 요소를 단일 신경망(single neural network)으로 통합한 모델입니다. YOLO는 각각의 bounding box를 예측하기 위해 이미지 전체 … …
- Most searched keywords: Whether you are looking for 논문 리뷰 – YOLO(You Only Look Once) 톺아보기 YOLO는 객체 검출의 개별 요소를 단일 신경망(single neural network)으로 통합한 모델입니다. YOLO는 각각의 bounding box를 예측하기 위해 이미지 전체 … 본 글은 YOLO 논문 전체를 번역 및 설명해놓은 글입니다. 크게 중요하지 않은 부분을 제외하고는 대부분의 글을 번역했고 필요하다면 부가적인 설명도 추가했습니다. 내용이 긴 섹션 끝에는 요약도 추가했습니다…
- Table of Contents:
귀퉁이 서재
논문 리뷰 – YOLO(You Only Look Once) 톺아보기 본문
티스토리툴바
01). You Only Look Once 논문리뷰 · GitBook
- Article author: deepbaksuvision.github.io
- Reviews from users: 31940 Ratings
- Top rated: 4.8
- Lowest rated: 1
- Summary of article content: Articles about 01). You Only Look Once 논문리뷰 · GitBook YOLO는 단일 convolutional neural network 모델 하나로 (object detection 문제를 풀기 위한) 특징 추출, 바운딩 박스 계산, 클래스 분류를 모두 수행합니다. 즉 원본 … …
- Most searched keywords: Whether you are looking for 01). You Only Look Once 논문리뷰 · GitBook YOLO는 단일 convolutional neural network 모델 하나로 (object detection 문제를 풀기 위한) 특징 추출, 바운딩 박스 계산, 클래스 분류를 모두 수행합니다. 즉 원본 …
- Table of Contents:
01 Introduction
02 Unified Detection
04 Experiments
05 Qualitative Result
Reference
Yolo 논문 및 정리
- Article author: velog.io
- Reviews from users: 37770 Ratings
- Top rated: 3.4
- Lowest rated: 1
- Summary of article content: Articles about Yolo 논문 및 정리 YOLO(You Only Look Once)는 논문 본문에서 R-CNN계열 모델보다 성능이 … 또한, YOLO의 가장 큰 특징은 Object detection을 이미지 픽셀 좌표에 … …
- Most searched keywords: Whether you are looking for Yolo 논문 및 정리 YOLO(You Only Look Once)는 논문 본문에서 R-CNN계열 모델보다 성능이 … 또한, YOLO의 가장 큰 특징은 Object detection을 이미지 픽셀 좌표에 …
- Table of Contents:
[논문 리뷰] YOLO v1 (2016) 리뷰
- Article author: deep-learning-study.tistory.com
- Reviews from users: 48056 Ratings
- Top rated: 4.8
- Lowest rated: 1
- Summary of article content: Articles about [논문 리뷰] YOLO v1 (2016) 리뷰 위 그림에서 보듯이 특징 추출, 객체 분류 두 문제를 단일 신경망으로 해결합니다. 논문에서는 YOLO가 object detection을 single regression problem으로 … …
- Most searched keywords: Whether you are looking for [논문 리뷰] YOLO v1 (2016) 리뷰 위 그림에서 보듯이 특징 추출, 객체 분류 두 문제를 단일 신경망으로 해결합니다. 논문에서는 YOLO가 object detection을 single regression problem으로 … 이번에 리뷰할 논문은 ‘You Only Look Once: Unified, Real-Time Object Detection’ 입니다. Deep Learning을 이용한 object detection 접근법은 크게 두 가지로 나눠볼 수 있습니다. Object Detection의 두..까먹으면 다시 보려고 정리하는 블로그
- Table of Contents:
Object Detection의 두 가지 접근법
YOLO v1 의 장점
바운딩 박스 예측 방식
YOLO v1 구조
손실 함수
YOLO v1 한계
YOLO v1 성능
티스토리툴바
[논문리뷰] YOLO Object Detection의 이해
- Article author: cake.tistory.com
- Reviews from users: 13019 Ratings
- Top rated: 4.9
- Lowest rated: 1
- Summary of article content: Articles about [논문리뷰] YOLO Object Detection의 이해 아래는 제가 논문을 읽고 이해한 바를 정리한 글입니다. YOLO와 기존 다른 모델과의 차이점,. YOLO의 architecture,. training 과정,. 장단점,. …
- Most searched keywords: Whether you are looking for [논문리뷰] YOLO Object Detection의 이해 아래는 제가 논문을 읽고 이해한 바를 정리한 글입니다. YOLO와 기존 다른 모델과의 차이점,. YOLO의 architecture,. training 과정,. 장단점,. 9주차에 진행되는 부스트캠프 경연은 Object Detection에 관해 다룹니다. 따라서 팀원들과 이와 관련한 논문을 읽어보기로 했고, 처음 다룰 논문은 YOLO로 정했습니다. YOLO 논문 링크 아래는 제가 논문을 읽고 이..
- Table of Contents:
소소한 블로그
[논문리뷰] YOLO Object Detection의 이해 본문[YOLO 논문 리뷰] 그래서 YOLO가 뭔데???
- Article author: hipolarbear.tistory.com
- Reviews from users: 48810 Ratings
- Top rated: 4.2
- Lowest rated: 1
- Summary of article content: Articles about [YOLO 논문 리뷰] 그래서 YOLO가 뭔데??? YOLO가 등장하기 전의 방식인 DPM과 R-CNN은 다음과 같이 작동합니다. DPM방식은 이미지를 슬라이딩 윈도 방식으로 쭈루룩 훑어보며 객체를 검출하는 방식 … …
- Most searched keywords: Whether you are looking for [YOLO 논문 리뷰] 그래서 YOLO가 뭔데??? YOLO가 등장하기 전의 방식인 DPM과 R-CNN은 다음과 같이 작동합니다. DPM방식은 이미지를 슬라이딩 윈도 방식으로 쭈루룩 훑어보며 객체를 검출하는 방식 … 본격적으로 YOLO로 이미지 분류를 하기 전에! 저번에 동아리에서 발표했던 YOLO리뷰를 보고 들어가겠습니다. 작성했던 스크립트와 함께 봐주시면 되겠습니다. 우선 YOLO를 알아보기 전에! 이미지 검출 모델들부..
- Table of Contents:
티스토리툴바
[논문 리뷰] [YOLOv1] You Only Look Once:Unified, Real-Time Object Detection
- Article author: oniss.tistory.com
- Reviews from users: 16098 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about [논문 리뷰] [YOLOv1] You Only Look Once:Unified, Real-Time Object Detection [논문 리뷰] [YOLOv1] You Only Look Once:Unified, Real-Time Object Detection … YOLO는 기존 모델들과 달리, single network 구조를 형성해 실시간 … …
- Most searched keywords: Whether you are looking for [논문 리뷰] [YOLOv1] You Only Look Once:Unified, Real-Time Object Detection [논문 리뷰] [YOLOv1] You Only Look Once:Unified, Real-Time Object Detection … YOLO는 기존 모델들과 달리, single network 구조를 형성해 실시간 … YOLO:: You Only Look Once:Unified, Real-Time Object Detection https://arxiv.org/abs/1506.02640 You Only Look Once: Unified, Real-Time Object Detection We present YOLO, a new approach to objec..
- Table of Contents:
NISSO
[논문 리뷰] [YOLOv1] You Only Look OnceUnified Real-Time Object Detection 본문티스토리툴바
[논문리뷰] You Only Look Once (feat. YOLO v1, Deep learning VISION)
- Article author: daje0601.tistory.com
- Reviews from users: 35459 Ratings
- Top rated: 3.7
- Lowest rated: 1
- Summary of article content: Articles about [논문리뷰] You Only Look Once (feat. YOLO v1, Deep learning VISION) [논문리뷰] You Only Look Once (feat. YOLO v1, Deep learning VISION). J.daje 2021. 5. 6. 21:47. 출처 : 이미지 링크 참조. 안녕하십니까 다제입니다. …
- Most searched keywords: Whether you are looking for [논문리뷰] You Only Look Once (feat. YOLO v1, Deep learning VISION) [논문리뷰] You Only Look Once (feat. YOLO v1, Deep learning VISION). J.daje 2021. 5. 6. 21:47. 출처 : 이미지 링크 참조. 안녕하십니까 다제입니다. 안녕하십니까 다제입니다. 오늘은 어마어마하게 인용이 된 You Only Look Once 논문리뷰를 진행토록 하겠습니다. 해당 리뷰는 You Only Look Once논문과 여러 블로그들을 참고하여 작성되었습니다. 부족한 부분이..
- Table of Contents:
코딩일기
[논문리뷰] You Only Look Once (feat YOLO v1 Deep learning VISION) 본문티스토리툴바
YOLO 논문 리뷰
- Article author: ysbstudy.tistory.com
- Reviews from users: 23733 Ratings
- Top rated: 4.0
- Lowest rated: 1
- Summary of article content: Articles about YOLO 논문 리뷰 YOLO는 2015년에 나온 논문으로 Faster R-CNN에 비하여 부려 6배 가량 빠른 속도를 보인다. 정확도는 비록 조금 낮다 하더라고 정말 비약적인 발전 … …
- Most searched keywords: Whether you are looking for YOLO 논문 리뷰 YOLO는 2015년에 나온 논문으로 Faster R-CNN에 비하여 부려 6배 가량 빠른 속도를 보인다. 정확도는 비록 조금 낮다 하더라고 정말 비약적인 발전 … YOLO는 2015년에 나온 논문으로 Faster R-CNN에 비하여 부려 6배 가량 빠른 속도를 보인다. 정확도는 비록 조금 낮다 하더라고 정말 비약적인 발전이라고 할 수 있다!! www.youtube.com/watch?v=XS2UWYuh5u0 YOLO..
- Table of Contents:
공부기록
YOLO 논문 리뷰 본문
티스토리툴바
YOLO v1 논문(You Only Look Once:Unified, Real-Time Object Detection) 리뷰
- Article author: herbwood.tistory.com
- Reviews from users: 17591 Ratings
- Top rated: 3.7
- Lowest rated: 1
- Summary of article content: Articles about YOLO v1 논문(You Only Look Once:Unified, Real-Time Object Detection) 리뷰 이번 포스팅에서는 YOLO v1 논문(You Only Look Once:Unified, Real-Time Object Detection) 논문을 리뷰해보도록 하겠습니다. …
- Most searched keywords: Whether you are looking for YOLO v1 논문(You Only Look Once:Unified, Real-Time Object Detection) 리뷰 이번 포스팅에서는 YOLO v1 논문(You Only Look Once:Unified, Real-Time Object Detection) 논문을 리뷰해보도록 하겠습니다. 이번 포스팅에서는 YOLO v1 논문(You Only Look Once:Unified, Real-Time Object Detection) 논문을 리뷰해보도록 하겠습니다. 2-stage detector는 localization과 classification을 수행하는 network 혹은 컴포넌..
- Table of Contents:
약초의 숲으로 놀러오세요
YOLO v1 논문(You Only Look OnceUnified Real-Time Object Detection) 리뷰 본문
See more articles in the same category here: Chewathai27.com/to/blog.
YOLO(You Only Look Once) 톺아보기
본 글은 YOLO 논문 전체를 번역 및 설명해놓은 글입니다. 크게 중요하지 않은 부분을 제외하고는 대부분의 글을 번역했고 필요하다면 부가적인 설명도 추가했습니다. 내용이 긴 섹션 끝에는 요약도 추가했습니다. 번역이 이상하다거나 틀린 내용이 있다면 피드백 부탁드립니다.
Abstract
YOLO 연구진은 객체 검출(object detection)에 새로운 접근방식을 적용했습니다.
기존의 multi-task 문제를 하나의 회귀(regression) 문제로 재정의했습니다.
YOLO는 이미지 전체에 대해서 하나의 신경망(a single neural network)이 한 번의 계산만으로 bounding box와 클래스 확률(class probability)을 예측합니다.
-> bounding box란 객체의 위치를 알려주기 위해 객체의 둘레를 감싼 직사각형 박스를 말합니다. 클래스 확률이란 bounding box로 둘러싸인 객체가 어떤 클래스에 해당하는지에 관한 확률을 의미합니다.
-> bounding box란 객체의 위치를 알려주기 위해 객체의 둘레를 감싼 직사각형 박스를 말합니다. 클래스 확률이란 bounding box로 둘러싸인 객체가 어떤 클래스에 해당하는지에 관한 확률을 의미합니다. 객체 검출 파이프라인이 하나의 신경망으로 구성되어 있으므로 end-to-end 형식입니다.
YOLO의 통합된 모델을 굉장히 빠릅니다. (1초에 45 프레임 처리, Fast YOLO는 1초에 155 프레임 처리)
1. Introduction
사람은 이미지를 보면 어디에 무엇이 있는지를 한 번에 파악할 수 있습니다. 사람의 시각 체계는 빠르고 정확하기 때문입니다. 그래서 운전을 하면서도 빠르게 지나가는 바깥 환경을 빠르고 정확하게 인식할 수 있습니다. 사람의 시각 체계와 같이 빠르고 정확한 객체 검출 모델을 만들 수 있다면 자율주행차 기술도 급격히 발전할 것입니다.
기존의 검출(detection) 모델은 분류기(classfier)를 재정의하여 검출기(detector)로 사용하고 있습니다. 분류(classification)란 하나의 이미지를 보고 그것이 개인지 고양이인지 판단하는 것을 뜻합니다. 하지만 객체 검출(object detection)은 하나의 이미지 내에서 개는 어디에 위치해 있고, 고양이는 어디에 위치해 있는지 판단하는 것입니다. 따라서 객체 검출은 분류뿐만 아니라 위치 정보도 판단해야 합니다. 기존의 객체 검출 모델로는 대표적으로 DPM과 R-CNN이 있습니다.
Deformable parts models(DPM)은 이미지 전체를 거쳐 슬라이딩 윈도(sliding window) 방식으로 객체 검출을 하는 모델입니다. R-CNN은 이미지 안에서 bounding box를 생성하기 위해 region proposal이라는 방법을 사용합니다. 그렇게 제안된 bounding box에 classifier를 적용하여 분류(classification)합니다. 분류(classification)한 뒤 bounding box를 조정하고, 중복된 검출을 제거하고, 객체에 따라 box의 점수를 재산정하기 위해 후처리(post-processing)를 합니다. 이런 복잡함 때문에 R-CNN은 느립니다. 각 절차를 독립적으로 훈련시켜야 하므로 최적화(optimization)하기에도 힘듭니다.
그리하여 YOLO 연구진은 객체 검출을 하나의 회귀 문제(single regression problem)로 보고 절차를 개선했습니다. 이미지의 픽셀로부터 bounding box의 위치(coordinates), 클래스 확률(class probabilities)을 구하기까지의 일련을 절차를 하나의 회귀 문제로 재정의한 것입니다. 이러한 시스템을 통해 YOLO(you only look once)는 이미지 내에 어떤 물체가 있고 그 물체가 어디에 있는지를 하나의 파이프라인으로 빠르게 구해줍니다. 이미지를 한 번만 보면 객체를 검출할 수 있다 하여 이름이 YOLO(you only look once)입니다.
YOLO는 단순합니다. 우선, Figure 1을 봅시다. 하나의 컨볼루션 네트워크(convolutional network)가 여러 bounding box와 그 bounding box의 클래스 확률을 동시에 계산해 줍니다. YOLO는 이미지 전체를 학습하여 곧바로 검출 성능(detection performance)을 최적화합니다. YOLO의 이런 통합된 모델은 기존의 객체 검출 모델에 비해 여러 가지 장점이 있습니다.
첫째, YOLO는 굉장히 빠릅니다. 왜냐하면 YOLO는 기존의 복잡한 객체 검출 프로세스를 하나의 회귀 문제로 바꾸었기 때문입니다. 그리하여 기존의 객체 검출 모델처럼 복잡한 파이프라인이 필요 없습니다. 단순히 테스트 단계에서 새로운 이미지를 YOLO 신경망에 넣어주기만 하면 쉽게 객체 검출을 할 수 있습니다. YOLO의 기본 네트워크(base network)는 Titan X GPU에서 배치 처리(batch processing) 없이 1초에 45 프레임을 처리합니다. 빠른 버전의 YOLO(Fast YOLO)는 1초에 150 프레임을 처리합니다. 이는 동영상을 실시간으로 처리할 수 있다는 의미입니다. (25밀리 초 이하의 지연시간으로 처리 가능) 더욱이 YOLO는 다른 실시간 객체 검출 모델보다 2배 이상의 mAP(mean average precision의 약자로 정확성을 뜻함)를 갖습니다. 데모 버전의 YOLO가 웹캠에 찍힌 영상을 실시간으로 처리하는 것을 보려면 이곳을 참고해주시기 바랍니다.
YOLO를 이용한 실시간 객체 검출
둘째, YOLO는 예측을 할 때 이미지 전체를 봅니다. 슬라이딩 윈도(sliding window)나 region proposal 방식과 달리, YOLO는 훈련과 테스트 단계에서 이미지 전체를 봅니다. 그리하여 클래스의 모양에 대한 정보뿐만 아니라 주변 정보까지 학습하여 처리합니다. 반면, YOLO 이전의 객체 검출 모델 중 가장 성능이 좋은 모델인 Fast R-CNN는 주변 정보까지는 처리하지 못합니다. 그래서 아무 물체가 없는 배경(background)에 반점이나 노이즈가 있으면 그것을 물체로 인식합니다. 이를 background error라고 합니다. YOLO는 이미지 전체를 처리하기 때문에 background error가 Fast R-CNN에 비해 훨씬 적습니다. (대략 1/2 가량)
셋째, YOLO는 물체의 일반적인 부분을 학습합니다. 일반적인 부분을 학습하기 때문에 자연 이미지를 학습하여 그림 이미지로 테스트할 때, YOLO의 성능은 DPM이나 R-CNN보다 월등히 뛰어납니다. 따라서 다른 모델에 비해 YOLO는 훈련 단계에서 보지 못한 새로운 이미지에 대해 더 강건(robust)합니다. 즉, 검출 정확도가 더 높다는 뜻입니다.
하지만, YOLO는 최신(SOTA, state-of-the-art) 객체 검출 모델에 비해 정확도가 다소 떨어진다는 단점이 있습니다. 빠르게 객체를 검출할 수 있다는 장점은 있지만 정확성이 다소 떨어집니다. 특히 작은 물체에 대한 검출 정확도가 떨어집니다. 속도와 정확성은 trade-off 관계입니다. YOLO의 모든 코드는 오픈 소스이며, 사전 훈련된(pretrained) 모델도 다운받아 사용할 수 있습니다.
1. Introduction 요약:
– YOLO는 단일 신경망 구조이기 때문에 구성이 단순하며, 빠르다.
– YOLO는 주변 정보까지 학습하며 이미지 전체를 처리하기 때문에 background error가 작다.
– YOLO는 훈련 단계에서 보지 못한 새로운 이미지에 대해서도 검출 정확도가 높다.
– 단, YOLO는 SOTA 객체 검출 모델에 비해 정확도(mAP)가 다소 떨어진다.
2. Unified Detection
YOLO는 객체 검출의 개별 요소를 단일 신경망(single neural network)으로 통합한 모델입니다. YOLO는 각각의 bounding box를 예측하기 위해 이미지 전체의 특징을 활용합니다. 이러한 YOLO의 디자인 덕분에 높은 정확성을 유지하면서 end-to-end 학습과 실시간 객체 검출이 가능합니다.
YOLO는 입력 이미지(input images)를 S x S 그리드(S x S grid)로 나눕니다. 만약 어떤 객체의 중심이 특정 그리드 셀(grid cell) 안에 위치한다면, 그 그리드 셀이 해당 객체를 검출해야 합니다. (If the center of an object falls into a grid cell, that grid cell is responsible for detecting that object.)
각각의 그리드 셀(grid cell)은 B개의 bounding box와 그 bounding box에 대한 confidence score를 예측합니다. confidence score는 bounding box가 객체를 포함한다는 것을 얼마나 믿을만한지, 그리고 예측한 bounding box가 얼마나 정확한지를 나타냅니다. confidence score는 다음과 같이 정의합니다.
여기서 IOU는 intersection over union의 약자로 객체의 실제 bounding box와 예측 bounding box의 합집합 면적 대비 교집합 면적의 비율을 뜻합니다. 즉, IOU = (실제 bounding box와 예측 bounding box의 교집합) / (실제 bounding box와 예측 bounding box의 합집합)입니다.
만약 그리드 셀에 아무 객체가 없다면 Pr(Obejct)=0입니다. 그러므로 confidence score도 0입니다. 그리드 셀에 어떤 객체가 확실히 있다고 예측했을 때, 즉 Pr(Object)=1일 때가 가장 이상적입니다. 따라서 confidence score가 IOU와 같다면 가장 이상적인 score입니다.
각각의 bounding box는 5개의 예측치로 구성되어 있습니다. x, y, w, h, confidence가 그것입니다. (x, y) 좌표 쌍은 bouning box 중심의 그리드 셀(grid cell) 내 상대 위치를 뜻합니다. 절대 위치가 아니라 그리드 셀 내의 상대 위치이므로 0~1 사이의 값을 갖습니다. 만일 bounding box의 중심인 (x, y)가 정확히 그리드 셀 중앙에 위치한다면 (x, y)=(0.5, 0.5)입니다. (w, h) 쌍은 bounding box의 상대 너비와 상대 높이를 뜻합니다. 이때 (w, h)는 이미지 전체의 너비와 높이를 1이라고 했을 때 bounding box의 너비와 높이가 몇인지를 상대적인 값으로 나타냅니다. 그러므로 (w, h)도 역시 0~1 사이의 값을 갖습니다. 마지막으로 confidence는 앞서 다룬 confience score와 동일합니다.
그리고 각각의 그리드 셀은 conditional class probabilities(C)를 예측합니다. conditional class probabilities는 다음과 같이 계산할 수 있습니다.
이는 그리드 셀 안에 객체가 있다는 조건 하에 그 객체가 어떤 클래스(class)인지에 대한 조건부 확률입니다. 그리드 셀에 몇 개의 bounding box가 있는지와는 무관하게 하나의 그리드 셀에는 오직 하나의 클래스(class)에 대한 확률 값만을 구합니다. 하나의 그리드 셀은 B개의 bounding box를 예측한다고 했습니다. B의 개수와는 무관하게 하나의 그리드 셀에서는 클래스 하나만 예측하는 것입니다.
테스트 단계에서는 conditional class probability(C)와 개별 boudning box의 confidence score를 곱해주는데, 이를 각 bounding box에 대한 class-specific confidence score라고 부릅니다. class-specific confidence score는 다음과 같이 계산할 수 있습니다. 위에서 구한 conditional class probability와 confidence score를 곱한 값입니다.
이 score는 bounding box에 특정 클래스(class) 객체가 나타날 확률(=Pr(Class_i))과 예측된 bounding box가 그 클래스(class) 객체에 얼마나 잘 들어맞는지(fits the object)(=IOU_pred^truth)를 나타냅니다. (These scores encode both the probability of that class appearing in the box and how well the predicted box fits the object.)
YOLO 연구진은 파스칼 VOC라는 이미지 인식 국제대회 데이터 셋을 이용해 실험했습니다. S=7, B=2로 세팅했고 파스칼 VOC는 총 20개의 라벨링 된 클래스가 있으므로 C=20입니다. S=7 이면 인풋 이미지는 7 x 7 그리드로 나뉩니다. B=2이라는 것은 하나의 그리드 셀에서 2개의 bounding box를 예측하겠다는 뜻입니다. 이렇게 했을 때 S x S x (B*5 + C) 텐서를 생성합니다. 따라서 최종 예측 텐서의 dimension은 (7 x 7 x 30)입니다.
2. Unified Detection 요약:
– YOLO는 객체 검출의 개별 요소를 단일 신경망(single neural network)으로 통합한 모델이다.
– 입력 이미지(input images)를 S x S 그리드(S x S grid)로 나눈다.
– 각각의 그리드 셀(grid cell)은 B개의 bounding box와 그 bounding box에 대한 confidence score를 예측한다.
– class-specific confidence score는 bounding box에 특정 클래스(class) 객체가 나타날 확률과 예측된 bounding box가 그 클래스(class) 객체에 얼마나 잘 들어맞는지를 나타낸다.
– 최종 예측 텐서의 dimension은 (7 x 7 x 30)이다.
2. 1. Network Design
앞서 말씀드렸듯이 이 YOLO 모델을 하나의 CNN(Convolutional Neural Network) 구조로 디자인되었습니다. YOLO 연구진은 파스칼 VOC 데이터셋에 대해 모델링을 수행했습니다. 이 CNN의 앞단은 컨볼루션 계층(convolutional layer)이고, 이어서 전결합 계층(fully-connected layer)으로 구성되어 있습니다. 컨볼루션 계층(convolutional layer)은 이미지로부터 특징을 추출하고, 전결합 계층(fully connected layer)은 클래스 확률과 bounding box의 좌표(coordinates)를 예측합니다.
YOLO의 신경망 구조는 이미지 분류(image classification)에 사용되는 GoogLeNet에서 따왔습니다. YOLO는 총 24개의 컨볼루션 계층(convolutional layers)과 2개의 전결합 계층(fully connected layers)으로 구성되어 있습니다. GoogLeNet의 인셉션 구조 대신 YOLO는 1 x 1 축소 계층(reduction layer)과 3 x 3 컨볼루션 계층의 결합을 사용했습니다. 1 x 1 축소 계층(reduction layer)과 3 x 3 컨볼루션 계층의 결합이 인셉션 구조를 대신한다고 합니다. YOLO 모델의 전체 구조는 다음과 같습니다. 이 모델의 최종 아웃풋은 7 x 7 x 30의 예측 텐서(prediction tensors)입니다.
좀 더 빠른 객체 인식 속도를 위해 YOLO보다 더 적은 컨볼루션 계층(24개 대신 9개)과 필터를 사용하는 Fast YOLO라는 것도 있습니다. 크기만 다를 뿐이고 훈련 및 테스트 시 사용하는 나머지 파라미터는 YOLO와 모두 동일합니다.
2. 2. Training
우선, 1,000개의 클래스를 갖는 ImageNet 데이터 셋으로 YOLO의 컨볼루션 계층을 사전훈련(pretrain)시켰습니다. 사전훈련을 위해서 24개의 컨볼루션 계층 중 첫 20개의 컨볼루션 계층만 사용했고, 이어서 전결합 계층을 연결했습니다. 이 모델을 약 1주간 훈련시켰습니다. 이렇게 사전 훈련된 모델은 ImageNet 2012 검증 데이터 셋에서 88%의 정확도를 기록했습니다. YOLO 연구진은 이 모든 훈련(training)과 추론(inference)을 위해 Darknet 프레임워크를 사용했습니다.
Darknet 프레임워크는 YOLO를 개발한 Joseph Redmon이 독자적으로 개발한 신경망 프레임워크입니다. 신경망들을 학습하거나 실행할 수 있는 프레임워크로 YOLO도 Darknet에서 학습된 모델 중 하나입니다.
ImageNet은 분류(classification)를 위한 데이터 셋입니다. 따라서 사전 훈련된 분류 모델을 객체 검출(object detection) 모델로 바꾸어야 합니다. 연구진은 사전 훈련된 20개의 컨볼루션 계층 뒤에 4개의 컨볼루션 계층 및 2개의 전결합 계층을 추가하여 성능을 향상시켰습니다. 4개의 컨볼루션 계층 및 2개의 전결합 계층을 추가할 때, 이 계층의 가중치(weights)는 임의로 초기화했습니다. 또한, 객체 검출을 위해서는 이미지 정보의 해상도가 높아야 합니다. 따라서 입력 이미지의 해상도를 224 x 224에서 448 x 448로 증가시켰습니다.
이 신경망의 최종 아웃풋(예측값)은 클래스 확률(class probabilities)과 bounding box 위치정보(coordinates)입니다. bounding box의 위치정보에는 bounding box의 너비(width)와 높이(height)와 bounding box의 중심 좌표(x, y)가 있습니다. YOLO 연구진은 너비, 높이, 중심 좌표값(w, h, x, y)을 모두 0~1 사이의 값으로 정규화(normalize)했습니다.
YOLO 신경망의 마지막 계층에는 선형 활성화 함수(linear activation function)를 적용했고, 나머지 모든 계층에는 leaky ReLU를 적용했습니다. ReLU는 0 이하의 값은 모두 0인데 비해, leaky ReLU는 0 이하의 값도 작은 음수 값을 갖습니다.
leaky ReLU 공식
YOLO의 loss는 SSE(sum-squared error)를 기반으로 합니다. 따라서 최종 아웃풋의 SSE(sum-squared error)를 최적화(optimize) 해야 합니다. SSE를 사용한 이유는 SSE가 최적화하기 쉽기 때문입니다. 하지만 SSE를 최적화하는 것이 YOLO의 최종 목적인 mAP(평균 정확도)를 높이는 것과 완벽하게 일치하지는 않습니다. (however it does not perfectly align with our goal of maximizing average precision.) YOLO의 loss에는 bounding box의 위치를 얼마나 잘 예측했는지에 대한 loss인 localization loss와 클래스를 얼마나 잘 예측했는지에 대한 loss인 classification loss가 있습니다. localization loss와 classification loss의 가중치를 동일하게 두고 학습시키는 것은 좋은 방법이 아닙니다. 하지만 SSE를 최적화하는 방식은 이 두 loss의 가중치를 동일하게 취급합니다.
또 다른 문제가 있는데, 이미지 내 대부분의 그리드 셀에는 객체가 없습니다. 배경 영역이 전경 영역보다 더 크기 때문입니다. 그리드 셀에 객체가 없다면 confidence score=0입니다. 따라서 대부분의 그리드 셀의 confidence socre=0이 되도록 학습할 수밖에 없습니다. 이는 모델의 불균형을 초래합니다.
이를 개선하기 위해 객체가 존재하는 bounding box 좌표(coordinate)에 대한 loss의 가중치를 증가시키고, 객체가 존재하지 않는 bounding box의 confidence loss에 대한 가중치는 감소시켰습니다. 이는 localization loss와 classification loss 중 localization loss의 가중치를 증가시키고, 객체가 없는 그리드 셀의 confidence loss보다 객체가 존재하는 그리드 셀의 confidence loss의 가중치를 증가시킨다는 뜻입니다. 이로써 위 두 문제가 해결됩니다. 이를 위해 두 개의 파라미터를 사용했는데, λ_coord와 λ_noobj입니다. λ_coord=5, λ_noobj=0.5로 가중치를 줬습니다.
SSE는 또 다른 문제를 가지고 있습니다. SSE는 큰 bounding box와 작은 boudning box에 대해 모두 동일한 가중치로 loss를 계산합니다. 하지만 작은 bounding box가 큰 bounding box보다 작은 위치 변화에 더 민감합니다. 큰 객체를 둘러싸는 bounding box는 조금 움직여도 여전히 큰 객체를 잘 감싸지만, 작은 객체를 둘러싸는 bounding box는 조금만 움직여도 작은 객체를 벗어나게 됩니다. 이를 개선하기 위해 bounding box의 너비(widht)와 높이(hegith)에 square root를 취해주었습니다. 너비와 높이에 square root를 취해주면 너비와 높이가 커짐에 따라 그 증가율이 감소해 loss에 대한 가중치를 감소시키는 효과가 있기 때문입니다.
YOLO는 하나의 그리드 셀 당 여러 개의 bounding box를 예측합니다. 훈련(training) 단계에서 하나의 bounding box predictor가 하나의 객체에 대한 책임이 있어야 합니다. 즉, 객체 하나당 하나의 bounding box와 매칭을 시켜야 합니다. 따라서 여러 개의 bounding box 중 하나만 선택해야 합니다. 이를 위해 예측된 여러 bounding box 중 실제 객체를 감싸는 ground-truth boudning box와의 IOU가 가장 큰 것을 선택합니다. ground-truth boudning box와의 IOU가 가장 크다는 것은 객체를 가장 잘 감싼다는 뜻과 같습니다. 이렇게 훈련된 bounding box predictor는 특정 크기(size), 종횡비(aspect ratios), 객체의 클래스(classes of object)를 잘 예측하게 됩니다.
훈련 단계에서 사용하는 loss function은 다음과 같습니다.
좀 복잡하지만 하나하나 살펴보면 그리 어렵지 않습니다. 여기서 1_i^obj는 그리드 셀 i 안에 객체가 존재하는지 여부를 의미합니다. 이 값은 객체 존재하면 1, 존재하지 않으면 0입니다. 1_ij^obj는 그리드 셀 i의 j번째 bounding box predictor가 사용되는지 여부를 의미합니다. 위 loss function의 5개 식은 차례대로 아래와 같은 의미를 갖습니다.
(1) Object가 존재하는 그리드 셀 i의 bounding box predictor j에 대해, x와 y의 loss를 계산.
(2) Object가 존재하는 그리드 셀 i의 bounding box predictor j에 대해, w와 h의 loss를 계산. 큰 box에 대해서는 작은 분산(small deviation)을 반영하기 위해 제곱근을 취한 후, sum-squared error를 구합니다. (같은 error라도 큰 box의 경우 상대적으로 IOU에 영향을 적게 줍니다.)
(3) Object가 존재하는 그리드 셀 i의 bounding box predictor j에 대해, confidence score의 loss를 계산. (Ci = 1)
(4) Object가 존재하지 않는 그리드 셀 i의 bounding box predictor j에 대해, confidence score의 loss를 계산. (Ci = 0)
(5) Object가 존재하는 그리드 셀 i에 대해, conditional class probability의 loss를 계산. (p_i(c)=1 if class c is correct, otherwise: p_i(c)=0)
λ_coord: coordinates(x, y, w, h)에 대한 loss와 다른 loss들과의 균형을 위한 balancing parameter.
λ_noobj: 객체가 있는 box와 없는 box 간에 균형을 위한 balancing parameter. (일반적으로 image내에는 객체가 있는 그리드 셀보다는 없는 셀이 훨씬 많으므로)
출처: curt-park.github.io/2017-03-26/yolo/
YOLO 연구진은 파스칼 VOC 2007, 2012 훈련 및 검증 데이터 셋을 활용하여 135 epochs로 YOLO 모델을 훈련을 시켰습니다. 이때 batch size=64, momentum=0.9, decay=0.0005로 설정했습니다. 초반에는 학습률(learning rate)을 0.001에서 0.01로 천천히 상승시켰습니다. 만일 처음부터 높은 learning rate로 훈련시켰다면 기울기 폭발(gradient explosion)이 발생하기 때문에 처음에는 작은 값부터 시작한 것입니다. 이후 75 epoch 동안에는 0.01, 30 epoch 동안에는 0.001, 그리고 마지막 30 epoch 동안은 0.0001로 learning rate를 설정했습니다. learning rate를 처음에는 점점 증가시켰다가 다시 감소시켰습니다.
과적합(overfitting)을 막기 위해 드롭아웃(dropout)과 data augmentation을 적용했습니다. 드롭아웃 비율은 0.5로 설정했습니다. data augmentation을 위해 원본 이미지의 20%까지 랜덤 스케일링(random scaling)과 랜덤 이동(random translation)을 적용했습니다.
2. 2. Training 요약:
– ImageNet 데이터 셋으로 YOLO의 앞단 20개의 컨볼루션 계층을 사전 훈련시킨다.
– 사전 훈련된 20개의 컨볼루션 계층 뒤에 4개의 컨볼루션 계층 및 2개의 전결합 계층을 추가한다.
– YOLO 신경망의 마지막 계층에는 선형 활성화 함수(linear activation function)를 적용하고, 나머지 모든 계층에는 leaky ReLU를 적용한다.
– 구조상 문제 해결을 위해 아래 3가지 개선안을 적용한다.
1) localization loss와 classification loss 중 localization loss의 가중치를 증가시킨다.
2) 객체가 없는 그리드 셀의 confidence loss보다 객체가 존재하는 그리드 셀의 confidence loss의 가중치를 증가시킨다.
3) bounding box의 너비(widht)와 높이(hegith)에 square root를 취해준 값을 loss function으로 사용한다.
– 과적합(overfitting)을 막기 위해 드롭아웃(dropout)과 data augmentation을 적용한다.
2. 3. Inference
훈련 단계와 마찬가지로, 추론 단계에서도 테스트 이미지로부터 객체를 검출하는 데에는 하나의 신경망 계산만 하면 됩니다. 파스칼 VOC 데이터 셋에 대해서 YOLO는 한 이미지 당 98개의 bounding box를 예측해주고, 그 bounding box마다 클래스 확률(class probabilities)을 구해줍니다. YOLO는 테스트 단계에서 굉장히 빠릅니다. 왜냐하면 YOLO는 R-CNN 등과 다르게 하나의 신경망 계산(a single network evaluation)만 필요하기 때문입니다.
하지만 YOLO의 그리드 디자인(grid design)은 한 가지 단점이 있습니다. 하나의 객체를 여러 그리드 셀이 동시에 검출하는 경우가 있다는 점입니다. 객체의 크기가 크거나 객체가 그리드 셀 경계에 인접해 있는 경우, 그 객체에 대한 bounding box가 여러 개 생길 수 있습니다. 즉, 하나의 그리드 셀이 아닌 여러 그리드 셀에서 해당 객체에 대한 bounding box를 예측할 수 있다는 뜻입니다. 하나의 객체가 정확히 하나의 그리드 셀에만 존재하는 경우에는 이런 문제가 없지만 객체의 크기, 객체의 위치에 따라 충분히 이런 문제가 발생할 수 있습니다. 이를 다중 검출(multiple detections) 문제라고 합니다. 이런 다중 검출(multiple detections) 문제는 비 최대 억제(non-maximal suppression)라는 방법을 통해 개선할 수 있습니다. YOLO는 비 최대 억제를 통해 mAP를 2~3%가량 향상시켰습니다.
2. 4. Limitations of YOLO
YOLO는 하나의 그리드 셀마다 두 개의 bounding box를 예측합니다. 그리고 하나의 그리드 셀마다 오직 하나의 객체만 검출할 수 있습니다. 이는 공간적 제약(spatial constraints)을 야기합니다. 공간적 제약이란 ‘하나의 그리드 셀은 오직 하나의 객체만 검출하므로 하나의 그리드 셀에 두 개 이상의 객체가 붙어있다면 이를 잘 검출하지 못하는 문제’를 뜻합니다. 예를 들어, 새 떼와 같이 작은 물체가 몰려 있는 경우 공간적 제약 때문에 객체 검출이 제한적일 수밖에 없습니다. 하나의 그리드 셀은 오직 하나의 객체만 검출하는데 여러 객체가 몰려있으면 검출하지 못하는 객체도 존재하는 것이죠.
그리고 YOLO 모델은 데이터로부터 bounding box를 예측하는 것을 학습하기 때문에 훈련 단계에서 학습하지 못했던 새로운 종횡비(aspect ratio, 가로 세로 비율)를 마주하면 고전할 수밖에 없습니다.
마지막으로 YOLO 모델은 큰 bounding box와 작은 bounding box의 loss에 대해 동일한 가중치를 둔다는 단점이 있습니다. 크기가 큰 bounding box는 위치가 약간 달라져도 비교적 성능에 별 영향을 주지 않는데, 크기가 작은 bounding box는 위치가 조금만 달라져도 성능에 큰 영향을 줄 수 있습니다. 큰 bounding box에 비해 작은 bounding box가 위치 변화에 따른 IOU 변화가 더 심하기 때문입니다. 이를 부정확한 localization 문제라고 부릅니다.
2. 4. Limitations of YOLO 요약:
– 작은 객체들이 몰려있는 경우 검출을 잘 못한다.
– 훈련 단계에서 학습하지 못한 종횡비(aspect ratio)를 테스트 단계에서 마주치면 고전한다.
– 큰 bounding box와 작은 bounding box의 loss에 대해 동일한 가중치를 둔다.
3. Comparison to Other Detection Systems
Deformable parts models(DPM)
객체 검출 모델 중 하나인 DPM은 슬라이딩 윈도(sliding window) 방식을 사용합니다. DPM은 하나로 연결된 파이프라인이 아니라 서로 분리된 파이프라인으로 구성되어 있습니다. 독립적인 파이프라인이 각각 특징 추출(feature extraction), 위치 파악(region classification), bounding box 예측(bounding box prediction) 등을 수행합니다. 반면 YOLO는 이렇게 분리된 파이프라인을 하나의 컨볼루션 신경망으로 대체한 모델입니다. 이 신경망은 특징 추출, bounding box 예측, 비 최대 억제 등을 한 번에 처리합니다. 따라서 YOLO는 DPM보다 더 빠르고 정확합니다.
R-CNN
R-CNN은 슬라이딩 윈도 대신 region proposal 방식을 사용하여 객체를 검출하는 모델입니다. selective search라는 방식으로 여러 bounding box를 생성하고, 컨볼루션 신경망으로 feature를 추출하고, SVM으로 bounding box에 대한 점수를 측정합니다. 그리고 선형 모델(linear model)로 bounding box를 조정하고, 비 최대 억제(non-max suppression)로 중복된 검출을 제거합니다. 이 복잡한 파이프라인을 각 단계별로 독립적으로 튜닝해야 하기 때문에 R-CNN은 속도가 굉장히 느립니다. 테스트 단계에서 한 이미지를 처리하는데 40초 이상이 걸립니다. 정확성은 높지만 속도가 너무 느려 실시간 객체 검출 모델로 사용하기에는 한계가 있습니다.
YOLO는 R-CNN와 비슷한 면도 있습니다. 각 그리드 셀이 bounding box를 예측한다는 것, 그 box에 대해 점수를 계산한다는 것이 비슷합니다. 하지만 YOLO는 각 그리드 셀의 공간적 제약 때문에 하나의 객체가 여러 번 검출되는 경우가 R-CNN에 비해 적습니다. 그리고 YOLO는 R-CNN에 비해 예측하는 bounding box의 개수도 훨씬 적습니다. 한 이미지 당 bounding box가 2,000개인 R-CNN에 비해 YOLO는 98개로 훨씬 적습니다. 그리고 다시 말하지만 YOLO는 이 모든 절차를 단일 모델로 수행합니다.
4. Experiments
먼저, YOLO를 다른 실시간(real-time) 객체 검출 모델과 비교해보겠습니다. YOLO와 Fast R-CNN의 성능의 차이를 비교하기 위해 파스칼 VOC 2007 데이터 셋에서의 에러를 구해봤습니다. Fast R-CNN은 이 논문이 나온 시점을 기준으로 성능이 가장 좋은 R-CNN 계열의 모델이었습니다.
4. 1. Comparison to Other Real-Time Systems
객체 검출에 대한 많은 연구들은 표준화된 객체 검출 파이프라인을 빠르게 만드는데 초점을 두고 있습니다. YOLO 연구진은 GPU 버전의 YOLO와 30Hz/100Hz에서의 DPM의 성능을 비교해보았습니다.
Fast YOLO는 파스칼 데이터 셋 기준으로 가장 빠른 객체 검출 모델입니다. mAP는 52.7%입니다. 이는 30Hz/100Hz에서의 DPM보다 2배 높은 정확도입니다. YOLO는 실시간(real-time) 성능은 그대로 유지하며 mAP를 63.4%까지 높인 모델입니다.
또한 YOLO 연구진은 VGG-16을 사용하여 YOLO를 훈련시켰습니다. 이 모델은 일반 YOLO에 비해 mAP가 더 높지만 속도는 다소 느렸습니다. VGG-16을 사용하는 다른 객체 검출 모델과 비교하는 데에는 유용하지만 실시간 객체 검출 모델로 사용하기에는 속도가 느려, 이 논문에서는 속도가 빠른 YOLO에 집중해 설명했습니다.
Fast DPM은 DPM의 mAP를 약간 하락시키면서 속도를 향상시킨 모델입니다. 그러나 실시간(real-time) 검출에 사용하기에는 여전히 속도가 느립니다. 그리고 신경망을 이용한 객체 검출 모델에 비해 정확도도 떨어지는 편입니다.
R-CNN minus R 모델은 selective search를 정적 bounding box proposal로 대체한 모델입니다. R-CNN에 비해서는 훨씬 빠르지만 실시간(real-time) 검출에는 여전히 부족합니다. Fast R-CNN은 높은 정확도를 보이고 R-CNN보다 빠르지만 초당 0.5 프레임만을 처리할 수 있어 실시간 검출에 사용하기엔 역부족입니다.
Faster R-CNN 모델은 bounding box proposal을 위해 selective search를 사용하지 않고 신경망을 사용합니다. 그리하여 기존의 R-CNN 계열보다는 속도가 빨라졌지만 여전히 YOLO에 비해서는 몇 배나 느립니다.
아래 표는 각종 객체 검출 모델 별 정확도(mAP)와 속도(FPS)를 보여줍니다. FPS가 30 이상은 되어야 실시간 검출로 사용할 수 있는 것 같습니다. FPS가 30이라는 것은 1초에 30 프레임의 영상을 처리한다는 뜻입니다. 정확도는 Fast R-CNN과 Faster R-CNN VGG-16이 가장 높지만 이 모델들의 FPS는 너무 낮아 실시간 객체 검출 모델로 사용할 수는 없습니다. 반면, 정확도도 적당히 높고 속도도 빠른 모델은 YOLO 계열인 것을 알 수 있습니다.
4. 1. Comparison to Other Real-Time Systems 요약:
– YOLO는 기존 모델에 비해 속도는 월등히 빠르고, 정확도도 꽤 높은 수준이다.
4. 2. VOC 2007 Error Analysis
YOLO와 기존 객체 검출 모델을 더 비교해보겠습니다. 우선, 파스칼 VOC 2007 데이터 셋에 대해 YOLO와 Fast R-CNN의 성능을 비교해보았습니다. 이를 위해 Diagnosing Error in Object Detectors 논문에 소개된 에러 측정 방법론을 사용했습니다. 다음과 같은 기준으로 객체 검출이 정확한지, 틀렸다면 어떤 error type인지를 구분했습니다.
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 인 경우 Fast R-CNN과 YOLO를 비교한 결과는 다음과 같습니다. YOLO는 localization error 가 상대적으로 큽니다. localization error는 19.0%로 나머지 error를 모두 합한 15.5%(6.75%+4.0%+4.75%) 보다 큽니다. Fast R-CNN은 YOLO에 비해 localization error가 작습니다. 반면, background error가 상대적으로 큽니다. backgound error는 배경에 아무 물체가 없는데 물체가 있다고 판단하는 false positive error입니다. Fast R-CNN은 YOLO에 비해 background error가 3배나 더 큽니다. 4. 3. Combining Fast R-CNN and YOLO YOLO는 Fast R-CNN에 비해 background error가 훨씬 적습니다. 따라서 Fast R-CNN에 YOLO를 결합하여 background error를 줄인다면 굉장히 높은 성능을 낼 수 있을 것입니다. R-CNN이 예측하는 모든 boudning box에 대해 YOLO도 유사하게 예측하는지를 체크하면 됩니다. 만약 R-CNN이 예측한 bounding box와 YOLO가 예측한 bounding box가 유사하다면 두 bounding box가 겹치는 부분을 bounding box로 잡으면 됩니다. 파스칼 VOC 2007 데이터 셋에 대해 가장 성능이 좋은 Fast R-CNN 모델은 71.8%의 mAP를 기록했습니다. Fast R-CNN과 YOLO를 결합하면 mAP가 3.2% 올라 75.0%가 됩니다. Fast R-CNN과 다른 모델과도 앙상블을 해봤지만 mAP 향상은 0.3%, 0.6%로 미미했습니다. 물론 Fast R-CNN과 YOLO를 결합한 모델은 YOLO에 비해 느립니다. 왜냐하면 Fast R-CNN과 YOLO를 독립적으로 돌려 결과를 앙상블 하는 방식이기 때문입니다. 그렇지만 YOLO가 워낙 빨라 Fast R-CNN을 단독으로 돌리는 것과 앙상블 모델을 돌리는 것의 속도는 거의 유사합니다. 그 말은 Fast R-CNN을 사용하는 것보다는 Fast R-CNN과 YOLO를 결합한 모델을 사용하는 것이 더 낫다는 뜻입니다. 4. 4. VOC 2012 Results 파스칼 VOC 2012 데이터 셋에서 YOLO는 57.9%의 mAP를 달성했습니다. 이는 VGG-16을 사용한 R-CNN의 mAP와 비슷합니다. 아래 표를 참고하시기 바랍니다. 속도 측면에서는 YOLO가 빠르고, 정확도 측면에서는 Fast R-CNN과 YOLO를 결합한 모델이 가장 좋습니다. 4. 5. Generalizability: Person Detection in Artwork 객체 검출 연구를 위해 사용하는 데이터 셋은 훈련 데이터 셋과 테스트 데이터 셋이 동일한 분포를 지닙니다. 하지만 실제 이미지 데이터는 훈련 데이터 셋과 테스트 데이터 셋의 분포가 다를 수 있습니다. YOLO 연구진은 훈련 데이터 셋과 다른 분포는 지닌 테스트 데이터 셋(즉, 훈련 데이터 셋에서 보지 못한 새로운 데이터 셋)을 활용하여 테스트해봤습니다. 여기서는 피카소 데이터 셋과 일반 예술 작품을 사용했습니다. 훈련 단계에서는 실제 이미지로 학습했지만 테스트 단계에서는 예술 작품을 활용해 테스트해보는 것입니다. 아래 표는 YOLO과 다른 객체 검출 모델의 성능을 측정한 것입니다. 파스칼 VOC 2007에서 학습한 YOLO, R-CNN, DPM 등의 성능을 서로 비교했습니다. R-CNN은 VOC 2007에서는 높은 정확도를 보이지만 예술작품에 대해서는 굉장히 낮은 정확도를 보입니다. DPM은 예술 작품에 대해서도 정확도가 크게 떨어지지는 않았습니다. 다만 VOC 2007에서의 정확도도 그리 높은 편은 아닙니다. 반면 YOLO는 VOC 2007에서도 가장 높은 정확도를 보였고, 예술 작품에 대해서도 정확도가 크게 떨어지지 않았습니다. 4. 5. Generalizability: Person Detection in Artwork 요약: - YOLO는 훈련 단계에서 접하지 못한 새로운 이미지도 잘 검출한다. 5. Real-Time Detection In The Wild YOLO는 컴퓨터 비전 애플리케이션에 활용할 수 있는 빠르고 정확한 객체 검출 모델입니다. 연구진은 YOLO를 웹캠과 연결하여 실시간(real-time) 객체 검출을 수행했습니다. 이는 웹사이트를 통해 확인할 수 있습니다. 6. Conclusion 지금까지 객체 검출을 위한 통합 모델인 YOLO에 대해 소개했습니다. YOLO는 단순하면서도 빠르고 정확합니다. 또한 YOLO는 훈련 단계에서 보지 못한 새로운 이미지에 대해서도 객체를 잘 검출합니다. 즉, 새로운 이미지에 대해서도 강건하여 애플리케이션에서도 충분히 활용할만한 가치가 있습니다. References YOLO(You Only Look Once) Paper YOLO slideshare 자료 YOLO CVPR 2016 발표자료 [Hello Blog] YOLO 논문 리뷰 [모두를 위한 객체 검출] YOLO 논문 리뷰 [deepsystems.io] YOLO 자료
01). You Only Look Once 논문리뷰 · GitBook
You Only Look Once – Paper Review
01. Introduction
해당 논문이 나오기 전(2015년 전)에는 딥러닝 기반의 Object Detection System들은 Classification 모델을 Object Detection 시스템에 맞게 변형한 모델들이 주를 이루었습니다. Classification 모델을 변형한 시스템은 다양한 위치 및 크기에 대해서 학습하고 테스트를 진행했습니다.
대부분의 변형된 모델들은 Deformable Parts Models(DPM)이 sliding window 방법론을 사용하여 전체 이미지를 Classifier로 스캔하는 방식 형태의 방법론을 사용했습니다.
제일 최근(2015년)의 모델로는 R-CNN이 있는데, R-CNN은 bounding box일 확률이 높은 곳을 제안하고 제안된 box 영역을 Classifier로 넣어 classification을 수행합니다. 그다음 후처리를 통해서 bounding box를 개선(합치고, 제거하고)하는 방식을 사용합니다.
R-CNN모델은 region proposal / classification / box regression라는 3가지 단계를 거치는 과정을 가지며, 3가지 단계를 개별적으로 학습해야 하므로 복잡한 파이프라인을 갖게 됩니다. R-CNN은 이런 복잡한 파이프라인 때문에 최적화에 어렵고 굉장히 큰 inference time을 갖는다는 단점이 있습니다.
You Only Look Once(이하 YOLO)는 기존의 방법론인 Classification모델을 변형한 방법론에서 벗어나, Object Detection 문제를 regression문제로 정의하는 것을 통해서 이미지에서 직접 bounding box 좌표와 각 클래스의 확률을 구합니다.
YOLO는 End-to-End 방식의 통합된 구조로 되어 있으며, 이미지를 convolutional neural network에 한 번 평가(inference)하는 것을 통해서 동시에 다수의 bounding box와 class 확률을 구하게 됩니다. 이렇게 통합된 모델로 인해서 YOLO는 몇 가지 장점을 가지게 됩니다.
첫 번째로 Titan X에서 45fps를 달성하며 빠른 버전의 경우 150fps의 빠른 성능을 자랑함과 동시에 다른 실시간 시스템 대비 2배 이상의 mAP(mean average precision)를 높은 성능을 보여줍니다.
두 번째로는. sliding window 방식이 아닌 convolutional neural network를 사용하는 것으로 인해 전체 이미지를 보게끔 유도되어(문맥 정보;contextual information)각 class에 대한 표현을 더 잘 학습하게 됩니다 (R-CNN의 경우에는 이미지의 백그라운드에 의해서 Object Detection에 실패하는 경우가 있습니다).
세 번째로는 일반화된 Object의 표현을 학습합니다. 실험적으로 자연의 dataset을 학습시킨 이후에 학습시킨 네트워크에 artwork 이미지를 입력했을 때, DPM, R-CNN 대비 많은 격차로 좋은 Detection 성능을 보여줍니다.
YOLO에 대한 특징을 정리해보자면 다음과 같습니다.
state-of-the-art에는 못미치는 성능
빠른 inference
작은 물체에 대해서 Detection 성능이 떨어짐
end-to-end 형태의 inference와 train
좋은 일반화 성능
02. Unified Detection
YOLO의 핵심은 Unified Detection 입니다. 그리고 YOLO가 Unified Detection 가 될 수 있었던 것에는 convolutional neural network가 가장 중요한 역할을 합니다. YOLO는 단일 convolutional neural network 모델 하나로 (object detection 문제를 풀기 위한) 특징 추출, 바운딩 박스 계산, 클래스 분류를 모두 수행합니다. 즉 원본 이미지를 입력으로 받은 모델이 object detection에 필요한 모든 연산을 수행할 수 있다는 의미이며, 이것이 바로 YOLO에서 주장하는 Unified Detection 의 개념입니다.
YOLO에는 기존의 모델에는 없었던 다양한 이점들이 있습니다. 우선 모델이 이미지 전체를 보고 바운딩 박스를 예측할 수 있습니다. 즉 모델이 이미지의 전역적인 특징을 잘 이용해서 추론할 수 있습니다. 그리고 Unified Detection 이라는 용어 그대로 모델은 bounding box regression과 multi-class classification을 동시에 수행할 수 있습니다. 이러한 이점들로 인하여 YOLO는 높은 mAP를 유지하면서, end-to-end 학습이 가능하고, 실시간의 추론 속도가 가능한 것입니다.
지금부터는 YOLO 모델을 심도 있게 알아보도록 하겠습니다. YOLO 모델에서는 입력 이미지를 S x S 그리드로 나눕니다. 만약 어떤 객체의 중점이 특정 그리드 셀 안에 존재한다면, 해당 그리드 셀이 그 객체를 검출해야 합니다. 각 그리드 셀은 B개의 바운딩 박스를 예측합니다. 그리고 각 바운딩박스 마다 confidence scores 를 예측하는데, confidence scores 란 해당 바운딩 박스 내에 객체가 존재할 확률을 의미하며 0에서 1 사이의 값을 가집니다. confidence scores 를 수식적으로 나타내면 다음과 같습니다.
Pr(Object) ∗ IOU_truth^pred (1)
만약 어떤 셀 안에 객체가 없으면 confidence scores 는 0입니다. 또한 confidence scores 는 모델이 예측한 바운딩 박스와 ground truth 간의 IOU(intersection over union)이 동일할수록 좋습니다.
각 바운딩 박스는 값 5개를 예측합니다 : x , y , w , h , confidence . (x, y) 는 바운딩 박스의 중심점이며, 각 그리드 셀마다 상대적인 값으로 표현합니다. (w, h) 는 바운딩 박스의 width와 height인데 전체 이미지에 대해 상대적인 값으로 표현합니다. 그리고 confidence 는 앞서 다룬 confidence score 와 동일합니다.
각 그리드셀마다 확률값 C를 예측합니다. C는 조건부 클래스 확률(conditional class probabilities)인 Pr(Class_i|Object)입니다. YOLO에서는 그리드 당 예측하는 바운딩 박스의 갯수(B)와 상관없이 그리드 당 오직 하나의 클래스 확률만 예측합니다.
Test time에서는 조건부 클래스 확률과 각 바운딩 박스는 confidence score를 곱해주며 이는 다음과 같이 나타낼 수 있습니다.
Pr(Classi|Object) ∗ Pr(Object) ∗ IOUtruth pred = Pr(Classi) ∗ IOUtruth pred
바운딩 박스마다 sclass-specific confidence scores 를 얻을 수 있습니다. 이 스코어는 해당 바운딩 박스에서 특정 클래스 객체가 나타날 확률과 객체에 맞게 바운딩 박스를 올바르게 예측했는지를 나타냅니다.
논문에서는 PASCAL VOC를 이용하여 Evaluation을 진행합니다. 이를 위해 S = 7, B = 2, C = 20 으로 설정합니다. (PASCAL VOC에는 20개의 레이블이 있습니다). 따라서 모델의 output tensor는 7 x 7 x 30 입니다.
02.01. Network Design
앞서 말씀드렸듯이 YOLO는 convolutional neural network로 디자인된 모델입니다. YOLO는 앞단의 convolutional layers와 뒷단의 fully connected layers로 구성됩니다. convolutional layers는 이미지에서 특징을 추출하고, fully connected layers는 추출된 특징을 기반으로 클래스 확률과 바운딩 박스의 좌표를 추론합니다. YOLO는 24개의 convolutional layers와 2개의 fully connected layers로 구성됩니다. YOLO모델은 아래와 같습니다.
논문에서는 YOLO보다 속도가 빠른 버전인 Fast YOLO도 소개합니다. Fast YOLO는 YOLO에서 단순히 레이어의 개수를 줄인 모델인데 9개의 convolutional layer(기존 24)를 가진 모델입니다.
02.02. Training
이번 장에서는 YOLO의 학습과정을 살펴보겠습니다.
02.02.01) Pretraining Network
YOLO 모델의 convolutional layers는 ImageNet Dataset으로 Pretrain 합니다. 24개의 convolutional layers 중 앞단의 20개의 convolutional layers를 pretrain합니다. 20개의 convolutional layers 뒷단에 average-pooling layer와 fully connected layer를 붙여서 ImageNet의 1000개의 class를 분류하는 네트워크를 만들고 이를 학습시킵니다. (논문 기준 1주일간 학습 후 ImageNet 2012 validation set 기준 top-5 accuracy 88%) YOLO는 앞단 20개의 pretrained convolutional layer에 4개의 convolutional layer와 2개의 fully connected layer를 추가하여 구성합니다. 이때 새로 추가된 레이어는 random initialized weights로 초기화합니다.
02.02.02) Normalized Bounding Boxes
모델은 클래스 확률값과 바운딩 박스 좌표를 예측합니다. YOLO 에서는 정규화된(normalized) 바운딩 박스를 사용합니다. 바운딩 박스의 width와 height는 각각 이미지의 width와 height로 정규화시킵니다. 따라서 값은 0에서 1 사이의 값입니다. 바운딩 박스의 중심 좌표인 x와 y는 특정 그리드 셀에서의 offset으로 나타냅니다. 따라서 이 값도 0에서 1 사이의 값입니다.
02.02.03) Nolinearity
YOLO의 activation function은 leaky ReLU를 사용하며, 단 마지막 레이어만 linear activation function을 사용합니다. leaky ReLU의 수식은 다음과 같습니다.
02.02.04) 고려해야 할 사항들
YOLO의 loss는 Sum-squared error 를 기반으로 합니다. YOLO의 loss에는 바운딩 박스를 얼마나 잘 예측했는지에 대한 loss인 localization loss 와 클래스를 얼마나 잘 예측했는지에 대한 loss인 classification loss 가 있습니다. 이 두 개의 loss에 동일한 가중치를 할당하고 학습시키는 것은 좋지 않습니다.
또 다른 문제도 있습니다. YOLO에서는 S x S개의 그리드 셀을 예측합니다. 거의 모든 이미지에서 대다수의 그리드 셀에는 객체가 존재하지 않습니다. 이런 불균형은 YOLO가 모든 그리드 셀에서 confidence = 0 이라고 예측하도록 학습되게 할 수 있습니다. YOLO에서는 이를 해결하기 위해서 객체가 존재하는 바운딩 박스의 confidence loss 가중치를 늘리고 반대로 객체가 존재하지 않는 바운딩 박스의 confidence loss 가중치를 줄입니다. 이는 실제로 두 가지 파라미터로 조절할 수 있는데, λ_coord 와 λ_noobj 입니다. 논문에서는 λ_coord = 5 , λ_noobj = .5 로 설정합니다.
Sum-squared error 를 사용하면 바운딩 박스가 큰 객체와 작은 객체에 동일한 가중치를 줄 때도 문제가 생길 수 있습니다. 작은 객체 바운딩박스는 조금만 어긋나도 결과에 큰 영향을 주지만 큰 객체의 바운딩 박스의 경우에는 그렇지 않습니다. 이를 해결하기 위해서 YOLO에서는 width 와 height 에 square root 를 씌웁니다.
02.02.05) Multiple bounding boxes per gridcell
YOLO는 하나의 그리드 셀 당 여러 개의 바운딩 박스를 예측합니다. Train time에서는 객체 하나당 하나의 바운딩 박스와 매칭시켜야 하므로, 여러 개의 바운딩 박스 중 하나를 선택해야 합니다. 이를 위해(동일한 그리드 내)여러 바운딩 박스 중 gorund-truth와의 IOU가 가장 높은 하나의 바운딩 박스만 선택합니다. 이를 통해 동일한 그리드 내 여러 바운딩 박스가 서로 다른 객체의 사이즈, 종횡비(acpect ratios), 객체 클래스를 예측하게 하여 overall recall을 상승시킬 수 있습니다.
02.02.06) Loss Function
Train time에 사용하는 loss function은 다음과 같습니다.
여기에서 1_obj^i 는 i번째 그리드 셀 에 있는 j번째 바운딩박스에 객체가 존재하는지를 나타냅니다. 가령 1_obj^i = 1 인 바운딩 박스는 해당 객체를 검출해 내야 합니다.
수식의 classification loss 의 경우에는 1_obj^i = 1 인 바운딩 박스에만 적용이 되는 loss입니다(이는 Pr(Class_i|Object)를 반영한 결과입니다). 또한 borunding box coordinate loss 의 경우에도 위와 마찬가지입니다.
02.02.07) 학습 및 하이퍼 파라미터
논문에서는 PASCAL VOC 2007 / 2012를 이용해서 총 135 epochs를 학습시켰습니다. 하이퍼 파라미터 세팅은 다음과 같습니다.
batch size = 64
momentum of 0.9
decay = 0.0005
02.02.08) 학습률 스케줄링(Learning Rate Scheduling)
YOLO의 학습률 스케줄링은 다음과 같습니다.
첫 epoch은 learning rate = 10^-3 에서 10^-2 까지 천천히 올립니다.
(처음부터 높은 learning rate를 주게되면 gradient가 발산할 수 있습니다.) 다음 75 epochs은 learning rate = 10^-2 으로 학습시킵니다. 다음 30 epochs는 learning rate = 10^-3 으로 학습시킵니다. 다음 30 epochs는 learning rate = 10^-4 으로 학습시킵니다.
02.02.09) 오버피팅 방지
YOLO에서는 오버피팅을 방지하기 위해 dropout과 data augmentation 기법을 사용합니다. dropout은 첫 번째 fully connected layer에 붙으며 dropout rate = 0.5 로 설정했습니다. Data augmentation에는 scaling , translation , exposure , saturation 을 조절하는 방식으로 다양하게 진행하며, scaling 과 translation 은 원본 이미지 사이즈의 20%까지 임의로 조절하며, scaling , translation 은 HSV 공간에서 1.5배까지 임의로 조절합니다.
02.03. 추론(Inference)
모델은 이미지 한 장 당 총 98개의 바운딩 박스를 예측합니다. 각 바운딩 박스에는 클래스 확률이 있습니다. 입력 이미지를 네트워크에 단 한 번만 통과시키면 되므로 Test time시 YOLO의 속도는 상당히 빠릅니다. YOLO과 같이 그리드 셀을 이용한 디자인으로 겪을 수 있는 문제점 하나가 있습니다. 그것은 바로 하나의 객체를 여러 그리드 셀이 동시에 검출하는 경우입니다. 특히 객체가 그리드셀들의 경계에 위치하거나 여러 그리드 셀을 포함할 만큼 큰 객체인 경우 이런 현상이 자주 발생합니다. 비 최대억제(Non-maximal suppression)는 그러한 다중 검출 문제를 해결할 수 있는 좋은 방법입니다. YOLO는 NMS를 통해 mAP를 2-3% 가량 올릴 수 있었습니다.
02.04. YOLO의 한계
YOLO 모델의 한계점들이 몇 가지 있습니다. 우선 YOLO는 각 그리드 셀마다 오직 하나의 객체만을 검출할 수 있습니다. 이는 객체 검출에서 아주 강한 공간적 제약(spatial constraints)입니다. 이러한 공간적 제약으로 인해 YOLO는 ‘새 떼’와 같이 작은 객체들이 무리 지어 있는 경우의 객체 검출이 제한적일 수 있습니다. 그리고 바운딩 박스를 데이터로부터 학습하기 때문에 일반화 능력이 떨어지고, 이로 인해 train time에 보지 못했던 종횡비의 객체를 잘 검출하지 못합니다. 그리고 마지막으로 YOLO에서 가장 문제가 되는 부분이 바로 잘못된 localizations입니다.
04. Experiments
04.01. Comparison to Other Real-Time Systems
DPM 100Hz/30Hz 구현체와 GPU 버전의 YOLO를 기준으로 모델을 YOLO 내의 변형 모델의 성능 비교를 합니다.
Fast YOLO
PASCAL VOC기준 가장 빠른 Object Detection 알고리즘
52.7% mAP (100Hz/30Hz DPM 기준 2배 이상 향상)
YOLO
실시간 성능을 만족하면서 mAP는 63.4%
VGG-16을 feature extractor로 사용한 경우에는 성능이 증가하나, 속도 감소
약간의 mAP 성능하락으로 Detection 속도를 높인 모델 하지만 실시간 detection system이라고 부르기엔 속도가 느림
30.7% mAP로 성능 및 속도측면에서 YOLO 대비 전반적으로 안좋음
R-CNN 계열
최근 R-CNN계열에서 속도가 개선된 Fast R-CNN이 나왔으나, 속도 측면에서 실시간 성능에는 한참 못미치는 성능을 갖음
04.02. VOC 2007 Error Analysis
VOC 2007 Dataset에서 YOLO, Fast R-CNN 모델의 에러분석을 하기 위하여 다음과 같은 레퍼런스 Diagnosing Error in Object Detectors 를 참고하여 기준을 잡음
Correct : class가 정확하며 IOU가 0.5보다 큰 경우
Localization : class가 정확하고, IOU가 0.1보다 크고 0.5보다 작은 경우
Similar : class가 유사하고 IOU가 0.1보다 큰 경우
Other : class는 틀렸으나, IOU가 0.1보다 큰 경우
Background : 어떤 Object이던간에 IOU가 0.1보다 작은 경우
분석 결과는 다음과 같음
YOLO는 localize 에러가 심함
Fast R-CNN은 상대적으로 localization 에러는 적으나 background 에러가 큼.
04.04. VOC 2012 Result
VOC 2012 결과에서 YOLO는 57.9% mAP를 달성함
04.05. Generalizability: Person Detection in Artwork
Picasso Dataset 와 People-Art Dataset를 이용하여 YOLO와 다른 Detection System들의 성능을 비교함
05. Qualitative Result
아래 사진은 YOLO의 Object Detection 결과입니다.
Reference
아래 자료들은 본 문서와 함께 보시면 YOLO를 이해하는데 도움이 될 수 있는 자료 모음입니다.
1). CVPR – You Only Look Once: Unified, Real-Time Object Detection
2). You Only Look Once
3). PR-016: You only look once
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
[논문 리뷰] YOLO v1 (2016) 리뷰
반응형
이번에 리뷰할 논문은 ‘You Only Look Once: Unified, Real-Time Object Detection’ 입니다.
Deep Learning을 이용한 object detection 접근법은 크게 두 가지로 나눠볼 수 있습니다.
Object Detection의 두 가지 접근법
1. 2-stage Detector
2-stage Detector은 특징 추출과 객체 분류, 두 가지 과정을 거쳐 객체를 탐지합니다. 특징 추출과 객체 분류라는 두 가지 문제를 순차적으로 해결하는 것입니다. 역할을 분담하여 문제를 처리하므로 정확도는 높지만, 속도가 느리다는 단점이 있습니다. 2-stage Detector에는 대표적으로 Fast R-CNN, OverFeat, DPM 등이 있습니다.
2-stage Detector의 전체적인 구조 (출처 : hoya012.github.io)
논문에서 2-stage Detector 기법인 DPM과 R-CNN을 소개합니다.
(1) DPM
DPM은 sliding window 기법을 이용합니다. 전체 이미지에 대하여 작은 구역에 일정한 간격(sliding window)을 두고 classifier를 실행합니다.
(2) R-CNN
R-CNN은 region proposal(selective search를 이용)로 객체가 있을 법한 구역을 제안하고, 그 구역을 classifier로 분류합니다. 그리고 출력값으로 생성된 바운딩박스를 전처리과정(bounding box regression)을 거쳐 최종 바운딩박스를 선택하게 됩니다.
2-stage Detector은 속도가 느리고, 최적화하기 어렵습니다. 그 이유는 각 요소를 개별적으로 학습시켜줘야 하기 때문입니다.
이제 1-stage Detector를 살펴보겠습니다.
2. 1-stage Detector
1-stage Detector은 특징 추출과 객체 분류를 한 번에 처리하는 방법입니다. 대표적으로 YOLO 계열과 SSD 계열이 있습니다. 이 포스팅에서는 YOLO v1만 다루도록 하겠습니다.
1-stage Detector의 전체적인 구조 (출처: hoya012.github.io)
위 그림에서 보듯이 특징 추출, 객체 분류 두 문제를 단일 신경망으로 해결합니다.
논문에서는 YOLO가 object detection을 single regression problem으로 재구성 했다고 합니다. 어떤 의미일까요?
YOLO v1은 single convolutional network로 이미지를 입력받아, 여러 개의 바운딩 박스와 각 박스의 class를 예측합니다. 그리고 non-max suppression을 통해 최종 바운딩박스를 선정합니다.
논문에 나와있는 YOLO system
두 문제를 한꺼번에 처리를 하여 속도는 빠르지만 정확도가 떨어집니다. 이처럼 속도와 정확도에는 trade off 관계를 형성하고 있습니다.
YOLO v1 의 장점
논문에서 설명하고 있는 YOLO v1 장점을 살펴보겠습니다.
1. 매우 빠릅니다.
YOLO는 복잡한 pipeline이 필요하지 않습니다. 단지, 이미지에 neural networ를 실행하기만 하면 됩니다. 추가적으로 YOLO는 실시간 객체 탐지 방법보다 2배 이상의 mAP(mean average precision)을 얻었다고 논문에서 말하고 있습니다.
(mAP에 대해 궁금하신 분은 아래 포스팅을 참고해주세요)
2. Fast R-CNN 보다 background error가 두 배이상 적습니다.
background error는 배경 이미지에 객체가 있다고 탐지한 것을 의미합니다. 어떻게 background error를 줄일 수 있었을 까요?
YOLO는 예측할 때, 이미지 전체를 이용합니다. 이 덕분에 class와 객체 출현에 대한 contextual information까지 이용할 수 있습니다. 반면에 Fast R-CNN은 selective search가 제안한 영역만을 이용하여 예측하기 때문에 larger context를 이용하지 못합니다. 따라서 R-CNN은 배경을 객체로 탐지하는 실수를 하게 됩니다.
위 그림은 Fast R-CNN과 YOLO의 에러 분석 자료입니다.
YOLO의 background error가 절반 이상 적습니다.
3. 객체의 일반화된 representations를 학습하여 다른 도메인에서 좋은 성능을 보입니다.
YOLO는 새로운 이미지나 새로운 도메인에 적용할 때, DPM, R-CNN 같은 detection 방법을 크게 능가합니다. 아마 전체 이미지에 대하여 학습을 하기 때문인 것 같습니다. 이러한 특성 덕분에 새로운 도메인에 적용하여 fine-tunning에 이점이 있습니다.
바운딩 박스 예측 방식
YOLO는 object detection의 개별 요소를 하나의 network로 통했습니다. 어떠한 방식으로 작동하는지 알아보도록 하겠습니다.
(1) 입력 이미지를 S x S grid로 분할합니다.
(2) 객체의 중심이 grid cell에 맞아 떨어지면 그 grid cell은 객체를 탐지했다고 표기합니다.
(3) 각 grid cell은 B개의 바운딩박스와 각 바운딩박스에 대한 confidence score를 예측합니다.
confidence score는 얼마나 자신있게 박스가 객체를 포함하고 있는지, 얼마나 정확하게 예측했는지를 반영합니다. confidence는 Pr(Object) * IoU로 계산합니다. cell에 객체가 존재하지 않을 시에 Pr(Object)는 0이 되어 confidence score는 0이 됩니다. 객체가 존재하면 Pr(Object)는 1이 되고 IoU와 곱해져 confidence는 IoU가 됩니다.
IoU에 대한 내용은 여기서 확인하실 수 있습니다.
(4) 각 바운딩 박스는 5개의 정보를 갖고 있습니다. x, y, w, h와 confidence 입니다. x,y는 바운딩박스의 중심을 나타내며 grid cell의 경계에 상대적인 값입니다. width와 height는 전체 이미지에 상대적인 값입니다. 마지막으로 confidence는 예측된 박스와 진짜 박스 사이의 IoU 입니다.
(5) 각 grid cell은 바운딩박스 이외에도 class 확률을 예측합니다.
최종적으로 예측값은 (S x S x (B * 5 + C)) 크기의 tensor를 갖습니다. 논문에서는 S = 7, B = 2, C = 20를 사용하여 7 X 7 X 30 tensor를 갖습니다.
(6) non-max suppression을 거쳐서 최종 바운딩박스를 선정합니다.
YOLO v1 구조
논문에 나와있는 YOLO v1의 구조를 살펴보겠습니다.
YOLO는 convolutional layer로 이미지로부터 특징을 추출하고, FC layer로 바운딩박스와 class 확률을 예측합니다.
YOLO는 24개의 convolutional layer와 2개의 fully connected layer로 이루어져 있습니다. 그리고 GoogLeNet에서 영향을 받아 1×1 차원 감소 layer 뒤에 3×3 convolutional layer를 이용합니다.
최종적으로 7 X 7 X 30 tensor를 출력합니다.
손실 함수
YOLO는 sum-squared error 를 손실함수로 이용합니다. 하지만 여기에는 여러가지 문제점이 있어 손실 함수를 수정합니다. 어떤 문제점이 있는지 살펴보겠습니다.
(1) localization error와 classification error를 동일하게 가중치를 둡니다.
(2) 객체를 포함하고 있지 않은 grid cell은 confidence 값이 0을 갖습니다. 이는 객체를 포함한 grid cell의 gradient를 폭발하게 하고 model이 불안정하게 만듭니다.
이 문제를 해결하기 위해서 바운딩 박스의 좌표에 대한 손실을 증가시키고 객체를 포함하고 있지 않은 박스에 대한 confidence 손실을 감소시킵니다. 이를 실행하기 위해 두 가지 파라미터를 사용합니다.
$\lambda_{coord}$는 바운딩 박스 좌표 손실에 대한 파라미터입니다. 바운딩 박스에 대한 손실을 5배 가중치로 두어 높은 패널티를 부여합니다.
$\lambda_{noobj}$은 객체를 포함하고 있지 않은 박스에 대한 confidence 손실의 파라미터 입니다. 0.5로 설정했습니다. 즉, 배경인 경우 0.5의 가중치를 두어서 패널티를 낮추는 것입니다.
위 두 가지 파라미터로 localization error(바운딩 박스 좌표)와 classification error(잘못된 클래스 분류)에 가중치를 다르게 부여하게 됩니다.
논문에 나와있는 최종 수식은 다음과 같습니다.
위 수식을 한줄한줄 살펴보면서 어떤 의미를 갖는지 살펴보겠습니다.
x,y는 바운딩 박스 좌표입니다. 정답 좌표랑 예측 좌표 차이를 제곱하여 error를 계산하게 됩니다.
$1^{obj} _{ij}$는 obj는 객체가 탐지된 바운딩 박스를 말합니다.(가장 높은 IOU를 갖고 있는 바운딩박스), 이 수식은 i번째 grid에서 j번째 객체를 포함한 바운딩박스를 의미합니다.
$\lambda_{coord}$는 localization error의 페널티를 키우기 위한 파라미터로 5로 설정되어있습니다.
즉, 객체를 포함한 바운딩박스의 좌표에는 5배의 페널티를 부과합니다.
바운딩 박스의 너비와 높이에 대한 error 입니다. 너비와 높이에도 5배의 페널티를 부여하는 것을 확인할 수 있습니다. 큰 박스에서 작은 변화와 작은 박스에서 작은 변화는 차이가 있습니다. 이를 보정해주기 위해 루트를 씌어준 다음 제곱을 해주었습니다.
객체를 포함한 바운딩 박스에 대한 confidence error 입니다.
객체를 포함하지 않은 바운딩박스에 대해 confidence error를 계산합니다.
p(c) 클래스 확률에 대한 error입니다. 객체를 포함한 바운딩박스에 대해서만 계산합니다. classification error에 대한 부분으로 생각할 수 있습니다.
YOLO v1 한계
1. 각 grid cell은 하나의 클래스만을 예측합니다. object가 겹쳐있으면 제대로 예측하지 못합니다.
2. 바운딩 박스 형태가 data를 통하여 학습되므로, 새로운/독특한 형태의 바운딩박스의 경우 정확히 예측하지 못합니다.
3. 작은 바운딩 박스의 loss가 IoU에 더 민감하게 영향을 줍니다. localization에 안좋은 영향을 미칩니다.
YOLO v1 성능
Real-Time Detectors에서 가장 좋은 성능을 보이고 있습니다.
Less Than Real-Time에서도 준수한 정확도를 보입니다.
참고자료
[1] nuggy875.tistory.com/20 [2] taeu.github.io/paper/deeplearning-paper-yolo1-03/ [3] arxiv.org/abs/1506.02640반응형
So you have finished reading the yolo 논문 topic article, if you find this article useful, please share it. Thank you very much. See more: You Only Look Once, you only look once: unified real-time object detection, YOLO 논문 리뷰, YOLO 모델, YOLOv3, YOLO paper, yolo란, yolo 딥러닝