콘텐츠로 건너뛰기

Ultralytics YOLO11 🚀를 사용한 VisionEye 뷰 오브젝트 매핑

비전아이 오브젝트 매핑이란 무엇인가요?

Ultralytics YOLO11 VisionEye는 컴퓨터가 물체를 식별하고 정확히 찾아낼 수 있는 기능을 제공하여 사람의 눈의 관찰 정밀도를 시뮬레이션합니다. 이 기능을 통해 컴퓨터는 사람의 눈이 특정 시점에서 세부 사항을 관찰하는 방식과 마찬가지로 특정 물체를 식별하고 집중할 수 있습니다.

다음을 사용하여 객체 추적을 통한 VisionEye 보기 객체 매핑 Ultralytics YOLO11

Ultralytics 사용한 비전아이 매핑YOLO

# 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]"
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("visioneye_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize vision eye object
visioneye = solutions.VisionEye(
    show=True,  # display the output
    model="yolo11n.pt",  # use any model that Ultralytics support, i.e, YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
    vision_point=(50, 50),  # the point, where vision will view objects and draw tracks
)

# Process video
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)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

VisionEye 인수

다음은 표입니다. VisionEye 인수를 사용합니다:

인수 유형 기본값 설명
model str None Ultralytics YOLO 모델 파일 경로.
vision_point tuple[int, int] (50, 50) 비전아이 솔루션을 사용하여 객체를 추적하고 경로를 그리는 지점입니다.

또한 다양한 track 인수의 VisionEye 솔루션입니다:

인수 유형 기본값 설명
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를 클릭하면 이미지 크기에 따라 선 너비가 자동으로 조정됩니다. 선명도를 위한 시각적 사용자 지정 기능을 제공합니다.

VisionEye 작동 방식

VisionEye는 프레임에 고정된 시야점을 설정하고 이 지점에서 감지된 물체까지 선을 그리는 방식으로 작동합니다. 이는 사람의 시각이 단일 시점에서 여러 물체에 초점을 맞추는 방식을 시뮬레이션합니다. 이 솔루션은 객체 추적을 사용하여 프레임 전체에서 객체의 일관된 식별을 유지함으로써 관찰자(비전 포인트)와 장면의 객체 사이의 공간적 관계를 시각적으로 표현합니다.

그리고 process 메서드는 몇 가지 주요 작업을 수행합니다:

  1. 입력 이미지에서 트랙(바운딩 박스, 클래스, 마스크)을 추출합니다.
  2. 경계 상자와 레이블을 그리는 주석 작성기를 만듭니다.
  3. 감지된 각 객체에 대해 상자 레이블을 그리고 비전 포인트에서 비전 라인을 만듭니다.
  4. 추적 통계와 함께 주석이 달린 이미지를 반환합니다.

이 접근 방식은 감시 시스템, 자율 주행, 대화형 설치물과 같이 공간 인식 및 객체 관계 시각화가 필요한 애플리케이션에 특히 유용합니다.

VisionEye의 애플리케이션

비전아이 오브젝트 매핑은 다양한 산업 분야에서 실용적으로 활용되고 있습니다:

  • 보안 및 감시: 고정된 카메라 위치에서 여러 개의 관심 대상 모니터링
  • 리테일 분석: 매장 디스플레이와 관련된 고객 이동 패턴 추적
  • 스포츠 분석: 코치의 관점에서 선수의 포지셔닝과 움직임 분석
  • 자율주행 차량: 차량이 주변 환경의 물체를 '인식'하고 우선순위를 정하는 방법 시각화하기
  • 인간과 컴퓨터의 상호 작용: 공간 관계에 반응하는 보다 직관적인 인터페이스 만들기

VisionEye를 거리 계산이나 속도 추정과 같은 다른 Ultralytics 솔루션과 결합하면 물체를 추적할 뿐만 아니라 공간 관계와 동작을 이해하는 종합적인 시스템을 구축할 수 있습니다.

참고

문의 사항이 있으시면 Ultralytics 이슈 섹션 또는 아래에 언급된 토론 섹션에 자유롭게 질문을 게시해 주세요.

자주 묻는 질문

VisionEye 객체 매핑을 사용하려면 어떻게 시작하나요 Ultralytics YOLO11 ?

Ultralytics YOLO11 에서 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"

# 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("vision-eye-mapping.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init vision eye object
visioneye = solutions.VisionEye(
    show=True,  # display the output
    model="yolo11n.pt",  # use any model that Ultralytics support, i.e, YOLOv10
    classes=[0, 2],  # generate visioneye view for specific classes
)

# Process video
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)  # access the output

    video_writer.write(results.plot_im)  # write the video file

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

객체 매핑 및 추적에 Ultralytics YOLO11 을 사용해야 하는 이유는 무엇인가요?

Ultralytics YOLO11 는 속도, 정확성, 통합 용이성으로 잘 알려져 있어 객체 매핑 및 추적에 최고의 선택입니다. 주요 장점은 다음과 같습니다:

  1. 최첨단 성능: 실시간 물체 감지에서 높은 정확도를 제공합니다.
  2. 유연성: 감지, 추적, 거리 계산 등 다양한 작업을 지원합니다.
  3. 커뮤니티 및 지원: 문제 해결 및 개선을 위한 광범위한 문서와 활발한 GitHub 커뮤니티.
  4. 사용 편의성: 직관적인 API로 복잡한 작업을 간소화하여 신속한 배포와 반복이 가능합니다.

신청 및 혜택에 대한 자세한 내용은 Ultralytics YOLO11 문서를 참조하세요.

VisionEye를 Comet 또는 ClearML 과 같은 다른 머신 러닝 도구와 통합하려면 어떻게 해야 하나요?

Ultralytics YOLO11 는 Comet 및 ClearML 과 같은 다양한 머신러닝 도구와 원활하게 통합되어 실험 추적, 협업 및 재현성을 향상시킬 수 있습니다. YOLOv5 Comet 과 사용하는 방법과 YOLO11 을 ClearML 과 통합하는 방법에 대한 자세한 가이드를 참조하여 시작하세요.

자세한 탐색 및 통합 예시는 Ultralytics 통합 가이드를 참조하세요.

📅1 년 전 생성됨 ✏️ 업데이트됨 5 일 전

댓글