Ultralytics YOLO26을 사용한 객체 계수#
객체 계수란 무엇인가요?#
Ultralytics YOLO26을 사용한 객체 계수는 동영상과 카메라 스트림에서 특정 객체를 정확하게 식별하고 개수를 세는 작업입니다. YOLO26은 최첨단 알고리즘과 딥러닝 기능을 바탕으로 군중 분석 및 감시와 같은 다양한 시나리오에서 효율적이고 정확한 객체 계수를 제공하여 실시간 애플리케이션에 탁월한 성능을 발휘합니다.
시청: 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이면 영역이 필요한 Solutions는 사전 정의된 기본값을 사용합니다. |
line_width | int | 2 | Solution에서 그리는 상자, 키포인트 및 개수 표시의 선 두께입니다. |
verbose | bool | True | 프레임별 입력 형태, 클래스 개수 및 처리 속도 로그를 활성화합니다. 추적 호출 자체는 항상 로그를 출력하지 않습니다. |
ObjectCounter 솔루션에서는 여러 track 인수를 사용할 수 있습니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
tracker | str | 'tracktrack.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) 쌍을 지정합니다. 모델 stride에 맞춰 형태가 조정됩니다. |
max_det | int | 300 | 추적 전에 프레임별로 유지할 최대 탐지 수를 지정하여 밀집된 장면에서 솔루션이 처리하는 객체 수를 제한합니다. |
quantize | int or str | None | 추론 정밀도입니다. PyTorch 및 TorchScript 모델의 경우 16 (FP16) 또는 32/미설정(FP32)을 사용합니다. 다른 형식은 아티팩트와 런타임에서 선택한 정밀도로 계산합니다. 더 이상 사용되지 않는 half 플래그를 대체합니다. |
또한 아래의 시각화 인수도 지원됩니다.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
show | bool | False | True이면 주석이 추가된 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 얻는 데 유용합니다. |
show_conf | bool | True | 각 감지 결과의 레이블 옆에 신뢰도 점수를 표시합니다. 각 감지 결과에 대한 모델의 확신도를 파악할 수 있습니다. |
show_labels | bool | True | 시각화 출력에 각 감지 결과의 레이블을 표시합니다. 감지된 객체를 즉시 파악할 수 있습니다. |
자주 묻는 질문#
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에서 확인하세요.

