Ultralytics YOLO26을 이용한 거리 계산#
거리 계산이란 무엇입니까?#
거리 계산은 이미지나 비디오 프레임 내에서 감지된 두 객체 사이의 공간을 측정하는 프로세스입니다. Ultralytics YOLO26의 경우, 사용자가 강조 표시한 바운딩 박스의 거리를 계산하기 위해 bounding box 중심점이 사용됩니다.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
시각 자료#
| Ultralytics YOLO26을 이용한 거리 계산 |
|---|
![]() |
거리 계산의 이점#
- 현지화 정밀도: computer vision 작업에서 정확한 공간 위치 파악을 향상시킵니다.
- 크기 추정: 더 나은 맥락 이해를 위해 객체 크기를 추정할 수 있습니다.
- 장면 이해: autonomous vehicles 및 감시 시스템과 같은 애플리케이션에서 더 나은 의사결정을 위해 3D 장면 이해를 향상시킵니다.
- 충돌 방지: 움직이는 객체 간의 거리를 모니터링하여 시스템이 잠재적 충돌을 탐지할 수 있도록 합니다.
- 공간 분석: 모니터링되는 환경 내에서 객체 관계 및 상호 작용 분석을 원활하게 합니다.
거리 계산
- 마우스 왼쪽 버튼으로 임의의 두 바운딩 박스를 클릭하여 거리를 계산하십시오.
- 마우스 오른쪽 버튼을 사용하여 그려진 모든 포인트를 삭제하십시오.
- 프레임의 아무 곳이나 마우스 왼쪽 버튼으로 클릭하여 새 포인트를 추가하십시오.
거리는 추정치입니다
거리는 추정치이며 2D 데이터를 사용하여 계산되므로 완전히 정확하지 않을 수 있으며, 깊이 정보가 부족합니다.
YOLO26을 사용하여 거리 계산하기#
DistanceCalculation 솔루션은 프레임 전반에서 객체를 추적하고, 마우스로 선택한 두 바운딩 박스의 중심점 사이의 유클리드 거리를 픽셀 단위로 측정합니다. 아래 예제를 실행한 다음, 왼쪽 클릭으로 두 객체를 선택하여 연결선을 그리고 거리를 확인하고, 오른쪽 클릭으로 선택을 지웁니다.
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 windowsDistanceCalculation() 인수#
다음은 DistanceCalculation 인수가 포함된 표입니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 모델 파일 경로입니다. |
또한 DistanceCalculation 솔루션에서 다양한 track 인수를 활용할 수 있습니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | 사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.1 | 탐지에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체가 추적되지만 잘못된 긍정 탐지(false positives)가 포함될 수 있습니다. |
iou | float | 0.7 | 겹치는 감지를 필터링하기 위한 Intersection over Union (IoU) 임계값을 설정합니다. |
classes | list | None | 클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다. |
verbose | bool | True | 추적 결과 표시를 제어하여 추적된 객체의 시각적 출력을 제공합니다. |
device | str | None | 추론용 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자가 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있도록 합니다. |
또한 다음 시각화 인수를 사용할 수 있습니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True인 경우, 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다. |
line_width | int or None | None | 바우딩 박스의 선 두께를 지정합니다. None인 경우, 선 두께가 이미지 크기에 따라 자동으로 조정됩니다. 가독성을 위한 시각적 커스텀을 제공합니다. |
show_conf | bool | True | 각 탐지에 대한 신뢰도 점수를 레이블과 함께 표시합니다. 각 탐지에 대한 모델의 확신도를 파악할 수 있습니다. |
show_labels | bool | True | 시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다. |
구현 세부 정보#
DistanceCalculation 클래스는 비디오 프레임 전체에서 객체를 추적하고 선택된 바운딩 박스의 중심점 간 유클리드 거리를 계산하여 작동합니다. 두 객체를 클릭하면 솔루션은 다음을 수행합니다:
- 선택된 바운딩 박스의 중심점(중심 좌표)을 추출합니다
- 이 중심점들 사이의 픽셀 단위 유클리드 거리를 계산합니다
- 객체 사이에 연결 선을 그려 프레임에 거리를 표시합니다
구현에서는 mouse_event_for_distance 메서드를 사용하여 마우스 상호작용을 처리하며, 사용자가 필요에 따라 객체를 선택하고 선택을 지울 수 있도록 합니다. process 메서드는 프레임별 처리, 객체 추적, 거리 계산을 처리합니다.
응용 분야#
YOLO26을 사용한 거리 계산은 다음과 같은 다양한 실용적 응용 분야를 가집니다:
- 소매 분석: 제품에 대한 고객 근접성을 측정하고 매장 레이아웃의 효율성을 분석합니다
- 산업 안전: 작업자와 기계 사이의 안전거리를 모니터링합니다
- 교통 관리: 차량 간격을 분석하고 바짝 뒤따르는 행위를 감지합니다
- 스포츠 분석: 선수, 공, 주요 필드 위치 간의 거리를 계산합니다
- 의료: 대기 공간에서 적절한 거리 유지를 확인하고 환자 이동을 모니터링합니다
- 로봇 공학: 로봇이 장애물 및 사람으로부터 적절한 거리를 유지할 수 있도록 합니다
FAQ#
Ultralytics YOLO26을 사용하여 객체 간의 거리를 어떻게 계산합니까?#
Ultralytics YOLO26을 사용하여 객체 간의 거리를 계산하려면 감지된 객체의 바운딩 박스 중심점을 식별해야 합니다. 이 과정에는 Ultralytics의 solutions 모듈에서 DistanceCalculation 클래스를 초기화하고 모델의 트래킹 출력을 사용하여 거리를 계산하는 작업이 포함됩니다.
Ultralytics YOLO26과 함께 거리 계산을 사용할 때의 이점은 무엇입니까?#
Ultralytics YOLO26과 함께 거리 계산을 사용하면 다음과 같은 여러 이점이 있습니다:
- 로컬라이제이션 정밀도: 객체에 대한 정확한 공간 위치 파악을 제공합니다.
- 크기 추정: 물리적 크기를 추정하여 더 나은 맥락 이해에 기여합니다.
- 장면 이해: 3D 장면 이해력을 향상시켜 자율 주행 및 감시와 같은 애플리케이션에서 의사 결정을 개선합니다.
- 실시간 처리: 즉시 계산을 수행하여 실시간 비디오 분석에 적합합니다.
- 통합 기능: object tracking 및 speed 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을 참조하세요.
