YOLO Vision 2026:

Ultralytics YOLO26을 이용한 영역 내 객체 카운팅#

Ultralytics YOLO26RegionCounter solution은 비디오 프레임 전체에서 객체를 추적하고, 모든 프레임에서 바운딩 박스 중심이 사용자가 정의한 각 영역 내에 속하는 객체의 수를 셉니다. 각 영역은 실시간 카운트와 함께 프레임 위에 그려지므로, 단 하나의 Python 호출 또는 CLI 명령으로 매장 통로, 도로 차선 또는 생산 구역과 같은 여러 영역을 모니터링할 수 있습니다.



Watch: Object Counting in Different Regions using Ultralytics YOLO | Ultralytics Solutions

영역 카운팅을 사용하는 이유는 무엇인가요?#

  • 한 번에 여러 구역 처리: 명명된 다각형 딕셔너리를 전달하면 각 구역이 프레임에 독립적으로 표시된 카운트를 얻게 되므로, 하나의 비디오 스트림으로 관심 있는 모든 영역을 커버할 수 있습니다.
  • 내장된 추적 기능: 이 솔루션은 내부적으로 YOLO26 감지와 object tracking을 실행하므로, 별도의 추적 파이프라인을 연결할 필요가 없습니다.
  • 프로그래밍 방식으로 읽을 수 있는 카운트: 처리된 모든 프레임은 대시보드, 경고 또는 로그에 사용할 수 있는 영역 카운트 딕셔너리가 포함된 결과 객체를 반환합니다.

실제 세계에서의 활용 사례#

소매시장 거리
소매 매장의 그려진 다각형 영역 내부에서 사람을 카운트하는 Ultralytics YOLO혼잡한 시장 거리에 오버레이된 Ultralytics YOLO 영역 카운트
영역 내 Ultralytics YOLO 사람 카운팅영역 내 Ultralytics YOLO 군중 카운팅

Ultralytics YOLO로 영역 내 객체를 카운팅하는 방법#

CLI 또는 Python에서 비디오 소스에 대해 RegionCounter 솔루션을 실행하십시오. 영역은 포인트 리스트(단일 구역)이거나 구역 이름과 포인트 리스트를 매핑하는 딕셔너리일 수 있습니다. 아래의 Python 예제는 두 개의 명명된 영역에서 객체를 카운트하고 처리된 프레임을 출력 비디오 파일로 저장합니다:

Ultralytics YOLO를 사용한 영역 계수
# Run a region counting example
yolo solutions region show=True

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

# Pass a custom region
yolo solutions region region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"

RegionCounter() 인수#

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

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일 경로입니다.
regionlist 또는 dictNone관심 영역을 정의하는 포인트((x, y) 튜플 목록 또는 여러 영역에 대해 영역 이름을 포인트 목록에 매핑하는 사전(RegionCounter 전용)). None일 때, 영역이 필요한 솔루션은 미리 정의된 기본값으로 대체됩니다.

RegionCounter 솔루션은 객체 추적 매개변수의 사용을 지원합니다:

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

또한 다음과 같은 시각화 설정이 지원됩니다:

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

영역 카운팅 작동 방식#

RegionCounter solution은 전달하는 각 영역을 영역당 최소 3개의 점으로 이루어진 다각형으로 변환합니다. 단순한 점 목록은 Region#01이라는 단일 구역이 되며, 딕셔너리는 사용자 지정 구역 이름을 유지합니다. 각 구역은 Ultralytics 팔레트에서 고유한 색상으로 그려집니다. 그런 다음 모든 프레임은 다음 세 단계로 처리됩니다:

  1. YOLO26 추적은 프레임 내의 모든 객체를 탐지하고 추적합니다.
  2. 추적되는 각 객체에 대해 솔루션은 BBox 중심을 계산하고 어떤 영역 다각형 내에 포함되는지 확인합니다
  3. 각 영역의 카운트는 해당 중심에 표시되며, 다음 프레임 전에 카운트가 초기화됩니다

카운트가 매 프레임마다 재시작되므로, 영역에 표시되는 숫자는 누적 합계가 아니라 현재 해당 영역 내부에 있는 객체 수를 의미하는 현재 점유율입니다. 경계를 통과하는 객체를 누적하여 카운트하려면 대신 ObjectCounter solution을 사용하십시오.

또한 각 호출은 plot_im 속성에 주석이 추가된 프레임을 보유하고 region_counts 딕셔너리에 영역 이름과 해당 카운트를 매핑하는 결과 객체를 반환하므로, 해당 숫자를 사용자 애플리케이션 로직에 입력할 수 있습니다.

결론#

Ultralytics YOLO26 RegionCounter solution은 몇 줄의 코드로 필요한 만큼의 명명된 구역에서 실시간 객체 카운트를 모니터링합니다. 더 나아가려면 object counting으로 경계 통과를 카운트하거나, TrackZone으로 단일 구역 내의 객체를 추적하거나, 다른 Ultralytics Solutions을 살펴보십시오.

FAQ#

Ultralytics YOLO26에서 영역 내 객체 카운팅은 어떻게 작동하나요?#

Ultralytics YOLO26은 프레임의 모든 객체를 추적하고 바운딩 박스 중심이 사용자가 정의한 각 다각형 내부에 있는지 테스트하여 영역 내 객체를 카운트합니다. 영역에 표시되는 카운트는 누적 합계가 아니라 해당 프레임에 대한 현재 점유율입니다. 구성 옵션은 RegionCounter() Arguments 섹션에 나열되어 있습니다.

여러 영역에서 동시에 객체를 어떻게 카운트하나요?#

메인 예시에서와 같이 영역 이름을 포인트 목록에 매핑하는 딕셔너리로 region 인수를 전달합니다:

from ultralytics import solutions

region_points = {
    "region-01": [(50, 50), (250, 50), (250, 250), (50, 250)],
    "region-02": [(640, 640), (780, 640), (780, 720), (640, 720)],
}
regioncounter = solutions.RegionCounter(region=region_points, model="yolo26n.pt", show=True)

각 명명된 구역은 고유한 색상과 독립적인 카운트로 그려집니다.

프로그래밍 방식으로 영역 카운트를 어떻게 얻나요?#

regioncounter(im0) 호출에 의해 반환된 객체는 영역 이름을 해당 카운트에 매핑하는 region_counts 딕셔너리를 포함하며, plot_im(주석이 추가된 프레임) 및 total_tracks(추적된 객체 수)과 함께 제공됩니다. 사용 가능한 모든 필드를 검사하려면 결과 객체를 출력하십시오.

영역 내에서 특정 객체 클래스만 카운트할 수 있나요?#

네. 유지할 클래스 인덱스와 함께 classes 인수를 전달하세요. 예를 들어 COCO 사전 학습된 모델로 사람만 카운트하려면 classes=[0]을 전달합니다. 트래킹 관련 인수 전체 목록은 RegionCounter() Arguments 섹션에 있습니다.

RegionCounter와 ObjectCounter의 차이점은 무엇인가요?#

RegionCounter은 현재 프레임의 각 다각형 구역 내부에 있는 객체 수를 보여주는 반면, ObjectCounter는 선 또는 영역 경계를 통과할 때 객체를 누적하여 카운트하며 안팎 합계를 추적합니다. 하나 이상의 구역의 실시간 점유율에는 RegionCounter를 사용하고 진입 및 진출 카운팅에는 ObjectCounter을 사용하십시오. 선 모양 영역은 ObjectCounter에서만 지원됩니다.

댓글