Pull to refresh

Comments 21

UFO just landed and posted this here

>> Мобайлнет под процессоры больше заточен

Запускаются такие хобби-проекты на дешевых облаках, где Tesla 100 для Yolo явно не вариант.

UFO just landed and posted this here

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

UFO just landed and posted this here

О, спасибо, openvino как хорошо развился, несколько лет назад там было три модели.

Я честно говоря думал,что оно так и останется, как часто бывает у Интела.

Запускаются такие хобби-проекты на дешевых облаках, где Tesla 100 для Yolo явно не вариант.

В Colab или Kaggle можно оценку для GPU сделать, по крайней мере, грубо сравнить с того же сервера CPU.

Оценка это хорошо, но мы же про тестирование на реальном окружении

Детекторы в OpenCV мягко говоря не самые быстрые. YOLOv4 модель тренированная в darknet и экспортированная в tkDNN работает со скоростью 170-200 fps на 2080TI в режиме FP16, с INT8 должно быть еще быстрее.

Вы имеете в виду, что сама реализация DNN не быстрая?

Использованная yolo модель взята с их сайта без изменений и тренирована скорее всего по всем правилам даркнета (хотя свечку я понятно не держал).

Да. Только если недавно не появилась возможность запускать сам даркнет в OpenCV, а не просто использовать конфиги и сериализованную модель, подтверждения этому я не нашел.

Пока самый быстрый вариант инференса на котором остановился сам, как уже упомянул выше - кастомная darknet YOLOv4 модель экспортированная в tkDNN к которому пришлось дописать простой Python API.

Для ваших целей вы не те модели смотрели/сравнивали. В целом вот вам список более быстрых кандидатов без глубокого погружения:
1) yolov5 достаточно отлажен и неплох уже. И там много быстрых моделей. Когда нужна скорость — там больше вариантов чем у v4. И поддержка неплохая/баги фиксят.
2) Yolox достаточно шустрый
3) Можно использовать указанные у вас yolov4, но дать им сильно меньшее разрешение на вход. Учитывая что это сильно более мощные модели, а ускорение будет пропорционально площади — может и вытянет до нужных вам скоростей.
4) Есть несколько платформ где можно у сеток достаточно удобно менять бэкбоны. И потестить тот же SSD/его ближайшие аналоги с более эффективными под вашу платформу бекбонами. Собственно detectron2, mmdetection, PaddleDetection
По бекбонам — Efficientnet, BlazeNet, младшие реснеты.

Но если честно, то думаю, чтобы вам не запариваться проще всего 1/2 пункты проверить.
  1. Какая то у yolo5 мутная репутация, не понятно чему верить.

  2. На вход yolo4 подаю 400x400 (также ssd). Можно подать меньше, но вряд-ли разрыв изменится.

  3. Спасибо, почитаю про остальные

1) Они два года назад выпустили сырое нечто. Сейчас большая часть багов пофикшена, я бы сказал.
2) Можно подавать на yolo 200-200, он будет в 4 раза быстрее, а по качеству просядет не так плохо и все равно может быть лучше SSD.

Очень странно судить о качестве детектора по одной (1 шт.) картинке. Почему не взяли какую-то более значимую выборку?

В реальных применениях все универсальные детекторы показывают посредственные результаты. Нужно чётко определиться в каких условиях детектор будет работать: размер объектов, движение и скорость, высота установки камеры, угол, под какими будут видны целевые объекты. Например если нам нужно распознавание людей в магазине (3-10 м), то модель, обученная на ванильном СОСО с кучей изображений людей высотой в 10-20 пикселей будет работать плохо. Надо или дообучать модель, или хотя бы подстроить желаемый mAP.

Я тестировался на нескольких картинках, разница была примерно такая же. Эту выбрал для иллюстрации.

В реальных применениях все универсальные детекторы показывают посредственные результаты

И YOLO и SSD показали достаточнные для меня результаты и весь вопрос был в скорости.

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

Что касается скорости работы YOLOv4, то результаты меня откровенно удивили. Приходилось экспериментировать довольно давно вот с этой реализацией YOLOv3 для детектирования автомобилей. Без каких-либо больших усилий удавалось получить скорость работы в 5-10 кадров/сек при неплохом качестве детектирования. Возможно, используемая Вами реализация из OpenCV нуждается в дополнительной настройке.

Интересно, Yolo3 считается медленнее чем Yolo4, возможно вы тестировались на хорошем железе?

Имеет значение не само FPS (которое понятно зависит от окружения) а относительная скорость разных детекторов.

Качество детектирования крупных объектов у всех рассмотренных сетей на достаточном уровне.

возможно вы тестировались на хорошем железе?

Если правильно помню, на GTX1060 6Gb.

Интересно, Yolo3 считается медленнее чем Yolo4


Результаты для меня тем более удивительные, что YOLOv3 по скорости примерно сопоставима с SSD. Разница же в 20 раз в сторону ухудшения, полученная для YOLOv4 в Вашем эксперименте, заставляет думать, что возможно в реализации из OpenCV есть какие-то нюансы. Например, здесь обсуждают, что в определенных кейсах может быть просадка производительности как раз примерно в те же 20 раз при выборе арифметики FP16.

Аа, все таки у вас был GPU, я то тестировался именно на CPU, наверное стоило это подчеркнуть в статье более явно, потому что таргет по железу - недорогие облака, у них обычно нет GPU.

Ну тогда понятно, SSD с MobileNet backbone действительно должен быть быстрее на CPU. В этом ключе Ваши результаты согласуются с данными из этой публикации.
Sign up to leave a comment.

Articles