Ultralytics YOLO27:
Get Started

Ultralytics YOLO26을 사용한 영역 내 객체 계수#

Ultralytics YOLO26의 RegionCounter 솔루션은 동영상 프레임 전반에서 객체를 추적하고, 매 프레임마다 사용자가 정의한 각 영역 안에 바운딩 박스 중심이 위치하는 객체의 수를 셉니다. 각 영역은 현재 계수와 함께 프레임에 표시되므로 Python 호출 한 번이나 CLI 명령 한 번으로 매장 통로, 도로 차선, 생산 구역 등 여러 구역을 모니터링할 수 있습니다.



시청: Ultralytics YOLO를 사용하여 여러 영역에서 객체 계수하기 | Ultralytics 솔루션

영역 계수를 사용하는 이유#

  • 한 번에 여러 구역 처리: 이름이 지정된 폴리곤의 딕셔너리를 전달하면 각 구역의 계수가 독립적으로 프레임에 표시되므로 하나의 동영상 스트림으로 필요한 모든 영역을 처리할 수 있습니다.
  • 추적 기능 내장: 이 솔루션은 내부적으로 YOLO26 탐지와 객체 추적을 실행하므로 별도의 추적 파이프라인을 연결할 필요가 없습니다.
  • 프로그래밍 방식으로 읽을 수 있는 계수 결과: 처리된 모든 프레임은 영역 계수 딕셔너리가 포함된 결과 객체를 반환하며, 이 객체는 대시보드, 알림 또는 로깅에 바로 사용할 수 있습니다.

실제 적용 사례#

소매시장 거리
소매점에서 그려진 폴리곤 영역 안의 사람을 계수하는 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이면 영역이 필요한 Solutions는 사전 정의된 기본값을 사용합니다.
line_widthint2Solution에서 그리는 상자, 키포인트 및 개수 표시의 선 두께입니다.
verboseboolTrue프레임별 입력 형태, 클래스 개수 및 처리 속도 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다.

RegionCounter 솔루션에서는 객체 추적 매개변수를 사용할 수 있습니다.

인수유형기본값설명
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시각화 출력에 각 감지 결과의 레이블을 표시합니다. 감지된 객체를 즉시 파악할 수 있습니다.

영역 계수의 작동 방식#

RegionCounter 솔루션은 전달된 각 영역을 최소 세 개의 점으로 이루어진 폴리곤으로 변환합니다. 일반 점 목록은 Region#01이라는 이름의 단일 구역이 되고, 딕셔너리를 전달하면 사용자가 지정한 구역 이름이 유지됩니다. 각 구역은 Ultralytics 팔레트에서 가져온 고유 색상으로 표시됩니다. 이후 각 프레임은 다음 세 단계로 처리됩니다.

  1. YOLO26 추적은 프레임에 있는 모든 객체를 감지하고 추적합니다.
  2. 추적된 각 객체에 대해 솔루션은 바운딩 박스 중심을 계산하고, 해당 중심이 어느 영역 폴리곤에 포함되는지 확인합니다.
  3. 각 영역의 계수 결과는 영역 중심에 표시되며, 다음 프레임을 처리하기 전에 계수가 초기화됩니다.

계수는 매 프레임마다 초기화되므로 영역에 표시되는 수는 누적 합계가 아니라 현재 점유 수, 즉 현재 영역 안에 있는 객체 수입니다. 경계를 통과한 객체의 수를 누적하여 계수하려면 대신 ObjectCounter 솔루션을 사용하세요.

각 호출은 결과 객체도 반환합니다. plot_im 속성에는 주석이 추가된 프레임이 저장되고, region_counts 딕셔너리에는 영역 이름과 해당 계수가 매핑되어 있으므로 이 수치를 자체 애플리케이션 로직에 전달할 수 있습니다.

결론#

Ultralytics YOLO26 RegionCounter 솔루션은 몇 줄의 코드만으로 필요한 만큼 이름이 지정된 구역의 실시간 객체 계수를 모니터링합니다. 더 다양한 작업을 수행하려면 객체 계수로 경계 통과를 세고, TrackZone으로 단일 구역 내 객체를 추적하거나, 다른 Ultralytics Solutions을 살펴보세요.

자주 묻는 질문#

  • Ultralytics YOLO26은 프레임 내 모든 객체를 추적하고, 각 사용자 정의 폴리곤 안에 객체의 바운딩 박스 중심이 있는지 확인하여 영역 내 객체를 계수합니다. 영역에 표시되는 수는 누적 합계가 아니라 해당 프레임의 현재 점유 수입니다. 설정 옵션은 RegionCounter() 인수 섹션에 나와 있습니다.

  • 주요 예제와 같이 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() 인수 섹션에 있습니다.

  • RegionCounter은 현재 프레임에서 각 다각형 구역 안에 있는 객체 수를 표시합니다. 반면 ObjectCounter는 객체가 선이나 구역 경계를 통과할 때 객체 수를 누적해 계산하고, 유입 및 유출 합계를 추적합니다. 하나 이상의 구역의 실시간 점유 현황에는 RegionCounter를 사용하고, 진입 및 퇴장 계산에는 ObjectCounter을 사용합니다. 선 모양 구역은 ObjectCounter에서만 지원됩니다.

댓글