YOLO Vision 2026:

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

객체 카운팅이란 무엇인가요?#

Open Object Counting In Colab

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



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

객체 카운팅의 이점#

  • 리소스 최적화: 객체 카운팅은 정확한 수치를 제공하여 효율적인 리소스 관리를 용이하게 하며, inventory management와 같은 애플리케이션에서 리소스 할당을 최적화합니다.
  • 보안 강화: 객체 카운팅은 엔티티를 정확하게 추적하고 세어 보안 및 감시를 강화하며, 사전 예방적인 threat detection을 지원합니다.
  • 정보에 기반한 의사결정: 객체 카운팅은 의사결정을 위한 가치 있는 인사이트를 제공하며, 소매업, traffic management, 그리고 기타 다양한 분야에서 프로세스를 최적화합니다.

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

물류양식업
Conveyor Belt Packets Counting Using Ultralytics YOLO26Fish Counting in Sea using Ultralytics YOLO26
Ultralytics YOLO26을 이용한 컨베이어 벨트 패키지 카운팅Ultralytics YOLO26을 이용한 해양 어류 카운팅

YOLO26으로 객체 카운팅하기#

카운팅 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 인수는 두 개의 점(선의 경우) 또는 세 개 이상의 점이 있는 폴리곤을 허용합니다. 카운터가 진입 및 진출 위치를 정확히 파악할 수 있도록 연결되어야 하는 순서대로 좌표를 정의하십시오.

ObjectCounter 인수#

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

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일 경로입니다.
show_inboolTrue비디오 스트림에 유입(in) 카운트를 표시할지 여부를 제어하는 플래그입니다.
show_outboolTrue비디오 스트림에 유출(out) 카운트를 표시할지 여부를 제어하는 플래그입니다.
regionlist 또는 dictNone관심 영역을 정의하는 포인트((x, y) 튜플 목록 또는 여러 영역에 대해 영역 이름을 포인트 목록에 매핑하는 사전(RegionCounter 전용)). None일 때, 영역이 필요한 솔루션은 미리 정의된 기본값으로 대체됩니다.
line_widthint2솔루션이 그리는 상자, 키포인트 및 카운트의 선 두께입니다.
verboseboolTrue입력 형태, 클래스 카운트 및 처리 속도에 대한 솔루션의 프레임별 로그를 활성화합니다. 트래킹 호출 자체는 항상 침묵 상태를 유지합니다.

ObjectCounter 솔루션은 여러 개의 track 인수를 사용할 수 있도록 지원합니다.

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

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

인수유형기본값설명
showboolFalseTrue인 경우, 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다.
show_confboolTrue각 탐지에 대한 신뢰도 점수를 레이블과 함께 표시합니다. 각 탐지에 대한 모델의 확신도를 파악할 수 있습니다.
show_labelsboolTrue시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다.

FAQ#

  • 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 solution을 확인해 보세요.

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

    1. 리소스 최적화: 정확한 수치를 제공하여 효율적인 리소스 관리를 용이하게 하며, inventory management와 같은 산업에서 리소스 할당을 최적화하는 데 도움을 줍니다.
    2. 보안 강화: 엔티티를 정확하게 추적하고 세어 보안 및 감시를 강화하며, 사전 예방적인 위협 감지 및 security systems을 지원합니다.
    3. 정보에 입각한 의사결정: 의사결정을 위한 귀중한 인사이트를 제공하여 소매, 교통 관리 등 다양한 분야의 프로세스를 최적화합니다.
    4. 실시간 처리: YOLO26의 아키텍처는 real-time inference를 가능하게 하여 라이브 비디오 스트림 및 시간에 민감한 애플리케이션에 적합합니다.

    구현 예제 및 실제 애플리케이션을 위해 특정 영역에서 객체를 추적하는 TrackZone solution을 살펴보세요.

  • 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 dataset의 person 및 car)의 객체를 카운트함을 의미합니다. 클래스 인덱스에 대한 자세한 정보는 COCO dataset documentation에서 확인할 수 있습니다.

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

    1. 속도 및 효율성: YOLO26은 실시간 처리 기능을 제공하여 감시 및 autonomous driving과 같이 고속 추론이 필요한 애플리케이션에 이상적입니다.
    2. Accuracy: 최고 수준의 검출 및 트래킹 정확도를 제공하여 오탐지를 줄이고 전체 시스템 신뢰성을 향상시킵니다.
    3. 통합 용이성: YOLO26은 모바일 및 edge devices를 포함한 다양한 플랫폼 및 디바이스와 원활한 통합을 제공하며, 이는 현대 AI 애플리케이션에 매우 중요합니다.
    4. Flexibility: 상단에 track mode가 있는 detectionsegmentation 작업을 지원하며, 특정 유스케이스 요구 사항을 충족하도록 구성 가능한 모델을 제공합니다.

    기능 및 성능 비교에 대한 자세한 내용은 Ultralytics YOLO26 Documentation을 확인하세요.

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

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

    더욱 전문화된 애플리케이션을 위해 실제 컴퓨터 Vision 과제를 위해 설계된 포괄적인 도구 모음인 Ultralytics Solutions을 살펴보세요.

댓글