Ultralytics YOLO26을 사용하는 TrackZone#
TrackZone이란 무엇입니까?#
TrackZone은 프레임 전체가 아니라 지정된 영역 내의 객체를 모니터링하는 데 특화되어 있습니다. Ultralytics YOLO26을 기반으로 하며, 동영상과 실시간 카메라 피드에서 영역 내 객체 감지와 추적을 통합합니다. YOLO26의 고급 알고리즘과 딥러닝 기술은 실시간 사용 사례에 적합하며, 군중 모니터링 및 감시와 같은 애플리케이션에서 정밀하고 효율적인 객체 추적을 제공합니다.
Watch: How to Track Objects in Region using Ultralytics YOLO26 | TrackZone 🚀
영역 내 객체 추적(TrackZone)의 장점#
- 집중 분석: 특정 영역 내에서 객체를 추적하면 보다 집중적인 인사이트를 확보할 수 있으므로, 출입구나 제한 구역과 같은 관심 영역을 정밀하게 모니터링하고 분석할 수 있습니다.
- 다운스트림 작업량 감소: 영역 외부의 객체를 무시하여 TrackZone이 관련 없는 감지 결과를 제거하므로, 그 위에 구축한 로직에서 카운트하거나 기록하거나 알림을 생성해야 하는 객체가 줄어듭니다. 감지는 영역을 팽팽하게 자른 크롭이 아니라 전체 크기의 마스크 처리된 프레임에서 계속 실행되므로, 이점은 모델 추론 속도 향상이 아니라 더 깔끔하고 집중된 출력입니다.
- 보안 강화: 영역 추적은 중요 영역을 모니터링하여 감시 기능을 개선하고, 비정상 활동이나 보안 침해를 조기에 감지하는 데 도움을 줍니다.
- 확장 가능한 솔루션: 특정 영역에 집중할 수 있으므로 TrackZone은 소매 공간부터 산업 환경까지 다양한 시나리오에 적용할 수 있으며, 원활한 통합과 확장성을 보장합니다.
실제 적용 사례#
| 농업 | 교통 |
|---|---|
![]() | ![]() |
| Ultralytics YOLO26을 사용한 현장 식물 추적 | Ultralytics YOLO26을 사용한 도로 차량 추적 |
# 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 인수 표입니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 모델 파일의 경로입니다. |
region | list 또는 dict | None | 관심 영역을 정의하는 점으로, (x, y) 튜플 목록 또는 여러 영역에 대해 영역 이름을 점 목록에 매핑하는 딕셔너리(RegionCounter만 해당)입니다. None인 경우 영역이 필요한 솔루션은 사전 정의된 기본값으로 대체됩니다. |
line_width | int | 2 | 솔루션이 그리는 박스, 키포인트 및 카운트의 선 두께입니다. |
verbose | bool | True | 입력 형태, 클래스별 개수 및 처리 속도의 프레임별 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다. |
TrackZone 솔루션은 다음 track 매개변수를 지원합니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml입니다. |
conf | float | 0.25 | 검출 결과의 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체를 추적할 수 있지만 오탐이 포함될 수 있습니다. |
iou | float | 0.7 | 겹치는 검출 결과를 필터링하기 위한 교집합 대비 합집합 (IoU) 임계값을 설정합니다. |
classes | list | None | 클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다. |
device | str | None | 추론에 사용할 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자는 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 모델 실행 장치를 선택할 수 있습니다. |
imgsz | int or tuple | 640 | 목표 추론 이미지 크기: 정사각형의 경우 정수 또는 (height, width) 쌍입니다. 형태는 모델 스트라이드에 맞게 조정됩니다. |
max_det | int | 300 | 추적 전 프레임당 유지되는 최대 검출 수로, 솔루션이 밀집된 장면에서 처리하는 객체를 제한합니다. |
quantize | int or str | None | 추론 정밀도: PyTorch 및 TorchScript 모델의 경우 16(FP16) 또는 32/설정 안 함(FP32); 기타 형식은 아티팩트와 런타임이 선택하는 정밀도로 계산됩니다. 더 이상 사용되지 않는 half 플래그를 대체합니다. |
또한 다음과 같은 시각화 옵션을 사용할 수 있습니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True인 경우 annotation이 추가된 이미지 또는 비디오를 window에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 제공하는 데 유용합니다. |
show_conf | bool | True | 각 detection의 confidence score를 label과 함께 표시합니다. 각 detection에 대한 모델의 확신 정도를 파악할 수 있습니다. |
show_labels | bool | True | visual 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_tracksObjectCounter 선을 통과하거나 영역에 들어오고 나가는 객체를 카운트합니다. 누적 입장 및 퇴장 카운트 RegionCounter 하나 이상의 임의 영역(비볼록 영역 포함) 내부에 있는 객체를 카운트합니다. 영역별 객체 카운트 하나의 영역 내부에서 지속적으로 추적하려면 TrackZone을 선택하고, 여러 영역이나 비볼록 도형이 필요하면 RegionCounter를 선택합니다.

