yolov3: 멀티스케일 예측 및 에지 및 서버 배포를 위한 다양한 모델 변형을 갖춘 실시간 객체 탐지 프레임워크

yolov3: 멀티스케일 예측 및 에지 및 서버 배포를 위한 다양한 모델 변형을 갖춘 실시간 객체 탐지 프레임워크

해결하는 문제

YOLOv3는 실시간 객체 탐지를 수행하는 빠르고 정확한 방법을 제공합니다. 이는 별도의 영역 제안(region-proposal) 단계가 필요하지 않도록, 단일 순전파(forward pass) 과정에서 이미지 또는 비디오 스트림 내의 여러 객체를 식별하고 위치를 찾는 문제를 해결합니다.

작동 방식

이 프로젝트는 PyTorch를 사용하여 YOLOv3 (You Only Look Once, version 3) 아키텍처를 구현합니다. 탐지를 단일 회귀 문제로 구성하여, 전체 이미지로부터 경계 상자(bounding boxes)와 클래스 확률을 직접 예측합니다. 주요 아키텍처 특징은 다음과 같습니다:

  • Darknet-53 backbone: 효율적인 특징 추출을 위해 잔차 연결(residual connections)을 사용하는 53계층 컨볼루션 특징 추출기입니다.
  • 멀티스케일 탐지: 다양한 크기(소형, 중형, 대형)의 객체를 효과적으로 탐지하기 위해 세 가지 다른 특징 맵 스케일에서 예측을 수행합니다.
  • Anchor boxes: 안정적인 학습을 위해 차원 클러스터 앵커 사전 확률(dimension-cluster anchor priors)을 기준으로 경계 상자를 예측합니다.
  • 독립적 클래스 예측: softmax 대신 logistic classifier를 사용하여 단일 상자가 여러 개의 상호 배타적이지 않은 레이블을 가질 수 있도록 합니다.

대상 사용자

이 프레임워크는 CPU 및 에지 장치를 포함한 다양한 하드웨어에서 이식성이 높고 학습 및 배포가 용이한, 신뢰할 수 있는 실시간 객체 탐지 베이스라인이 필요한 개발자와 연구자를 위해 설계되었습니다.

주요 특징

  • 세 가지 모델 변형: YOLOv3, YOLOv3-SPP (더 높은 정확도를 위한 Spatial Pyramid Pooling 포함), YOLOv3-tiny (속도 및 에지 장치에 최적화)를 포함합니다.
  • 포괄적인 도구 세트: 학습, 검증, 추론 및 모델을 ONNX, TensorRT, CoreML, OpenVINO와 같은 형식으로 내보내는 기능을 기본적으로 지원합니다.
  • PyTorch Hub 통합: torch.hub.load를 통해 사용자가 프로그래밍 방식으로 사전 학습된 모델을 로드할 수 있도록 합니다.
  • 선언적 모델 정의: 모델은 YAML 파일에서 정의되므로, Python 코드를 작성하지 않고도 아키텍처를 수정할 수 있습니다.

Sources