Meet YOLO26: next-gen vision AI.

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시각적 샘플#

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

Link to this section그래프가 중요한 이유#

  • 선 그래프는 짧은 기간과 긴 기간 동안의 변화를 추적하고, 동일한 기간 동안 여러 그룹의 변화를 비교하는 데 이상적입니다.
  • 반면 막대 그래프는 서로 다른 카테고리 간의 수량을 비교하고 카테고리와 해당 수치 값 간의 관계를 보여주는 데 적합합니다.
  • 마지막으로 원형 차트는 카테고리 간의 비율을 설명하고 전체의 일부를 보여주는 데 효과적입니다.
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

Link to this sectionAnalytics 인수#

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

인수유형기본값설명
modelstrNoneUltralytics YOLO 모델 파일 경로.
analytics_typestr'line'그래프 유형, 즉 line, bar, area 또는 pie.

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

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

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

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

Link to this section결론#

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

Link to this sectionFAQ#

Link to this sectionUltralytics 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을 이용한 분석 섹션을 참조하십시오.

Link to this section막대 그래프를 만들기 위해 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()

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

Link to this section데이터 시각화 프로젝트에서 원형 차트를 만들기 위해 왜 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()

자세한 내용은 가이드의 원형 차트 섹션을 참조하십시오.

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 sectionOpenCVTensorFlow와 같은 다른 객체 탐지 솔루션과 비교했을 때 Ultralytics YOLO26의 차별점은 무엇인가요?#

Ultralytics YOLO26이 OpenCV 및 TensorFlow와 같은 다른 객체 탐지 솔루션과 차별화되는 이유는 다음과 같습니다:

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

더 자세한 비교와 사용 사례는 Ultralytics 블로그에서 확인하십시오.

댓글