Ultralytics YOLO27:
Get Started

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 솔루션을 사용하여 객체를 추적하고 경로를 그릴 기준점입니다.
line_widthint2Solution에서 그리는 상자, 키포인트 및 개수 표시의 선 두께입니다.
verboseboolTrue프레임별 입력 형태, 클래스 개수 및 처리 속도 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다.

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

인수유형기본값설명
trackerstr'tracktrack.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) 쌍을 지정합니다. 모델 stride에 맞춰 형태가 조정됩니다.
max_detint300추적 전에 프레임별로 유지할 최대 탐지 수를 지정하여 밀집된 장면에서 솔루션이 처리하는 객체 수를 제한합니다.
quantizeint or strNone추론 정밀도: CPU 이외의 환경에서 PyTorch 및 TorchScript 모델은 16(FP16) 또는 32/unset(FP32)을 사용하며, 다른 형식은 아티팩트와 런타임이 선택하는 정밀도를 사용합니다. 더 이상 사용되지 않는 half 인수를 대체합니다.

또한 아래에 나열된 일부 시각화 인수도 지원됩니다.

인수유형기본값설명
showboolFalseTrue이면 주석이 추가된 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 얻는 데 유용합니다.
show_confboolTrue각 감지 결과의 레이블 옆에 신뢰도 점수를 표시합니다. 각 감지 결과에 대한 모델의 확신도를 파악할 수 있습니다.
show_labelsboolTrue시각화 출력에 각 감지 결과의 레이블을 표시합니다. 감지된 객체를 즉시 파악할 수 있습니다.

VisionEye 작동 방식#

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

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

  1. 입력 이미지에서 트랙(바운딩 박스, 클래스, 트랙 ID)을 추출합니다.
  2. 바운딩 박스와 레이블을 그릴 어노테이터를 생성합니다.
  3. 감지된 각 객체에 대해 박스 레이블을 그리고 시야 지점에서 시작하는 시야선을 생성합니다.
  4. 추적 통계가 포함된 어노테이션 이미지를 반환합니다.

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

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은 속도, 정확도, 통합 편의성이 뛰어나 객체 매핑과 추적에 적합한 솔루션으로 널리 알려져 있습니다. 주요 장점은 다음과 같습니다.

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

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

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

    더 많은 탐색 정보와 통합 예제는 Ultralytics 통합 가이드를 확인하세요.

댓글