Ultralytics YOLO26을 이용한 객체 카운팅#
객체 카운팅이란 무엇인가요?#
Ultralytics YOLO26을 이용한 객체 카운팅은 비디오 및 카메라 스트림에서 특정 객체를 정확하게 식별하고 세는 작업을 포함합니다. YOLO26은 최첨단 알고리즘과 deep learning 기능을 바탕으로 군중 분석 및 감시와 같은 다양한 시나리오에서 효율적이고 정밀한 객체 카운팅을 제공하며 실시간 애플리케이션에서 뛰어난 성능을 발휘합니다.
Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀
객체 카운팅의 이점#
- 리소스 최적화: 객체 카운팅은 정확한 수치를 제공하여 효율적인 리소스 관리를 용이하게 하며, inventory management와 같은 애플리케이션에서 리소스 할당을 최적화합니다.
- 보안 강화: 객체 카운팅은 엔티티를 정확하게 추적하고 세어 보안 및 감시를 강화하며, 사전 예방적인 threat detection을 지원합니다.
- 정보에 기반한 의사결정: 객체 카운팅은 의사결정을 위한 가치 있는 인사이트를 제공하며, 소매업, traffic management, 그리고 기타 다양한 분야에서 프로세스를 최적화합니다.
실제 세계에서의 활용 사례#
| 물류 | 양식업 |
|---|---|
![]() | ![]() |
| Ultralytics YOLO26을 이용한 컨베이어 벨트 패키지 카운팅 | Ultralytics YOLO26을 이용한 해양 어류 카운팅 |
YOLO26으로 객체 카운팅하기#
카운팅 region을 정의하고(선에는 두 점, 폴리곤에는 세 점 이상) 이를 ObjectCounter 솔루션에 전달합니다. 카운터는 프레임별로 각 객체를 추적하며 추적된 객체가 선을 넘거나 영역을 통과할 때 IN/OUT 카운트를 집계하여 출력 비디오에 기록할 수 있는 주석이 달린 프레임을 반환합니다.
# 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 인수가 포함된 표입니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 모델 파일 경로입니다. |
show_in | bool | True | 비디오 스트림에 유입(in) 카운트를 표시할지 여부를 제어하는 플래그입니다. |
show_out | bool | True | 비디오 스트림에 유출(out) 카운트를 표시할지 여부를 제어하는 플래그입니다. |
region | list 또는 dict | None | 관심 영역을 정의하는 포인트((x, y) 튜플 목록 또는 여러 영역에 대해 영역 이름을 포인트 목록에 매핑하는 사전(RegionCounter 전용)). None일 때, 영역이 필요한 솔루션은 미리 정의된 기본값으로 대체됩니다. |
line_width | int | 2 | 솔루션이 그리는 상자, 키포인트 및 카운트의 선 두께입니다. |
verbose | bool | True | 입력 형태, 클래스 카운트 및 처리 속도에 대한 솔루션의 프레임별 로그를 활성화합니다. 트래킹 호출 자체는 항상 침묵 상태를 유지합니다. |
ObjectCounter 솔루션은 여러 개의 track 인수를 사용할 수 있도록 지원합니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 사용할 추적 알고리즘을 지정합니다. 기본 제공 옵션: botsort.yaml, bytetrack.yaml, ocsort.yaml, deepocsort.yaml, fasttrack.yaml, tracktrack.yaml. |
conf | float | 0.25 | 탐지에 대한 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체가 추적되지만 잘못된 긍정 탐지(false positives)가 포함될 수 있습니다. |
iou | float | 0.7 | 겹치는 감지를 필터링하기 위한 Intersection over Union (IoU) 임계값을 설정합니다. |
classes | list | None | 클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다. |
device | str | None | 추론용 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자가 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 선택할 수 있도록 합니다. |
또한 아래 나열된 시각화 인수가 지원됩니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True인 경우, 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백에 유용합니다. |
show_conf | bool | True | 각 탐지에 대한 신뢰도 점수를 레이블과 함께 표시합니다. 각 탐지에 대한 모델의 확신도를 파악할 수 있습니다. |
show_labels | bool | True | 시각적 출력에서 각 탐지에 대한 레이블을 표시합니다. 탐지된 객체를 즉시 이해할 수 있도록 합니다. |
FAQ#
Ultralytics YOLO26을 사용하여 비디오에서 객체를 카운팅하려면 다음 단계를 따르십시오:
- 필요한 라이브러리(
cv2,ultralytics)를 가져옵니다. - 카운팅 영역(예: 다각형, 선 등)을 정의합니다.
- 비디오 캡처를 설정하고 객체 카운터를 초기화합니다.
- 각 프레임을 처리하여 객체를 추적하고 정의된 영역 내에서 카운트합니다.
영역 내 카운팅에 대한 간단한 예제는 다음과 같습니다:
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을 사용하면 여러 이점이 있습니다:
- 리소스 최적화: 정확한 수치를 제공하여 효율적인 리소스 관리를 용이하게 하며, inventory management와 같은 산업에서 리소스 할당을 최적화하는 데 도움을 줍니다.
- 보안 강화: 엔티티를 정확하게 추적하고 세어 보안 및 감시를 강화하며, 사전 예방적인 위협 감지 및 security systems을 지원합니다.
- 정보에 입각한 의사결정: 의사결정을 위한 귀중한 인사이트를 제공하여 소매, 교통 관리 등 다양한 분야의 프로세스를 최적화합니다.
- 실시간 처리: 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]은 클래스0및2(예: COCO dataset의 person 및 car)의 객체를 카운트함을 의미합니다. 클래스 인덱스에 대한 자세한 정보는 COCO dataset documentation에서 확인할 수 있습니다.Ultralytics YOLO26은 Faster R-CNN, SSD 및 이전 YOLO 버전과 같은 다른 객체 탐지 모델에 비해 다음과 같은 여러 장점을 제공합니다:
- 속도 및 효율성: YOLO26은 실시간 처리 기능을 제공하여 감시 및 autonomous driving과 같이 고속 추론이 필요한 애플리케이션에 이상적입니다.
- Accuracy: 최고 수준의 검출 및 트래킹 정확도를 제공하여 오탐지를 줄이고 전체 시스템 신뢰성을 향상시킵니다.
- 통합 용이성: YOLO26은 모바일 및 edge devices를 포함한 다양한 플랫폼 및 디바이스와 원활한 통합을 제공하며, 이는 현대 AI 애플리케이션에 매우 중요합니다.
- Flexibility: 상단에 track mode가 있는 detection 및 segmentation 작업을 지원하며, 특정 유스케이스 요구 사항을 충족하도록 구성 가능한 모델을 제공합니다.
기능 및 성능 비교에 대한 자세한 내용은 Ultralytics YOLO26 Documentation을 확인하세요.
네, Ultralytics YOLO26은 실시간 탐지 기능, 확장성 및 통합 유연성 덕분에 군중 분석 및 교통 관리와 같은 고급 애플리케이션에 완벽하게 적합합니다. 고급 기능은 동적 환경에서 높은 정확도로 객체를 추적, 카운팅 및 분류할 수 있게 합니다. 사용 사례 예시는 다음과 같습니다:
- 군중 분석: 대규모 모임을 모니터링하고 관리하며, region-based counting을 통해 안전을 보장하고 군중 흐름을 최적화합니다.
- 교통 관리: speed estimation 기능을 통해 차량을 추적 및 카운트하고, 교통 패턴을 분석하며, 실시간으로 혼잡을 관리합니다.
- 소매 분석: 고객의 이동 패턴과 제품 상호작용을 분석하여 매장 레이아웃을 최적화하고 고객 경험을 개선합니다.
- 산업 자동화: 컨베이어 벨트 위의 제품을 카운팅하고 생산 라인을 모니터링하여 품질 관리 및 효율성을 개선합니다.
더욱 전문화된 애플리케이션을 위해 실제 컴퓨터 Vision 과제를 위해 설계된 포괄적인 도구 모음인 Ultralytics Solutions을 살펴보세요.

