Ultralytics YOLO27:
Get Started

Ultralytics YOLO26을 사용한 객체 추적 히트맵#

Open Heatmaps In Colab

Ultralytics YOLO26의 히트맵 솔루션은 비디오 프레임 전반에서 객체를 추적하고 누적된 이동 강도를 각 프레임에 오버레이하므로, 이동이 많은 영역은 따뜻한 색상으로 밝게 표시되고 한산한 영역은 차가운 색상으로 유지됩니다. YOLO26 객체 추적을 기반으로 하는 이 솔루션은 단 한 번의 Python 호출 또는 CLI 명령으로 모든 비디오를 교통 흐름, 군중 이동 및 체류 구역을 보여주는 공간 활동 맵으로 변환합니다.



시청: Ultralytics YOLO26으로 히트맵을 만드는 방법 | 객체 활동 시각화 | 소매 분야 VisionAI 🚀

비디오 분석에 히트맵을 사용하는 이유#

  • 활동 패턴을 한눈에 파악: 추적된 객체가 머무는 곳마다 강도가 누적되므로, 프레임을 일일이 검토하지 않아도 교통량이 많은 차선, 인기 상품 진열대 또는 군중이 몰리는 병목 구간을 파악할 수 있습니다.
  • 추적 기능 내장: 솔루션이 내부적으로 YOLO26 감지 및 추적을 실행하므로 별도의 추적 파이프라인을 구성할 필요가 없습니다.
  • 한 번의 실행으로 계수: region을 전달하면 히트맵을 생성하는 동안 구역에 들어오고 나가는 객체를 계수하여 두 가지 분석 작업을 한 번에 수행할 수 있습니다.

실제 적용 사례#

교통소매
차량 교통 밀도를 보여주는 Ultralytics YOLO 히트맵 오버레이리테일 고객의 이동을 보여주는 Ultralytics YOLO 히트맵 오버레이
Ultralytics YOLO 교통 히트맵Ultralytics YOLO 리테일 히트맵

Ultralytics YOLO로 히트맵 생성하기#

CLI 또는 Python에서 비디오 소스를 사용해 히트맵 솔루션을 실행합니다. Python 예제는 처리된 프레임을 출력 비디오 파일에 저장합니다:

Ultralytics YOLO를 사용한 히트맵
# Run a heatmap example
yolo solutions heatmap show=True

# Pass a source video
yolo solutions heatmap source="path/to/video.mp4"

# Pass a custom colormap
yolo solutions heatmap colormap=cv2.COLORMAP_INFERNO

# Heatmaps + object counting
yolo solutions heatmap region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

Heatmap() 인수#

다음은 Heatmap 인수 표입니다:

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일의 경로입니다.
colormapintcv2.COLORMAP_DEEPGREEN히트맵에 사용할 컬러맵입니다.
show_inboolTrue비디오 스트림에 진입 수를 표시할지 제어하는 플래그입니다.
show_outboolTrue비디오 스트림에 이탈 수를 표시할지 제어하는 플래그입니다.
regionlist 또는 dictNone관심 영역을 정의하는 점입니다. (x, y) 튜플 목록 또는 여러 영역에 대해 영역 이름을 점 목록에 매핑하는 사전(RegionCounter만 해당)으로 지정할 수 있습니다. None이면 영역이 필요한 Solutions는 사전 정의된 기본값을 사용합니다.
line_widthint2Solution에서 그리는 상자, 키포인트 및 개수 표시의 선 두께입니다.
verboseboolTrue프레임별 입력 형태, 클래스 개수 및 처리 속도 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다.

Heatmap 솔루션에서 다양한 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추론 정밀도입니다. PyTorch 및 TorchScript 모델의 경우 16 (FP16) 또는 32/미설정(FP32)을 사용합니다. 다른 형식은 아티팩트와 런타임에서 선택한 정밀도로 계산합니다. 더 이상 사용되지 않는 half 플래그를 대체합니다.

또한 지원되는 시각화 인수는 다음과 같습니다:

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

히트맵 컬러맵#

colormap 인수는 모든 OpenCV 컬러맵을 사용할 수 있습니다. 예를 들어 cv2 모듈의 상수인 colormap=cv2.COLORMAP_INFERNO을 전달합니다:

컬러맵 이름설명
cv2.COLORMAP_AUTUMN가을 컬러맵
cv2.COLORMAP_BONE본 컬러맵
cv2.COLORMAP_JETJet 컬러맵
cv2.COLORMAP_WINTERWinter 컬러맵
cv2.COLORMAP_RAINBOWRainbow 컬러맵
cv2.COLORMAP_OCEANOcean 컬러맵
cv2.COLORMAP_SUMMERSummer 컬러맵
cv2.COLORMAP_SPRINGSpring 컬러맵
cv2.COLORMAP_COOLCool 컬러맵
cv2.COLORMAP_HSVHSV (색조, 채도, 명도) 컬러맵
cv2.COLORMAP_PINKPink 컬러맵
cv2.COLORMAP_HOTHot 컬러맵
cv2.COLORMAP_PARULAParula 컬러맵
cv2.COLORMAP_MAGMAMagma 컬러맵
cv2.COLORMAP_INFERNOInferno 컬러맵
cv2.COLORMAP_PLASMAPlasma 컬러맵
cv2.COLORMAP_VIRIDISViridis 컬러맵
cv2.COLORMAP_CIVIDISCividis 컬러맵
cv2.COLORMAP_TWILIGHTTwilight 컬러맵
cv2.COLORMAP_TWILIGHT_SHIFTEDShifted Twilight 컬러맵
cv2.COLORMAP_TURBOTurbo 컬러맵
cv2.COLORMAP_DEEPGREENDeep Green 컬러맵

히트맵 작동 방식#

히트맵 솔루션은 ObjectCounter 클래스를 확장합니다. 처음 처리되는 프레임에서 프레임 크기에 맞는 빈 강도 레이어를 생성합니다. 그런 다음 각 프레임을 두 단계로 처리합니다.

  1. YOLO26 추적은 프레임에 있는 모든 객체를 감지하고 추적합니다.
  2. 추적되는 각 객체의 경계 상자 중앙을 중심으로 한 원형 영역 내에서 히트맵 강도가 증가합니다.

프레임마다 누적된 강도 레이어를 정규화하고, 선택한 컬러맵을 적용한 다음, 원본 프레임과 블렌딩합니다. 객체를 하나 이상 추적하면 오버레이가 표시되며, 그전까지는 히트맵 오버레이 없이 프레임이 표시됩니다.

그 결과 시간이 지날수록 구축되는 동적 시각화가 생성되어 비디오 데이터의 교통 패턴, 군중 이동 또는 기타 공간적 행동을 보여줍니다. region을 설정하면 히트맵을 구축하는 동안 해당 영역에 들어오고 나가는 객체도 계수합니다.

결론#

Ultralytics YOLO26 Heatmap 솔루션은 몇 줄의 코드만으로 객체 추적 결과를 직관적인 활동 오버레이로 변환합니다. 더 확장하려면 객체 계수와 결합하거나, 다른 Ultralytics 솔루션을 살펴보거나, 기반이 되는 추적 모드에 대해 알아보세요.

자주 묻는 질문#

  • Ultralytics YOLO26은 비디오 프레임 전체에서 객체를 추적하고 추적된 각 객체의 위치에 강도 값을 누적한 다음, 결과에 컬러를 적용해 원본 프레임과 블렌딩하여 히트맵을 생성합니다. 객체가 자주 나타나거나 오래 머무는 영역은 강도가 높아지고 더 따뜻한 색상으로 렌더링됩니다. 구성 옵션은 Heatmap() 인수 섹션을 참조하세요.

  • 기본 예제에 나온 것처럼 OpenCV의 cv2.VideoWriter을 사용하고 처리된 각 프레임에 results.plot_im을 기록하세요. plot_im 속성에는 히트맵 오버레이가 이미 적용된 프레임이 저장됩니다.

  • 네. 선, 직사각형 또는 다각형 점을 지정한 region 인수를 Heatmap()에 전달하면, 히트맵을 구축하는 동안 솔루션이 해당 영역에 들어오고 나가는 객체를 계수합니다. 반환되는 결과에는 in_count, out_count 및 클래스별 계수가 포함됩니다. 영역 구성에 관한 자세한 내용은 객체 계수 가이드를 참조하세요.

  • 유지할 클래스 인덱스를 지정하여 classes 인수를 Heatmap()에 전달하세요. 예를 들어 classes=[0, 2]는 사람과 자동차(COCO 클래스 인덱스 0 및 2)만 사용해 히트맵을 구축합니다.

    import cv2
    
    from ultralytics import solutions
    
    cap = cv2.VideoCapture("path/to/video.mp4")
    heatmap = solutions.Heatmap(show=True, model="yolo26n.pt", classes=[0, 2])
    
    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            break
        results = heatmap(im0)
    cap.release()
    cv2.destroyAllWindows()
  • Ultralytics YOLO26 히트맵은 객체 감지, 추적, 강도 누적 및 오버레이 렌더링을 단일 호출로 통합하는 반면, OpenCV나 Matplotlib 같은 범용 도구를 사용하면 해당 파이프라인을 직접 구축해야 합니다. 이 솔루션은 비디오 스트림을 실시간으로 처리하며 지속적인 추적과 사용자 지정 가능한 컬러맵을 기본 지원합니다. 기반 모델에 관한 자세한 내용은 YOLO26 모델 페이지를 참조하세요.

댓글