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을 이용한 거리 계산 |
|---|
![]() |
Link to this section거리 계산의 이점#
- 로컬라이제이션 정밀도: 컴퓨터 비전 작업에서 정확한 공간 위치 파악을 향상시킵니다.
- 크기 추정: 더 나은 맥락 이해를 위해 객체 크기를 추정할 수 있습니다.
- 장면 이해: 자율 주행 차량 및 감시 시스템과 같은 애플리케이션에서 더 나은 의사 결정을 위해 3D 장면 이해력을 향상시킵니다.
- 충돌 방지: 움직이는 객체 간의 거리를 모니터링하여 시스템이 잠재적 충돌을 탐지할 수 있도록 합니다.
- 공간 분석: 모니터링되는 환경 내에서 객체 관계 및 상호 작용 분석을 원활하게 합니다.
거리 계산
- 마우스 왼쪽 버튼으로 임의의 두 바운딩 박스를 클릭하여 거리를 계산하십시오.
- 마우스 오른쪽 버튼을 사용하여 그려진 모든 포인트를 삭제하십시오.
- 프레임의 아무 곳이나 마우스 왼쪽 버튼으로 클릭하여 새 포인트를 추가하십시오.
거리는 추정치입니다
거리는 추정치이며 2D 데이터를 사용하여 계산되므로 완전히 정확하지 않을 수 있으며, 깊이 정보가 부족합니다.
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 windowsLink to this sectionDistanceCalculation() 인수#
다음은 DistanceCalculation 인수가 포함된 표입니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 모델 파일 경로입니다. |
You can also make use of various track arguments in the DistanceCalculation solution.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
tracker | str | 'botsort.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 | 시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다. |
Link to this section구현 세부 정보#
DistanceCalculation 클래스는 비디오 프레임 전체에서 객체를 추적하고 선택된 바운딩 박스의 중심점 사이의 유클리드 거리를 계산하여 작동합니다. 두 객체를 클릭하면 솔루션은 다음과 같이 수행합니다:
- 선택된 바운딩 박스의 중심점(중심 좌표)을 추출합니다
- 이 중심점들 사이의 픽셀 단위 유클리드 거리를 계산합니다
- 객체 사이에 연결 선을 그려 프레임에 거리를 표시합니다
이 구현은 mouse_event_for_distance 메서드를 사용하여 마우스 상호 작용을 처리하며, 사용자가 필요에 따라 객체를 선택하고 선택 항목을 지울 수 있도록 합니다. process 메서드는 프레임 단위 처리, 객체 추적, 거리 계산을 담당합니다.
Link to this section응용 분야#
YOLO26을 사용한 거리 계산은 다음과 같은 다양한 실용적 응용 분야를 가집니다:
- 소매 분석: 제품에 대한 고객 근접성을 측정하고 매장 레이아웃의 효율성을 분석합니다
- 산업 안전: 작업자와 기계 사이의 안전거리를 모니터링합니다
- 교통 관리: 차량 간격을 분석하고 바짝 뒤따르는 행위를 감지합니다
- 스포츠 분석: 선수, 공, 주요 필드 위치 간의 거리를 계산합니다
- 의료: 대기 공간에서 적절한 거리 유지를 확인하고 환자 이동을 모니터링합니다
- 로봇 공학: 로봇이 장애물 및 사람으로부터 적절한 거리를 유지할 수 있도록 합니다
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의 인수를 참조하십시오.
