1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ywuwgij-Deep-SORT-YOLOv4

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Введение

Этот проект был вдохновлён:

Я заменил YOLO v3 на YOLO v4 и добавил опцию асинхронной обработки, что значительно улучшает FPS. Однако при использовании асинхронной обработки мониторинг FPS отключается, так как он неточен.

Кроме того, я взял алгоритм из этой статьи и внедрил его в deep_sort/track.py.

Оригинальный метод подтверждения треков основывался просто на количестве раз, когда объект был обнаружен, без учёта достоверности обнаружения, что приводило к высоким показателям ложных срабатываний при отслеживании, когда происходили ненадёжные обнаружения (например, истинные срабатывания с низкой достоверностью или ложные срабатывания с высокой достоверностью). Алгоритм фильтрации треков значительно снижает это, вычисляя среднюю достоверность обнаружения по заданному количеству обнаружений перед подтверждением трека.

Смотрите видео сравнения ниже.

Фильтрация треков с низкой достоверностью обнаружения

Comparison Video Link

Перейдите в соответствующую папку, чтобы использовать фильтрацию треков с низкой достоверностью обнаружения. Видео выше демонстрирует разницу.

См. раздел настроек для инструкций по параметрам.

Сравнение видео YOLO v3 и YOLO v4 с Deep SORT

Comparison Video Link

С асинхронной обработкой

Как вы можете видеть на гифке, асинхронная обработка имеет лучший FPS, но вызывает заикание.

Этот код обнаруживает и отслеживает только людей, но может быть изменён для обнаружения других объектов путём изменения строк 103 в yolo.py. Например, чтобы обнаруживать людей и автомобили, измените

if predicted_class != 'person':
    continue

на

if predicted_class not in ('person', 'car'):
    continue

Производительность

FPS в реальном времени с записью видео:

  • ~4,3 кадра в секунду с YOLO v3;
  • ~10,6 кадров в секунду с YOLO v4.

Отключение отслеживания дало ~12,5 кадров в секунду с YOLO v4.

YOLO v4 работает намного быстрее и кажется более стабильным, чем YOLO v3. Все тесты проводились с использованием графического процессора Nvidia GTX 1070 8 ГБ и процессора i7-8700k.

Быстрый старт

Скачать и преобразовать модель Darknet YOLO v4 в модель Keras, соответствующим образом изменив convert.py, и запустить:

python convert.py

Затем запустите demo.py:

python demo.py

Настройки

Обычный Deep SORT

По умолчанию отслеживание и запись видео включены, а асинхронная обработка отключена. Их можно изменить в demo.py, изменив:

tracking = True
writeVideo_flag = True
asyncVideo_flag = False

Чтобы изменить целевой файл в demo.py:

file_path = 'video.webm'

Чтобы изменить настройки вывода в demo.py:

out = cv2.VideoWriter('output_yolov4.avi', fourcc, 30, (w, h))

Deep SORT с фильтрацией треков с низкой достоверностью обнаружения

Эта версия имеет возможность скрывать обнаружения объектов вместо отслеживания. Настройки в demo.py следующие:

show_detections = True
writeVideo_flag = True
asyncVideo_flag = False

Установка show_detections = False скроет обнаружения объектов и покажет среднюю достоверность обнаружения и наиболее часто обнаруживаемый класс для каждого трека.

Чтобы изменить порог средней достоверности обнаружения, перейдите в deep_sort/tracker.py и измените аргумент adc_threshold в строке 40. Здесь вы также можете изменить количество шагов, на которые будет усредняться достоверность обнаружения, изменив здесь n_init.

Обучение собственных моделей

YOLO v4

См. https://github.com/Ma-Dan/keras-yolo4.

Deep SORT

Обратите внимание, что используемая здесь модель отслеживания обучена только на отслеживании людей, поэтому вам нужно самостоятельно обучить модель для отслеживания других объектов.

Подробнее об обучении собственной модели отслеживания см. на странице https://github.com/nwojke/cosine_metric_learning.

Для тех, кто хочет обучить собственную модель отслеживания транспортных средств, я создал инструмент для преобразования набора данных DETRAC в обучаемый. Формат для обучения косинусной метрики можно найти в моём репозитории отслеживания объектов здесь. Инструмент был создан с использованием упомянутой ранее статьи как источника с теми же параметрами.

Зависимости

  • Tensorflow GPU 1.14
  • Keras 2.3.1
  • opencv-python 4.2.0
  • imutils 0.5.3
  • numpy 1.18.2
  • sklearn

Запуск с Tensorflow 1.14 и 2.0

Перейдите в соответствующую папку и запустите скрипты Python.

Среда Conda, используемая для Tensorflow 2.0 (см. requirements.txt):

  • imutils 0.5.3
  • keras 2.3.1
  • matplotlib 3.2.1
  • numpy 1.18.4
  • opencv-python 4.2.0.34
  • pillow 7.1.2
  • python 3.6.10
  • scikit-learn 0.23.1
  • scipy 1.4.1
  • sklearn 0.19
  • tensorboard 2.2.1
  • tensorflow 2.0.0
  • tensorflow-estimator 2.1.0
  • tensorflow-gpu 2.2.0

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Я заменил YOLO v3 на YOLO v4 и добавил опцию асинхронной обработки, что значительно повышает FPS. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ywuwgij-Deep-SORT-YOLOv4.git
git@api.gitlife.ru:oschina-mirror/ywuwgij-Deep-SORT-YOLOv4.git
oschina-mirror
ywuwgij-Deep-SORT-YOLOv4
ywuwgij-Deep-SORT-YOLOv4
master