AI 모델 및 플랫폼

YOLOv9: 실시간 객체 감지의 새로운 도약

mm
Unite.AI를 Google의 선호 소스에 추가

객체 감지는 최근 몇 년 동안 딥 러닝 알고리즘인 YOLO(You Only Look Once) 덕분에 급격한 발전을 이루었습니다. 최신 버전인 YOLOv9는 이전 버전보다 정확성, 효율성, 적용성에서 큰 개선을 가져왔습니다. 이 포스트에서는 YOLOv9가 실시간 객체 감지의 새로운 표준을 설정하는 데 기여하는 혁신에 대해 자세히 살펴보겠습니다.

객체 감지의 간단한 소개

YOLOv9의 새로운 기능을 살펴보기 전에 객체 감지가 어떻게 작동하는지 간단히 살펴보겠습니다. 객체 감지의 목표는 이미지 내의 객체를 식별하고 위치를 지정하는 것입니다. 이는 자율 주행 자동차, 감시 시스템, 이미지 검색 등의 응용 분야에서 중요한 기능입니다.

감지기는 이미지 입력을 받아 객체를 둘러싼 바운딩 박스와 관련된 클래스 레이블을 출력합니다. 인기 있는 데이터셋인 MS COCO는 이러한 모델을 훈련하고 평가하기 위해 수천 개의 레이블이 지정된 이미지를 제공합니다.

객체 감지에는 두 가지 주요 접근 방식이 있습니다:

  • 2단계 감지기는 Faster R-CNN과 같이 지역 제안을 생성한 다음 각 지역의 경계를 분류하고 정교화합니다. 이러한 방식은 더 정확하지만 느립니다.
  • 1단계 감지기는 YOLO와 같이 이미지에 직접 모델을 적용하여 단일 패스로 처리합니다. 이러한 방식은 정확성을 약간 희생하여 매우 빠른 추론 시간을 제공합니다.

YOLO는 1단계 접근 방식을 개척했습니다. 여러 버전을 거치며 어떻게 발전해 왔는지 살펴보겠습니다.

이전 YOLO 버전의 검토

YOLO(You Only Look Once) 모델 패밀리는 2016년 원본 버전이 발표된 이후 빠른 객체 감지의 선두 주자였습니다. 여러 버전을 거치며 어떻게 발전해 왔는지 간단히 살펴보겠습니다:

  • YOLOv1은 전체 이미지에서 바운딩 박스와 클래스 확률을 직접 예측하는 통합 모델을 제안했습니다. 이는 이전의 2단계 모델에 비해 매우 빠르었습니다.
  • YOLOv2는 원본을 개선하여 배치 정규화를 사용하여 안정성을 개선하고, 다양한 크기와 종횡비의 앵커 박스를 사용하여 여러 크기의 객체를 감지하며, 기타 최적화를 수행했습니다.
  • YOLOv3은 더 많은 레이어와 단축 경로를 가진 새로운 특징 추출기인 Darknet-53을 추가하여 정확성을进一步 개선했습니다.
  • YOLOv4는 다른 객체 감지기와 세그멘테이션 모델의 아이디어를 결합하여 정확성을 높이면서 여전히 빠른 추론을 유지했습니다.
  • YOLOv5는 YOLOv4를 PyTorch로 완전히 재작성하고 새로운 특징 추출 백본인 CSPDarknet을 추가했습니다.
  • YOLOv6는 아키텍처와 훈련 과정을 최적화하여 외부 데이터셋에 사전 훈련된 모델을 사용하여 성능을 더욱 향상했습니다.

요약하면, 이전 YOLO 버전은 모델 아키텍처, 훈련 기술, 사전 훈련의 개선을 통해 더 높은 정확성을 달성했습니다. 그러나 모델이 더 커지고 복잡해짐에 따라 속도와 효율성이 저하됩니다.

더 나은 효율성의 필요성

많은 응용 분야에서 객체 감지가 제한된 컴퓨팅 자원을 갖는 장치에서 실시간으로 실행되어야 합니다. 모델이 더 커지고 계산 집중적이 되면 배포가 비실용적이 됩니다.

예를 들어, 자율 주행 자동차는 차량 내의 프로세서를 사용하여 높은 프레임 속도로 객체를 감지해야 합니다. 보안 카메라는 내장된 하드웨어에서 비디오 피드에 객체 감지를 실행해야 합니다. 휴대폰과 기타 소비자 장치는 매우 엄격한 전력과 열 제한을 갖습니다.

최근 YOLO 버전은 높은 정확성을 얻기 위해 많은 매개 변수와 곱-덧 연산(FLOPs)을 사용합니다. 그러나 이것은 속도, 크기, 전력 효율성의 비용으로 돌아옵니다.

예를 들어, YOLOv5-L은 단일 1280×1280 이미지 처리에 100억 개 이상의 FLOPs가 필요합니다. 이는 많은 실시간 사용 사례에 너무 느립니다. 모델이 점점 더 커지는 경향은 과적합의 위험을 증가시키고 일반화하기 어렵게 만듭니다.

따라서 객체 감지의 적용 범위를 확장하기 위해 효율성을 개선하는 방법이 필요합니다. 즉, 더 나은 정확성을 얻기 위해 더 적은 매개 변수와 계산이 필요합니다. YOLOv9에서 이러한 도전에 대처하는 기술을 살펴보겠습니다.

YOLOv9 – 더 적은 자원으로 더 나은 정확성

YOLOv9의 연구자들은 실시간 성능을 다양한 장치에서 달성하기 위해 효율성을 개선하는 데 중점을 두었습니다. 두 가지 주요 혁신을 도입했습니다:

  1. 매개 변수와 FLOPs를 최소화하면서 최대 정확성을 달성하는 새로운 모델 아키텍처인 일반 효율적인 레이어 집계 네트워크(GELAN)입니다.
  2. 보다 신뢰할 수 있는 학습 그라디언트를 제공하는 새로운 훈련 기술인 프로그래머블 그라디언트 정보(PGI)입니다.

각각의 발전이 효율성을 어떻게 개선하는지 살펴보겠습니다.

GELAN을 사용한 더 효율적인 아키텍처

모델 아키텍처 자체가 추론 시의 속도와 자원 사용에 대한 균형을 맞추는 데 중요합니다. 신경망은 입력 이미지에서 관련 특징을 캡처하기 위해 충분한 깊이와 너비가 필요합니다. 그러나 너무 많은 레이어 또는 필터는 느리고 부풀린 모델로 이어집니다.

저자는 GELAN을 최소한의 매개 변수로 최대 정확성을 달성하도록 설계했습니다.

GELAN은 두 가지 주요 빌딩 블록을 쌓아 올립니다:

  • 효율적인 레이어 집계 블록 – 이러한 블록은 네트워크 분기 간의 변환을 집계하여 다중 스케일 특징을 효율적으로 캡처합니다.
  • 계산 블록 – CSPNet 블록은 레이어 간의 정보를 전파하는 데 도움이 됩니다. 任 何 블록은 컴퓨팅 제약에 따라 대체될 수 있습니다.

이러한 블록을 신중하게 균형 있게 결합함으로써 GELAN은 성능, 매개 변수, 속도 간의 달콤한 지점을 달성합니다. 동일한 모듈러 아키텍처는 다양한 모델 크기와 하드웨어에 걸쳐 확장될 수 있습니다.

실험에 따르면 GELAN은 이전 YOLO 아키텍처보다 더 작은 모델에 더 나은 성능을 제공합니다. 예를 들어, GELAN-Small(7M 매개 변수)은 YOLOv7-Nano(11M 매개 변수)를 능가합니다. GELAN-Medium(20M 매개 변수)은 YOLOv7 중형 모델(35-40M 매개 변수)과 유사한 성능을 제공합니다.

따라서 GELAN은 모델을 더 빠르고 더 많은 자원 제약 장치에서 실행할 수 있도록 합니다. 다음으로 PGI가 어떻게 훈련을 개선하는지 살펴보겠습니다.

프로그래머블 그라디언트 정보(PGI)를 사용한 더 나은 훈련

모델 훈련은 최대 정확성을 달성하는 데 중요합니다. YOLOv9 저자는 작은 모델을 훈련하는 데 불안정한 그라디언트 정보가 문제가 된다고 식별했습니다.

그라디언트는 모델의 가중치를 업데이트하는 데 사용됩니다. 잡음이 있거나 잘못된 그라디언트는 나쁨으로 이어집니다. 이는 작은 네트워크에서 더 심각해집니다.

깊은 감시(deep supervision) 기술은 추가적인 측면 분기와 손실을 도입하여 네트워크를 통해 더 깨끗한 그라디언트 신호를 전파합니다. 그러나 이는 작은 경량 모델에서 약화되고 발산을 유발할 수 있습니다.

YOLOv9: 프로그래머블 그라디언트 정보를 사용하여 학습

YOLOv9: 프로그래머블 그라디언트 정보를 사용하여 학습 https://arxiv.org/abs/2402.13616

이 제한을 극복하기 위해 YOLOv9는 프로그래머블 그라디언트 정보(PGI)를 도입했습니다. PGI에는 두 가지 주요 구성 요소가 있습니다:

  • 보조 가역 분기 – 이러한 분기는 입력으로의 가역 연결을 유지하는 블록을 제공합니다.
  • 다중 수준 그라디언트 통합 – 이것은 분기 간의 발산을 방지하기 위해 모든 분기에서 그라디언트를 결합합니다.

보다 신뢰할 수 있는 그라디언트를 생성함으로써 PGI는 더 작은 모델이 더 잘 훈련될 수 있도록 합니다:

실험에 따르면 PGI는 모든 모델 크기에서 정확성을 개선했습니다. 특히 작은 구성에서 더显著한 개선이 있었습니다. 예를 들어, YOLOv9-Small의 AP 점수는 0.1-0.4% 향상되었습니다.

따라서 PGI는 작은 모델이 더 큰 모델과 유사한 정확성 수준으로 훈련될 수 있도록 합니다.

YOLOv9는 효율성의 새로운 표준을 설정합니다

GELAN의 아키텍처 발전과 PGI의 훈련 개선을 결합함으로써 YOLOv9는 효율성과 성능의 새로운 표준을 달성합니다:

  • YOLOv9는 이전 YOLO 버전보다 더 나은 정확성을 얻으며 10-15% 더 적은 매개 변수와 25% 더 적은 계산을 사용합니다. 이것은 속도와 능력의 주요 개선입니다.
  • YOLOv9는 다른 실시간 감지기와 비교하여 매개 변수 효율성과 FLOPs에서 우수합니다. 특정 성능 수준에 도달하기 위해 더 적은 자원이 필요합니다.
  • 더 작은 YOLOv9 모델은 더 큰 사전 훈련 모델을 능가합니다. 예를 들어, YOLOv9-E는 RT-DETR-X를 능가합니다.

따라서 YOLOv9는 효율성과 성능의 새로운 표준을 설정합니다.

GELAN – 효율성을 최적화한 아키텍처

YOLOv9는 효율성을 최대화하는 새로운 아키텍처인 GELAN(General Efficient Layer Aggregation Network)을 도입했습니다. 이는 이전 YOLO 모델을 기반으로 하지만 다양한 구성 요소를 효율성을 위해 최적화했습니다.

YOLOv9: 프로그래머블 그라디언트 정보를 사용하여 학습

YOLOv9: 프로그래머블 그라디언트 정보를 사용하여 학습 https://arxiv.org/abs/2402.13616

CSPNet과 ELAN의 배경

최근 YOLO 버전은 CSPNet(Cross-Stage Partial Network)을 기반으로 효율성을 개선했습니다. CSPNet은 네트워크 분기 간의 특징 맵을 집계하여 다중 스케일 특징을 효율적으로 캡처합니다.

이것은 레이어를 직렬로 쌓는 것보다 더 효율적입니다. 이는 계산의 중복과 과매개 변수화로 이어집니다.

YOLOv7은 CSPNet을 ELAN(Efficient Layer Aggregation Network)으로 업그레이드했습니다. ELAN은 블록 구조를 단순화했습니다.

ELAN은 레이어 간의 쇼트컷 연결을 제거하고 출력에 집계 노드를 추가했습니다. 이것은 매개 변수와 FLOPs 효율성을 더욱 개선했습니다.

ELAN의 일반화

저자는 ELAN을 더욱 일반화하여 YOLOv9에서 사용되는 GELAN을 만들었습니다. GELAN은 몇 가지 주요 수정을 통해 유연성과 효율성을 개선했습니다:

  • 교환 가능한 계산 블록 – 이전 ELAN은 고정된 컨볼루션 레이어를 사용했습니다. GELAN은任 何 계산 블록을 대체할 수 있습니다.
  • 깊이 방향 매개 변수화 – 주요 분기와 집계 분기 간의 별도 블록 깊이를 사용하면 자원 사용을 더 쉽게 조정할 수 있습니다.
  • 안정적인 성능 – GELAN은 다양한 블록 유형과 깊이에서 안정적인 성능을 유지합니다.

이러한 변경 사항으로 GELAN은 강력하면서도 구성 가능한 백본이 됩니다:

실험에 따르면 GELAN 모델은 이전 YOLO 아키텍처보다 매개 변수당 더 나은 정확성을 제공합니다:

  • GELAN-Small(7M 매개 변수)은 YOLOv7-Nano(11M 매개 변수)를 능가합니다.
  • GELAN-Medium(20M 매개 변수)은 YOLOv7 중형 모델(35-40M 매개 변수)과 유사한 성능을 제공합니다.

따라서 GELAN은 다양한 효율성 목표에 맞게 확장할 수 있는 강력한 백본을 제공합니다. 다음으로 PGI가 어떻게 훈련을 개선하는지 살펴보겠습니다.

PGI – 모든 모델 크기에서 개선된 훈련

아키텍처 선택은 추론 시의 효율성에 영향을 미치지만 훈련 과정도 모델의 자원 사용에 영향을 미칩니다. YOLOv9는 모든 모델 크기와 복잡도에서 훈련을 개선하는 새로운 기술인 PGI를 사용합니다.

불안정한 그라디언트의 문제

훈련 중에 손실 함수는 모델 출력과 실제 레이블을 비교하여 오류 그라디언트를 계산하고 매개 변수를 업데이트합니다. 잡음이 있거나 잘못된 그라디언트는 나쁨으로 이어집니다.

매우 깊은 네트워크는 정보 병목 현상을 가중시킵니다. 깊은 레이어에서 그라디언트는 손실된 또는 압축된 신호로 인해 오염됩니다.

깊은 감시는 추가적인 측면 분기와 손실을 도입하여 더 깨끗한 그라디언트를 제공합니다. 그러나 이는 작은 모델에서 약화되고 발산을 유발할 수 있습니다.

따라서 모든 모델 크기에서 신뢰할 수 있는 그라디언트를 제공하는 방법이 필요합니다.

프로그래머블 그라디언트 정보(PGI)의 도입

불안정한 그라디언트를 해결하기 위해 YOLOv9는 PGI를 제안합니다. PGI에는 두 가지 주요 구성 요소가 있습니다:

1. 보조 가역 분기

추가적인 분기에는 입력으로의 가역 연결이 있습니다.

2. 다중 수준 그라디언트 통합

퓨전 블록은 모든 분기에서 그라디언트를 결합하여 발산을 방지합니다.

보다 신뢰할 수 있는 그라디언트를 생성함으로써 PGI는 모든 모델 크기에서 훈련의 수렴과 효율성을 개선합니다:

  • 경량 모델은 깊은 감시를 사용할 수 있습니다.
  • 더 큰 모델은 더 깨끗한 그라디언트를 얻을 수 있습니다.

실험에 따르면 PGI는 작은 및 큰 YOLOv9 구성에서 더 나은 정확성을 제공합니다:

  • YOLOv9-Small의 AP 점수는 0.1-0.4% 향상되었습니다.
  • 더 큰 YOLOv9 모델의 AP 점수는 0.5-0.6% 향상되었습니다.

따라서 PGI는 모든 모델 크기에서 더 나은 훈련을 가능하게 합니다.

YOLOv9는 새로운 정확성의 표준을 설정합니다

GELAN의 아키텍처 발전과 PGI의 훈련 개선을 결합함으로써 YOLOv9는 새로운 정확성의 표준을 달성합니다:

실험에 따르면 YOLOv9는 이전 YOLO 버전과 다른 실시간 감지기를 능가합니다:

  • YOLOv9-Small은 YOLO-MS-Small을 능가합니다.
  • YOLOv9-Medium은 더 큰 YOLOv7 모델과 유사한 성능을 제공합니다.
  • YOLOv9-Large는 YOLOv8-X를 능가합니다.

이러한 결과는 YOLOv9의 우수한 효율성을 보여줍니다. 이러한 개선 사항은 높은 정확성의 객체 감지를 더 많은 실제 사용 사례에서 가능하게 합니다.

YOLOv9 업그레이드의 주요 내용

YOLOv9의 새로운 표준 성능을 가능하게 하는 주요 업그레이드와 혁신을 간단히 요약합니다:

  • GELAN 최적화 아키텍처 – 유연한 집계 블록을 통해 매개 변수 효율성을 개선합니다.
  • 프로그래머블 그라디언트 정보 – 가역 분기와 퓨전 블록을 통해 더 신뢰할 수 있는 그라디언트를 제공합니다.
  • 더 적은 자원으로 더 나은 정확성 – 이전 YOLO 버전보다 10-15% 더 적은 매개 변수와 계산을 사용하여 더 나은 정확성을 달성합니다.
  • 모든 모델 크기에서 우수한 성능 – 경량, 중형, 대형 모델 구성에서 새로운 표준을 설정합니다.
  • 확대된 적용 범위 – 더 높은 효율성으로 인해 더 많은 실제 사용 사례에서 객체 감지가 가능해집니다.

따라서 YOLOv9는 정확성, 효율성, 적용성을 직접적으로 해결함으로써 객체 감지를 앞으로 나아가게 합니다. 이러한 업그레이드는 이 중요한 컴퓨터 비전 기능에서 미래의 혁신을 위한 강력한 기초를 제공합니다.

지난 5년 동안私は Machine Learning과 Deep Learning의 매혹적인 세계에 몰두해 왔습니다.私の熱情と専門知識は私を50以上의多様한 소프트웨어 엔지니어링 프로젝트에 기여하게 했으며, 특히 AI/ML에 중점을 두었습니다.私の継続的な 호기심은 또한私를自然어 처리로 끌어들였습니다.私は이 분야를さらに 탐구하기를熱望합니다.