Ultralytics YOLO27:

Ultralytics YOLO26을 사용한 VisionEye 뷰 객체 매핑#

VisionEye 객체 매핑이란 무엇인가요?#

Ultralytics YOLO26 VisionEye는 컴퓨터가 인간의 눈의 관찰 정밀도를 모방하여 객체를 식별하고 위치를 파악할 수 있도록 합니다. 이 기능을 사용하면 컴퓨터가 특정 객체를 식별하고 집중할 수 있으며, 이는 인간의 눈이 특정 시점에서 세부 정보를 관찰하는 방식과 유사합니다.

VisionEye object mapping with YOLO tracking

YOLO26으로 객체 매핑하기#

VisionEye는 프레임에서 하나의 관찰 지점을 고정하고 해당 지점에서 추적된 모든 객체로 광선을 그리므로, 하나의 시점에서 장면이 어떻게 보이는지 시각화할 수 있습니다. vision_point을 관찰자의 픽셀 좌표로 설정한 다음 Python API 또는 CLI를 사용하여 비디오에 솔루션을 실행합니다.

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]"

VisionEye 인수#

다음은 VisionEye 인수 표입니다.

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일의 경로입니다.
vision_pointtuple[int, int](20, 20)VisionEye Solution을 사용하여 비전이 객체를 추적하고 경로를 그릴 지점입니다.
line_widthint2솔루션이 그리는 박스, 키포인트 및 카운트의 선 두께입니다.
verboseboolTrue입력 형태, 클래스별 개수 및 처리 속도의 프레임별 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다.

또한 VisionEye 솔루션에서 다양한 track 인수를 사용할 수 있습니다.

인수유형기본값설명
trackerstr'botsort.yaml'사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml입니다.
conffloat0.25검출 결과의 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체를 추적할 수 있지만 오탐이 포함될 수 있습니다.
ioufloat0.7겹치는 검출 결과를 필터링하기 위한 교집합 대비 합집합 (IoU) 임계값을 설정합니다.
classeslistNone클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다.
devicestrNone추론에 사용할 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자는 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 모델 실행 장치를 선택할 수 있습니다.
imgszint or tuple640목표 추론 이미지 크기: 정사각형의 경우 정수 또는 (height, width) 쌍입니다. 형태는 모델 스트라이드에 맞게 조정됩니다.
max_detint300추적 전 프레임당 유지되는 최대 검출 수로, 솔루션이 밀집된 장면에서 처리하는 객체를 제한합니다.
quantizeint or strNone추론 정밀도: PyTorch 및 TorchScript 모델의 경우 16(FP16) 또는 32/설정 안 함(FP32); 기타 형식은 아티팩트와 런타임이 선택하는 정밀도로 계산됩니다. 더 이상 사용되지 않는 half 플래그를 대체합니다.

또한 아래와 같이 일부 시각화 인수가 지원됩니다.

인수유형기본값설명
showboolFalseTrue인 경우 annotation이 추가된 이미지 또는 비디오를 window에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 제공하는 데 유용합니다.
show_confboolTrue각 detection의 confidence score를 label과 함께 표시합니다. 각 detection에 대한 모델의 확신 정도를 파악할 수 있습니다.
show_labelsboolTruevisual output에 각 detection의 label을 표시합니다. 검출된 객체를 즉시 파악할 수 있습니다.

VisionEye 작동 방식#

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

VisionEye 클래스의 process 메서드는 다음과 같은 몇 가지 주요 작업을 수행합니다.

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

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

VisionEye의 활용 분야#

VisionEye 객체 매핑은 다양한 산업 분야에서 다음과 같이 폭넓게 활용될 수 있습니다.

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

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

FAQ#

  • 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"
    
    # 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="yolo26n.pt",  # use any model that Ultralytics supports, e.g., yolo26s.pt
        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 YOLO26은 속도, 정확도, 통합 편의성으로 잘 알려져 있어 객체 매핑 및 추적에 적합한 대표적인 선택지입니다. 주요 장점은 다음과 같습니다.

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

    애플리케이션과 이점에 대한 자세한 내용은 Ultralytics YOLO26 문서를 참조하세요.

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

    추가적인 탐색 및 통합 예제는 Ultralytics 통합 가이드를 참조하세요.

댓글