Ultralytics YOLO11을 사용한 거리 계산
거리 계산이란 무엇입니까?
두 객체 사이의 간격을 측정하는 것을 지정된 공간 내에서 거리 계산이라고 합니다. Ultralytics YOLO11의 경우, 사용자가 강조 표시한 경계 상자의 거리를 계산하기 위해 경계 상자 중심이 사용됩니다.
참고: Ultralytics YOLO11을 사용한 거리 계산
비주얼 자료
Ultralytics YOLO11을 사용한 거리 계산 |
---|
![]() |
거리 계산의 장점은 무엇입니까?
- 지역화 정밀도: 컴퓨터 비전 작업에서 정확한 공간 포지셔닝을 향상시킵니다.
- 크기 추정: 더 나은 상황 이해를 위해 객체 크기를 추정할 수 있습니다.
- 장면 이해: 자율 주행 차량 및 감시 시스템과 같은 애플리케이션에서 더 나은 의사 결정을 위해 3D 장면 이해도를 향상시킵니다.
- Collision Avoidance: 움직이는 물체 간의 거리를 모니터링하여 잠재적인 충돌을 감지할 수 있도록 합니다.
- 공간 분석: 모니터링 환경 내에서 객체 관계 및 상호 작용 분석을 용이하게 합니다.
거리 계산
- 거리 계산을 위해 마우스 왼쪽 버튼 클릭으로 임의의 두 경계 상자를 클릭하십시오.
- 마우스 오른쪽 버튼 클릭은 그려진 모든 점을 삭제합니다.
- 마우스 왼쪽 버튼 클릭은 점을 그리는 데 사용할 수 있습니다.
예상 거리
Distance will be an estimate and may not be fully accurate, as it is calculated using 2-dimensional data,
which lacks information about the object's depth.
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="yolo11n.pt", # path to the YOLO11 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
인수입니다.
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO 모델 파일의 경로입니다. |
다양한 방법을 활용할 수도 있습니다. track
다음의 인수들 DistanceCalculation
솔루션.
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
사용할 추적 알고리즘을 지정합니다 (예: bytetrack.yaml 또는 botsort.yaml . |
conf |
float |
0.3 |
검출에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체를 추적할 수 있지만 오탐지가 포함될 수 있습니다. |
iou |
float |
0.5 |
겹치는 검출을 필터링하기 위한 IoU (Intersection over Union) 임계값을 설정합니다. |
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 |
None or int |
None |
경계 상자의 선 너비를 지정합니다. 만약 None , 선 너비는 이미지 크기에 따라 자동으로 조정됩니다. 명확성을 위해 시각적 사용자 정의를 제공합니다. |
show_conf |
bool |
True |
레이블과 함께 각 감지에 대한 신뢰도 점수를 표시합니다. 각 감지에 대한 모델의 확신에 대한 통찰력을 제공합니다. |
show_labels |
bool |
True |
시각적 출력에서 각 감지에 대한 레이블을 표시합니다. 감지된 객체에 대한 즉각적인 이해를 제공합니다. |
구현 세부 정보
에 지정되어 있습니다. DistanceCalculation
클래스는 비디오 프레임에서 객체를 추적하고 선택한 경계 상자의 중심 사이의 유클리드 거리를 계산하여 작동합니다. 두 객체를 클릭하면 솔루션:
- 선택한 경계 상자의 중심점(중심점)을 추출합니다.
- 이러한 중심 사이의 유클리드 거리를 픽셀 단위로 계산합니다.
- 객체 사이를 연결하는 선과 함께 프레임에 거리를 표시합니다.
이 구현에서는 다음을 사용합니다. mouse_event_for_distance
메서드는 마우스 상호 작용을 처리하여 사용자가 필요에 따라 객체를 선택하고 선택을 취소할 수 있도록 합니다. 해당 process
메서드는 프레임별 처리, 객체 추적 및 거리 계산을 처리합니다.
응용 분야
YOLO11을 사용한 거리 계산은 다음과 같은 다양한 실제 응용 분야가 있습니다.
- 소매 분석: 제품에 대한 고객 근접성을 측정하고 매장 레이아웃 효율성을 분석합니다.
- 산업 안전: 작업자와 기계 사이의 안전 거리를 모니터링합니다.
- 교통 관리: 차량 간 간격을 분석하고 차량의 안전 거리 미확보를 감지합니다.
- 스포츠 분석: 선수, 공 및 주요 필드 위치 간의 거리를 계산합니다.
- 헬스케어: 대기 구역에서 적절한 거리 두기를 보장하고 환자 이동을 모니터링합니다.
- 로보틱스: 로봇이 장애물과 사람으로부터 적절한 거리를 유지할 수 있도록 합니다.
FAQ
Ultralytics YOLO11을 사용하여 객체 간 거리를 어떻게 계산합니까?
다음을 사용하여 객체 간의 거리를 계산하려면 Ultralytics YOLO11, 감지된 객체의 경계 상자 중심을 식별해야 합니다. 이 프로세스에는 다음을 초기화하는 작업이 포함됩니다. DistanceCalculation
Ultralytics' 클래스 위치 solutions
모듈과 모델의 추적 출력을 사용하여 거리를 계산합니다.
Ultralytics YOLO11에서 거리 계산을 사용할 때의 장점은 무엇인가요?
Ultralytics YOLO11을 사용한 거리 계산은 다음과 같은 여러 가지 이점을 제공합니다.
- 지역화 정밀도: 객체에 대한 정확한 공간 포지셔닝을 제공합니다.
- 크기 추정: 물리적 크기를 추정하는 데 도움이 되어 더 나은 상황 이해에 기여합니다.
- 장면 이해: 3D 장면 이해도를 향상시켜 자율 주행 및 감시와 같은 애플리케이션에서 향상된 의사 결정을 지원합니다.
- 실시간 처리: 즉석에서 계산을 수행하므로 라이브 비디오 분석에 적합합니다.
- 통합 기능: 객체 추적 및 속도 추정과 같은 다른 YOLO11 솔루션과 원활하게 작동합니다.
Ultralytics YOLO11을 사용하여 실시간 비디오 스트림에서 거리 계산을 수행할 수 있습니까?
예, Ultralytics YOLO11을 사용하여 실시간 비디오 스트림에서 거리 계산을 수행할 수 있습니다. 이 프로세스에는 비디오 프레임을 캡처하는 작업이 포함됩니다. OpenCV, YOLO11 실행 객체 감지, 사용하는 DistanceCalculation
클래스는 연속 프레임에서 객체 간의 거리를 계산합니다. 자세한 구현은 다음을 참조하십시오. 비디오 스트림 예시.
Ultralytics YOLO11을 사용하여 거리 계산 중에 그린 점들을 어떻게 삭제합니까?
Ultralytics YOLO11을 사용하여 거리 계산 중에 그린 점을 삭제하려면 마우스 오른쪽 버튼을 클릭하면 됩니다. 이 작업은 그린 모든 점을 지웁니다. 자세한 내용은 거리 계산 예제 아래의 참고 섹션을 참조하세요.
Ultralytics YOLO11에서 DistanceCalculation 클래스를 초기화하기 위한 주요 인수는 무엇인가요?
초기화를 위한 주요 인수 DistanceCalculation
Ultralytics YOLO11의 클래스에는 다음이 포함됩니다.
model
: YOLO11 모델 파일의 경로입니다.tracker
: 사용할 추적 알고리즘입니다 (기본값은 'botsort.yaml'입니다).conf
: 검출에 대한 신뢰도 임계값입니다.show
: 출력을 표시하는 플래그입니다.
전체 목록 및 기본값은 DistanceCalculation 인수를 참조하십시오.