Meet YOLO26: next-gen vision AI.

Link to this sectionUltralytics YOLO26을 이용한 객체 카운팅#

Link to this section객체 카운팅이란 무엇인가요?#

Open Object Counting In Colab

Ultralytics YOLO26을 사용한 객체 카운팅은 비디오 및 카메라 스트림 내 특정 객체를 정확하게 식별하고 개수를 세는 작업을 포함합니다. YOLO26은 최첨단 알고리즘과 딥러닝 기능을 바탕으로 실시간 애플리케이션에서 뛰어난 성능을 발휘하며, 군중 분석이나 감시와 같은 다양한 시나리오에서 효율적이고 정밀한 객체 카운팅을 제공합니다.



Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀

Link to this section객체 카운팅의 이점#

  • 리소스 최적화: 객체 카운팅은 정확한 수치를 제공하여 재고 관리와 같은 애플리케이션에서 리소스 할당을 최적화함으로써 효율적인 리소스 관리를 지원합니다.
  • 보안 강화: 객체 카운팅은 엔티티를 정확하게 추적하고 계산하여 보안 및 감시 기능을 향상시키며, 사전 예방적인 위협 탐지를 지원합니다.
  • 정보에 입각한 의사결정: 객체 카운팅은 의사결정을 위한 귀중한 인사이트를 제공하여 소매업, 교통 관리 및 기타 다양한 분야의 프로세스를 최적화합니다.

Link to this section실제 세계에서의 활용 사례#

물류양식업
Ultralytics YOLO26을 이용한 컨베이어 벨트 패키지 카운팅Ultralytics YOLO26을 이용한 해양 어류 카운팅
Ultralytics YOLO26을 이용한 컨베이어 벨트 패키지 카운팅Ultralytics YOLO26을 이용한 해양 어류 카운팅

Link to this sectionYOLO26으로 객체 카운팅하기#

카운팅 region을 정의(선은 두 점, 다각형은 세 점 이상)하여 ObjectCounter 솔루션에 전달합니다. 카운터는 프레임 전반에서 각 객체를 추적하고, 추적된 중심점이 선을 넘거나 영역 내부로 이동할 때 IN/OUT 횟수를 집계하여 출력 비디오로 기록할 수 있는 주석이 달린 프레임을 반환합니다.

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 인수는 두 점(선인 경우) 또는 세 점 이상의 다각형을 허용합니다. 카운터가 진입 및 이탈 지점을 정확히 인식할 수 있도록 연결 순서대로 좌표를 정의하십시오.

Link to this sectionObjectCounter 인수#

ObjectCounter 인수를 정리한 표입니다:

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일 경로입니다.
show_inboolTrue비디오 스트림에 유입(in) 카운트를 표시할지 여부를 제어하는 플래그입니다.
show_outboolTrue비디오 스트림에 유출(out) 카운트를 표시할지 여부를 제어하는 플래그입니다.
regionlist 또는 dictNone관심 영역을 정의하는 점으로, (x, y) 튜플 리스트이거나 다중 영역(RegionCounter 전용)에 대해 영역 이름과 점 리스트를 매핑하는 딕셔너리입니다. None일 경우, 영역이 필요한 솔루션은 미리 정의된 기본값으로 대체됩니다.

ObjectCounter 솔루션은 여러 track 인수의 사용을 허용합니다:

인수유형기본값설명
trackerstr'botsort.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시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다.

Link to this sectionFAQ#

Link to this sectionUltralytics YOLO26을 사용하여 비디오에서 객체를 어떻게 카운팅하나요?#

Ultralytics YOLO26을 사용하여 비디오에서 객체를 카운팅하려면 다음 단계를 따르십시오:

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

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

Link to this section객체 카운팅에 Ultralytics YOLO26을 사용할 때의 장점은 무엇인가요?#

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

  1. 자원 최적화: 정확한 수치를 제공하여 효율적인 자원 관리를 용이하게 하며, 재고 관리와 같은 산업에서 자원 배분을 최적화하는 데 도움이 됩니다.
  2. 보안 강화: 이는 엔티티를 정확하게 추적하고 계산하여 보안 및 감시 기능을 향상시키며, 사전 예방적인 위협 탐지 및 보안 시스템을 지원합니다.
  3. 정보에 입각한 의사결정: 의사결정을 위한 귀중한 인사이트를 제공하여 소매, 교통 관리 등 다양한 분야의 프로세스를 최적화합니다.
  4. 실시간 처리: YOLO26의 아키텍처는 실시간 추론을 가능하게 하여 실시간 비디오 스트림 및 시간에 민감한 애플리케이션에 적합합니다.

구현 예제와 실제 애플리케이션을 보려면 특정 구역 내 객체를 추적하는 TrackZone 솔루션을 살펴보십시오.

Link to this sectionUltralytics YOLO26을 사용하여 특정 클래스의 객체를 카운팅하려면 어떻게 해야 하나요?#

Ultralytics YOLO26을 사용하여 특정 클래스의 객체를 카운팅하려면 추적 단계에서 관심 있는 클래스를 지정해야 합니다. 아래는 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 데이터셋 문서에서 찾을 수 있습니다.

Link to this section실시간 애플리케이션을 위해 다른 객체 탐지 모델보다 YOLO26을 사용해야 하는 이유는 무엇인가요?#

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

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

기능 및 성능 비교에 대한 더 자세한 내용은 Ultralytics YOLO26 문서를 확인하십시오.

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

네, Ultralytics YOLO26은 실시간 탐지 기능, 확장성 및 통합 유연성 덕분에 군중 분석 및 교통 관리와 같은 고급 애플리케이션에 완벽하게 적합합니다. 고급 기능은 동적 환경에서 높은 정확도로 객체를 추적, 카운팅 및 분류할 수 있게 합니다. 사용 사례 예시는 다음과 같습니다:

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

더 전문화된 애플리케이션을 보려면 실제 컴퓨터 비전 문제를 해결하도록 설계된 포괄적인 도구 세트인 Ultralytics 솔루션을 살펴보십시오.

댓글