Link to this sectionUltralytics YOLO26을 이용한 분석#
Link to this section소개#
이 가이드는 데이터 시각화의 세 가지 기본 유형인 선 그래프(line graph), 막대 그래프(bar plot), 원형 차트(pie chart)에 대한 종합적인 개요를 제공합니다. 각 섹션에는 Python을 사용하여 이러한 시각화를 생성하는 방법에 대한 단계별 지침과 코드 스니펫이 포함되어 있습니다.
Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts
Link to this section시각적 샘플#
| 선 그래프 | 막대 그래프 | 원형 차트 |
|---|---|---|
![]() | ![]() | ![]() |
Link to this section그래프가 중요한 이유#
- 선 그래프는 짧은 기간과 긴 기간 동안의 변화를 추적하고, 동일한 기간 동안 여러 그룹의 변화를 비교하는 데 이상적입니다.
- 반면 막대 그래프는 서로 다른 카테고리 간의 수량을 비교하고 카테고리와 해당 수치 값 간의 관계를 보여주는 데 적합합니다.
- 마지막으로 원형 차트는 카테고리 간의 비율을 설명하고 전체의 일부를 보여주는 데 효과적입니다.
yolo solutions analytics show=True
# Pass the source
yolo solutions analytics source="path/to/video.mp4"
# Generate the pie chart
yolo solutions analytics analytics_type="pie" show=True
# Generate the bar plots
yolo solutions analytics analytics_type="bar" show=True
# Generate the area plots
yolo solutions analytics analytics_type="area" show=TrueLink to this sectionAnalytics 인수#
다음은 Analytics 인수를 설명하는 표입니다:
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
model | str | None | Ultralytics YOLO 모델 파일 경로. |
analytics_type | str | 'line' | 그래프 유형, 즉 line, bar, area 또는 pie. |
You can also leverage different track arguments in the Analytics solution.
| 인수 | 유형 | 기본값 | 설명 |
|---|---|---|---|
tracker | str | 'botsort.yaml' | 사용할 추적 알고리즘을 지정합니다(예: bytetrack.yaml 또는 botsort.yaml). |
conf | float | 0.1 | 탐지에 대한 신뢰도 임계값을 설정합니다. 낮은 값을 사용하면 더 많은 객체를 추적할 수 있지만 오탐(false positive)이 포함될 수 있습니다. |
iou | float | 0.7 | 겹치는 탐지를 필터링하기 위한 Intersection over Union(IoU) 임계값을 설정합니다. |
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 | int or None | None | 바운딩 박스의 선 두께를 지정합니다. None인 경우 이미지 크기에 따라 선 두께가 자동으로 조정됩니다. 명확성을 위한 시각적 사용자 정의를 제공합니다. |
Link to this section결론#
다양한 유형의 시각화를 언제 어떻게 사용할지 이해하는 것은 효과적인 데이터 분석에 매우 중요합니다. 선 그래프, 막대 그래프, 원형 차트는 데이터가 전달하는 이야기를 더욱 명확하고 효과적으로 표현할 수 있도록 돕는 기본적인 도구입니다. Ultralytics YOLO26 Analytics 솔루션은 객체 탐지 및 추적 결과로부터 이러한 시각화를 생성하는 간소화된 방법을 제공하여 시각적 데이터에서 의미 있는 통찰력을 더 쉽게 추출할 수 있도록 합니다.
Link to this sectionFAQ#
Link to this sectionUltralytics YOLO26 Analytics를 사용하여 선 그래프를 만들려면 어떻게 해야 하나요?#
Ultralytics YOLO26 Analytics를 사용하여 선 그래프를 만들려면 다음 단계를 따르십시오:
- YOLO26 모델을 로드하고 비디오 파일을 엽니다.
- 유형을 "line"으로 설정하여
Analytics클래스를 초기화합니다. - 비디오 프레임을 반복하면서 프레임당 객체 수와 같은 관련 데이터로 선 그래프를 업데이트합니다.
- 선 그래프가 표시된 출력 비디오를 저장합니다.
예시:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
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))
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
analytics = solutions.Analytics(
analytics_type="line",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()Analytics 클래스 구성에 대한 자세한 내용은 Ultralytics YOLO26을 이용한 분석 섹션을 참조하십시오.
Link to this section막대 그래프를 만들기 위해 Ultralytics YOLO26을 사용하면 어떤 이점이 있나요?#
막대 그래프 생성에 Ultralytics YOLO26을 사용하면 여러 가지 이점이 있습니다:
- 실시간 데이터 시각화: 객체 탐지 결과를 막대 그래프에 원활하게 통합하여 동적으로 업데이트합니다.
- 사용 편의성: 간단한 API와 함수를 사용하여 데이터를 쉽게 구현하고 시각화할 수 있습니다.
- 사용자 정의: 제목, 레이블, 색상 등을 사용자 요구 사항에 맞게 조정할 수 있습니다.
- 효율성: 많은 양의 데이터를 효율적으로 처리하고 비디오 처리 중 실시간으로 플롯을 업데이트합니다.
다음 예시를 사용하여 막대 그래프를 생성하십시오:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
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))
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
analytics = solutions.Analytics(
analytics_type="bar",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()자세한 내용은 가이드의 막대 그래프 섹션을 방문하십시오.
Link to this section데이터 시각화 프로젝트에서 원형 차트를 만들기 위해 왜 Ultralytics YOLO26을 사용해야 하나요?#
Ultralytics YOLO26은 다음과 같은 이유로 원형 차트 생성에 탁월한 선택입니다:
- 객체 탐지와의 통합: 객체 탐지 결과를 원형 차트에 직접 통합하여 즉각적인 통찰력을 얻을 수 있습니다.
- 사용자 친화적인 API: 최소한의 코드로 쉽게 설정하고 사용할 수 있습니다.
- 사용자 정의 가능: 색상, 레이블 등을 위한 다양한 사용자 정의 옵션을 제공합니다.
- 실시간 업데이트: 비디오 분석 프로젝트에 이상적인 실시간 데이터 처리 및 시각화가 가능합니다.
간단한 예시는 다음과 같습니다:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
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))
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
analytics = solutions.Analytics(
analytics_type="pie",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()자세한 내용은 가이드의 원형 차트 섹션을 참조하십시오.
Link to this sectionUltralytics YOLO26을 사용하여 객체를 추적하고 시각화를 동적으로 업데이트할 수 있나요?#
네, Ultralytics YOLO26을 사용하여 객체를 추적하고 시각화를 동적으로 업데이트할 수 있습니다. 실시간으로 여러 객체를 추적하는 기능을 지원하며, 추적된 객체의 데이터를 기반으로 선 그래프, 막대 그래프, 원형 차트와 같은 다양한 시각화를 업데이트할 수 있습니다.
선 그래프를 추적하고 업데이트하는 예시:
import cv2
from ultralytics import solutions
cap = cv2.VideoCapture("path/to/video.mp4")
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))
out = cv2.VideoWriter(
"ultralytics_analytics.avi",
cv2.VideoWriter_fourcc(*"MJPG"),
fps,
(1280, 720), # this is fixed
)
analytics = solutions.Analytics(
analytics_type="line",
show=True,
)
frame_count = 0
while cap.isOpened():
success, im0 = cap.read()
if success:
frame_count += 1
results = analytics(im0, frame_count) # update analytics graph every frame
out.write(results.plot_im) # write the video file
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()전체 기능에 대해 알아보려면 추적(Tracking) 섹션을 참조하십시오.
Link to this sectionOpenCV 및 TensorFlow와 같은 다른 객체 탐지 솔루션과 비교했을 때 Ultralytics YOLO26의 차별점은 무엇인가요?#
Ultralytics YOLO26이 OpenCV 및 TensorFlow와 같은 다른 객체 탐지 솔루션과 차별화되는 이유는 다음과 같습니다:
- 최첨단 정확도: YOLO26은 객체 탐지, 인스턴스 분할(instance segmentation), 의미론적 분할(semantic segmentation) 및 분류(classification) 작업에서 탁월한 정확도를 제공합니다.
- 사용 편의성: 사용자 친화적인 API를 통해 복잡한 코딩 없이 빠르게 구현하고 통합할 수 있습니다.
- 실시간 성능: 고속 추론에 최적화되어 실시간 애플리케이션에 적합합니다.
- 다양한 애플리케이션: 다중 객체 추적, 맞춤형 모델 학습, ONNX, TensorRT, CoreML 등 다양한 형식으로 내보내기를 포함한 여러 작업을 지원합니다.
- 종합적인 문서: 사용자가 모든 단계를 진행할 수 있도록 안내하는 광범위한 문서와 블로그 리소스를 제공합니다.
더 자세한 비교와 사용 사례는 Ultralytics 블로그에서 확인하십시오.


