Ultralytics YOLO26을 사용한 거리 계산
거리 계산이란 무엇입니까?
Measuring the gap between two objects is known as distance calculation within a specified space. In the case of Ultralytics YOLO26, the bounding box centroid is employed to calculate the distance for bounding boxes highlighted by the user.
Watch: How to estimate distance between detected objects with Ultralytics YOLO in Pixels 🚀
시각 자료
| Ultralytics YOLO26을 사용한 거리 계산 |
|---|
![]() |
거리 계산의 장점
- 로컬라이제이션 정밀도: 컴퓨터 비전 작업에서 정확한 공간 위치 파악을 향상시킵니다.
- 크기 추정: 더 나은 상황 이해를 위해 물체의 크기를 추정할 수 있습니다.
- 장면 이해: 자율 주행 자동차 및 감시 시스템과 같은 애플리케이션에서 더 나은 의사 결정을 위해 3D 장면 이해도를 향상시킵니다.
- 충돌 회피: 움직이는 물체 간의 거리를 모니터링하여 잠재적인 충돌을 감지할 수 있습니다.
- 공간 분석: 모니터링 환경 내에서 물체 관계 및 상호 작용 분석을 용이하게 합니다.
거리 계산
- 마우스 왼쪽 버튼으로 두 개의 BBox를 클릭하여 거리를 계산하십시오.
- 마우스 오른쪽 버튼을 사용하여 그려진 모든 포인트를 삭제하십시오.
- 프레임의 아무 곳이나 마우스 왼쪽 버튼으로 클릭하여 새 포인트를 추가하십시오.
거리는 추정치입니다
거리는 추정치이며 깊이 정보가 부족한 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 windowsDistanceCalculation() 인수
DistanceCalculation 인수를 나타내는 표입니다:
| 인수(Argument) | 유형(Type) | 기본값(Default) | 설명 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 모델 파일 경로입니다. |
You can also make use of various track arguments in the DistanceCalculation solution.
| 인수(Argument) | 유형(Type) | 기본값(Default) | 설명 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 사용할 추적 알고리즘을 지정합니다. 예: bytetrack.yaml 또는 botsort.yaml. |
conf | float | 0.1 | 탐지에 대한 신뢰도 임계값을 설정합니다. 낮은 값을 사용할수록 더 많은 객체가 추적되지만 오탐지가 포함될 수 있습니다. |
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 또는 기타 컴퓨팅 장치 중 하나를 선택할 수 있습니다. |
또한 다음과 같은 시각화 인수를 사용할 수 있습니다:
| 인수(Argument) | 유형(Type) | 기본값(Default) | 설명 |
|---|---|---|---|
show | bool | False | True인 경우 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 얻는 데 유용합니다. |
line_width | int or None | None | 바운딩 박스의 선 두께를 지정합니다. None인 경우 이미지 크기에 따라 선 두께가 자동으로 조정됩니다. 명확성을 위한 시각적 사용자 정의를 제공합니다. |
show_conf | bool | True | 레이블과 함께 각 탐지에 대한 신뢰도 점수를 표시합니다. 각 탐지에 대한 모델의 확신 수준을 알 수 있습니다. |
show_labels | bool | True | 시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있게 합니다. |
구현 세부 정보
DistanceCalculation 클래스는 비디오 프레임 전체에서 물체를 추적하고 선택된 BBox의 중심점 사이의 유클리드 거리를 계산하여 작동합니다. 두 물체를 클릭하면 솔루션은 다음과 같이 동작합니다:
- 선택된 BBox의 중심점(center points)을 추출합니다
- 픽셀 단위로 이 중심점들 사이의 유클리드 거리를 계산합니다
- 물체 사이에 연결 선을 그어 프레임에 거리를 표시합니다
구현 시 마우스 상호 작용을 처리하기 위해 mouse_event_for_distance 메서드를 사용하여 사용자가 필요에 따라 물체를 선택하고 선택을 취소할 수 있도록 합니다. process 메서드는 프레임 단위 처리, 물체 추적 및 거리 계산을 담당합니다.
응용 분야
YOLO26을 사용한 거리 계산은 다양한 실제 애플리케이션에 적용됩니다:
- 소매 분석: 제품에 대한 고객 근접성을 측정하고 매장 레이아웃 효과를 분석합니다
- 산업 안전: 작업자와 기계 간의 안전거리를 모니터링합니다
- 교통 관리: 차량 간격을 분석하고 안전거리 미확보를 감지합니다
- 스포츠 분석: 선수, 공 및 주요 경기장 위치 간의 거리를 계산합니다
- 의료: 대기 구역에서 적절한 거리를 유지하고 환자의 이동을 모니터링합니다
- 로봇 공학: 로봇이 장애물 및 사람과 적절한 거리를 유지하도록 합니다
FAQ
Ultralytics 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.
Ultralytics YOLO26에서 거리 계산을 사용할 때의 장점은 무엇입니까?
Ultralytics YOLO26에서 거리 계산을 사용하면 다음과 같은 몇 가지 장점이 있습니다:
- 로컬라이제이션 정밀도: 물체에 대한 정확한 공간 위치 파악을 제공합니다.
- 크기 추정: 물리적 크기를 추정하는 데 도움이 되어 상황을 더 잘 이해할 수 있습니다.
- 장면 이해: 3D 장면 이해도를 향상시켜 자율 주행 및 감시와 같은 애플리케이션에서 더 나은 의사 결정을 지원합니다.
- 실시간 처리: 즉석에서 계산을 수행하므로 라이브 비디오 분석에 적합합니다.
- 통합 기능: 물체 추적 및 속도 추정과 같은 다른 YOLO26 솔루션과 원활하게 작동합니다.
Ultralytics YOLO26으로 실시간 비디오 스트림에서 거리 계산을 수행할 수 있습니까?
네, Ultralytics YOLO26을 사용하여 실시간 비디오 스트림에서 거리 계산을 수행할 수 있습니다. 이 과정은 OpenCV를 사용하여 비디오 프레임을 캡처하고, YOLO26 물체 감지를 실행하며, DistanceCalculation 클래스를 사용하여 연속된 프레임 내 물체 간의 거리를 계산하는 것으로 구성됩니다. 자세한 구현 방법은 비디오 스트림 예제를 참조하십시오.
Ultralytics YOLO26을 사용한 거리 계산 중에 그려진 포인트를 어떻게 삭제합니까?
Ultralytics YOLO26을 사용한 거리 계산 중에 그려진 포인트를 삭제하려면 마우스 오른쪽 버튼을 클릭하십시오. 이 작업은 그려진 모든 포인트를 지웁니다. 더 자세한 내용은 거리 계산 예제 아래의 참고 섹션을 참조하십시오.
Ultralytics YOLO26에서 DistanceCalculation 클래스를 초기화하기 위한 주요 인수는 무엇입니까?
Ultralytics YOLO26에서 DistanceCalculation 클래스를 초기화하기 위한 주요 인수는 다음과 같습니다:
model: YOLO26 모델 파일 경로.tracker: 사용할 추적 알고리즘(기본값은 'botsort.yaml').conf: 감지 신뢰도 임계값.show: 출력을 표시하기 위한 플래그.
전체 목록 및 기본값은 DistanceCalculation의 인수를 참조하십시오.
