Ultralytics YOLO26을 이용한 TrackZone

Open TrackZone In Colab

TrackZone이란 무엇인가요?

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를 활성화하여 오버레이가 비디오 피드와 정렬되는지 확인하십시오.

TrackZone 인수

다음은 TrackZone 인수가 포함된 표입니다:

인수(Argument)유형(Type)기본값(Default)설명
modelstrNoneUltralytics YOLO 모델 파일 경로입니다.
regionlist'[(20, 400), (1260, 400)]'계수 영역을 정의하는 점들의 목록입니다.

TrackZone 솔루션은 track 매개변수에 대한 지원을 포함합니다:

인수(Argument)유형(Type)기본값(Default)설명
trackerstr'botsort.yaml'사용할 추적 알고리즘을 지정합니다. 예: bytetrack.yaml 또는 botsort.yaml.
conffloat0.1탐지에 대한 신뢰도 임계값을 설정합니다. 낮은 값을 사용할수록 더 많은 객체가 추적되지만 오탐지가 포함될 수 있습니다.
ioufloat0.7중복 탐지를 필터링하기 위한 Intersection over Union (IoU) 임계값을 설정합니다.
classeslistNone클래스 인덱스별로 결과를 필터링합니다. 예를 들어, classes=[0, 2, 3]은 지정된 클래스만 추적합니다.
verboseboolTrue추적 결과 표시를 제어하여 추적된 객체의 시각적 출력을 제공합니다.
devicestrNone추론을 위한 장치(예: cpu, cuda:0 또는 0)를 지정합니다. 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중 하나를 선택할 수 있습니다.

또한 다음과 같은 시각화 옵션을 사용할 수 있습니다:

인수(Argument)유형(Type)기본값(Default)설명
showboolFalseTrue인 경우 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 얻는 데 유용합니다.
line_widthint or NoneNone바운딩 박스의 선 두께를 지정합니다. None인 경우 이미지 크기에 따라 선 두께가 자동으로 조정됩니다. 명확성을 위한 시각적 사용자 정의를 제공합니다.
show_confboolTrue레이블과 함께 각 탐지에 대한 신뢰도 점수를 표시합니다. 각 탐지에 대한 모델의 확신 수준을 알 수 있습니다.
show_labelsboolTrue시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있게 합니다.

FAQ

Ultralytics YOLO26을 사용하여 비디오 프레임의 특정 영역이나 구역에서 객체를 추적하려면 어떻게 해야 하나요?

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

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

Ultralytics YOLO26과 함께 Python에서 TrackZone을 어떻게 사용할 수 있나요?

단 몇 줄의 코드로 특정 영역에서 객체 추적을 설정할 수 있어 프로젝트에 쉽게 통합할 수 있습니다.

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))

# Define region points
region_points = [(150, 150), (1130, 150), (1130, 570), (150, 570)]

# Video writer
video_writer = cv2.VideoWriter("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Init trackzone (object tracking in zones, not complete frame)
trackzone = solutions.TrackZone(
    show=True,  # display the output
    region=region_points,  # pass region points
    model="yolo26n.pt",
)

# 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 = trackzone(im0)
    video_writer.write(results.plot_im)

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Ultralytics TrackZone을 사용하여 비디오 처리를 위한 영역 지점을 어떻게 구성하나요?

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
)

댓글