Ultralytics YOLO27:
Get Started

Ultralytics YOLO26을 사용한 거리 계산#

거리 계산이란 무엇인가요?#

거리 계산은 이미지 또는 비디오 프레임에서 감지된 두 객체 사이의 간격을 측정하는 과정입니다. Ultralytics YOLO26의 경우, 사용자가 지정한 바운딩 박스의 중심점을 사용해 바운딩 박스 사이의 거리를 계산합니다.



시청: Ultralytics YOLO로 감지된 객체 간 거리를 픽셀 단위로 추정하는 방법 🚀

시각 자료#

Ultralytics YOLO26을 사용한 거리 계산
Ultralytics YOLO26 거리 계산

거리 계산의 장점#

  • 위치 정밀도: 컴퓨터 비전 작업에서 정확한 공간 위치 파악을 개선합니다.
  • 크기 추정: 객체 크기를 추정하여 맥락을 더 잘 파악할 수 있습니다.
  • 장면 이해: 자율주행 차량 및 감시 시스템과 같은 애플리케이션에서 더 나은 의사 결정을 내릴 수 있도록 3D 장면 이해도를 높입니다.
  • 충돌 방지: 움직이는 객체 사이의 거리를 모니터링하여 잠재적인 충돌을 감지할 수 있습니다.
  • 공간 분석: 모니터링 환경 내 객체 간의 관계와 상호작용을 분석할 수 있습니다.
거리 계산
  • 마우스 왼쪽 버튼으로 바운딩 박스 두 개를 클릭하면 거리를 계산합니다.
  • 마우스 오른쪽 버튼을 눌러 그린 점을 모두 삭제합니다.
거리는 추정값입니다

거리는 추정값이며, 깊이 정보가 없는 2D 데이터를 사용해 계산하므로 완전히 정확하지 않을 수 있습니다.

YOLO26으로 거리 계산하기#

DistanceCalculation 솔루션은 프레임 간 객체를 추적하고, 마우스로 선택한 바운딩 박스 두 개의 중심점 사이 유클리드 거리를 픽셀 단위로 측정합니다. 아래 예제를 실행한 다음 객체 두 개를 마우스 왼쪽 버튼으로 클릭하면 두 객체를 잇는 선이 그려지고 거리가 표시됩니다. 마우스 오른쪽 버튼을 누르면 선택 항목이 지워집니다.

Ultralytics YOLO를 사용한 거리 계산
import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# 비디오 작성기
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))
video_writer = cv2.VideoWriter("distance_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# 거리 계산 객체 초기화
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # YOLO26 모델 파일의 경로입니다.
    show=True,  # 출력을 표시합니다.
)

# 비디오 처리
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = distancecalculator(im0)

    print(results)  # 출력에 액세스합니다

    video_writer.write(results.plot_im)  # 처리된 프레임을 저장합니다.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # 열려 있는 모든 창 닫기

DistanceCalculation() 인수#

다음은 DistanceCalculation 인수 표입니다:

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일의 경로입니다.
line_widthint2Solution에서 그리는 상자, 키포인트 및 개수 표시의 선 두께입니다.
verboseboolTrue프레임별 입력 형태, 클래스 개수 및 처리 속도 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다.

DistanceCalculation 솔루션에서 다양한 track 인수를 사용할 수도 있습니다.

인수유형기본값설명
trackerstr'tracktrack.yaml'사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.25탐지에 대한 신뢰도 임계값을 설정합니다. 값을 낮추면 추적할 수 있는 객체가 늘어나지만 오탐이 포함될 수 있습니다.
ioufloat0.7중복 탐지를 필터링하기 위한 교집합 대비 합집합 (IoU) 임계값을 설정합니다.
classeslistNone클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다.
devicestrNone추론에 사용할 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자는 모델 실행에 사용할 CPU, 특정 GPU 또는 기타 연산 장치를 선택할 수 있습니다.
imgszint or tuple640추론 대상 이미지 크기입니다. 정사각형을 나타내는 정수 또는 (height, width) 쌍을 지정합니다. 모델 stride에 맞춰 형태가 조정됩니다.
max_detint300추적 전에 프레임별로 유지할 최대 탐지 수를 지정하여 밀집된 장면에서 솔루션이 처리하는 객체 수를 제한합니다.
quantizeint or strNone추론 정밀도입니다. PyTorch 및 TorchScript 모델의 경우 16 (FP16) 또는 32/미설정(FP32)을 사용합니다. 다른 형식은 아티팩트와 런타임에서 선택한 정밀도로 계산합니다. 더 이상 사용되지 않는 half 플래그를 대체합니다.

또한 다음 시각화 인수를 사용할 수 있습니다:

인수유형기본값설명
showboolFalseTrue이면 주석이 추가된 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 얻는 데 유용합니다.
show_confboolTrue각 감지 결과의 레이블 옆에 신뢰도 점수를 표시합니다. 각 감지 결과에 대한 모델의 확신도를 파악할 수 있습니다.
show_labelsboolTrue시각화 출력에 각 감지 결과의 레이블을 표시합니다. 감지된 객체를 즉시 파악할 수 있습니다.

구현 세부 정보#

DistanceCalculation 클래스는 비디오 프레임 간 객체를 추적하고 선택된 바운딩 박스의 중심점 사이 유클리드 거리를 계산합니다. 객체 두 개를 클릭하면 솔루션은 다음 작업을 수행합니다:

  1. 선택한 바운딩 박스의 중심점(중앙 지점)을 추출합니다
  2. 이 중심점 사이의 유클리드 거리를 픽셀 단위로 계산합니다
  3. 객체 사이를 잇는 선과 함께 프레임에 거리를 표시합니다

이 구현은 마우스 상호작용을 처리하기 위해 mouse_event_for_distance 메서드를 사용하며, 사용자가 필요에 따라 객체를 선택하고 선택 항목을 지울 수 있도록 합니다. process 메서드는 프레임별 처리, 객체 추적 및 거리 계산을 담당합니다.

응용 분야#

YOLO26을 사용한 거리 계산은 다양한 실제 애플리케이션에 활용할 수 있습니다:

  • 리테일 분석: 고객과 제품 사이의 거리를 측정하고 매장 레이아웃의 효과를 분석합니다
  • 산업 안전: 작업자와 기계 사이의 안전 거리를 모니터링합니다
  • 교통 관리: 차량 간격을 분석하고 안전거리 미확보를 감지합니다
  • 스포츠 분석: 선수, 공 및 경기장의 주요 위치 사이 거리를 계산합니다
  • 헬스케어: 대기 공간에서 적절한 거리를 유지하고 환자의 이동을 모니터링합니다
  • 로보틱스: 로봇이 장애물 및 사람과 적절한 거리를 유지하도록 합니다

자주 묻는 질문#

  • Ultralytics YOLO26을 사용해 객체 사이의 거리를 계산하려면 감지된 객체의 바운딩 박스 중심점을 찾아야 합니다. 이 과정에서는 Ultralytics의 solutions 모듈에서 DistanceCalculation 클래스를 초기화하고, 모델의 추적 출력을 사용해 거리를 계산합니다.

  • Ultralytics YOLO26으로 거리 계산을 수행하면 다음과 같은 장점이 있습니다:

    • 위치 정밀도: 객체의 정확한 공간 위치를 제공합니다.
    • 크기 추정: 실제 크기를 추정하여 맥락을 더 잘 파악할 수 있도록 돕습니다.
    • 장면 이해: 3D 장면 이해도를 높여 자율주행 및 감시와 같은 애플리케이션에서 더 나은 의사 결정을 지원합니다.
    • 실시간 처리: 계산을 즉시 수행하므로 라이브 비디오 분석에 적합합니다.
    • 통합 기능: 객체 추적 및 속도 추정과 같은 다른 YOLO26 솔루션과 원활하게 작동합니다.
  • 예, Ultralytics YOLO26으로 실시간 비디오 스트림에서 거리를 계산할 수 있습니다. 이 과정에서는 OpenCV를 사용해 비디오 프레임을 캡처하고, YOLO26 객체 감지를 실행한 다음, DistanceCalculation 클래스를 사용해 연속된 프레임의 객체 사이 거리를 계산합니다. 자세한 구현 방법은 비디오 스트림 예제를 참조하세요.

  • Ultralytics YOLO26으로 거리 계산 중에 그린 점을 삭제하려면 마우스 오른쪽 버튼을 클릭하면 됩니다. 이 동작으로 그린 점이 모두 지워집니다. 자세한 내용은 거리 계산 예제의 참고 섹션을 참조하세요.

  • Ultralytics YOLO26에서 DistanceCalculation 클래스를 초기화하는 데 필요한 주요 인수는 다음과 같습니다:

    • model: YOLO26 모델 파일의 경로입니다.
    • tracker: 사용할 추적 알고리즘입니다(솔루션의 기본값은 tracktrack.yaml입니다).
    • conf: 감지 신뢰도 임계값입니다.
    • show: 출력을 표시할지 지정하는 플래그입니다.

    전체 인수 목록과 기본값은 DistanceCalculation 인수를 참조하세요.

댓글