Insight

YOLO Object Detection, 객체인식 - 개념, 원리, 주목해야 할 이유, Use Case

You Only Look Once, Real-Time Object Detection

2023
.
06
.
05
YOLO Object Detection, 객체인식 - 개념, 원리, 주목해야 할 이유, Use Case

객체 인식(Object Detection)은 영상처리나 Computer vision 분야에서 사용되는 기법입니다. 최근 컴퓨터 비전 분야의 발전으로 대두된 Multi labeled, Key point 등의 기술을 크게 아우르는 말이죠. YOLO 모델은 객체 검출 기술 중에서도 가장 대표적인 모델입니다.

다방면에서 활약하고 있는 YOLO의 쓰임을 알면 컴퓨터 비전을 활용한 비즈니스에서 인사이트를 얻을 수 있습니다. 이 글에서는 YOLO 모델의 정의와 원리, 사용 사례와 정확도를 높이는 데이터헌트의 노하우를 소개합니다.

YOLO 란 무엇인가? - YOLO 정의와 개념

Object Detection, 객체 인식

Object Detection, 객체 인식은 이미지 또는 비디오에서 개체를 식별하고 찾는 것과 관련된 컴퓨터 비전 작업입니다. 감지된 물체는 사람일 수도 있고, 자동차나 건물, 동물일 수도 있습니다.

Object Detection 기술은 두 가지 질문을 위해 존재합니다.

  1. 이것은 무엇인가? 특정 이미지에서 대상을 식별하기 위함
  2. 어디에 위치해있는가? 이미지 내에서 개체의 정확한 위치를 설정하기 위함

기존 객체 인식은 다양한 접근 방식으로 시도되면서 데이터 제한 및 모델링 문제를 해결하려고 했습니다. 하지만 단일 알고리즘 실행을 통해 객체를 감지하는 것이 어려웠던 차에, YOLO 알고리즘이 등장하게 되었죠.

How to improve object detection accuracy with YOLO - definition, principles, use cases, know-how
출처: Joseph Redmon, YOLO: Real-Time Object Detection

You Only Look Once

YOLO(You Only Look Once)는 최첨단 실시간 Object Detection 시스템입니다. 기존의 모델보다 빠르고 정확한 데이터 처리 속도를 자랑하며 화제를 몰고 왔죠. YOLO는 물체 감지와 객체 인식에 대한 딥러닝 기반 접근 방식입니다.

간단하게 말하자면, YOLO는 입력된 이미지를 일정 분할로 그리드한 다음, 신경망을 통과하여 바운딩 박스와 클래스 예측을 생성하여 최종 감지 출력을 결정합니다. 실제 이미지 및 비디오에서 테스트하기 전에 먼저 전체 데이터 세트에 대해 여러 인스턴스를 학습하죠.

YOLO는 Joseph Redmon 등에 의해 처음 소개되었습니다. 2015년 논문에 처음 등장한 후 몇 차례 업데이트되었죠. 이후 많은 개발자들에 의해 v8까지 출시되었습니다.

YOLO는 복잡한 파이프라인을 다루지 않기 때문에 매우 빠른 모델입니다. 따라서 실시간 의사 결정을 필요로 하는 분야에서 특히 두각을 드러내고 있습니다.

YOLO 원리 - YOLO 알고리즘, 작동 방식, 사용 방법

YOLO structure

  • 위에서 말했듯이 YOLO는 그리드에서 분할한 이미지를 신경망에 통과시킨 뒤, Bbox나 예측 등을 통한 기법으로 최종 감지 출력을 생성합니다.
  • Bbox를 계산하기 위해 YOLO는 IoU(Intersect over Union) 및 NMS(Non-maximum suppression)의 주요 후처리 단계를 구현합니다.
  • 먼저 IoU는 모델이 예측한 Bounding Box와 실제 개체의 그것이 얼마나 잘 일치하는지 확인하는 것입니다. 두 결과의 겹침이 IoU를 제공합니다.
  • 개체 알고리즘은 종종, 특정 개체를 과도하게 식별하는 문제가 있습니다. 관심 개념을 로컬라이즈하는 단계에서, 실제 위치 근처에서 여러 개의 감지 그룹이 생성되는 현상은 불완전한 감지 알고리즘의 고질적인 현상입니다.
  • NMS는 이를 방지하기 위해 컴퓨터 비전의 여러 영역에서 사용되었습니다. NMS를 사용하면 얼굴이 속한 모든 후보 중에서 최적의 셀을 식별할 수 있습니다. NMS는 이미지에 얼굴이 여러 개 있다고 판단하는 것이 아니라, 동일한 객체에 대한 상자 중 가장 높은 확률을 가진 상자를 선택합니다.

YOLO Structure, Principles
출처: Joseph Redmon, YOLO: Real-Time Object Detection

How To

YOLO는 IoU와 NMS 모두를 활용하여 이미지의 다양한 개체를 빠르게 예측할 수 있습니다. 모델은 훈련을 받는 과정에서 전체 이미지를 확인하여, 클래스에 대한 컨텍스트 정보나 클래스가 보는 이미지의 모양을 암시적으로 인코딩합니다.

YOLO는 먼저 입력한 이미지를 확인합니다. 그리고 사진을 N×N의 그리드로 나눕니다. 각 그리드마다 이미지 분류 및 지역화 작업이 시작됩니다. 객체가 어디에 있는지 확인하고, 식별해야 하는 객체에 Bbox를 그립니다. 그런 다음 YOLO 알고리즘은 Bounding Box와 각 개체의 클래스 확률을 통해 객체를 인식하고 예측합니다.

만약 사용자 지정 데이터 세트 교육을 통해 YOLO 모델을 훈련시켜보고 싶다면, 생각보다 간단하게 테스트해볼 수 있습니다. YOLO의 저장소를 복제한 다음 필요한 파일을 설치하고, 주석이 달린 사용자 지정 데이터 세트를 로드합니다. 이후 모델 구성 및 아키텍처 정의와 변수를 알려주면, 누구나 손쉽게 Object Detection 프로젝트를 시작할 수 있죠.

YOLO 에 주목해야 하는 이유

YOLO 활용도

YOLO는 빠른 속도와 상대적으로 높은 정확도를 자랑합니다. YOLO보다 정확도가 높은 모델도 많지만, 결국 비즈니스에서 가장 중요한 것은 실시간성이기 때문입니다. 따라서 YOLO가 Object Detection 분야의 왕좌에서 내려올 일은 당분간 없을 것으로 보입니다.

즉, YOLO 알고리즘이 중요한 이유는 아래와 같습니다.

  • 속도: 물체를 실시간으로 예측하여 감지 속도 향상
  • 높은 정확도: 최소한의 배경 오류로 정확한 결과를 제공
  • 학습 기능: YOLO는 객체의 표현을 학습하고 이를 객체 감지에 적용할 수 있는 뛰어난 학습 기능을 갖추고 있습니다.

YOLO vs. R-CNN

YOLO는 주어진 이미지를 한 번의 스캔으로 객체의 위치와 경계선을 계산합니다. 과거 R-CNN은 이미지 안에 객체가 있을 만한 부분을 미리 예측하고, 컨볼루션 넷을 이용해 특징을 추출하는 과정을 거쳐야 했습니다. 하지만 YOLO는 이 단계를 간략화하여 실시간 처리를 가능하게 했습니다. 이에 다양한 서비스에 적용될 수 있었고, 유의미한 성과를 가져다 주는 Object Detection 딥러닝 모델이 되었죠.

👉 Deep learning의 원리와 구조, 적용사례가 궁금하다면?

YOLO 버전별 차이점 비교

YOLO의 버전별 업데이트 내역은 아래와 같습니다.

YOLO Compare by version (v1~v4)
출처: MS-COCO(test-dev) mAP(%)와 FPS(V100)을 기준으로 한 YOLO 모델 버전별 비교

  • YOLO v1 (2016): 실시간 객체 검출을 위한 딥러닝 기반의 네트워크
  • YOLO v2 (2017): v1에서 성능 개선 및 속도 향상
  • YOLO v3 (2018): 네트워크 구조와 학습 방법을 개선하여 Object Detection 정확도와 속도 개선
  • YOLO v4 (2020. 04): SPP와 AN 기술을 적용하여 Object Detection 정확도와 속도 개선
  • YOLO v5 (2020. 06): 전작보다 정확도 10% 이상 향상, 모델 크기 축소
  • YOLO v6 (2022. 07): 훈련 과정의 최적화, Trainable bag-of-freebies 제안
  • YOLO v7 (2022. 09) 알고리즘의 효율성 향상, 시스템 탑재를 위한 Quantization과 Distillation 방식 도입
  • YOLO v8 (2023. 01): 새로운 저장소를 출시하여 객체 감지, 인스턴스 세분화 및 이미지 분류 모델 Train을 위한 통합 프레임 워크로 구축

흔히 YOLO 버전을 비교할 때는 v5와 최신 버전인 v8 중에서 선택합니다. YOLOv5는 사용이 편리하며, YOLOv8은 더 빠르고 정확하다는 장점이 있습니다. 궁극적으로 사용할 모델을 결정하는 것은 애플리케이션의 요구 사항에 따라 달라지지만, 대체적으로 실시간 Object Detection 작업이 필요할 경우 YOLOv8을 선택하는 경향이 있습니다.

YOLO 적용 사례 - Use Case

실시간성 활용 - CCTV 및 드론 영상 해양 조난자 검출

선박해양플랜트 연구소는 해양 조난자 검출 모델에 딥러닝 Object Detection 방식을 활용하였습니다. 보다 효율적이고 정확한 검출을 위해 AI를 기반으로 실시간 생존자 수색 솔루션을 개발했죠. YOLO 모델의 실시간성을 활용하여 딥러닝 모델이 드론 영상 데이터를 기반으로 객체와 조난자 여부를 탐지할 수 있었습니다.

그 외에도 CCTV 영상을 분석하여 교통량 혹은 인구 밀집 지역을 확인하는 데에도 YOLO 모델이 사용되었습니다. COVID-19 팬데믹 상황에서 마스크 착용자 및 발열 환자를 손쉽게 가려낼 수 있었던 것도 YOLO가 실시간 객체 검출이 가능했기 때문입니다.

불량 검출과 품질 평가 - 농업, 제조업

수확한 작물의 품질과 불량 분류는 매우 중요한 일이지만, 부족한 자본과 인력 문제로 쉽지 않은 일이었습니다. 이에 인공지능 기반의 딥 러닝 알고리즘을 이용해 불량 검출 모델이 완성되었죠. YOLOv3 알고리즘을 활용해 만들어진 이 모델은 데이터 수집부터 분석된 데이터를 통한 품질 평가, 그리고 최종적인 불량 검출에 이르는 과정을 자동화할 수 있었습니다.

이처럼, YOLO 모델은 다양한 사용자의 필요에 따라 맞춤형 학습 데이터로 훈련하는 것으로 발전하고 있습니다. YOLO는 사용자가 만든 데이터셋으로 자유롭게 학습할 수 있습니다. 일반적으로 큰 데이터셋으로 모델을 학습시키려면 오랜 계산 시간과 연산량이 필요합니다. 학습 전에 사전 학습된 모델 파일을 사용하면 학습 분포가 많아지는 것은 물론, 학습 시간도 단축할 수 있습니다. 전이학습 기법을 사용하면 YOLO를 더 빠르고 정확하게 사용할 수 있죠.

그러나 내 필요에 맞는 사전 학습 모델이 없을 경우, 대규모의 데이터셋을 학습시키는 과정이 필요합니다. 이 과정이 끝난 후 YOLO가 기대한 만큼의 정확도를 가지기 위해서는 학습 데이터의 품질이 보장되어야 합니다. 

YOLO 노하우 - 핵심은 고품질 학습 데이터

YOLO running on sample artwork and natural images from the internet.
출처: Joseph Redmon, YOLO: Real-Time Object Detection

YOLO의 한계

최초로 YOLO에 대해 소개한 논문에 의하면, 이 모델의 단점은 4가지로 요약할 수 있습니다.

  1. 각 Grid Cell마다 8개의 Bounding box만 추측해야 한다는 공간 적 제약성이 있어 가까이 붙어있는 물체를 판별하기 어려움
  2. 여러 개의 Down Sampling을 사용하는 문제로 종종 디테일하지 못한 Feature가 드러날 수 있음
  3. 부정확한 Localization
  4. 데이터로부터 Bounding box를 훈련시키기 때문에, 학습 데이터에 없는 것이 시범 데이터로 주어질 경우 검출이 어려움

딥러닝의 가장 큰 장애물은 학습 데이터를 준비하는 것입니다. 그러나, 각자의 응용 영역에서 적용할 수 있는 데이터는 매우 제한되어 있습니다.

한계에도 불구하고 기존 모델에 비해 매우 빠른 연산 속도를 자랑하기 때문에 YOLO 모델은 여전히 사랑 받고 있습니다. 그러나 높은 정확도의 모델을 구현하기 위해서는 완성도 높은 학습 데이터가 필요합니다. 불완전한 학습 데이터 탓에 모델이 배우지 못한 것을 검출해야 한다면 정확도가 떨어지고, 이는 곧 비즈니스적인 신뢰도 저하로 이어질 수 있습니다.

고품질 학습 데이터 구축, 데이터헌트는 어떻게?

당시 주차로봇을 구현하는 과정에서 차량이 지면에 붙은 사진이 필요했습니다. 또한 차량의 높이를 학습하기 위한 데이터가 필요했죠. 수많은 차종의 높이를 측정하는 방식을 도출하고, 로봇의 시선으로 사진을 촬영해야 하는 어려운 미션이었습니다. 데이터헌트가 높은 정확도로 Annotation한 학습 데이터는 주차로봇의 완성도 높은 모델 구축에 큰 도움이 될 수 있었죠.

또한 세계 각지에서 수집한 도로 데이터 및 자율주행 데이터에서 차선 및 도로의 경계 Polyline 레이블링을 하는 작업도 진행했습니다. 작업 난이도가 특히 높은 만큼 세심한 작업을 필요로 했죠. 이에 숙련된 국내 라벨러와 협업하여 학습 데이터 가공 작업에 대한 집중 교육을 시행했습니다. 이를 통해 30만 장의 데이터를 구축하고, 오류율은 5% 내외로 줄일 수 있었습니다.

데이터헌트의 Object Detection 정확도 향상 노하우

딥러닝 기반 객체 분류 모델을 개발하기 위해서는 학습 데이터를 준비하고, 필터링·라벨링 등의 가공 과정이 필요합니다. 모델이 잘 배울 수 있도록 중복된 데이터를 제거하거나, 잘못된 데이터는 없는지 꼼꼼히 살펴보는 과정이 필요하죠. 또한 학습 데이터가 너무 적을 경우에도 모델의 품질 저하 문제가 발생할 수 있습니다.

과거에는 고성능 모델 개발에 집중했었다면 최근 모든 AI 기반 작업의 첫 단추이자 핵심 키워드는 데이터 정확도에 있습니다. 모델의 성능을 온전히 활용하기 위해서는 고품질 데이터가 무엇보다 중요하기 때문이죠. 데이터헌트는 고객사가 가장 필요로 하는 데이터를 인식하고, 이를 가공하는 데에 특화되어 있습니다.

YOLO처럼 오픈 소스의 모델은 누구에게나 동일한 성능을 낸다고 생각하기 쉽지만, 어떤 데이터 라벨링 파트너를 만나느냐에 따라 모델의 성능이 천차만별로 나뉠 수 있습니다. 데이터헌트와 같은 데이터 가공 및 학습 데이터 구축 전문가가 필요한 이유죠.

요약

  • YOLO(You Only Look Once) 모델은 Real-time Object Detection 시스템으로, Joseph Redmon 등에 의해 소개되었으며 2023년 6월 기존 v8까지 출시되었습니다.
  • YOLO 모델은 그리드에서 분할한 이미지를 신경망에 통과시킨 뒤 Bbox 기법으로 최종 감지 출력을 생성하는 모델로, 빠른 속도와 정확도가 특징입니다.
  • YOLO 등의 모델은 데이터를 기반으로 학습한 내용에 의해 결과가 도출되므로, 성능 및 정확도 향상을 위해서는 고품질의 학습 데이터 구축이 필요합니다.

Talk to Expert