다음을 사용하여 개체 수 계산 Ultralytics YOLO11
오브젝트 카운팅이란 무엇인가요?
를 사용한 객체 카운팅 Ultralytics YOLO11 는 동영상과 카메라 스트림에서 특정 객체를 정확하게 식별하고 카운팅하는 기능을 제공합니다. YOLO11 는 최첨단 알고리즘과 딥러닝 기능 덕분에 군중 분석 및 감시와 같은 다양한 시나리오에서 효율적이고 정확한 객체 카운팅을 제공하는 실시간 애플리케이션에 탁월합니다.
Watch: 클래스별 오브젝트 카운팅을 사용하여 Ultralytics YOLOv8
객체 카운팅의 장점
- 리소스 최적화: 개체 카운팅은 정확한 개수를 제공하여 재고 관리와 같은 애플리케이션에서 리소스 할당을 최적화함으로써 효율적인 리소스 관리를 용이하게 합니다.
- 보안 강화: 개체 카운팅은 개체를 정확하게 추적하고 계산하여 사전 위협 탐지를 지원함으로써 보안과 감시를 강화합니다.
- 정보에 기반한 의사 결정: 객체 카운팅은 의사 결정, 소매업, 교통 관리 및 기타 다양한 영역의 프로세스 최적화를 위한 귀중한 인사이트를 제공합니다.
실제 애플리케이션
물류 | 양식업 |
---|---|
![]() |
![]() |
컨베이어 벨트 패킷 계수 사용 Ultralytics YOLO11 | 바다에서 물고기 수 세기 Ultralytics YOLO11 |
Ultralytics YOLO 사용한 개체 수 계산
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
assert cap.isOpened(), "Error reading video file"
# region_points = [(20, 400), (1080, 400)] # line counting
region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360)] # rectangle region
# region_points = [(20, 400), (1080, 400), (1080, 360), (20, 360), (20, 400)] # polygon region
# Video writer
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("object_counting_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
# Initialize object counter object
counter = solutions.ObjectCounter(
show=True, # display the output
region=region_points, # pass region points
model="yolo11n.pt", # model="yolo11n-obb.pt" for object counting with OBB model.
# classes=[0, 2], # count specific classes i.e. person and car with COCO pretrained model.
# tracker="botsort.yaml", # choose trackers i.e "bytetrack.yaml"
)
# Process video
while cap.isOpened():
success, im0 = cap.read()
if not success:
print("Video frame is empty or processing is complete.")
break
results = counter(im0)
# print(results) # access the output
video_writer.write(results.plot_im) # write the processed frame.
cap.release()
video_writer.release()
cv2.destroyAllWindows() # destroy all opened windows
ObjectCounter
인수
다음은 표입니다. ObjectCounter
인수를 사용합니다:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
model |
str |
None |
Ultralytics YOLO 모델 파일 경로. |
show_in |
bool |
True |
비디오 스트림에 인 카운트를 표시할지 여부를 제어하는 플래그입니다. |
show_out |
bool |
True |
비디오 스트림에 아웃 카운트를 표시할지 여부를 제어하는 플래그입니다. |
region |
list |
[(20, 400), (1260, 400)] |
계산 영역을 정의하는 포인트 목록입니다. |
그리고 ObjectCounter
솔루션을 사용하면 여러 track
인수를 사용합니다:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
tracker |
str |
'botsort.yaml' |
사용할 추적 알고리즘을 지정합니다(예, bytetrack.yaml 또는 botsort.yaml . |
conf |
float |
0.3 |
탐지 신뢰 임계값을 설정합니다. 값이 낮을수록 더 많은 개체를 추적할 수 있지만 오탐이 포함될 수 있습니다. |
iou |
float |
0.5 |
중복 감지를 필터링하기 위한 IoU( Intersection over Union ) 임계값을 설정합니다. |
classes |
list |
None |
클래스 인덱스별로 결과를 필터링합니다. 예를 들어 classes=[0, 2, 3] 지정된 클래스만 추적합니다. |
verbose |
bool |
True |
추적 결과의 표시를 제어하여 추적된 개체의 시각적 출력을 제공합니다. |
device |
str |
None |
추론할 장치를 지정합니다(예, cpu , cuda:0 또는 0 ). 사용자가 모델 실행을 위해 CPU, 특정 GPU, 또는 기타 컴퓨팅 장치 중에서 선택할 수 있습니다. |
또한 아래 나열된 시각화 인수가 지원됩니다:
인수 | 유형 | 기본값 | 설명 |
---|---|---|---|
show |
bool |
False |
만약 True 를 클릭하면 주석이 달린 이미지 또는 동영상이 창에 표시됩니다. 개발 또는 테스트 중에 즉각적인 시각적 피드백을 받을 때 유용합니다. |
line_width |
None or int |
None |
경계 상자의 선 너비를 지정합니다. 만약 None 를 클릭하면 이미지 크기에 따라 선 너비가 자동으로 조정됩니다. 선명도를 위한 시각적 사용자 지정 기능을 제공합니다. |
자주 묻는 질문
Ultralytics YOLO11 을 사용하여 동영상에서 객체를 계산하려면 어떻게 하나요?
Ultralytics YOLO11 을 사용하여 동영상에서 개체를 카운트하려면 다음 단계를 따르세요:
- 필요한 라이브러리 가져오기(
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", "yolo11n.pt")
고급 구성 및 옵션에 대해서는 여러 지역의 개체를 동시에 카운팅하는 RegionCounter 솔루션을 확인하세요.
객체 카운팅에 Ultralytics YOLO11 을 사용하면 어떤 이점이 있나요?
객체 카운팅에 Ultralytics YOLO11 을 사용하면 몇 가지 장점이 있습니다:
- 리소스 최적화: 정확한 카운트를 제공하여 재고 관리와 같은 산업에서 리소스 할당을 최적화하여 효율적인 리소스 관리를 용이하게 합니다.
- 보안 강화: 개체를 정확하게 추적하고 계산하여 사전 위협 탐지 및 보안 시스템을 지원함으로써 보안 및 감시를 강화합니다.
- 정보에 기반한 의사 결정: 리테일, 트래픽 관리 등의 영역에서 의사 결정을 위한 귀중한 인사이트를 제공하여 프로세스를 최적화합니다.
- 실시간 처리: YOLO11 아키텍처는 실시간 추론이 가능하여 라이브 비디오 스트림과 시간에 민감한 애플리케이션에 적합합니다.
구현 예제와 실제 적용 사례는 특정 영역에서 객체를 추적하는 TrackZone 솔루션을 살펴보세요.
Ultralytics YOLO11 을 사용하여 특정 클래스 오브젝트를 계산하려면 어떻게 해야 하나요?
Ultralytics YOLO11 을 사용하여 특정 클래스 오브젝트를 카운트하려면 추적 단계에서 관심 있는 클래스를 지정해야 합니다. 아래는 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", "yolo11n.pt", [0, 2])
이 예제에서는 classes_to_count=[0, 2]
클래스의 객체를 계산한다는 의미입니다. 0
그리고 2
(예: COCO 데이터 집합의 사람 및 자동차). 클래스 인덱스에 대한 자세한 내용은 다음에서 확인할 수 있습니다. COCO 데이터 세트 문서.
실시간 애플리케이션에 다른 객체 감지 모델 대신 YOLO11 을 사용해야 하는 이유는 무엇인가요?
Ultralytics YOLO11 Faster R-CNN, SSD 및 이전 YOLO 버전과 같은 다른 객체 감지 모델에 비해 몇 가지 장점을 제공합니다:
- 속도와 효율성: YOLO11 실시간 처리 기능을 제공하므로 감시 및 자율 주행과 같이 고속 추론이 필요한 애플리케이션에 이상적입니다.
- 정확도: 물체 감지 및 추적 작업에 최첨단 정확도를 제공하여 오탐지 횟수를 줄이고 전반적인 시스템 안정성을 향상시킵니다.
- 통합의 용이성: YOLO11 모바일 및 엣지 디바이스를 비롯한 다양한 플랫폼 및 디바이스와의 원활한 통합을 제공하며, 이는 최신 AI 애플리케이션에 필수적인 요소입니다.
- 유연성: 특정 사용 사례 요구 사항을 충족하도록 구성 가능한 모델을 통해 객체 감지, 세분화, 추적과 같은 다양한 작업을 지원합니다.
기능 및 성능 비교에 대한 자세한 내용은 Ultralytics YOLO11 설명서를 참조하세요.
군중 분석 및 트래픽 관리와 같은 고급 애플리케이션에 YOLO11 을 사용할 수 있나요?
예, Ultralytics YOLO11 은 실시간 감지 기능, 확장성 및 통합 유연성으로 인해 군중 분석 및 트래픽 관리와 같은 고급 애플리케이션에 완벽하게 적합합니다. 고급 기능을 통해 동적인 환경에서 고정밀 객체 추적, 카운팅 및 분류가 가능합니다. 사용 사례의 예는 다음과 같습니다:
- 군중 분석: 대규모 모임을 모니터링하고 관리하여 안전을 보장하고 지역 기반 집계로 군중 흐름을 최적화하세요.
- 교통 관리: 속도 추정 기능으로 차량을 추적 및 집계하고, 교통 패턴을 분석하고, 실시간으로 혼잡을 관리하세요.
- 리테일 분석: 고객의 이동 패턴과 제품 상호 작용을 분석하여 매장 레이아웃을 최적화하고 고객 경험을 개선합니다.
- 산업 자동화: 컨베이어 벨트 위의 제품을 계수하고 생산 라인을 모니터링하여 품질 관리 및 효율성을 개선합니다.
보다 전문적인 애플리케이션의 경우, 실제 컴퓨터 비전 과제를 위해 설계된 포괄적인 도구 세트인 Ultralytics 솔루션을 살펴보세요.