Ultralytics YOLO26을 사용한 VisionEye 뷰 객체 매핑#
VisionEye 객체 매핑이란 무엇인가요?#
Ultralytics YOLO26 VisionEye는 컴퓨터가 객체를 식별하고 위치를 파악할 수 있도록 하여 인간의 눈과 같은 정밀도를 구현합니다. 이 기능을 통해 컴퓨터는 특정 관점에서 세부 정보를 관찰하는 인간의 눈처럼 특정 객체를 식별하고 주의를 집중할 수 있습니다.
YOLO26으로 객체 매핑하기#
VisionEye는 프레임 내에 하나의 관찰 지점을 고정하고 해당 지점에서 추적 중인 각 객체까지 광선을 그려, 한 관점에서 장면을 어떻게 볼 수 있는지 시각화합니다. vision_point을 관찰자의 픽셀 좌표로 설정한 다음, Python API 또는 CLI를 사용해 동영상에 솔루션을 실행하세요.
# Monitor objects position with visioneye
yolo solutions visioneye show=True
# Pass a source video
yolo solutions visioneye source="path/to/video.mp4"
# Monitor the specific classes
yolo solutions visioneye classes="[0, 5]"VisionEye 인수#
다음은 VisionEye 인수 표입니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 모델 파일의 경로입니다. |
vision_point | tuple[int, int] | (20, 20) | VisionEye 솔루션을 사용하여 객체를 추적하고 경로를 그릴 기준점입니다. |
line_width | int | 2 | Solution에서 그리는 상자, 키포인트 및 개수 표시의 선 두께입니다. |
verbose | bool | True | 프레임별 입력 형태, 클래스 개수 및 처리 속도 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다. |
또한 VisionEye 솔루션에서 다양한 track 인수를 사용할 수 있습니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
tracker | str | 'tracktrack.yaml' | 사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | 탐지에 대한 신뢰도 임계값을 설정합니다. 값을 낮추면 추적할 수 있는 객체가 늘어나지만 오탐이 포함될 수 있습니다. |
iou | float | 0.7 | 중복 탐지를 필터링하기 위한 교집합 대비 합집합 (IoU) 임계값을 설정합니다. |
classes | list | None | 클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다. |
device | str | None | 추론에 사용할 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자는 모델 실행에 사용할 CPU, 특정 GPU 또는 기타 연산 장치를 선택할 수 있습니다. |
imgsz | int or tuple | 640 | 추론 대상 이미지 크기입니다. 정사각형을 나타내는 정수 또는 (height, width) 쌍을 지정합니다. 모델 stride에 맞춰 형태가 조정됩니다. |
max_det | int | 300 | 추적 전에 프레임별로 유지할 최대 탐지 수를 지정하여 밀집된 장면에서 솔루션이 처리하는 객체 수를 제한합니다. |
quantize | int or str | None | 추론 정밀도: CPU 이외의 환경에서 PyTorch 및 TorchScript 모델은 16(FP16) 또는 32/unset(FP32)을 사용하며, 다른 형식은 아티팩트와 런타임이 선택하는 정밀도를 사용합니다. 더 이상 사용되지 않는 half 인수를 대체합니다. |
또한 아래에 나열된 일부 시각화 인수도 지원됩니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True이면 주석이 추가된 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 얻는 데 유용합니다. |
show_conf | bool | True | 각 감지 결과의 레이블 옆에 신뢰도 점수를 표시합니다. 각 감지 결과에 대한 모델의 확신도를 파악할 수 있습니다. |
show_labels | bool | True | 시각화 출력에 각 감지 결과의 레이블을 표시합니다. 감지된 객체를 즉시 파악할 수 있습니다. |
VisionEye 작동 방식#
VisionEye는 프레임 내에 고정된 시야 지점을 설정하고 이 지점에서 감지된 객체까지 선을 그립니다. 이는 하나의 관점에서 여러 객체에 초점을 맞추는 인간의 시각을 구현합니다. 이 솔루션은 객체 추적을 사용해 프레임 전반에서 객체를 일관되게 식별하고, 관찰자(시야 지점)와 장면 내 객체 간의 공간적 관계를 시각적으로 표현합니다.
VisionEye 클래스의 process 메서드는 다음과 같은 주요 작업을 수행합니다.
- 입력 이미지에서 트랙(바운딩 박스, 클래스, 트랙 ID)을 추출합니다.
- 바운딩 박스와 레이블을 그릴 어노테이터를 생성합니다.
- 감지된 각 객체에 대해 박스 레이블을 그리고 시야 지점에서 시작하는 시야선을 생성합니다.
- 추적 통계가 포함된 어노테이션 이미지를 반환합니다.
이 접근 방식은 감시 시스템, 자율 주행, 인터랙티브 설치물처럼 공간 인식 및 객체 관계 시각화가 필요한 애플리케이션에 특히 유용합니다.
VisionEye의 애플리케이션#
VisionEye 객체 매핑은 다양한 산업 분야에서 폭넓게 활용됩니다.
- 보안 및 감시: 고정된 카메라 위치에서 관심 객체 여러 개를 모니터링합니다.
- 리테일 분석: 매장 진열대와 관련된 고객의 이동 패턴을 추적합니다.
- 스포츠 분석: 코치의 관점에서 선수의 위치와 움직임을 분석합니다.
- 자율주행차: 차량이 주변 환경의 객체를 어떻게 '보고' 우선순위를 정하는지 시각화합니다.
- 인간-컴퓨터 상호작용: 공간적 관계에 반응하는 더욱 직관적인 인터페이스를 만듭니다.
VisionEye를 거리 계산이나 속도 추정과 같은 다른 Ultralytics 솔루션과 결합하면 객체를 추적할 뿐 아니라 객체 간의 공간적 관계와 동작도 파악하는 종합 시스템을 구축할 수 있습니다.
자주 묻는 질문#
Ultralytics YOLO26에서 VisionEye 객체 매핑을 시작하려면 먼저 pip를 통해 Ultralytics YOLO 패키지를 설치해야 합니다. 그런 다음 문서에 제공된 샘플 코드를 사용해 VisionEye를 이용한 객체 감지를 설정할 수 있습니다. 다음은 시작을 위한 간단한 예제입니다.
import cv2 from ultralytics import solutions cap = cv2.VideoCapture("path/to/video.mp4") assert cap.isOpened(), "Error reading video file" # 비디오 작성기 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("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h)) # VisionEye 객체 초기화 visioneye = solutions.VisionEye( show=True, # 출력을 표시합니다. model="yolo26n.pt", # Ultralytics가 지원하는 모든 모델 사용(예: yolo26s.pt) classes=[0, 2], # 특정 클래스에 대한 VisionEye 뷰 생성 ) # 비디오 처리 while cap.isOpened(): success, im0 = cap.read() if not success: print("Video frame is empty or video processing has been successfully completed.") break results = visioneye(im0) print(results) # 출력에 액세스합니다 video_writer.write(results.plot_im) # 비디오 파일 저장 cap.release() video_writer.release() cv2.destroyAllWindows() # 열려 있는 모든 창 닫기Ultralytics YOLO26은 속도, 정확도, 통합 편의성이 뛰어나 객체 매핑과 추적에 적합한 솔루션으로 널리 알려져 있습니다. 주요 장점은 다음과 같습니다.
- 최첨단 성능: 실시간 객체 감지에서 높은 정확도를 제공합니다.
- 유연성: 하나의 파이프라인에서 감지, 추적, 거리 계산을 지원합니다.
- 커뮤니티 및 지원: 문제 해결과 기능 개선을 위한 방대한 문서와 활발한 GitHub 커뮤니티를 제공합니다.
- 사용 편의성: 직관적인 API로 복잡한 작업을 간소화하여 신속한 배포와 반복 작업을 지원합니다.
애플리케이션과 이점에 관한 자세한 내용은 Ultralytics YOLO26 문서를 참조하세요.
Ultralytics YOLO26은 Comet 및 ClearML과 같은 다양한 머신러닝 도구와 원활하게 통합되어 실험 추적, 협업, 재현성을 향상할 수 있습니다. 시작하려면 YOLO26과 Comet 통합하기 및 YOLO26과 ClearML 통합하기에 관한 자세한 가이드를 참조하세요.
더 많은 탐색 정보와 통합 예제는 Ultralytics 통합 가이드를 확인하세요.