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은 점들을 볼록 껍질(convex hull)로 축소하므로, 오목한 모양은 모든 점을 포함하는 가장 작은 볼록 다각형으로 단순화됩니다. 오목한 모양이나 여러 개의 개별 영역의 경우 대신 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 | 탐지에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체가 추적되지만 잘못된 긍정 탐지(false positives)가 포함될 수 있습니다. |
iou | float | 0.7 | 겹치는 감지를 필터링하기 위한 Intersection over Union (IoU) 임계값을 설정합니다. |
classes | list | None | 클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다. |
device | str | None | 추론용 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자가 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있도록 합니다. |
또한, 다음과 같은 시각화 옵션을 사용할 수 있습니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True인 경우, 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다. |
show_conf | bool | True | 각 탐지에 대한 신뢰도 점수를 레이블과 함께 표시합니다. 각 탐지에 대한 모델의 확신도를 파악할 수 있습니다. |
show_labels | bool | True | 시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다. |
영역 내부의 객체 수 계산#
트래커에 대한 모든 호출은 total_tracks 속성에 영역 내에서 현재 트래킹 중인 객체 수가 포함된 SolutionResults 객체를 반환합니다. 예를 들어 진입점이나 제한구역이 얼마나 바쁜지 기록하기 위해 실시간 점유율을 모니터링하려면 각 프레임에서 이를 읽으세요:
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를 선택하세요.

