콘텐츠로 건너뛰기

Ultralytics YOLO26을 사용한 객체 카운팅

객체 수 세기란 무엇입니까?

Colab에서 Open Object Counting 열기

Ultralytics YOLO26을 이용한 객체 카운팅은 비디오 및 카메라 스트림에서 특정 객체를 정확하게 식별하고 계산하는 것을 포함합니다. YOLO26은 최첨단 알고리즘과 딥러닝 기능 덕분에 군중 분석 및 감시와 같은 다양한 시나리오에서 효율적이고 정확한 객체 카운팅을 제공하며, 실시간 애플리케이션에서 탁월한 성능을 발휘합니다.



참고: Ultralytics YOLO26으로 실시간 객체 카운팅을 수행하는 방법 🍏

객체 수 세기의 장점

  • 리소스 최적화: 객체 수를 세는 것은 정확한 개수를 제공하여 효율적인 리소스 관리를 촉진하고 재고 관리와 같은 애플리케이션에서 리소스 할당을 최적화합니다.
  • 향상된 보안: 객체 계산은 엔터티를 정확하게 추적하고 계산하여 사전 예방적 위협 탐지를 지원함으로써 보안 및 감시를 강화합니다.
  • 정보에 기반한 의사 결정: 객체 계수는 의사 결정에 유용한 통찰력을 제공하여 소매, 교통 관리 및 다양한 다른 영역에서 프로세스를 최적화합니다.

실제 응용 프로그램

물류양식업
Ultralytics YOLO26을 사용한 컨베이어 벨트 패킷 카운팅Ultralytics YOLO26을 사용한 바다에서의 물고기 카운팅
Ultralytics YOLO26을 사용한 컨베이어 벨트 패킷 카운팅Ultralytics YOLO26을 사용한 바다에서의 물고기 카운팅

Ultralytics YOLO를 사용한 객체 수 세기

# Run a counting example
yolo solutions count show=True

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

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

에 지정되어 있습니다. region 인수는 두 개의 점(선의 경우) 또는 세 개 이상의 점이 있는 다각형을 허용합니다. 좌표를 연결해야 하는 순서대로 정의하여 카운터가 입력과 출구가 발생하는 위치를 정확히 알 수 있도록 합니다.

import cv2

from ultralytics import solutions

cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"

# region_points = [(20, 400), (1080, 400)]                                      # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]  # rectangular region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)]   # polygon region

# Video writer
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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

# Initialize object counter object
counter = solutions.ObjectCounter(
    show=True,  # display the output
    region=region_points,  # pass region points
    model="yolo26n.pt",  # model="yolo26n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes, e.g., person and car with the COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers, e.g., "bytetrack.yaml"
)

# Process video
while cap.isOpened():
    success, im0 = cap.read()

    if not success:
        print("Video frame is empty or processing is complete.")
        break

    results = counter(im0)

    # print(results)  # access the output

    video_writer.write(results.plot_im)  # write the processed frame.

cap.release()
video_writer.release()
cv2.destroyAllWindows()  # destroy all opened windows

ObjectCounter 인수

다음은 테이블에 ObjectCounter 인수입니다.

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일의 경로입니다.
show_inboolTrue비디오 스트림에 내부 개수를 표시할지 여부를 제어하는 플래그입니다.
show_outboolTrue비디오 스트림에 외부 개수를 표시할지 여부를 제어하는 플래그입니다.
regionlist'[(20, 400), (1260, 400)]'계수 영역을 정의하는 점 목록입니다.

에 지정되어 있습니다. ObjectCounter 솔루션을 통해 여러 가지를 사용할 수 있습니다. track 인수입니다.

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

또한 아래에 나열된 시각화 인수가 지원됩니다.

인수유형기본값설명
showboolFalse만약 True, 어노테이션이 적용된 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다.
line_widthint or NoneNone경계 상자의 선 너비를 지정합니다. 만약 None, 선 너비는 이미지 크기에 따라 자동으로 조정됩니다. 명확성을 위해 시각적 사용자 정의를 제공합니다.
show_confboolTrue레이블과 함께 각 감지에 대한 신뢰도 점수를 표시합니다. 각 감지에 대한 모델의 확신에 대한 통찰력을 제공합니다.
show_labelsboolTrue시각적 출력에서 각 감지에 대한 레이블을 표시합니다. 감지된 객체에 대한 즉각적인 이해를 제공합니다.

FAQ

Ultralytics YOLO26을 사용하여 비디오에서 객체를 어떻게 계산하나요?

Ultralytics YOLO26을 사용하여 비디오에서 객체를 계산하려면 다음 단계를 따를 수 있습니다:

  1. 필요한 라이브러리를 가져오고 (cv2, ultralytics)입니다.
  2. 계수 영역(예: 다각형, 선 등)을 정의합니다.
  3. 비디오 캡처를 설정하고 객체 카운터를 초기화합니다.
  4. 각 프레임을 처리하여 객체를 track하고 정의된 영역 내에서 개수를 세십시오.

다음은 영역에서 계산하는 간단한 예제입니다.

import cv2

from ultralytics import solutions


def count_objects_in_region(video_path, output_video_path, model_path):
    """Count objects in a specific region within a video."""
    cap = cv2.VideoCapture(video_path)
    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(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)]
    counter = solutions.ObjectCounter(show=True, region=region_points, model=model_path)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or processing is complete.")
            break
        results = counter(im0)
        video_writer.write(results.plot_im)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_objects_in_region("path/to/video.mp4", "output_video.avi", "yolo26n.pt")

더욱 고급 구성 및 옵션을 보려면 여러 영역에서 동시에 객체를 계산하는 RegionCounter 솔루션을 확인하십시오.

객체 카운팅에 Ultralytics YOLO26을 사용하는 이점은 무엇인가요?

객체 카운팅에 Ultralytics YOLO26을 사용하면 다음과 같은 여러 이점이 있습니다:

  1. 리소스 최적화: 정확한 개수를 제공하여 효율적인 리소스 관리를 촉진하고 재고 관리와 같은 산업에서 리소스 할당을 최적화하는 데 도움이 됩니다.
  2. 향상된 보안: 엔터티를 정확하게 추적하고 계산하여 사전 예방적 위협 탐지 및 보안 시스템을 지원함으로써 보안 및 감시를 강화합니다.
  3. 정보에 입각한 의사 결정: 의사 결정을 위한 귀중한 통찰력을 제공하여 소매, 교통 관리 등과 같은 영역에서 프로세스를 최적화합니다.
  4. 실시간 처리: YOLO26의 아키텍처는 실시간 추론을 가능하게 하여 라이브 비디오 스트림 및 시간에 민감한 애플리케이션에 적합합니다.

구현 예제 및 실제 적용 사례를 보려면 특정 영역에서 객체를 추적하는 TrackZone 솔루션을 살펴보십시오.

Ultralytics YOLO26을 사용하여 특정 클래스의 객체를 어떻게 계산할 수 있나요?

Ultralytics YOLO26을 사용하여 특정 클래스의 객체를 계산하려면 track 단계에서 관심 있는 클래스를 지정해야 합니다. 아래는 python 예시입니다:

import cv2

from ultralytics import solutions


def count_specific_classes(video_path, output_video_path, model_path, classes_to_count):
    """Count specific classes of objects in a video."""
    cap = cv2.VideoCapture(video_path)
    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(output_video_path, cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

    line_points = [(20, 400), (1080, 400)]
    counter = solutions.ObjectCounter(show=True, region=line_points, model=model_path, classes=classes_to_count)

    while cap.isOpened():
        success, im0 = cap.read()
        if not success:
            print("Video frame is empty or processing is complete.")
            break
        results = counter(im0)
        video_writer.write(results.plot_im)

    cap.release()
    video_writer.release()
    cv2.destroyAllWindows()


count_specific_classes("path/to/video.mp4", "output_specific_classes.avi", "yolo26n.pt", [0, 2])

이 예제에서, classes_to_count=[0, 2] 클래스의 객체 수를 의미합니다. 02 (예: COCO 데이터 세트의 사람 및 자동차). 클래스 인덱스에 대한 자세한 내용은 다음에서 확인할 수 있습니다. COCO 데이터셋 문서.

실시간 애플리케이션에 다른 객체 detect 모델 대신 YOLO26을 사용해야 하는 이유는 무엇인가요?

Ultralytics YOLO26은 Faster R-CNN, SSD 및 이전 YOLO 버전과 같은 다른 객체 detect 모델에 비해 여러 가지 이점을 제공합니다:

  1. 속도 및 효율성: YOLO26은 실시간 처리 기능을 제공하여 감시 및 자율 주행과 같이 고속 추론이 필요한 애플리케이션에 이상적입니다.
  2. 정확성: 객체 감지 및 추적 작업에 대한 최첨단 정확도를 제공하여 오탐지 수를 줄이고 전체 시스템 안정성을 향상시킵니다.
  3. 통합 용이성: YOLO26은 모바일 및 엣지 장치를 포함한 다양한 플랫폼 및 장치와 원활한 통합을 제공하며, 이는 최신 AI 애플리케이션에 매우 중요합니다.
  4. 유연성: 특정 사용 사례 요구 사항을 충족하기 위해 구성 가능한 모델을 통해 객체 감지, 분할 및 추적과 같은 다양한 작업을 지원합니다.

Ultralytics YOLO26 문서를 확인하여 그 기능과 성능 비교에 대해 더 자세히 알아보십시오.

YOLO26을 군중 분석 및 교통 관리와 같은 고급 애플리케이션에 사용할 수 있나요?

네, Ultralytics YOLO26은 실시간 detect 기능, 확장성 및 통합 유연성 덕분에 군중 분석 및 교통 관리와 같은 고급 애플리케이션에 완벽하게 적합합니다. 그 고급 기능은 동적 환경에서 고정밀 객체 track, 계수 및 분류를 가능하게 합니다. 예시 사용 사례는 다음과 같습니다:

  • 군중 분석: 영역 기반 카운팅을 통해 대규모 모임을 모니터링하고 관리하여 안전을 보장하고 군중 흐름을 최적화합니다.
  • 교통 관리: 차량을 추적 및 계산하고, 교통 패턴을 분석하며, 속도 추정 기능을 통해 실시간으로 정체를 관리합니다.
  • 소매 분석: 고객 이동 패턴 및 제품 상호 작용을 분석하여 매장 레이아웃을 최적화하고 고객 경험을 개선합니다.
  • 산업 자동화: 컨베이어 벨트의 제품 수를 세고 품질 관리 및 효율성 향상을 위해 생산 라인을 모니터링합니다.

보다 전문화된 애플리케이션의 경우 실제 컴퓨터 비전 문제를 위해 설계된 포괄적인 도구 세트인 Ultralytics 솔루션을 살펴보십시오.



5; 2 년 전에 생성됨 ✏️ 7 전에 업데이트됨
glenn-jocherRizwanMunawarRizwanMunawarMatthewNoycepderrengerleonnilBurhan-QUltralyticsAssistantIvorZhu331AyushExel

댓글