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

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

Рис. 1. Оценка скорости с использованием модели Ultralytics YOLOv8.
Помимо выявления нарушителей скоростного режима, системы оценки скорости с ИИ могут собирать данные для прогнозирования ситуации на дорогах. Эти прогнозы могут помочь в задачах управления движением, таких как оптимизация работы светофоров и распределение ресурсов. Полученная информация о характере движения и причинах заторов может использоваться при планировании новых дорог для снижения пробок.
Применение оценки скорости в других отраслях#
Приложения для оценки скорости выходят за рамки мониторинга дорог. Это также может быть полезно для отслеживания результатов спортсменов, помощи беспилотным автомобилям в понимании скорости движущихся вокруг них объектов, обнаружения подозрительного поведения и т. д. Везде, где камера может использоваться для измерения скорости объекта, можно применять оценку скорости на основе компьютерного зрения.
Вот несколько примеров того, где используется оценка скорости:
- Автономные автомобили 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: Здесь мы инициализируем объект записи видео (video writer) для сохранения окончательных результатов оценки скорости. Выходной видеофайл будет сохранен как “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 для оценки скорости предоставляет гибкое и эффективное решение для множества задач. Несмотря на такие трудности, как точность в сложных условиях и решение вопросов конфиденциальности, преимущества многочисленны. Оценка скорости на основе компьютерного зрения более экономична, адаптивна и точна по сравнению со старыми методами. Она полезна в различных сферах, таких как транспорт, спорт, видеонаблюдение и самоуправляемые автомобили. Со всеми этими преимуществами и сферами применения она обязательно станет ключевой частью будущих умных систем.
Интересуешься ИИ? Присоединяйся к нашему сообществу! Изучи наш репозиторий на GitHub, чтобы узнать больше о том, как мы используем ИИ для создания инновационных решений в различных отраслях, таких как здравоохранение и сельское хозяйство. Сотрудничай, создавай инновации и учись вместе с нами! 🚀






