Ultralytics YOLO26을 사용한 객체 카운팅#
객체 카운팅이란 무엇인가요?#
Ultralytics YOLO26을 사용한 객체 카운팅은 동영상과 카메라 스트림에서 특정 객체를 정확하게 식별하고 카운트하는 작업입니다. YOLO26은 최첨단 알고리즘과 딥러닝 기능을 바탕으로 실시간 애플리케이션에서 뛰어난 성능을 발휘하며, 군중 분석과 감시 등 다양한 시나리오에서 효율적이고 정밀한 객체 카운팅을 제공합니다.
Watch: How to Perform Real-Time Object Counting with Ultralytics YOLO26 🚀
객체 카운팅의 장점#
- 리소스 최적화: 객체 카운팅은 정확한 수량을 제공하여 효율적인 리소스 관리를 지원하고, 재고 관리와 같은 애플리케이션에서 리소스 할당을 최적화합니다.
- 보안 강화: 객체 카운팅은 개체를 정확하게 추적하고 카운트하여 보안 및 감시 기능을 강화하고, 사전 예방적 위협 탐지를 지원합니다.
- 정보에 기반한 의사 결정: 객체 카운팅은 의사 결정에 유용한 인사이트를 제공하고, 소매, 교통 관리 및 다양한 기타 분야의 프로세스를 최적화합니다.
실제 적용 사례#
| 물류 | 양식업 |
|---|---|
![]() | ![]() |
| 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 | 동영상 스트림에 진입 수를 표시할지 제어하는 플래그입니다. |
show_out | bool | True | 동영상 스트림에 이탈 수를 표시할지 제어하는 플래그입니다. |
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 | 검출 결과의 신뢰도 임계값을 설정합니다. 값이 낮을수록 더 많은 객체를 추적할 수 있지만 오탐이 포함될 수 있습니다. |
iou | float | 0.7 | 겹치는 검출 결과를 필터링하기 위한 교집합 대비 합집합 (IoU) 임계값을 설정합니다. |
classes | list | None | 클래스 인덱스로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3]은 지정된 클래스만 추적합니다. |
device | str | None | 추론에 사용할 장치를 지정합니다(예: cpu, cuda:0 또는 0). 사용자는 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중에서 모델 실행 장치를 선택할 수 있습니다. |
imgsz | int or tuple | 640 | 목표 추론 이미지 크기: 정사각형의 경우 정수 또는 (height, width) 쌍입니다. 형태는 모델 스트라이드에 맞게 조정됩니다. |
max_det | int | 300 | 추적 전 프레임당 유지되는 최대 검출 수로, 솔루션이 밀집된 장면에서 처리하는 객체를 제한합니다. |
quantize | int or str | None | 추론 정밀도: PyTorch 및 TorchScript 모델의 경우 16(FP16) 또는 32/설정 안 함(FP32); 기타 형식은 아티팩트와 런타임이 선택하는 정밀도로 계산됩니다. 더 이상 사용되지 않는 half 플래그를 대체합니다. |
또한 아래에 나열된 시각화 인수도 지원됩니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True인 경우 annotation이 추가된 이미지 또는 비디오를 window에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 제공하는 데 유용합니다. |
show_conf | bool | True | 각 detection의 confidence score를 label과 함께 표시합니다. 각 detection에 대한 모델의 확신 정도를 파악할 수 있습니다. |
show_labels | bool | True | visual output에 각 detection의 label을 표시합니다. 검출된 객체를 즉시 파악할 수 있습니다. |
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 솔루션을 참조하세요.
- 필요한 라이브러리(
객체 카운팅에 Ultralytics YOLO26을 사용하면 다음과 같은 여러 장점이 있습니다.
- 리소스 최적화: 정확한 수량을 제공하여 효율적인 리소스 관리를 지원하고, 재고 관리와 같은 산업에서 리소스 할당을 최적화하는 데 도움을 줍니다.
- 보안 강화: 개체를 정확하게 추적하고 카운트하여 보안 및 감시 기능을 강화하고, 사전 예방적 위협 탐지와 보안 시스템을 지원합니다.
- 정보에 기반한 의사 결정: 의사 결정에 유용한 인사이트를 제공하고, 소매, 교통 관리 등의 분야에서 프로세스를 최적화합니다.
- 실시간 처리: YOLO26의 아키텍처는 실시간 추론을 지원하므로 라이브 동영상 스트림과 시간에 민감한 애플리케이션에 적합합니다.
구현 예제와 실제 애플리케이션은 특정 구역의 객체를 추적하는 TrackZone 솔루션을 참조하세요.
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 데이터셋의 사람과 자동차)를 카운트한다는 의미입니다. 클래스 인덱스에 대한 자세한 내용은 COCO 데이터셋 문서에서 확인할 수 있습니다.Ultralytics YOLO26은 Faster R-CNN, SSD 및 이전 YOLO 버전과 같은 다른 객체 탐지 모델에 비해 다음과 같은 여러 장점을 제공합니다.
- 속도 및 효율성: YOLO26은 실시간 처리 기능을 제공하므로 감시 및 자율 주행과 같이 고속 추론이 필요한 애플리케이션에 적합합니다.
- 정확도: 최첨단 탐지 및 추적 정확도를 제공하여 오탐을 줄이고 전반적인 시스템 안정성을 향상합니다.
- 간편한 통합: YOLO26은 모바일 및 엣지 디바이스를 비롯한 다양한 플랫폼과 디바이스에 원활하게 통합할 수 있어 최신 AI 애플리케이션에 필수적입니다.
- 유연성: 탐지 및 세그멘테이션 작업을 지원하며, 그 위에 트랙 모드를 제공하고 특정 사용 사례 요구 사항에 맞게 모델을 구성할 수 있습니다.
기능과 성능 비교에 대한 자세한 내용은 Ultralytics YOLO26 문서를 참조하세요.
예. Ultralytics YOLO26은 실시간 탐지 기능, 확장성 및 통합 유연성을 갖추고 있어 군중 분석과 교통 관리와 같은 고급 애플리케이션에 적합합니다. 고급 기능을 통해 동적 환경에서 높은 정확도로 객체를 추적, 카운트 및 분류할 수 있습니다. 사용 사례의 예는 다음과 같습니다.
- 군중 분석: 영역 기반 카운팅을 사용하여 대규모 모임을 모니터링하고 관리하며, 안전을 보장하고 군중 흐름을 최적화합니다.
- 교통 관리: 속도 추정 기능을 사용하여 차량을 추적하고 카운트하며, 교통 패턴을 분석하고 실시간으로 혼잡을 관리합니다.
- 소매 분석: 고객의 이동 패턴과 제품 상호작용을 분석하여 매장 배치를 최적화하고 고객 경험을 개선합니다.
- 산업 자동화: 컨베이어 벨트의 제품을 카운트하고 생산 라인을 모니터링하여 품질 관리와 효율성 향상을 지원합니다.
더 전문화된 애플리케이션은 실제 컴퓨터 비전 문제를 해결하도록 설계된 종합적인 도구 세트를 제공하는 Ultralytics Solutions을 참조하세요.

