Ultralytics YOLOv8 для оценки скорости в проектах компьютерного зрения
Узнай, как модель Ultralytics YOLOv8 можно использовать для оценки скорости в проектах компьютерного зрения. Попробуй сам на простом примере кода.

Наверняка все мы видели дорожные знаки с ограничением скорости. Некоторые из нас, возможно, даже получали по почте или электронной почте уведомление об автоматической фиксации превышения скорости. Системы управления дорожным движением на основе искусственного интеллекта (AI) могут автоматически выявлять нарушения скоростного режима благодаря компьютерному зрению. Для оценки скорости и повышения безопасности дорожного движения используются видеозаписи в реальном времени, снятые камерами на светофорах и автомагистралях.
Оценка скорости применяется не только для обеспечения безопасности на автомагистралях. Её можно использовать в спорте, автономных транспортных средствах и различных других сферах. В этой статье мы расскажем, как использовать модель Ultralytics YOLOv8 для оценки скорости в проектах компьютерного зрения. Мы также пошагово разберём пример кода, чтобы ты мог попробовать всё самостоятельно. Начнём!
Оценка скорости упрощает управление дорожным движением#
По данным Всемирной организации здравоохранения (WHO), ежегодно около 1,19 миллиона человек погибают в дорожно-транспортных происшествиях из-за превышения скорости. Кроме того, ещё от 20 до 50 миллионов человек получают травмы, не приводящие к смерти, многие из которых становятся причиной инвалидности. Важность безопасности дорожного движения невозможно переоценить, особенно когда оценка скорости помогает предотвращать аварии, спасать жизни и поддерживать безопасность и эффективность дорог.
Оценка скорости с помощью компьютерного зрения включает обнаружение и отслеживание объектов в видеокадрах для вычисления скорости их движения. Такие алгоритмы, как Ultralytics YOLOv8, могут обнаруживать и отслеживать объекты, например транспортные средства, в последовательных кадрах. Система измеряет расстояние, пройденное этими объектами, с помощью откалиброванных камер или опорных точек для определения расстояний в реальном мире. Измеряя время, за которое объекты перемещаются между двумя точками, система вычисляет их скорость по соотношению расстояния и времени.

Рис. 1. Оценка скорости с использованием модели Ultralytics YOLOv8.
Помимо выявления нарушителей скоростного режима, интегрированные с AI системы оценки скорости могут собирать данные для прогнозирования дорожной ситуации. Эти прогнозы помогают решать задачи управления дорожным движением, например оптимизировать длительность сигналов светофора и распределение ресурсов. Анализ структуры трафика и причин заторов можно использовать для планирования новых дорог и снижения интенсивности движения.
Применение оценки скорости в других отраслях#
Оценка скорости применяется не только для мониторинга дорог. Она также полезна для отслеживания результатов спортсменов, помогает автономным транспортным средствам определять скорость окружающих объектов, выявлять подозрительное поведение и решать другие задачи. Везде, где камеру можно использовать для измерения скорости объекта, подойдёт оценка скорости с помощью компьютерного зрения.
Вот несколько примеров применения оценки скорости:
- Автономные автомобили Tesla используют оценку скорости на основе компьютерного зрения для предотвращения столкновений.
- Компьютерное зрение и оценка скорости будут использоваться на Олимпийских играх 2024 года для повышения качества аналитики результатов в легкоатлетических дисциплинах.
- Умные города исследуют анализ походки пешеходов, чтобы отслеживать скорость ходьбы и повышать мобильность и безопасность в городской среде. Эти системы могут предупреждать водителей о присутствии пешеходов и предотвращать аварии.
- Системы мониторинга поведения животных используют оценку скорости для отслеживания перемещений животных и выявления признаков стресса или болезни.

Рис. 2. Оценка скорости позволяет измерять скорость ходьбы человека.
Преимущества оценки скорости с помощью компьютерного зрения#
Системы оценки скорости на основе компьютерного зрения заменяют традиционные методы на основе датчиков благодаря повышенной точности, экономичности и гибкости. В отличие от систем, использующих дорогие датчики, например LiDAR, компьютерное зрение применяет стандартные камеры для мониторинга и анализа скорости в реальном времени. Решения для оценки скорости на основе компьютерного зрения можно легко интегрировать в существующую дорожную инфраструктуру. Кроме того, такие системы можно настроить для выполнения множества сложных задач, например определения типа транспортного средства и анализа структуры трафика, чтобы повысить общую эффективность и безопасность дорожного движения.
Попробуй сам: оценка скорости с помощью Ultralytics YOLOv8#
Теперь, когда мы разобрались, что такое оценка скорости и где она применяется, давай подробнее рассмотрим, как интегрировать оценку скорости в проекты компьютерного зрения с помощью кода. Мы обнаружим движущиеся транспортные средства и оценим их скорость с помощью модели Ultralytics YOLOv8.
В этом примере используется видео с автомобилями на дороге, скачанное из интернета. Ты можешь использовать это же видео или любое другое подходящее видео. Модель Ultralytics YOLOv8 определяет центр каждого транспортного средства и вычисляет его скорость на основе того, как быстро этот центр пересекает горизонтальную линию в видеокадре.
Прежде чем мы начнём, важно отметить, что в данном случае расстояние вычисляется приблизительно на основе евклидова расстояния. Калибровка камеры не учитывается, поэтому оценка скорости может быть не полностью точной. Кроме того, рассчитанная скорость может зависеть от быстродействия твоего GPU.
Шаг 1: Начнём с установки пакета Ultralytics. Открой командную строку или терминал и выполни указанную ниже команду.
pip install ultralyticsЗагляни в наше руководство по установке Ultralytics, где приведены пошаговые инструкции и рекомендации по установке. Если при установке необходимых пакетов для YOLOv8 возникнут проблемы, решения и полезные советы можно найти в нашем руководстве по распространённым проблемам.
Шаг 2: Далее импортируем необходимые библиотеки. Библиотека OpenCV поможет нам обрабатывать видео.
import cv2
from ultralytics import YOLO, solutionsШаг 3: Затем загрузим модель Ultralytics YOLOv8 и получим названия классов, которые модель умеет обнаруживать.
model = YOLO("yolov8n.pt")
names = model.model.namesПосмотри все поддерживаемые нами модели, чтобы понять, какая из них лучше всего подходит для твоего проекта.
Шаг 4: На этом шаге мы откроем входной видеофайл с помощью модуля VideoCapture библиотеки OpenCV. Мы также получим ширину, высоту и частоту кадров видео (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:
print("Video frame is empty or video processing has been successfully completed.")
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Проблемы оценки скорости на основе компьютерного зрения#
Также важно понимать, с какими сложностями связано внедрение оценки скорости с помощью компьютерного зрения. Неблагоприятные погодные условия, такие как дождь, туман или снег, могут нарушать работу системы, поскольку ухудшают видимость дороги. Аналогично, перекрытия, вызванные другими транспортными средствами или объектами, могут затруднить точное отслеживание и определение скорости целевого автомобиля. Плохое освещение, создающее тени, или блики от солнца также могут дополнительно усложнить задачу оценки скорости.
Ещё одна проблема связана с вычислительными ресурсами. Чтобы оценивать скорость в реальном времени, необходимо обрабатывать большие объёмы визуальных данных с высококачественных дорожных камер. Твоему решению может потребоваться дорогостоящее оборудование, способное справиться с этой нагрузкой и обеспечить быструю работу без задержек.
Кроме того, существует проблема конфиденциальности. Данные, собираемые такими системами, могут включать сведения о транспортном средстве человека, например марку, модель и номерной знак, полученные без его согласия. Некоторые современные HD-камеры могут даже снимать людей внутри автомобиля. Сбор таких данных может создавать серьёзные этические и юридические проблемы, которые необходимо решать с особой осторожностью.
На высокой скорости — в будущее#
Использование модели Ultralytics YOLOv8 для оценки скорости обеспечивает гибкое и эффективное решение для множества задач. Несмотря на такие проблемы, как точность в сложных условиях и необходимость защиты конфиденциальности, преимущества этого подхода многочисленны. Оценка скорости с помощью компьютерного зрения более экономична, адаптивна и точна по сравнению с традиционными методами. Она полезна в различных сферах, включая транспорт, спорт, наблюдение и беспилотные автомобили. Благодаря всем этим преимуществам и вариантам применения ей суждено стать важной частью будущих интеллектуальных систем.
Интересуешься AI? Присоединяйся к нашему сообществу! Изучи наш репозиторий на GitHub, чтобы узнать больше о том, как мы используем AI для создания инновационных решений в таких отраслях, как здравоохранение и сельское хозяйство. Сотрудничай, внедряй инновации и учись вместе с нами! 🚀









