콘텐츠로 건너뛰기

Ultralytics YOLO11을 사용한 객체 계수

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

Colab에서 Open Object Counting 열기

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



참고: Ultralytics YOLO11을 사용하여 실시간 객체 수를 세는 방법 🍏

객체 수 세기의 장점

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

실제 응용 프로그램

물류 양식업
Ultralytics YOLO11을 사용한 컨베이어 벨트 패킷 수 세기 Ultralytics YOLO11을 사용한 바다의 물고기 수 세기
Ultralytics YOLO11을 사용한 컨베이어 벨트 패킷 수 세기 Ultralytics YOLO11을 사용한 바다의 물고기 수 세기

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)]"
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)]  # rectangle 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="yolo11n.pt",  # model="yolo11n-obb.pt" for object counting with OBB model.
    # classes=[0, 2],  # count specific classes i.e. person and car with COCO pretrained model.
    # tracker="botsort.yaml",  # choose trackers i.e "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 인수입니다.

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

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

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

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

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

FAQ

Ultralytics YOLO11을 사용하여 비디오에서 객체를 어떻게 셀 수 있습니까?

Ultralytics YOLO11을 사용하여 비디오에서 객체를 계산하려면 다음 단계를 따르세요.

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

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

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", "yolo11n.pt")

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

객체 수 세기에 Ultralytics YOLO11을 사용하면 어떤 장점이 있습니까?

객체 계수에 Ultralytics YOLO11을 사용하면 다음과 같은 여러 가지 이점이 있습니다.

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

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

Ultralytics YOLO11을 사용하여 특정 클래스의 객체를 어떻게 셀 수 있습니까?

Ultralytics YOLO11을 사용하여 특정 클래스의 객체를 계산하려면 추적 단계에서 관심 있는 클래스를 지정해야 합니다. 다음은 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", "yolo11n.pt", [0, 2])

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

실시간 애플리케이션에 다른 객체 감지 모델 대신 YOLO11을 사용해야 하는 이유는 무엇입니까?

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

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

기능 및 성능 비교에 대한 자세한 내용은 Ultralytics YOLO11 설명서를 확인하세요.

군중 분석 및 교통 관리와 같은 고급 응용 프로그램에 YOLO11을 사용할 수 있습니까?

예, Ultralytics YOLO11은 실시간 감지 기능, 확장성 및 통합 유연성 덕분에 군중 분석 및 교통 관리와 같은 고급 애플리케이션에 완벽하게 적합합니다. 고급 기능을 통해 역동적인 환경에서 높은 정확도로 객체 추적, 계산 및 분류가 가능합니다. 사용 사례는 다음과 같습니다.

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

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



📅 1년 전에 생성됨 ✏️ 4개월 전에 업데이트됨

댓글