Ultralytics YOLO27:

Ultralytics YOLO26을 사용하는 TrackZone#

TrackZone이란 무엇입니까?#

Open TrackZone In Colab

TrackZone은 프레임 전체가 아니라 지정된 영역 내의 객체를 모니터링하는 데 특화되어 있습니다. Ultralytics YOLO26을 기반으로 하며, 동영상과 실시간 카메라 피드에서 영역 내 객체 감지와 추적을 통합합니다. YOLO26의 고급 알고리즘과 딥러닝 기술은 실시간 사용 사례에 적합하며, 군중 모니터링 및 감시와 같은 애플리케이션에서 정밀하고 효율적인 객체 추적을 제공합니다.



Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀

영역 내 객체 추적(TrackZone)의 장점#

  • 집중 분석: 특정 영역 내에서 객체를 추적하면 보다 집중적인 인사이트를 확보할 수 있으므로, 출입구나 제한 구역과 같은 관심 영역을 정밀하게 모니터링하고 분석할 수 있습니다.
  • 다운스트림 작업량 감소: 영역 외부의 객체를 무시하여 TrackZone이 관련 없는 감지 결과를 제거하므로, 그 위에 구축한 로직에서 카운트하거나 기록하거나 알림을 생성해야 하는 객체가 줄어듭니다. 감지는 영역을 팽팽하게 자른 크롭이 아니라 전체 크기의 마스크 처리된 프레임에서 계속 실행되므로, 이점은 모델 추론 속도 향상이 아니라 더 깔끔하고 집중된 출력입니다.
  • 보안 강화: 영역 추적은 중요 영역을 모니터링하여 감시 기능을 개선하고, 비정상 활동이나 보안 침해를 조기에 감지하는 데 도움을 줍니다.
  • 확장 가능한 솔루션: 특정 영역에 집중할 수 있으므로 TrackZone은 소매 공간부터 산업 환경까지 다양한 시나리오에 적용할 수 있으며, 원활한 통합과 확장성을 보장합니다.

실제 적용 사례#

농업교통
Ultralytics YOLO26을 사용한 현장 식물 추적Ultralytics YOLO26을 사용한 도로 차량 추적
Ultralytics YOLO26을 사용한 현장 식물 추적Ultralytics YOLO26을 사용한 도로 차량 추적
Ultralytics YOLO를 사용하는 TrackZone
# Run a trackzone example
yolo solutions trackzone show=True

# Pass a source video
yolo solutions trackzone source="path/to/video.mp4" show=True

# Pass region coordinates
yolo solutions trackzone show=True region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"

TrackZone은 모니터링할 프레임의 영역을 확인하기 위해 region 목록을 사용합니다. 관심 있는 물리적 영역(문, 게이트 등)에 맞게 다각형을 정의하고, 오버레이가 비디오 피드와 일치하는지 확인할 수 있도록 구성하는 동안 show=True을 활성화된 상태로 유지합니다.

추적 영역 정의
  • region의 각 항목은 비디오 프레임 내 (x, y) 픽셀 좌표입니다. 모니터링하려는 영역의 경계를 따라 연결할 순서대로 점을 나열합니다.
  • 좌표는 프레임 해상도에 연결되어 있으므로 1280×720 피드에 맞게 설정한 영역은 640×480 피드에 맞지 않습니다. 피드와 오버레이가 일치하는지 확인할 수 있도록 구성하는 동안 show=True을 유지합니다.
  • TrackZone은 점을 볼록 껍질로 축소하므로, 오목한 도형은 모든 점을 포함하는 가장 작은 볼록 다각형으로 단순화됩니다. 비볼록 도형이나 서로 분리된 여러 영역에는 대신 RegionCounter 솔루션을 사용합니다.
  • region을 완전히 생략하면 [(75, 75), (565, 75), (565, 285), (75, 285)]의 기본 영역이 사용됩니다.

TrackZone 인수#

다음은 TrackZone 인수 표입니다.

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일의 경로입니다.
regionlist 또는 dictNone관심 영역을 정의하는 점으로, (x, y) 튜플 목록 또는 여러 영역에 대해 영역 이름을 점 목록에 매핑하는 딕셔너리(RegionCounter만 해당)입니다. None인 경우 영역이 필요한 솔루션은 사전 정의된 기본값으로 대체됩니다.
line_widthint2솔루션이 그리는 박스, 키포인트 및 카운트의 선 두께입니다.
verboseboolTrue입력 형태, 클래스별 개수 및 처리 속도의 프레임별 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다.

TrackZone 솔루션은 다음 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을 표시합니다. 검출된 객체를 즉시 파악할 수 있습니다.

영역 내부의 객체 카운트#

트래커를 호출할 때마다 SolutionResults 객체가 반환되며, 이 객체의 total_tracks 특성에는 현재 영역 내에서 추적되는 객체 수가 저장됩니다. 각 프레임에서 이를 읽어 실시간 점유 상태를 모니터링할 수 있습니다. 예를 들어 출입구나 제한 구역이 얼마나 혼잡한지 기록할 수 있습니다.

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
trackzone = solutions.TrackZone(show=False, region=region_points, model="yolo26n.pt")

while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        break
    results = trackzone(im0)
    print(f"Objects currently in zone: {results.total_tracks}")  # live zone occupancy

cap.release()

FAQ#

  • Ultralytics YOLO26을 사용하면 비디오 프레임에서 정의된 영역 또는 구역의 객체를 간단하게 추적할 수 있습니다. 아래에 제공된 명령을 사용하여 추적을 시작하면 됩니다. 이 방식은 효율적인 분석과 정확한 결과를 보장하므로 감시, 군중 관리 또는 영역 추적이 필요한 모든 시나리오에 적합합니다.

    yolo solutions trackzone source="path/to/video.mp4" show=True
  • 몇 줄의 코드만으로 특정 영역에서 객체 추적을 설정할 수 있으므로 프로젝트에 쉽게 통합할 수 있습니다.

    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("trackzone_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
    
    trackzone = solutions.TrackZone(
        show=True, region=[(150, 150), (1130, 150), (1130, 570), (150, 570)], model="yolo26n.pt"
    )
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = trackzone(im0)
        video_writer.write(results.plot_im)
    
    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()
  • Ultralytics TrackZone을 사용한 비디오 처리 영역 점 구성은 간단하며 사용자 지정이 가능합니다. Python 스크립트를 통해 영역을 직접 정의하고 조정할 수 있으므로 모니터링하려는 영역을 정밀하게 제어할 수 있습니다.

    # Define region points
    region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]
    
    # Initialize trackzone
    trackzone = solutions.TrackZone(
        show=True,  # display the output
        region=region_points,  # pass region points
    )

    TrackZone은 점을 볼록 껍질로 축소하므로, 점을 모니터링하려는 영역의 경계를 따라 순서대로 나열해야 합니다.

  • 세 솔루션 모두 영역을 사용하지만 서로 다른 질문에 답합니다.

    솔루션사용 목적일반적인 출력
    TrackZone하나의 볼록 영역 내부에서 객체를 추적하고 실시간 점유 상태를 모니터링합니다.추적된 ID와 해당 영역의 total_tracks
    ObjectCounter선을 통과하거나 영역에 들어오고 나가는 객체를 카운트합니다.누적 입장 및 퇴장 카운트
    RegionCounter하나 이상의 임의 영역(비볼록 영역 포함) 내부에 있는 객체를 카운트합니다.영역별 객체 카운트

    하나의 영역 내부에서 지속적으로 추적하려면 TrackZone을 선택하고, 여러 영역이나 비볼록 도형이 필요하면 RegionCounter를 선택합니다.

댓글