녹색 확인
링크가 클립보드에 복사됨

Ultralytics YOLOv8 컴퓨터 비전 프로젝트의 속도 추정용

Ultralytics YOLOv8 모델을 컴퓨터 비전 프로젝트에서 속도 추정에 어떻게 사용할 수 있는지 알아보세요. 간단한 코딩 예제를 통해 직접 사용해 보세요.

속도 제한 도로 표지판을 본 적이 있을 것입니다. 우편이나 이메일로 자동 속도 제한 위반 알림을 받은 적도 있을 것입니다. 인공지능(AI) 교통 관리 시스템은 컴퓨터 비전 덕분에 속도 위반을 자동으로 신고할 수 있습니다. 가로등과 고속도로의 카메라가 촬영한 실시간 영상은 속도 예측과 도로 안전 강화에 사용됩니다.

속도 예측은 고속도로 안전에만 국한되지 않습니다. 스포츠, 자율 주행 차량 및 기타 다양한 애플리케이션에서 사용할 수 있습니다. 이 글에서는 컴퓨터 비전 프로젝트에서 속도 추정을 위해 Ultralytics YOLOv8 모델을 사용하는 방법에 대해 설명합니다. 또한 직접 사용해 볼 수 있도록 코딩 예제를 단계별로 안내해 드리겠습니다. 시작해 봅시다!

속도 예측을 통한 교통 관리 용이성 향상

세계보건기구(WHO)에 따르면 매년 약 119만 명의 사람들이 과속으로 인한 교통사고로 사망합니다. 또한 2천만 명에서 5천만 명 이상이 치명적이지 않은 부상을 입으며, 이 중 상당수는 장애를 입습니다. 특히 속도 추정이 사고를 예방하고 생명을 구하며 도로를 안전하고 효율적으로 유지하는 데 도움이 된다는 점에서 교통 안전의 중요성은 아무리 강조해도 지나치지 않습니다. 

컴퓨터 비전을 사용한 속도 추정에는 비디오 프레임에서 물체를 감지하고 추적하여 움직이는 속도를 계산하는 것이 포함됩니다. YOLOv8 같은 알고리즘은 연속된 프레임에서 차량과 같은 물체를 식별하고 추적할 수 있습니다. 이 시스템은 보정된 카메라 또는 기준점을 사용하여 이러한 물체의 이동 거리를 측정하여 실제 거리를 측정합니다. 물체가 두 지점 사이를 이동하는 데 걸리는 시간을 측정하여 거리-시간 비율을 사용하여 속도를 계산합니다.

그림 1. Ultralytics YOLOv8 모델을 사용한 속도 추정

AI 통합 속도 추정 시스템은 과속 운전자를 잡는 것 외에도 데이터를 수집하여 교통량을 예측할 수 있습니다. 이러한 예측은 신호 타이밍 및 리소스 할당 최적화와 같은 교통 관리 작업을 지원할 수 있습니다. 교통 패턴과 혼잡 원인에 대한 인사이트는 교통 혼잡을 줄이기 위해 새로운 도로를 계획하는 데 사용될 수 있습니다.

다른 산업에서의 속도 추정 적용 사례

속도 추정 애플리케이션은 도로 모니터링 그 이상의 기능을 제공합니다. 운동선수의 경기력을 모니터링하고, 자율주행 차량이 주변에서 움직이는 물체의 속도를 파악하고, 의심스러운 행동을 감지하는 데에도 유용하게 사용할 수 있습니다. 카메라를 사용하여 물체의 속도를 측정할 수 있는 곳이라면 어디든 컴퓨터 비전을 이용한 속도 추정을 사용할 수 있습니다. 

다음은 속도 추정이 사용되는 몇 가지 예입니다:

  • Tesla의 자율주행차는 비전 기반 속도 추정을 사용하여 충돌을 피합니다.
  • 2024년 올림픽에서는 컴퓨터 비전과 속도 추정이 육상 종목의 경기 분석을 개선하는 데 사용될 예정입니다.
  • 스마트 시티는 보행 속도를 모니터링하고 도시의 이동성과 안전성을 높이기 위해 보행자 걸음걸이 분석을 연구하고 있습니다. 이러한 시스템은 운전자에게 보행자의 존재를 알리고 사고를 예방할 수 있습니다.
  • 동물 행동 모니터링 시스템은 속도 추정을 사용하여 동물의 움직임을 추적하고 조난이나 질병의 징후를 감지합니다.
그림 2. 속도 추정은 사람의 보행 속도를 측정할 수 있습니다.

컴퓨터 비전을 사용한 속도 예측의 이점

비전 기반 속도 추정 시스템은 향상된 정확도, 비용 효율성 및 유연성으로 인해 기존의 센서 기반 방식을 대체하고 있습니다. LiDAR와 같은 고가의 센서에 의존하는 시스템과 달리 컴퓨터 비전은 표준 카메라를 사용하여 실시간으로 속도를 모니터링하고 분석합니다. 속도 추정을 위한 컴퓨터 비전 솔루션은 기존 교통 인프라와 원활하게 통합할 수 있습니다. 또한 이러한 시스템은 차량 유형 식별 및 교통 패턴 분석과 같은 여러 가지 복잡한 작업을 수행하여 전반적인 교통 흐름과 안전을 개선하도록 구축할 수 있습니다.

직접 체험해 보세요: 다음을 사용한 속도 추정 YOLOv8

이제 속도 추정과 그 응용에 대해 명확하게 이해했으니 코드를 통해 속도 추정을 컴퓨터 비전 프로젝트에 통합하는 방법을 자세히 살펴보겠습니다. YOLOv8 모델을 사용하여 움직이는 차량을 감지하고 속도를 추정해 보겠습니다.

이 예에서는 인터넷에서 다운로드한 도로 위의 자동차 동영상을 사용합니다. 동일한 동영상 또는 관련 동영상을 사용할 수 있습니다. YOLOv8 모델은 각 차량의 중심을 식별하고 이 중심이 비디오 프레임에서 수평선을 얼마나 빨리 가로지르는지에 따라 속도를 계산합니다. 

그림 3. 도로 위 자동차 영상 입력

자세히 알아보기 전에, 이 경우 거리 계산은 대략적인 것이며 유클리드 거리를 기준으로 한다는 점을 알아두세요. 카메라 보정은 고려되지 않았으므로 속도 추정치가 완전히 정확하지 않을 수 있습니다. 또한 예상 속도는 GPU의 속도에 따라 달라질 수 있습니다.

1단계: Ultralytics 패키지를 설치하는 것으로 시작합니다. 명령 프롬프트 또는 터미널을 열고 아래에 표시된 명령을 실행합니다. 


pip install ultralytics

설치 과정에 대한 단계별 지침과 모범 사례를 보려면 Ultralytics 설치 가이드를 참조하세요. YOLOv8 에 필요한 패키지를 설치하는 동안 문제가 발생하는 경우 일반적인 문제 가이드에 해결 방법과 유용한 팁이 나와 있습니다.

2단계: 다음으로 필요한 라이브러리를 가져옵니다. OpenCV 라이브러리는 비디오 처리를 처리하는 데 도움이 됩니다.


import cv2
from ultralytics import YOLO, solutions

3단계: 그런 다음 YOLOv8 모델을 로드하고 모델이 감지할 수 있는 클래스의 이름을 검색할 수 있습니다.


model = YOLO("yolov8n.pt")
names = model.model.names

지원되는 모든 모델을 확인하여 프로젝트에 가장 적합한 모델을 파악하세요.

4단계: 이 단계에서는 OpenCV의 VideoCapture 모듈을 사용하여 입력 비디오 파일을 엽니다. 또한 동영상의 너비, 높이, 초당 프레임 수(fps)를 추출합니다.


cap = cv2.VideoCapture("path/to/video/file.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))

5단계: 여기서 동영상 작성기를 초기화하여 최종 속도 추정 결과를 저장합니다. 출력 비디오 파일은 "speed_estimation.avi"로 저장됩니다.


video_writer = cv2.VideoWriter(
"speed_estimation.avi",
cv2.VideoWriter_fourcc(*"mp4v"),
fps, (w, h))

6단계: 다음으로 속도 추정을 위한 선 포인트를 정의할 수 있습니다. 입력 동영상의 경우, 이 선은 프레임 중앙에 수평으로 배치됩니다. 입력 동영상에 따라 가장 적합한 위치에 선을 배치하기 위해 값을 자유롭게 조정할 수 있습니다. 


line_pts = [(0, 360), (1280, 360)]

7단계: 이제 정의된 선 포인트와 클래스 이름을 사용하여 속도 추정 개체를 초기화할 수 있습니다.


speed_obj = solutions.SpeedEstimator(reg_pts=line_pts,
                                      names=names,
                                      view_img=True,)

8단계: 스크립트의 핵심은 비디오를 프레임 단위로 처리합니다. 각 프레임을 읽고 객체를 감지하고 추적합니다. 추적된 객체의 속도가 추정되고 주석이 달린 프레임이 출력 비디오에 기록됩니다.


while cap.isOpened():
  success, im0 = cap.read()
  if not success:        
    break
  tracks = model.track(im0, persist=True, show=False)
  im0 = speed_obj.estimate_speed(im0, tracks)
  video_writer.write(im0)

9단계: 마지막으로 비디오 캡처 및 라이터 개체를 해제하고 모든 OpenCV 창을 닫습니다.


cap.release()
video_writer.release()
cv2.destroyAllWindows()

10단계: 스크립트 저장하기. 터미널 또는 명령 프롬프트에서 작업하는 경우 다음 명령을 사용하여 스크립트를 실행합니다:


python your_script_name.py

코드가 성공적으로 실행되면 출력 비디오 파일은 다음과 같이 표시됩니다.

그림 4. YOLOv8 을 사용한 속도 추정 출력.


비전 기반 속도 추정의 과제

컴퓨터 비전을 사용하여 속도 추정을 구현할 때 발생하는 문제를 이해하는 것도 중요합니다. 비, 안개, 눈과 같은 불리한 기상 조건은 도로의 가시성을 방해할 수 있기 때문에 시스템에 문제를 일으킬 수 있습니다. 마찬가지로 다른 차량이나 물체에 의해 시야가 가려지면 시스템이 대상 차량의 속도를 정확하게 추적하고 추정하기 어려울 수 있습니다. 그림자나 햇빛으로 인한 눈부심을 유발하는 열악한 조명 조건도 속도 추정 작업을 더욱 복잡하게 만들 수 있습니다.

또 다른 과제는 계산 능력에 관한 것입니다. 실시간으로 속도를 예측하려면 고화질 교통 카메라의 수많은 시각적 데이터를 처리해야 합니다. 이 모든 것을 처리하고 모든 것이 지연 없이 빠르게 작동하도록 하려면 솔루션에 고가의 하드웨어가 필요할 수 있습니다.

그리고 개인정보 보호 문제도 있습니다. 이러한 시스템에서 수집하는 데이터에는 제조사, 모델, 번호판 정보와 같은 개인의 차량 세부 정보가 포함될 수 있으며, 이는 개인의 동의 없이 수집됩니다. 일부 최신 HD 카메라는 차량 내부 탑승자의 이미지까지 캡처할 수 있습니다. 이러한 데이터 수집은 심각한 윤리적, 법적 문제를 야기할 수 있으므로 최대한 신중하게 처리해야 합니다.

미래를 향한 속도 향상

속도 추정에 Ultralytics YOLOv8 모델을 사용하면 다양한 용도에 유연하고 효율적인 솔루션을 제공할 수 있습니다. 까다로운 조건에서의 정확성, 개인정보 보호 문제 해결과 같은 과제가 있지만 장점은 다양합니다. 컴퓨터 비전을 이용한 속도 추정은 기존 방식에 비해 비용 효율적이고 적응력이 뛰어나며 정확도가 높습니다. 교통, 스포츠, 감시, 자율 주행 자동차 등 다양한 분야에서 유용하게 사용할 수 있습니다. 모든 장점과 응용 분야를 고려할 때 미래 스마트 시스템의 핵심적인 부분이 될 것입니다.

AI에 관심이 있으신가요? 커뮤니티에 참여하세요! 의료, 농업 등 다양한 산업에서 AI를 활용하여 혁신적인 솔루션을 만드는 방법에 대해 자세히 알아보려면 GitHub 리포지토리를 살펴보세요. 함께 협업하고, 혁신하고, 배워보세요! 🚀

Facebook 로고트위터 로고LinkedIn 로고복사 링크 기호

이 카테고리에서 자세히 보기

인공지능의 미래
를 함께 만들어 갑시다!

머신 러닝의 미래와 함께하는 여정 시작하기