콘텐츠로 건너뛰기

Ultralytics YOLO11 🚀을 사용한 VisionEye 보기 객체 매핑

VisionEye Object Mapping은 무엇입니까?

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

Ultralytics YOLO11을 사용한 객체 추적 기능이 있는 VisionEye 보기 객체 매핑

Ultralytics YOLO를 사용한 VisionEye 매핑

# 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] (20, 20) VisionEye 솔루션을 사용하여 비전이 객체를 추적하고 경로를 그리는 지점입니다.

다양한 기능도 활용할 수 있습니다. 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, 선 너비는 이미지 크기에 따라 자동으로 조정됩니다. 명확성을 위해 시각적 사용자 정의를 제공합니다.
show_conf bool True 레이블과 함께 각 감지에 대한 신뢰도 점수를 표시합니다. 각 감지에 대한 모델의 확신에 대한 통찰력을 제공합니다.
show_labels bool True 시각적 출력에서 각 감지에 대한 레이블을 표시합니다. 감지된 객체에 대한 즉각적인 이해를 제공합니다.

VisionEye 작동 방식

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

에 지정되어 있습니다. process VisionEye 클래스의 메서드는 다음과 같은 주요 작업을 수행합니다.

  1. 입력 이미지에서 트랙(경계 상자, 클래스 및 마스크)을 추출합니다.
  2. 바운딩 박스 및 레이블을 그리는 주석자를 생성합니다.
  3. 감지된 각 객체에 대해 상자 레이블을 그리고 시점으로부터 비전 라인을 생성합니다.
  4. 추적 통계가 포함된 어노테이션된 이미지를 반환합니다.

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

VisionEye의 응용

VisionEye 객체 매핑은 다양한 산업 분야에서 수많은 실용적인 응용 분야를 가지고 있습니다.

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

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

참고

문의 사항이 있으시면 언제든지 Ultralytics Issue Section 또는 아래에 언급된 토론 섹션에 질문을 게시해 주십시오.

FAQ

Ultralytics YOLO11에서 VisionEye Object Mapping을 어떻게 사용하나요?

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년 전에 생성됨 ✏️ 4개월 전에 업데이트됨

댓글