Ultralytics YOLO26을 사용한 분석

소개

이 가이드는 데이터 시각화의 세 가지 기본 유형인 꺾은선 그래프, 막대 그래프, 원형 차트에 대한 포괄적인 개요를 제공합니다. 각 섹션에는 Python을 사용하여 이러한 시각화를 생성하는 방법에 대한 단계별 지침과 코드 스니펫이 포함되어 있습니다.



Watch: How to generate Analytical Graphs using Ultralytics | Line Graphs, Bar Plots, Area and Pie Charts

시각적 샘플

꺾은선 그래프막대 그래프원형 차트
객체 추적을 위한 YOLO 분석 꺾은선 그래프탐지 횟수를 위한 YOLO 분석 막대 그래프클래스 분포를 위한 YOLO 분석 원형 차트

그래프가 중요한 이유

  • 꺾은선 그래프는 단기 및 장기 기간 동안의 변화를 추적하고 동일 기간 내 여러 그룹의 변화를 비교하는 데 이상적입니다.
  • 반면 막대 그래프는 서로 다른 범주 간의 수량을 비교하고 범주와 해당 수치 값 간의 관계를 보여주는 데 적합합니다.
  • 마지막으로 원형 차트는 범주 간의 비율을 나타내고 전체 중 일부를 보여주는 데 효과적입니다.
Ultralytics YOLO를 사용한 분석
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=True

Analytics 인수

다음은 Analytics 인수를 설명하는 표입니다:

인수(Argument)유형(Type)기본값(Default)설명
modelstrNoneUltralytics YOLO 모델 파일 경로입니다.
analytics_typestr'line'그래프 유형으로 line, bar, area 또는 pie가 있습니다.

You can also leverage different track arguments in the Analytics solution.

인수(Argument)유형(Type)기본값(Default)설명
trackerstr'botsort.yaml'사용할 추적 알고리즘을 지정합니다. 예: bytetrack.yaml 또는 botsort.yaml.
conffloat0.1탐지에 대한 신뢰도 임계값을 설정합니다. 낮은 값을 사용할수록 더 많은 객체가 추적되지만 오탐지가 포함될 수 있습니다.
ioufloat0.7중복 탐지를 필터링하기 위한 Intersection over Union (IoU) 임계값을 설정합니다.
classeslistNone클래스 인덱스별로 결과를 필터링합니다. 예를 들어, classes=[0, 2, 3]은 지정된 클래스만 추적합니다.
verboseboolTrue추적 결과 표시를 제어하여 추적된 객체의 시각적 출력을 제공합니다.
devicestrNone추론을 위한 장치(예: cpu, cuda:0 또는 0)를 지정합니다. 모델 실행을 위해 CPU, 특정 GPU 또는 기타 컴퓨팅 장치 중 하나를 선택할 수 있습니다.

또한 다음과 같은 시각화 인수가 지원됩니다:

인수(Argument)유형(Type)기본값(Default)설명
showboolFalseTrue인 경우 주석이 달린 이미지나 비디오를 창에 표시합니다. 개발 또는 테스트 중 즉각적인 시각적 피드백을 얻는 데 유용합니다.
line_widthint or NoneNone바운딩 박스의 선 두께를 지정합니다. None인 경우 이미지 크기에 따라 선 두께가 자동으로 조정됩니다. 명확성을 위한 시각적 사용자 정의를 제공합니다.

결론

효과적인 데이터 분석을 위해서는 언제 어떤 유형의 시각화를 사용해야 하는지 이해하는 것이 중요합니다. 꺾은선 그래프, 막대 그래프, 원형 차트는 데이터의 이야기를 더 명확하고 효과적으로 전달하는 데 도움이 되는 기본 도구입니다. Ultralytics YOLO26 Analytics 솔루션은 객체 탐지 및 추적 결과에서 이러한 시각화를 생성하는 간소화된 방법을 제공하여 시각적 데이터에서 의미 있는 통찰력을 더 쉽게 추출할 수 있도록 합니다.

FAQ

Ultralytics YOLO26 Analytics를 사용하여 꺾은선 그래프를 어떻게 생성합니까?

Ultralytics YOLO26 Analytics를 사용하여 꺾은선 그래프를 생성하려면 다음 단계를 따르십시오:

  1. YOLO26 모델을 로드하고 비디오 파일을 엽니다.
  2. 유형을 "line"으로 설정하여 Analytics 클래스를 초기화합니다.
  3. 비디오 프레임을 반복하며 프레임당 객체 수와 같은 관련 데이터로 꺾은선 그래프를 업데이트합니다.
  4. 꺾은선 그래프가 표시된 결과 비디오를 저장합니다.

예시:

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을 사용한 분석 섹션을 참조하십시오.

Ultralytics YOLO26을 사용하여 막대 그래프를 생성하면 어떤 이점이 있습니까?

Ultralytics YOLO26을 사용하여 막대 그래프를 생성하면 다음과 같은 몇 가지 이점이 있습니다:

  1. 실시간 데이터 시각화: 객체 탐지 결과를 막대 그래프에 원활하게 통합하여 동적으로 업데이트합니다.
  2. 사용 편의성: 간단한 API와 함수를 통해 데이터를 구현하고 시각화하기가 쉽습니다.
  3. 사용자 지정: 제목, 레이블, 색상 등을 특정 요구 사항에 맞게 조정할 수 있습니다.
  4. 효율성: 많은 양의 데이터를 효율적으로 처리하고 비디오 처리 중에 실시간으로 그래프를 업데이트합니다.

다음 예시를 사용하여 막대 그래프를 생성하십시오:

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()

자세한 내용을 보려면 가이드의 막대 그래프 섹션을 방문하십시오.

데이터 시각화 프로젝트에서 원형 차트를 생성하기 위해 왜 Ultralytics YOLO26을 사용해야 합니까?

Ultralytics YOLO26은 다음과 같은 이유로 원형 차트 생성에 탁월한 선택입니다:

  1. 객체 탐지와의 통합: 객체 탐지 결과를 원형 차트에 직접 통합하여 즉각적인 통찰력을 얻을 수 있습니다.
  2. 사용자 친화적 API: 최소한의 코드로 설정하고 사용하기 쉽습니다.
  3. 사용자 지정 가능: 색상, 레이블 등에 대한 다양한 사용자 지정 옵션을 제공합니다.
  4. 실시간 업데이트: 데이터를 실시간으로 처리하고 시각화할 수 있어 비디오 분석 프로젝트에 이상적입니다.

간단한 예시는 다음과 같습니다:

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()

자세한 정보는 가이드의 원형 차트 섹션을 참조하십시오.

Ultralytics 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()

전체 기능에 대해 알아보려면 추적 섹션을 참조하십시오.

Ultralytics YOLO26은 OpenCVTensorFlow와 같은 다른 객체 탐지 솔루션과 어떻게 다릅니까?

Ultralytics YOLO26은 다음과 같은 여러 가지 이유로 OpenCV 및 TensorFlow와 같은 다른 객체 탐지 솔루션과 차별화됩니다:

  1. 최첨단 정확도: YOLO26은 객체 탐지, 세그멘테이션 및 분류 작업에서 탁월한 정확도를 제공합니다.
  2. 사용 편의성: 사용자 친화적인 API를 통해 복잡한 코딩 없이 빠르게 구현하고 통합할 수 있습니다.
  3. 실시간 성능: 고속 추론에 최적화되어 실시간 애플리케이션에 적합합니다.
  4. 다양한 애플리케이션: 다중 객체 추적, 사용자 지정 모델 학습 및 ONNX, TensorRT, CoreML과 같은 다양한 형식으로의 내보내기를 포함한 여러 작업을 지원합니다.
  5. 포괄적인 문서: 사용자가 모든 단계를 진행할 수 있도록 광범위한 문서블로그 리소스를 제공합니다.

더 자세한 비교와 사용 사례는 Ultralytics 블로그를 살펴보십시오.

댓글