Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO26을 이용한 거리 계산#

Link to this section거리 계산이란 무엇인가요?#

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



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

Link to this section시각 자료#

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

Link to this section거리 계산의 이점#

  • 로컬라이제이션 정밀도: 컴퓨터 비전 작업에서 정확한 공간 위치 파악을 향상시킵니다.
  • 크기 추정: 객체 크기를 추정하여 맥락적 이해를 돕습니다.
  • 장면 이해: 자율 주행 자동차 및 감시 시스템과 같은 애플리케이션에서 더 나은 의사 결정을 위해 3D 장면 이해도를 높입니다.
  • 충돌 방지: 이동하는 객체 간의 거리를 모니터링하여 시스템이 잠재적인 충돌을 감지할 수 있도록 합니다.
  • 공간 분석: 모니터링되는 환경 내에서 객체 간의 관계 및 상호 작용을 분석하는 기능을 제공합니다.
거리 계산
  • 마우스 왼쪽 버튼으로 두 개의 바운딩 박스를 클릭하여 거리를 계산하십시오.
  • 마우스 오른쪽 버튼을 사용하면 그려진 모든 지점을 삭제할 수 있습니다.
  • 프레임의 아무 곳이나 마우스 왼쪽 버튼으로 클릭하여 새로운 지점을 추가하십시오.
거리는 추정치입니다

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

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

Link to this sectionDistanceCalculation() 인수#

DistanceCalculation 인수를 나타내는 표입니다:

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

You can also make use of various track arguments in the DistanceCalculation solution.

인수유형기본값설명
trackerstr'botsort.yaml'사용할 추적 알고리즘을 지정합니다. 예: bytetrack.yaml 또는 botsort.yaml.
conffloat0.1탐지에 대한 신뢰도 임계값을 설정합니다. 낮은 값은 더 많은 객체를 추적할 수 있게 하지만 오탐지를 포함할 수 있습니다.
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시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있게 합니다.

Link to this section구현 상세#

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

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

구현 시 mouse_event_for_distance 메서드를 사용하여 마우스 상호 작용을 처리함으로써 사용자가 객체를 선택하고 필요에 따라 선택을 취소할 수 있도록 합니다. process 메서드는 프레임 단위 처리, 객체 추적, 거리 계산을 담당합니다.

Link to this section응용 분야#

YOLO26을 이용한 거리 계산에는 다음과 같은 다양한 실제 응용 분야가 있습니다:

  • 소매 분석: 제품에 대한 고객 근접도를 측정하고 매장 레이아웃의 효율성을 분석합니다.
  • 산업 안전: 작업자와 기계 간의 안전 거리를 모니터링합니다.
  • 교통 관리: 차량 간격을 분석하고 안전거리 미확보(tailgating)를 감지합니다.
  • 스포츠 분석: 선수, 공, 주요 필드 위치 간의 거리를 계산합니다.
  • 헬스케어: 대기 구역에서 적절한 거리 유지를 보장하고 환자 이동을 모니터링합니다.
  • 로봇 공학: 로봇이 장애물 및 사람으로부터 적절한 거리를 유지하도록 합니다.

Link to this sectionFAQ#

Link to this sectionUltralytics YOLO26을 사용하여 객체 간의 거리를 계산하려면 어떻게 해야 하나요?#

To calculate distances between objects using Ultralytics YOLO26, you need to identify the bounding box centroids of the detected objects. This process involves initializing the DistanceCalculation class from Ultralytics' solutions module and using the model's tracking outputs to calculate the distances.

Link to this sectionUltralytics YOLO26에서 거리 계산을 사용할 때의 이점은 무엇인가요?#

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

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

Link to this sectionUltralytics YOLO26으로 실시간 비디오 스트림에서 거리 계산을 수행할 수 있나요?#

네, Ultralytics YOLO26을 사용하여 실시간 비디오 스트림에서 거리 계산을 수행할 수 있습니다. 이 과정은 OpenCV를 사용하여 비디오 프레임을 캡처하고, YOLO26 객체 탐지를 실행하며, DistanceCalculation 클래스를 사용하여 연속된 프레임 내 객체 간의 거리를 계산하는 방식으로 이루어집니다. 자세한 구현 방법은 비디오 스트림 예제를 참조하십시오.

Link to this sectionUltralytics YOLO26을 사용한 거리 계산 중에 그려진 지점을 삭제하려면 어떻게 하나요?#

Ultralytics YOLO26을 사용한 거리 계산 중에 그려진 지점을 삭제하려면 마우스 오른쪽 버튼을 클릭하면 됩니다. 이 동작을 수행하면 그려진 모든 지점이 지워집니다. 자세한 내용은 거리 계산 예제 아래의 참고 섹션을 참조하십시오.

Link to this sectionUltralytics YOLO26에서 DistanceCalculation 클래스를 초기화하기 위한 주요 인수는 무엇인가요?#

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

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

전체 목록 및 기본값은 DistanceCalculation 인수를 참조하십시오.

댓글