Ultralytics YOLO27:

YOLOv9: 객체 탐지 기술의 도약#

YOLOv9은 실시간 객체 탐지 분야에서 중요한 발전을 이루었으며, 프로그래밍 가능한 그래디언트 정보(PGI)와 일반화된 효율적 레이어 집계 네트워크(GELAN) 같은 획기적인 기법을 도입합니다. 이 모델은 MS COCO 데이터셋에서 효율성, 정확도, 적응성이 크게 향상되었음을 보여 주며 새로운 기준을 세웠습니다. YOLOv9 프로젝트는 별도의 오픈 소스 팀이 개발했지만, Ultralytics YOLOv5가 제공하는 견고한 코드베이스를 기반으로 하여 AI 연구 커뮤니티의 협력 정신을 보여 줍니다.



Watch: YOLOv9 Training on Custom Data using Ultralytics | Industrial Package Dataset

YOLOv9 성능 비교

YOLOv9 소개#

최적의 실시간 객체 탐지를 추구하는 과정에서 YOLOv9은 심층 신경망에 내재된 정보 손실 문제를 해결하는 혁신적인 접근 방식으로 두각을 나타냅니다. PGI와 다목적 GELAN 아키텍처를 통합함으로써 YOLOv9은 모델의 학습 능력을 향상할 뿐만 아니라 탐지 과정 전반에서 중요한 정보의 보존을 보장하여 뛰어난 정확도와 성능을 달성합니다.

YOLOv9의 핵심 혁신#

YOLOv9의 발전은 심층 신경망에서 발생하는 정보 손실 문제를 해결하는 데 깊이 뿌리를 두고 있습니다. 정보 병목 원리와 혁신적인 가역 함수 사용은 YOLOv9 설계의 핵심이며, 높은 효율성과 정확도를 유지하도록 보장합니다.

정보 병목 원리#

정보 병목 원리는 딥러닝의 근본적인 문제를 보여 줍니다. 데이터가 네트워크의 연속적인 레이어를 통과할수록 정보 손실 가능성이 증가합니다. 이 현상은 다음과 같이 수학적으로 표현됩니다:

I(X, X) >= I(X, f_theta(X)) >= I(X, g_phi(f_theta(X)))

여기서 I은 상호 정보를 나타내며, fg는 각각 매개변수 thetaphi를 사용하는 변환 함수를 나타냅니다. YOLOv9은 프로그래밍 가능한 그래디언트 정보(PGI)를 구현하여 이 문제에 대응합니다. PGI는 네트워크 깊이 전체에서 필수 데이터를 보존하고 더 안정적인 그래디언트를 생성하도록 지원하며, 그 결과 모델의 수렴과 성능이 향상됩니다.

가역 함수#

가역 함수 개념은 YOLOv9 설계의 또 다른 핵심 요소입니다. 정보 손실 없이 역변환할 수 있는 함수는 다음과 같이 가역 함수로 간주됩니다:

X = v_zeta(r_psi(X))

여기서 psizeta은 각각 가역 함수와 그 역함수의 매개변수입니다. 이 속성은 딥러닝 아키텍처에 매우 중요합니다. 네트워크가 완전한 정보 흐름을 유지할 수 있어 모델 매개변수를 더욱 정확하게 업데이트할 수 있기 때문입니다. YOLOv9은 아키텍처에 가역 함수를 통합하여 특히 더 깊은 레이어에서 정보가 저하될 위험을 줄이고 객체 탐지 작업에 필요한 핵심 데이터를 보존합니다.

경량 모델에 미치는 영향#

정보 손실 문제를 해결하는 것은 매개변수가 부족하고 피드포워드 과정에서 상당한 정보를 잃기 쉬운 경량 모델에 특히 중요합니다. YOLOv9은 PGI와 가역 함수를 사용하여 간소화된 모델에서도 정확한 객체 탐지에 필요한 핵심 정보가 보존되고 효과적으로 활용되도록 보장합니다.

프로그래밍 가능한 그래디언트 정보(PGI)#

PGI는 정보 병목 문제에 대응하고 심층 네트워크 레이어 전반에서 필수 데이터를 보존하기 위해 YOLOv9에 도입된 새로운 개념입니다. 이를 통해 안정적인 그래디언트를 생성하고 정확한 모델 업데이트를 지원하여 전반적인 탐지 성능을 향상할 수 있습니다.

일반화된 효율적 레이어 집계 네트워크(GELAN)#

GELAN은 전략적인 아키텍처 발전을 나타내며, YOLOv9이 매개변수를 더욱 효과적으로 활용하고 계산 효율성을 높일 수 있도록 합니다. 이 설계는 다양한 계산 블록을 유연하게 통합할 수 있어 속도나 정확도를 저하하지 않고 YOLOv9을 폭넓은 애플리케이션에 적용할 수 있게 합니다.

YOLOv9 아키텍처 비교

YOLOv9 벤치마크#

Ultralytics를 사용한 YOLOv9 벤치마킹은 실제 시나리오에서 학습 및 검증이 완료된 모델의 성능을 평가하는 과정입니다. 이 과정에는 다음이 포함됩니다:

  • 성능 평가: 모델의 속도와 정확도를 평가합니다.
  • 내보내기 형식: 다양한 내보내기 형식에서 모델을 테스트하여 필요한 표준을 충족하고 여러 환경에서 잘 작동하는지 확인합니다.
  • 프레임워크 지원: 이러한 평가를 용이하게 하고 일관되고 신뢰할 수 있는 결과를 보장하기 위해 Ultralytics 패키지 내에서 포괄적인 프레임워크를 제공합니다.

벤치마킹을 통해 모델이 통제된 테스트 환경에서 잘 작동할 뿐만 아니라 실제 애플리케이션에서도 높은 성능을 유지하는지 확인할 수 있습니다.



Watch: How to Benchmark the YOLOv9 Model Using the Ultralytics Python Package

MS COCO 데이터셋 성능#

COCO 데이터셋에서 YOLOv9의 성능은 실시간 객체 탐지 분야의 중요한 발전을 보여 주며, 다양한 모델 크기에서 새로운 기준을 세웠습니다. 표 1은 최신 실시간 객체 탐지 모델을 종합적으로 비교하여 YOLOv9의 뛰어난 효율성과 정확도를 보여 줍니다.

성능
모델크기
(픽셀)
mAPval
50-95
mAPval
50
파라미터
(M)
FLOPs
(B)
YOLOv9t64038.353.12.07.7
YOLOv9s64046.863.47.226.7
YOLOv9m64051.468.120.176.8
YOLOv9c64053.070.225.5102.8
YOLOv9e64055.672.858.1192.5

초소형 t 변형부터 대형 e 모델까지 이어지는 YOLOv9의 다양한 버전은 정확도(mAP 지표)뿐만 아니라 매개변수 수와 계산 요구량(FLOPs)을 줄인 효율성에서도 향상된 결과를 보여 줍니다. 이 표는 이전 버전 및 경쟁 모델과 비교할 때 계산 오버헤드를 유지하거나 줄이면서 높은 정밀도를 제공하는 YOLOv9의 역량을 강조합니다.

비교해 보면 YOLOv9은 다음과 같은 놀라운 성능 향상을 보여 줍니다:

  • 경량 모델: YOLOv9s는 매개변수 효율성과 계산 부하 측면에서 YOLO MS-S를 능가하며, AP가 0.4∼0.6% 향상되었습니다.
  • 중형 및 대형 모델: YOLOv9m과 YOLOv9e는 모델 복잡도와 탐지 성능 간의 균형을 맞추는 데서 주목할 만한 발전을 보여 줍니다. 정확도가 향상되는 동시에 매개변수와 계산량을 크게 줄였습니다.

특히 YOLOv9c 모델은 아키텍처 최적화의 효과를 잘 보여 줍니다. YOLOv7 AF보다 매개변수가 42% 적고 계산 요구량이 21% 낮으면서도 비슷한 정확도를 달성하여 YOLOv9의 효율성이 크게 향상되었음을 입증합니다. 또한 YOLOv9e 모델은 대형 모델의 새로운 기준을 세웠습니다. YOLOv8x보다 매개변수가 15% 적고 계산 요구량이 25% 낮으며, AP가 추가로 1.7% 향상되었습니다.

이러한 결과는 모델 설계에서 YOLOv9이 이룬 전략적 발전을 보여 주며, 실시간 객체 탐지 작업에 필수적인 정밀도를 저하하지 않고 효율성을 높였음을 강조합니다. 이 모델은 성능 지표의 한계를 확장할 뿐만 아니라 계산 효율성의 중요성도 강조하여 컴퓨터 비전 분야의 중요한 발전을 이끌었습니다.

결론#

2024년 2월에 출시된 YOLOv9은 실시간 객체 탐지 분야의 중요한 발전으로, 효율성, 정확도, 적응성 측면에서 크게 향상되었습니다. PGI와 GELAN 같은 혁신적인 솔루션으로 핵심 문제를 해결하여 출시 당시 새로운 기준을 세웠습니다. 이후 YOLO11YOLO26 같은 최신 모델이 추가적인 개선과 함께 출시되었지만, YOLOv9의 아키텍처 혁신은 계속해서 이 분야에 영향을 미치고 있습니다.

사용 예시#

이 예제에서는 간단한 YOLOv9 학습 및 추론 예제를 제공합니다. 이러한 예제와 기타 모드에 대한 전체 문서는 Predict, Train, ValExport 문서 페이지를 참조하십시오.

예시

PyTorch 사전 학습 *.pt 모델과 구성 *.yaml 파일을 YOLO() 클래스에 전달하여 Python에서 모델 인스턴스를 생성할 수 있습니다.

from ultralytics import YOLO

# Build a YOLOv9c model from scratch
model = YOLO("yolov9c.yaml")

# Build a YOLOv9c model from pretrained weight
model = YOLO("yolov9c.pt")

# Display model information (optional)
model.info()

# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

# Run inference with the YOLOv9c model on the 'bus.jpg' image
results = model("path/to/bus.jpg")

지원되는 태스크 및 모드#

YOLOv9 시리즈는 고성능 객체 탐지에 맞게 각각 최적화된 다양한 모델을 제공합니다. 이러한 모델은 서로 다른 계산 요구 사항과 정확도 요구 사항에 대응하므로 폭넓은 애플리케이션에 유연하게 사용할 수 있습니다.

모델파일 이름작업학습검증추론내보내기
YOLOv9yolov9t.pt yolov9s.pt yolov9m.pt yolov9c.pt yolov9e.ptObject Detection
YOLOv9-segyolov9c-seg.pt yolov9e-seg.pt인스턴스 세그멘테이션

이 표는 YOLOv9 모델 변형을 자세히 개괄하며, 객체 탐지 작업에서의 기능과 추론, 검증, 학습, 내보내기와 같은 다양한 운영 모드와의 호환성을 강조합니다. 이러한 종합적인 지원을 통해 사용자는 광범위한 객체 탐지 시나리오에서 YOLOv9 모델의 기능을 최대한 활용할 수 있습니다.

참고

YOLOv9 모델을 학습하려면 동일한 크기의 YOLOv8 모델보다 더 많은 리소스가 필요하며 오래 걸립니다.

인용 및 감사의 글#

실시간 객체 탐지 분야에 크게 기여한 YOLOv9 저자들에게 감사의 뜻을 전합니다:

인용문
@inproceedings{wang2024yolov9,
  title={YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information},
  author={Wang, Chien-Yao and Yeh, I-Hau and Liao, Hong-Yuan Mark},
  booktitle={Computer Vision -- ECCV 2024},
  pages={1--21},
  year={2024},
  organization={Springer Nature Switzerland}
}

공식 YOLOv9 논문은 Springer ECCV 2024 proceedings에 게재되었으며, arXiv에 프리프린트가 공개되어 있습니다. 저자들은 연구 결과를 공개했으며 코드베이스는 GitHub에서 확인할 수 있습니다. 해당 분야의 발전에 기여하고 연구 결과를 더 넓은 커뮤니티에 공개해 주신 노력에 감사드립니다.

FAQ#

  • YOLOv9은 프로그래밍 가능한 그래디언트 정보(PGI)와 일반화된 효율적 레이어 집계 네트워크(GELAN) 같은 획기적인 기법을 도입합니다. 이러한 혁신은 심층 신경망의 정보 손실 문제를 해결하여 높은 효율성, 정확도, 적응성을 보장합니다. PGI는 네트워크 레이어 전반에서 필수 데이터를 보존하고, GELAN은 매개변수 활용과 계산 효율성을 최적화합니다. MS COCO 데이터셋에서 새로운 기준을 세운 YOLOv9의 핵심 혁신에 대해 자세히 알아보십시오.

  • YOLOv9은 더 높은 정확도와 효율성을 달성하여 최신 실시간 객체 탐지 모델보다 뛰어난 성능을 보입니다. COCO 데이터셋에서 YOLOv9 모델은 다양한 크기에서 더 높은 mAP 점수를 나타내면서 계산 오버헤드를 유지하거나 줄입니다. 예를 들어 YOLOv9c는 YOLOv7 AF보다 매개변수가 42% 적고 계산 요구량이 21% 낮으면서도 비슷한 정확도를 달성합니다. 자세한 지표는 성능 비교를 확인하십시오.

  • Python과 CLI 명령을 모두 사용하여 YOLOv9 모델을 학습할 수 있습니다. Python에서는 YOLO 클래스를 사용하여 모델을 인스턴스화하고 train 메서드를 호출합니다:

    from ultralytics import YOLO
    
    # Build a YOLOv9c model from pretrained weights and train
    model = YOLO("yolov9c.pt")
    results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

    CLI 학습의 경우 다음을 실행합니다:

    yolo train model=yolov9c.yaml data=coco8.yaml epochs=100 imgsz=640

    학습 및 추론에 대한 사용 예제에서 자세히 알아보십시오.

  • YOLOv9은 정보 손실을 완화하도록 설계되었으며, 이는 상당한 정보를 잃기 쉬운 경량 모델에 특히 중요합니다. 프로그래밍 가능한 그래디언트 정보(PGI)와 가역 함수를 통합하여 YOLOv9은 필수 데이터의 보존을 보장하고 모델의 정확도와 효율성을 향상합니다. 따라서 고성능의 소형 모델이 필요한 애플리케이션에 매우 적합합니다. 자세한 내용은 YOLOv9이 경량 모델에 미치는 영향 섹션을 참조하십시오.

  • YOLOv9은 객체 탐지와 인스턴스 세그멘테이션을 비롯한 다양한 작업을 지원합니다. 또한 추론, 검증, 학습, 내보내기와 같은 여러 운영 모드와 호환됩니다. 이러한 유연성 덕분에 YOLOv9은 다양한 실시간 컴퓨터 비전 애플리케이션에 적용할 수 있습니다. 자세한 내용은 지원되는 작업 및 모드 섹션을 참조하십시오.

댓글