YOLO Vision 2026:

Ultralytics YOLO26을 이용한 거리 계산#

거리 계산이란 무엇입니까?#

거리 계산은 이미지나 비디오 프레임 내에서 감지된 두 객체 사이의 공간을 측정하는 프로세스입니다. Ultralytics YOLO26의 경우, 사용자가 강조 표시한 바운딩 박스의 거리를 계산하기 위해 bounding box 중심점이 사용됩니다.



Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀

시각 자료#

Ultralytics YOLO26을 이용한 거리 계산
Ultralytics YOLO26 Distance Calculation

거리 계산의 이점#

  • 현지화 정밀도: computer vision 작업에서 정확한 공간 위치 파악을 향상시킵니다.
  • 크기 추정: 더 나은 맥락 이해를 위해 객체 크기를 추정할 수 있습니다.
  • 장면 이해: autonomous vehicles 및 감시 시스템과 같은 애플리케이션에서 더 나은 의사결정을 위해 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"

# Video writer
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))

# Initialize distance calculation object
distancecalculator = solutions.DistanceCalculation(
    model="yolo26n.pt",  # path to the YOLO26 model file.
    show=True,  # display the output
)

# Process video
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)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

DistanceCalculation() 인수#

다음은 DistanceCalculation 인수가 포함된 표입니다:

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일 경로입니다.

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

인수유형기본값설명
trackerstr'tracktrack.yaml'사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml.
conffloat0.1탐지에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체가 추적되지만 잘못된 긍정 탐지(false positives)가 포함될 수 있습니다.
ioufloat0.7겹치는 감지를 필터링하기 위한 Intersection over Union (IoU) 임계값을 설정합니다.
classeslistNone클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다.
verboseboolTrue추적 결과 표시를 제어하여 추적된 객체의 시각적 출력을 제공합니다.
devicestrNone추론용 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자가 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있도록 합니다.

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

인수유형기본값설명
showboolFalseTrue인 경우, 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다.
line_widthint or NoneNone바우딩 박스의 선 두께를 지정합니다. None인 경우, 선 두께가 이미지 크기에 따라 자동으로 조정됩니다. 가독성을 위한 시각적 커스텀을 제공합니다.
show_confboolTrue각 탐지에 대한 신뢰도 점수를 레이블과 함께 표시합니다. 각 탐지에 대한 모델의 확신도를 파악할 수 있습니다.
show_labelsboolTrue시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다.

구현 세부 정보#

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

  1. 선택된 바운딩 박스의 중심점(중심 좌표)을 추출합니다
  2. 이 중심점들 사이의 픽셀 단위 유클리드 거리를 계산합니다
  3. 객체 사이에 연결 선을 그려 프레임에 거리를 표시합니다

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

응용 분야#

YOLO26을 사용한 거리 계산은 다음과 같은 다양한 실용적 응용 분야를 가집니다:

  • 소매 분석: 제품에 대한 고객 근접성을 측정하고 매장 레이아웃의 효율성을 분석합니다
  • 산업 안전: 작업자와 기계 사이의 안전거리를 모니터링합니다
  • 교통 관리: 차량 간격을 분석하고 바짝 뒤따르는 행위를 감지합니다
  • 스포츠 분석: 선수, 공, 주요 필드 위치 간의 거리를 계산합니다
  • 의료: 대기 공간에서 적절한 거리 유지를 확인하고 환자 이동을 모니터링합니다
  • 로봇 공학: 로봇이 장애물 및 사람으로부터 적절한 거리를 유지할 수 있도록 합니다

FAQ#

Ultralytics YOLO26을 사용하여 객체 간의 거리를 어떻게 계산합니까?#

Ultralytics YOLO26을 사용하여 객체 간의 거리를 계산하려면 감지된 객체의 바운딩 박스 중심점을 식별해야 합니다. 이 과정에는 Ultralytics의 solutions 모듈에서 DistanceCalculation 클래스를 초기화하고 모델의 트래킹 출력을 사용하여 거리를 계산하는 작업이 포함됩니다.

Ultralytics YOLO26과 함께 거리 계산을 사용할 때의 이점은 무엇입니까?#

Ultralytics YOLO26과 함께 거리 계산을 사용하면 다음과 같은 여러 이점이 있습니다:

  • 로컬라이제이션 정밀도: 객체에 대한 정확한 공간 위치 파악을 제공합니다.
  • 크기 추정: 물리적 크기를 추정하여 더 나은 맥락 이해에 기여합니다.
  • 장면 이해: 3D 장면 이해력을 향상시켜 자율 주행 및 감시와 같은 애플리케이션에서 의사 결정을 개선합니다.
  • 실시간 처리: 즉시 계산을 수행하여 실시간 비디오 분석에 적합합니다.
  • 통합 기능: object trackingspeed estimation과 같은 다른 YOLO26 솔루션과 원활하게 작동합니다.

Ultralytics YOLO26을 사용하여 실시간 비디오 스트림에서 거리 계산을 수행할 수 있습니까?#

네, Ultralytics YOLO26을 사용하여 실시간 비디오 스트림에서 거리 계산을 수행할 수 있습니다. 이 과정에는 OpenCV를 사용하여 비디오 프레임을 캡처하고, YOLO26 object detection을 실행하며, DistanceCalculation 클래스를 사용하여 연속된 프레임의 객체 간 거리를 계산하는 작업이 포함됩니다. 자세한 구현 방법은 video stream example을 참고하세요.

Ultralytics YOLO26을 사용하여 거리 계산 중에 그려진 포인트를 삭제하려면 어떻게 해야 합니까?#

Ultralytics YOLO26을 사용한 거리 계산 중에 그려진 포인트를 삭제하려면 마우스 오른쪽 버튼을 클릭하면 됩니다. 이 작업은 그린 모든 포인트를 지웁니다. 자세한 내용은 distance calculation example 아래의 참고 섹션을 참조하세요.

Ultralytics YOLO26에서 DistanceCalculation 클래스를 초기화하기 위한 주요 인수는 무엇입니까?#

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

  • model: YOLO26 모델 파일 경로.
  • tracker: 사용할 추적 알고리즘 (기본값은 'botsort.yaml'입니다).
  • conf: 감지에 대한 신뢰도 임계값.
  • show: 출력을 표시할지 여부를 지정하는 플래그.

전체 목록과 기본값은 arguments of DistanceCalculation을 참조하세요.

댓글