YOLOv4 – самая точная real-time нейронная сеть на датасете Microsoft COCO

    Darknet YOLOv4 быстрее и точнее, чем real-time нейронные сети Google TensorFlow EfficientDet и FaceBook Pytorch/Detectron RetinaNet/MaskRCNN.

    Эта же статья на medium: medium
    Код: github.com/AlexeyAB/darknet
    Статья: arxiv.org/abs/2004.10934
    Обсуждение YOLOv4-tiny 1770 FPS: www.reddit.com/r/MachineLearning/comments/hu7lyt/p_yolov4tiny_speed_1770_fps_tensorrtbatch4
    Обсуждение: www.reddit.com/r/MachineLearning/comments/gydxzd/p_yolov4_the_most_accurate_realtime_neural


    Мы покажем некоторые нюансы сравнения и использования нейронных сетей для обнаружения объектов.

    Нашей целью было разработать алгоритм обнаружения объектов для использования в реальных продуктах, а не только двигать науку вперед. Точность нейросети YOLOv4 (608x608) – 43.5% AP / 65.7% AP50 Microsoft-COCO-testdev.

    62 FPS – YOLOv4 (608x608 batch=1) on Tesla V100 – by using Darknet-framework
    400 FPS – YOLOv4 (320x320 batch=4) on RTX 2080 Ti – by using TensorRT+tkDNN
    32 FPS – YOLOv4 (416x416 batch=1) on Jetson AGX Xavier – by using TensorRT+tkDNN




    Для начала несколько полезных ссылок



    Сравнение различных нейронных сетей


    Наша нейронная сеть YOLOv4 и наш собственный DL-фреймворк Darknet (C/C++/CUDA) лучше по скорости FPS и точности AP50:95 и AP50 на датасете Microsoft COCO, чем DL-фреймворки и нейронные-сети: Google TensorFlow EfficientDet, FaceBook Detectron RetinaNet/MaskRCNN, PyTorch Yolov3-ASFF, и многие другие… YOLOv4 достигает точности 43.5% AP / 65.7% AP50 на тесте Microsoft COCO при скорости 62 FPS TitanV или 34 FPS RTX 2070. В отличии от других современных детекторов, YOLOv4 может обучить любой, у кого есть игровая видеокарта nVidia с 8-16 GB VRAM. Теперь не только крупные компании могут обучать нейронную сеть на сотнях GPU / TPU для использования больших размеров mini-batch для достижения более высокой точности, поэтому мы возвращаем контроль над искусственным интеллектом обычным пользователям, потому что для YOLOv4 большая мини-партия не требуется, можно ограничиться размером 2 – 8.

    YOLOV4- оптимальная для использования real-time, т.к. сеть лежит на кривой оптимальности по Парето на графике AP(accuracy) / FPS(speed).



    Графики точности (AP) и скорости (FPS) множества нейронных сетей для обнаружения объектов замеренных на видеокартах GPU TitanV/TeslaV100, TitanXP/TeslaP100, TitanX/TeslaM40 для двух основных индикаторов точности AP50:95 и AP50

    Для честного сравнения мы берём данные из статей и сравниваем только на GPU с одинаковой архитектурой.

    У большинства практических задач есть минимально необходимые требования к детекторам – это минимально допустимые точность и скорость. Обычно минимально допустимая скорость от 30 FPS (кадров в секунду) и выше для real-time систем.

    Как видно из графиков, в Real-time системах с FPS 30 и более:

    • для YOLOv4-608 необходимо использовать RTX 2070 за 450$ (34 FPS) с точностью 43.5% AP / 65.7% AP50
    • для EfficientDet-D2 необходимо использовать TitanV за 2250$ (42 FPS) с точностью 43.0% AP / 62.3% AP50
    • для EfficientDet-D0 необходимо использовать RTX 2070 за 450$ (34 FPS) с точностью 33.8% AP / 52.2% AP50

    Т.е. YOLOv4 требует в 5 раза более дешевое оборудование и при этом точнее, чем EfficientDet-D2 (Google-TensorFlow). Можно использовать EfficientDet-D0 (Google-TensorFlow) тогда стоимость оборудования будет одинаковая, но точность будет на 10% AP ниже.
    Кроме того, некоторые промышленные системы имеют ограничения по тепловыделению или по использованию пассивной системы охлаждения – в этом случае вы не сможете использовать TitanV даже имея деньги.

    При использовании YOLOv4 (416x416) на GPU RTX 2080 Ti с использованием TensorRT+tkDNN мы достигаем скорость в 2x раза больше, а при использовании batch=4 в 3x-4x раза больше – для честного сравнения мы не приводим эти результаты в статье на arxiv.org:

    Нейронная сеть YOLOv4 (416x416) FP16 (Tensor Cores) batch=1 достигает 32 FPS на вычислителе nVidia Jetson AGX Xavier при использовании библиотеки TensorRT+tkDNN: github.com/ceccocats/tkDNN
    Чуть меньшую скорость дает библиотека OpenCV-dnn скомпилированная с CUDA: docs.opencv.org/master/da/d9d/tutorial_dnn_yolo.html

    Так же вышла модель YOLOv4-tiny с экстремально высокой скоростью 370 FPS на GPU 1080ti, или 16 FPS на Jetson Nano (max_N, 416x416, batch=1, Darknet-framework). Со скоростью до 1000 FPS используя OpenCV / tkDNN-TensorRT: github.com/AlexeyAB/darknet/issues/6067

    Обсуждение на: Reddit

    Иногда скорость (FPS) некоторых нейронных сетей в статьях указывается при использовании высокого batch size или при тестировании на специализированном программном обеспечении (TensorRT), которое оптимизирует сеть и показывает повышенное значение FPS. Сравнение одних сетей на TRT с другими сетями без TRT не является честным. Использование высокого batch size увеличивает FPS, но также увеличивает задержку (а не уменьшает её) по сравнению с batch=1. Если сеть с batch=1 показывает 40 FPS, а с batch=32 показывает 60 FPS, то задержка будет 25ms для batch=1, и ~500ms для batch=32, т.к. будут обрабатываться только ~2 пакета (по 32 изображения) в секунду, из-за этого использование batch=32 неприемлемо во многих промышленных системах. Поэтому мы сравнивали на графиках результаты только c batch=1 и без использования TensorRT.

    Любой процесс может управляться либо людьми, либо компьютерами. Когда компьютерная система действует с большим запаздыванием из-за малой скорости и совершает слишком много ошибок, то ей нельзя доверить полное управление действиями, в этом случае процессом управляет человек, а компьютерная система только дает подсказки – это рекомендательная система – человек работает, а система только подсказывает где были совершены ошибки. Когда же система работает быстро и с высокой точностью, такая система может управлять процессом самостоятельно, а человек только присматривает за ней. Поэтому всегда важны и точность, и скорость системы. Если вам кажется, что 120 FPS для YOLOv4 416x416 это слишком много для вашей задачи, и лучше взять алгоритм медленнее и точнее, то скорее всего в реальных задачах вы будете использовать что-то слабее, чем Tesla V100 250 Watt, например, RTX 2060/Jetson-Xavier 30-80 Watt, в этом случае вы получите 30 FPS на YOLOv4 416x416, а другие нейронные сети по 1-15 FPS или вообще не запустятся.

    Особенности обучения различных нейронных сетей


    Вы должны обучать EfficientDet с размером mini-batch = 128 на нескольких GPU Tesla V100 32GB, в то время как YOLOv4 была обучена всего на одной GPU Tesla V100 32GB с mini-batch = 8 = batch/subdivisions, и может быть обучена на обычной игровой видеокарте 8-16GB GPU-VRAM.
    Следующий нюанс, трудность обучения нейронной сети для обнаружения собственных объектов. Сколько бы времени вы не обучали другие сети на одной GPU 1080 Ti, вы не получите заявленной точности, показанной на графике выше. Большинство сетей (EfficientDet, ASFF, …) надо обучать на 4 – 128 GPUs (с большим размером mini-batch используя syncBN) и надо обучать каждый раз заново для каждого разрешения сети, без выполнения обоих условий невозможно достичь заявленной ими точности AP или AP50.


    Вы можете видеть зависимость точности обнаружения объектов от размера минибатча в других детекторах, т.е. используя 128 видеокарт вместо 8 видеокарт и скорость обучения в 10 раз выше и конечная точность на 1.5 AP выше – MegDet: A Large Mini-Batch Object Detector arxiv.org/abs/1711.07240

    Yolo ASFF: arxiv.org/abs/1911.09516
    Following [43], we introduce a bag of tricks in the training process, such as the mixup algorithm [12], the cosine [26] learning rate schedule, and the synchronized batch normalization technique [30].

    EfficientDet: arxiv.org/abs/1911.09070
    Synchronized batch normalization is added after every convolution with batch norm decay 0.99 and epsilon 1e-3.

    Each model is trained 300 epochs with batch total size 128 on 32 TPUv3 cores.

    cloud.google.com/tpu/docs/types-zones#europe
    v3-32 TPU type (v3) – 32 TPU v3 cores – 512 GiB Total TPU memory

    Вы должны использовать 512 GB TPU/GPU-RAM чтобы обучить модель EfficientDet с Synchronized batch normalization при batch=128, в то время как для обучения YOLOv4 использовался mini-batch=8 и только 32 GB GPU-RAM. Несмотря на это, YOLOv4 быстрее/точнее публичных сетей, хотя обучена только 1 раз с разрешением 512x512 на 1 GPU (Tesla V100 32GB / 16GB). При этом использование меньшего размера mini-batch size и GPU-VRAM не приводит к такой драматической потери точности, как в других нейронных сетях:


    Источник: arxiv.org/abs/2004.10934

    Так что вы можете обучать искусственный интеллект локально на своем ПК, вместо загрузки датасета в облако – это гарантирует защиту ваших персональных данных и делает обучение искусственного интеллекта доступным каждому.

    Нашу сеть достаточно обучить один раз с network resolution 512x512, и затем можно использовать с разными network resolutions в диапазоне: [416x416 – 512x512 – 608x608].

    Большинство же других моделей требуется обучать каждый раз отдельно для каждого network resolution, из-за этого обучение занимает в разы больше времени.

    Особенности измерения точности алгоритмов обнаружения объектов


    Всегда можно найти изображение, на котором один алгоритм будет работать плохо, а другой алгоритм будет работать хорошо, и наоборот. Поэтому для тестирования алгоритмов обнаружения используется большой набор из ~20 000 изображений и 80 различных типов объектов — MSCOCO test-dev dataset.

    Чтобы алгоритм не пытался просто запомнить хэш каждого изображения и координаты на нем (overfitting), точность обнаружения объектов всегда проверяется на изображениях и метках, которые алгоритм не видел во время обучения – это гарантирует, что алгоритм сможет обнаруживать объекты на изображениях/видео, которые он никогда не видел.

    Чтобы никто не мог совершить ошибку в расчете точности, в открытом доступе есть только тестовые изображения test-dev, на которых вы производите обнаружение, а результаты отправляете на CodaLab evaluation server, на котором программа сама сравнивает ваши результаты с тестовыми аннотациями, которые никому не доступны.

    MSCOCO dataset состоит из 3-ех частей

    1. Обучающий набор: 120 000 изображений и json-файл с координатами каждого объекта
    2. Валидационный набор: 5 000 изображений и json-файл с координатами каждого объекта
    3. Тестовый набор: 41 000 jpg-изображений без координат объектов (часть из этих изображений используется для определения точности в задачах: Object Detection, Instance Segmentation, Keypoints, ...)

    Особенности разработки YOLOv4


    При разработке YOLOv4 мне приходилось самому разрабатывать и нейронную сеть YOLOv4 и фреймворк Darknet на C/C++/CUDA. Т.к. в Darknet нет автоматического дифференцирования и автоматического выполнения chain-rule, то все градиенты приходится реализовывать вручную на CUDA C++. С другой стороны, мы можем отходить от строгого следования chain-rule, изменять backpropagation и пробовать очень нетривиальные вещи для повышения стабильности обучения и точности.

    Дополнительные выводы при создании нейронных сетей


    • Не всегда лучшая сеть для классификации объектов будет лучшей в качестве backbone для сети, используемой для обнаружения объектов
    • Использование weights обученных с фичами, которые увеличили точность в классификации, может негативно сказаться на точности детектора (на некоторых сетях)
    • Не все фичи заявленные в различных исследованиях улучшают точность сети
    • Не все фичи совместимы между собой и некоторые комбинации фич зачастую уменьшают точность сети при использовании совместно.
    • Не всегда сеть с более низким BFLOPS будет быстрее, даже если BFLOPS меньше в десятки раз
    • Сети для обнаружения объектов требуют более высокого разрешения сети для обнаружения множества объектов разного размера и их точного местоположения, это требует более высокого receptive field для покрытия увеличенного разрешения сети, а значит требуется больше слоев со stride=2 и/или conv3x3, и больший размер weights (filters) для запоминания большего числа деталей объектов.

    Использование и обучение YOLOv4


    Обнаружение объектов с помощью обученных моделей YOLOv4 встроено в библиотеку OpenCV-dnn github.com/opencv/opencv/issues/17148 так что вы можете использовать YOLOv4 напрямую из OpenCV без использования фреймворка Darknet. Библиотека OpenCV поддерживает выполнение нейронных сетей на CPU, GPU (nVidia GPU), VPU (Intel Myriad X). Подробнее: docs.opencv.org/master/da/d9d/tutorial_dnn_yolo.html

    OpenCV (dnn) framework:


    Darknet framework:


    tkDNN+TensorRT — Максимальная скорость обнаружения объектов используя YOLOv4: TensorRT + tkDNN github.com/ceccocats/tkDNN

    • 300 FPS – YOLOv4 (416x416 batch=4) on RTX 2080 Ti
    • 32 FPS – YOLOv4 (416x416 batch=1) on Jetson AGX Xavier

    Tencent-NCNN (C/C++/GLSL) — Максимальная скорость обнаружения объектов на Смартфонах (iOS / Android) используя YOLOv4 без каких-либо дополнительных библиотек или любых зависимостей: github.com/Tencent/ncnn

    Использование YOLOv4 может быть расширено до обнаружения 3D-Rotated-Bboxes или ключевых точек / facial landmarks, например:

    * 3D-Rotated-Bboxes: github.com/maudzung/Complex-YOLOv4-Pytorch


    * Key-points / facial-landmarks: github.com/ouyanghuiyu/darknet_face_with_landmark

    Комментарии 37

      0
      По поводу того что для трейна EfficientDet нужны очень большие батчи — только если трейн с нуля. Если использовать перенос обучения с использованием небольшого датасета — использование небольших батчей не такая уж проблема. Пробовал на нескольких небольших датасетах — вроде неплохо себя EfficientDet показывал.
        +2
        Есть 2 варианта:
        1. Если делать Transfer-learning / Fine-tuning без заморозки weights/BN, то точность на 0.5 — 1.5 AP ниже с малым mini-batch, чем с большим, т.к. статистика mean/variance будет вычислена заново с малым mini-batch.
        2. Если заморозить большую часть weights и BN-statistic, то проблем с маленьким mini-batch почти нет, но это подходит только если контекст и объекты обучающего датасета сильно совпадают с pre-trained weights, т.к. в этом случае большая (замороженная) часть сети не обучается. Если контекст/объекты сильно отличаются, то точность может упасть на 10 — 20 AP.


        Это справедливо для больших корректных датасетов: Microsoft COCO, Google OpenImages, Stanford ImageNet, Berkeley BDD100k, Toyota Kitti… А на малых датасетах что угодно может быть.

        Для точности формулировок Transfer-learning vs Fine-tuning: github.com/AlexeyAB/darknet/issues/2139
        • Transfer-learning — перенос весов из одной задачи в другую: классификация -> обнаружение
        • Fine-tuning — перенос весов между одинаковыми задачами: обнаружение -> обнаружение
          0
          Использовал веса для backbone, которым выступает EfficientNet, а трейнилась собственно «голова» — biFPN, так что все же перенос обучения. И backbone замораживалась, но за уточнение спасибо.
        0
        Приветствую автора статьи, почему centermask только в одном графике, как показывает текущие результаты по всем детекторам в разрезе MAP/Fps эта сеть прямой конкурент по данным показателям для Yolov4, я тестировал обе сети (сконвертированный centermask с помощью torch2trt и yolov4 от tkdnn) и для моих задач результат в разрезе качества и скорости практически идентичны
          +2
          Потому что мы сравниваем данные опубликованные в статьях авторов этих нейронных сетей, за которые они ручаются и вряд ли они занижают свои результаты и достижения. И потому что авторы CetnerMask опубликовали свои результаты только на GPU Pascal и только AP (без AP50).

          Все фичи которые применяются при определении точности (ensembles, multiscale/flip, high resolution, ...), должны применяться и при определении скорости.

          В отличие от большинства других статей, мы публикуем наши результаты на нескольких архитектурах GPU: Maxwell/Pascal/Volta. И сравниваем точность/скорость только на одинаковых архитектурах.

          А не как авторы статей CenterNet, EfficientDet,… запускают свои сети на быстрых GPU, а чужие на старых медленных GPU )

          Авторы статьи CenterNet сравнили свой CenterNet на GPU-Pascal с производительность 11 TFlops с Yolov3 на старой GPU-Maxwell с производительностью 6 TFlops.

          Screenshot CenterNet: arxiv.org/pdf/1904.07850.pdf
          6.1. Object detection Table 1 shows our results on COCO validation with different backbones and testing options, while Figure 1 compares CenterNet with other real-time detectors. The running time is tested on our local machine, with Intel Core i7-8086K CPU, Titan Xp GPU, Pytorch 0.4.1, CUDA 9.0, and CUDNN 7.1



          Screenshot Yolov3 (2018): arxiv.org/pdf/1804.02767v1.pdf


          А если сравнить честно на одной и той же GPU, то:
          CenterNet-DLA (SS + Flip) — 28 FPS (TitanXP) — 39.2% AP — 57.1% AP50
          Darknet YOLOv3 608x608 — ~34 FPS (TitanXP) — 33.0% AP — 57.9% AP50

          Авторы EfficientDet из Google Brain пошли ещё дальше, они использовали GPU Volta с Tensor Cores — запустили EfficientDet на GPU не на 1, а на 2 поколения выше, чем Yolov3 :) Но они хотя бы формально поступили чуть более честно – к своему неверному сравнению сделали сноску (что сравнение не верно) – которую увидят только те, кто разбираются: arxiv.org/pdf/1911.09070v4.pdf


          Как выглядит честное сравнение Yolov3 и EfficientDet на одинаковом GPU вы видите на наших графиках.

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

          Чего уж там говорить о горе любителях сравнения из интернета, которые точность проверяют на одном фреймворке с высоким разрешением с multiscale/flip inference-time-data-augmentation и на val5k-датасете, а скорость проверяют на другом фреймворке с низким разрешением без multiscale/flip да ещё с квантованием int8. И сравнивают с другими моделями на test-dev датасете да ещё так же на разных GPU. Вообщем все что только можно смешают и перепутают.

          PS
          YOLOv4 создавалась при поддержке Academia Sinica и MoST (Ministry of Science and Technology) Taiwan в рамках проекта, целью которого изначально было не создать, а выбрать лучшую нейронную сеть по заказу коммерческих корпораций. Поэтому они достаточно тщательно проверяли наши результаты. Собственно Tsung-Yi Lin автор MSCOCO, RetinaNet, FPN,… выходец из Academia Sinica тоже в курсе этих разработок, как и многие другие значимые люди.
            0
            > Потому что мы сравниваем данные опубликованные в статьях авторов этих нейронных сетей, за которые они ручаются и вряд ли они занижают свои результаты и достижения. И потому что авторы CetnerMask опубликовали свои результаты только на GPU Pascal и только AP (без AP50).

            То есть вы берёте цифры конкурентов из их статей и все остальные поступают точно так же — берут цифры конкурентов из их статей, поэтому и получается сравнение новых сетей на новых железках со старыми сетями на старых железках.

            И это нормально, если перепрогонять все доступные нейронки на всех вариантах железа, то можно вообще никогда статью не выпустить :) Вряд ли у ребят из гугл брейн была цель показать какая yolo3 плохая. В конце концов, не весь ресёрч ведётся для того, чтобы показать исключительно практические, немедленно применимые в реальной жизни результаты и уменьшение теоретических флопсов — тоже полезное направление, потому что кто знает, что будущее железо нам принесёт? Может быть не сразу, а через какое-то время, но появится железо оптимизированное под условные efficientnet'ы и они резко окажутся в разы быстрее.

            У вас тоже хорошие графики, для практиков более полезные. И область не стоит на месте вообще, волна качнулась от оценки чисто теоретических флопсов к реальному железу и к оптимизации под гетерогенное железо — одной нвидией сыт не будешь, в типичном телефоне сейчас есть выбор из пятка совершенно разных вычислителей для запуска сетей — начиная с процессора (с разными типами ядер), продолжая видеокартой, dsp и дальше всякими тензорными ускорителями (npu, tpu, ...). И на всех из них совершенно разные паттерны того, что быстро выполняется, а что медленно, поэтому оптимально быстрыми оказываются разные сеточки.

            И в целом вопрос бенчмаркинга — очень сложный, в зависимости от требований можно показать очень разное поведение, поэтому легко ошибиться и трудно делать. А большинство жителей интернета вовсе не хотят разбираться в тонкостях, в том, что от исходных требований зависит какие итоговые варианты окажутся лучше.
              0
              То есть вы берёте цифры конкурентов из их статей и все остальные поступают точно так же — берут цифры конкурентов из их статей, поэтому и получается сравнение новых сетей на новых железках со старыми сетями на старых железках.

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

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

              Если бы им было все равно, то они бы не кинулись через пол года доделывать сеть и исправлять статью, при этом бросив текущие проекты.
              Если бы им не было важно Inference time (ms), то они бы их не указывали.

                0
                > У нас новая сеть сравнивается с другими сетями на одинаковых железках.

                Но ведь вы ставите себе целью показать, что ваша сеть быстрее на практике. Для этого и сравнения в одинаковых условиях. Какая цель у авторов efficientdet?

                А то, что они «кинулись» статью исправлять, то тут миллион причин может быть, может быть им ревьюеры на CVPR, куда эта статья прошла, на это указали и попросили уточнить (а это проще сделать, чем спорить), да и качество в процессе экспериментов может подрасти со временем (то тут, то там мелочи в тренировке находятся), а статья это лишь слепок на определённый момент времени. В общем не удивительно, что если они продолжали со своими сеточками играться, то и новые данные приходили, а цифры йоло выкинули, чтобы не задавали вопросов почему сравнение такое. Вообще, выглядит так, что они эту йоло туда изначально на отвали запихали — основное внимание в статье уделено большим вариантам и сравниваются они с приличными бейзлайнами.

                Может если бы йоло не была так привязана к маргинальному (будем честны, он такой и есть) даркнету, то авторы не поленились бы и запустили её в сравнение ко всем остальным ретинам.

                Да и «бросив текущие проекты» какое-то слишком сильное утверждение, из чего оно следует? Авторы в 2020 году в сумме ~(6+19+10) статей опубликовали, не выглядит как заброшенные проекты. Думаю вопрос «как сильно пострадала наша репутация от того, что мы в одной из второстепенных строк одной из таблиц указали данные из оригинальной статьи, а потом вычеркнули совсем для единообразия и ясности» вызовет у них в лучшем случае недоумение :)
                  0
                  А то, что они «кинулись» статью исправлять, то тут миллион причин может быть, может быть им ревьюеры на CVPR, куда эта статья прошла, на это указали и попросили уточнить (а это проще сделать, чем спорить)

                  Все правильно, и я, и авторы CVPR считают, что сравнение EfficientDet на GPU 130 000 TFlops-TC против YOLOv3 на GPU 6 000 TFLops в статье EfficientDet — это фейк, и в первоначальном виде их статью бы не допустили на CVPR. Я это объяснил 99% пользователей, которые это не понимали. Странно почему вы против того, чтобы пользователи это знали.

                  Если Google указывает Inference time в статье и делает специальную версию EfficientNet-TPUEdge (backbone для EfficientDet) ai.googleblog.com/2019/08/efficientnet-edgetpu-creating.html, в которой убирает все фишки (DepthWise-conv, SE, ...) снижающие BFLOPS, чтобы это работало побыстрее, с сильным падением точности обнаружения — хотя бы по точности/скорости как самая древняя YOLO, значит Google важна скорость. И если в результате все равно это не быстрее/точнее — значит просто не могут сделать. Apple их обгоняет в этом плане потому, что они используют что?

                  Может если бы йоло не была так привязана к маргинальному (будем честны, он такой и есть) даркнету, то авторы не поленились бы и запустили её в сравнение ко всем остальным ретинам.

                  YOLO есть на всех фреймворках: Facebook-Pytorch, Google-TensorFlow, Tencent-NCNN, nVidia-TensorRT, Intel-OpenCV, Mxnet, Keras, TVM, Darknet,…
                  всего 13 000 репозиториев, 4852 на Python: github.com/search?q=yolo
                  * YOLOv3 Pytorch: github.com/ultralytics/yolov3
                  * YOLOv3-ASFF Pytorch: github.com/ruinmessi/ASFF

                  The founders of Xnor.ai, Ali Farhadi and Mohammad Rastegari, are experts in computer vision. Ali is a co-author of the popular object detection technique. YOLO — You Look Only Once. YOLO is one of the most popular techniques used in object detection in real-time.

                  Приватные разработки в том числе на маргинальном Darknet были куплены компанией Apple за $200 000 000 именно из-за быстроты XNOR-YOLO на ARM-чипах/NPU www.forbes.com/sites/janakirammsv/2020/01/19/apple-acquires-xnorai-to-bolster-ai-at-the-edge/#156e95733975

                  Думаю вопрос «как сильно пострадала наша репутация от того, что мы в одной из второстепенных строк одной из таблиц указали данные из оригинальной статьи, а потом вычеркнули совсем для единообразия и ясности» вызовет у них в лучшем случае недоумение :)

                  Если бы Google-brain статью не исправили, и их бы не пустили на CVPR — вот у них было бы недоумение.

                  Вообще, выглядит так, что они эту йоло туда изначально на отвали запихали — основное внимание в статье уделено большим вариантам и сравниваются они с приличными бейзлайнами.

                  Т.е. вы считаете, что в статье EfficientDet сравнение писалось на отвали, а вместо точных чисел скорости и точности они использовали термины «приличные»? Я считаю, что Google намного лучше, чем вы о них думаете.
                    0
                    Под приличными я имел в виду то, что эти бейзлайны были не слабыми, как типично бывает (когда берётся плохо натренированный бейзлайн и сравнивается с сильно тюнингованной своей сетью), а хорошими бейзлайнами, популярными вариантами, хорошо натренированными и известными.

                    А сравнение с йоло действительно выглядит как добавленное «чтобы было», всё-таки фокус статьи не на этом, слово реалтайм там ни разу не упоминается и самому маленькому варианту (который и сравнивается с йоло) посвящено минимальное внимание (одна строчка в таблице).
                    0
                    Может если бы йоло не была так привязана к маргинальному (будем честны, он такой и есть) даркнету, то авторы не поленились бы и запустили её в сравнение ко всем остальным ретинам.


                    Вы считаете, что 10 000 студентов смогли обучить и запустить Yolo, а топовые исследователи из Google не смогли? Какое-то у вас предвзятое и негативное мнение о Google.

                    Почему тогда CEO ARM рассказывает про XNOR YOLO, и нафига тогда Apple платить $200M за TradeMark на YOLO?
                    www.patentlyapple.com/patently-apple/2020/06/four-xnorai-trademarks-covering-yolo-tools-for-real-time-object-detection-have-officially-been-transferred-to-apple.html
                    This week the U.S. Patent and Trademark Office officially published the transfer of four XNOR.AI registered trademarks to Apple that include: YOLOV2; YOLOV3; YOLO9000; and TINY YOLO as presented below. The actual registered trademark certificates have yet to be republished with Apple Inc. shown as owner.


                    www.forbes.com/sites/janakirammsv/2020/01/19/apple-acquires-xnorai-to-bolster-ai-at-the-edge/#568e22063975

                    Apple reportedly acquired Xnor.ai, a Seattle-based startup for $200 million

                    The founders of Xnor.ai, Ali Farhadi and Mohammad Rastegari, are experts in computer vision. Ali is a co-author of the popular object detection technique. YOLO — You Look Only Once. YOLO is one of the most popular techniques used in object detection in real-time.


                    news.crunchbase.com/news/apple-acquires-ai-on-the-edge-startup-xnor-ai-for-around-200m
                    Researchers at Xnor.ai developed an object detection model they called You Only Look Once (aka YOLO), which the company licensed to enterprise customers including internet-connected home security camera company Wyse.




                      +1
                      > Вы считаете, что 10 000 студентов смогли обучить и запустить Yolo, а топовые исследователи из Google не смогли?

                      Могли, но не стали. И я их понимаю — одно дело запустить одной командой условный детектрон и перетренировать, другое дело разбираться с установкой и работой с даркнетом и так далее, особенно, когда тебе это нужно ради добавления одной цифры в статью, которая вообще в целом не об этом. А то, что у йоло есть десять тысяч разных студенческих реимплементаций вообще никак не помогает — вот так запустили бы какую-нибудь версию на пайторче, положили результаты отличающиеся от того, что вы ожидаете, и началось бы — «авторы в гугле использовали специально какую-то херовую версию, чтобы показать, что йоло плохая, фу, какой удар по репутации», вот они и взяли просто цифру из статьи.

                      В конце концов, что за правила и нормы требуют от них переделки всех возможных экспериментов, проведённых до них? Нет таких правил. Вот я не вижу, чтобы там результаты с Peeleenet сравнивались, а это тоже достойный вариант. И ещё с миллионом других вариантов легковесных сетей. И все обязательно нужно было не просто процитировать, но ещё и у себя обязательно перетренировать, и прогнать на одном и том же железе (и вообще, на всех существующих в мире железках, а то слишком мало работы, а гугл же такой большой и ничего, что статья написана силами двух учёных, которые параллельно ещё десяток других написали).

                      Ну, а Apple купил xnor.ai ради того, чтобы заполучить хороших учёных и инженеров и ради технологий бинаризации и даже какие-то чипы у них там вроде были, трейдмарк «yolo» в нагрузку, готов поспорить, что не за него было бабло уплочено :) А если и из-за него, то не знаю чему вы радуетесь — зная эппл стоило бы опасаться письмеца в стиле «вы используете наш трейдмарк, за который 200лямов уплочено, прекратите немедленно» и придётся придумывать новое название для YOLOv4 :)

                      Но всё равно не понятно, как это влияет на то, что даркнет маргинальный. Я не в плохом смысле это слово использую, вовсе нет. Я понимаю, что для вас это центральная разработка и из-за того, что вы варитесь в нём и среди людей, которые его используют, то может показаться, что это очень популярная и распространённая штука. Но нет, за пределами узкого круга, про даркнет никто и не слышал. В конце концов, я ваш репозиторий даже в гугле найти не могу по запросу «darknet» или «darknet yolo» и в википедии нет статьи и в списке фреймворков. А «официальный» мейлинг-лист мёртв и завален спамом.

                      В общем, без обид, но 1. гугл брейн не со зла проигнорировал йолу в том пейпере. 2. Эпл купил мозги, но не йолу. 3. darknet — популярный в узких кругах, но всё же довольно экзотический фреймворк разрабатываемый парой энтузиастов
                        +1
                        Под приличными я имел в виду то, что эти бейзлайны были не слабыми, как типично бывает (когда берётся плохо натренированный бейзлайн и сравнивается с сильно тюнингованной своей сетью), а хорошими бейзлайнами, популярными вариантами, хорошо натренированными и известными.

                        Я понимаю, что для вас это центральная разработка и из-за того, что вы варитесь в нём и среди людей, которые его используют, то может показаться, что это очень популярная и распространённая штука.

                        Или может быть все знают кроме вас — вот что показывают объективные числа:
                        Никто не знает и не считает важным детекторы MobileNetv2 / Facebook-RetinaNet / PeleeNet / CornerNet, в отличии от Yolo.

                        1. Что используют в реальных системах — поиск в гугле по общей фразе «ros object detection» — первая строчка: github.com/leggedrobotics/darknet_ros

                        2. О чем знают обычные пользователи из ютуб — про какой ещё детектор объектов рассказывали на TED и имеется более 1 млн просмотров на ютуб?
                        youtu.be/Cgxsv1riJhI
                        youtu.be/4eIBisqx9_g

                        3. Какие самые популярные детекторы объектов у исследователей:
                        YOLOv1 (2015) — 7234 раз процитировано: arxiv.org/abs/1506.02640
                        YOLOv2 (2016) — 3664 раз процитировано: arxiv.org/abs/1612.08242

                        CornerNet (2017) — 231 раз процитировано: arxiv.org/abs/1808.01244
                        RetinaNet (2017) — 1796 раз процитировано: arxiv.org/abs/1708.02002 (FaceBook)
                        YOLOv3 (2018) — 2431 раз процитировано: arxiv.org/abs/1804.02767
                        MobileNetv2 (2018) — 1862 раз процитировано: arxiv.org/abs/1801.04381
                        PeleeNet (2018) — 87 раз процитировано: arxiv.org/abs/1804.06882

                        CenterNet (2019) — 109 раз процитировано: arxiv.org/abs/1904.08189
                        EfficientDet (2019) — 38 раз процитировано: arxiv.org/abs/1911.09070 (Google)

                        Сгруппировано по годам, т.к. чем старее статья — тем больше цитат.
                        Понятно, что статья вышедшая только месяц назад почти не будет процитирована.

                        4. О каком ещё детекторе объектов кроме XNOR-YOLO рассказывал CEO ARM?
                        twitter.com/morastegari/status/1158966293262819328

                        5. Какой ещё детектор объектов кроме XNOR-YOLO пытались купить сразу Microsoft, Intel, Amazon, Apple (и Apple купила за 200M$)? www.geekwire.com/2020/seattle-ai-startup-drew-interest-amazon-microsoft-intel-selling-apple
                        Seattle AI startup drew interest from Amazon, Microsoft, Intel before selling to Apple


                        6. И самое главное, какой детектор самый быстрый и точный? — Об этом эта статья.

                        Критика о том, что у фреймворка Darknet только 11 000 (my) / 18 000 (official) Stars, про него ничего нет в Wiki, и бывает трудно найти в гугле — принимается. Ну на то он и Darknet.

                        Под маргинальностью Darknet можно понимать только то, что если я перестану его разрабатывать, то его развитие остановится.

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


                        Могли, но не стали. И я их понимаю — одно дело запустить одной командой условный детектрон и перетренировать, другое дело разбираться с установкой и работой с даркнетом и так далее, особенно, когда тебе это нужно ради добавления одной цифры в статью, которая вообще в целом не об этом.


                        Конечно, это очень трудно покликать по стрелочкам в Google Colab, чтобы увидеть как компилировать и запускать Yolo на Darknet: https://colab.research.google.com/drive/12QusaaRj_lUwCGDvQNfICpa7kA7_a2dE

                        Скомпилировать Darknet используя Cmake — 2 команды
                        cmake .
                        make
                        

                        Скачать датасет
                        scripts/get_coco_dataset.sh

                        Затем обучение запускается одной строкой: https://github.com/AlexeyAB/darknet/wiki/Train-Detector-on-MS-COCO-(trainvalno5k-2014)-dataset
                        ./darknet detector train cfg/coco.data cfg/yolov4.cfg csdarknet53-omega.conv.105


                        Вот здесь пробуют запустить обучение «эффективной» Google-EfficientDet-D5 одной командой даже на топовой игровой GPU RTX 2080ti 11GB или на Titan V (3000$) вы столкнетесь с Error: Out of Memory, даже с batch_size=1 (хотя EfficientDet требует batch_size=128 для достижения заявленной точности): github.com/google/automl/issues/85

                        In my mind, efficientdet is light-weighted and efficient. However, I can only run efficientdet-d4 on a single Nvidia Titan V GPU by setting train_batch_size=1. Training efficientdet-d5 will result in OOM.
                          0
                          Или может быть все знают кроме вас

                          Убедили, Yolo самая лучшая.

                          Хотя справедливости ради, стоило добавить в список популярных детекторов ещё какой-нибудь faster/mask rcnn и ssd :)

                          И забавно сравнивать популярность детектора по тому, что используют в не менее узкоспециализированной ROS. Одно развёрнутое гуглом приложение на мобильники даст install base в тысячу раз больше, чем все пользователи рос вместе взятые. Причём гугл даже не будет это нигде рекламировать как отдельную фичу (ну разве что где-нибудь в блоге для девелоперов напишут заметку, мимоходом, дескать используем мобайлнет для детекции чего-нибудь на миллиарде устройств).

                          Какой ещё детектор объектов кроме XNOR-YOLO пытались купить сразу

                          А какой ещё детектор продавался? :)

                          Под маргинальностью Darknet можно понимать только то, что если я перестану его разрабатывать, то его развитие остановится.

                          И это важно для многих людей. А звёздочки — дело такое, смотреть сколько у тензорфлоу звёздочек будем? :)

                          Вот, кстати, ещё то, что yolo-darknet немного в кучу всё — и режимы тренировок и новые бэкбоны и голова дететора объектов и фреймворк — отделить одно от другого совершенно нереально было. Может быть я предвзят из-за своего отрицательного опыта и поэтому так воспринимаю (у меня тоже ограниченное видение), но то, в йоло всё так перемешано и захардкожено (шаг вправо, шаг влево — сегфолт, градиенты всякие вручную прописанные в дебрях Си, портированное — ничего толком не тренировалось), улучшения в статьях — скопом «мы поменяли тут и тут и тут и тут всё, вот, улучшилось, ещё вот это меняли, но оно не помогло» (это скорее про версии 2 и 3, четвёртую ещё глубоко не копал).

                          Другое дело, что куча народа с бэкграундом «посмотрел ролики Сиража» (те самые, кто составляет аудиторию в миллионы зрителей и не могут ошибаться) традиционно очень любит yolo и клепает массово всякие туториалы вида «введение в детекцию объектов», но хз насчёт продашен приложений.

                          Кстати, а чего вы везде AP50 метрику продвигаете? Потому что цифра в ней у йоло лучше? А почему лучше?
                            0
                            И забавно сравнивать популярность детектора по тому, что используют в не менее узкоспециализированной ROS. Одно развёрнутое гуглом приложение на мобильники даст install base в тысячу раз больше, чем все пользователи рос вместе взятые. Причём гугл даже не будет это нигде рекламировать как отдельную фичу (ну разве что где-нибудь в блоге для девелоперов напишут заметку, мимоходом, дескать используем мобайлнет для детекции чего-нибудь на миллиарде устройств).

                            Ну покажите ссылки и назовите продукты где Google использует какие-либо детекторы массово, кроме своих Pixel-phone тиражом в 2 штуки. Вот Apple купила XNOR-YOLO за 200M$ и уже использует XNOR-YOLO на всех iPhone из-за её быстроты и энергоэффективности — это 200 миллионов iPhone каждый год, да и через 2 года будут использовать на PC, переход PC на ARM уже начался.

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

                            Компания Tencent (капитализация 500 000 000 000$) считает хорошей сеткой YOLO, а не Facebook-RetineNet/MaskRCNN или Google-EfficientDet: github.com/Tencent/ncnn

                            Может быть я предвзят из-за своего отрицательного опыта и поэтому так воспринимаю (у меня тоже ограниченное видение), но то, в йоло всё так перемешано и захардкожено (шаг вправо, шаг влево — сегфолт, градиенты всякие вручную прописанные в дебрях Си,

                            Вы по моему не тот Darknet использовали, надо про нейронные сети, а не где продают запрещенные вещества )
                            Захардкожено — это в TensorFlow-EfficientDet вся сеть захардкожена в коде на Python, и приходится лазить по всему исходному коду, чтобы хоть чуть-чуть поменять архитектуру
                            — TF-EfficientDet — backbone в одном месте github.com/google/automl/blob/b26c32ab3062c271eb3a2c2754d633b5572a98c2/efficientdet/backbone/efficientnet_model.py, neck в другом месте github.com/google/automl/blob/b26c32ab3062c271eb3a2c2754d633b5572a98c2/efficientdet/efficientdet_arch.py другие части ещё где-то раскиданы

                            — в YOLO вообще ничего не зарадкожено, вся сеть целиком в одном простом cfg-файле (читаемый формат INI) github.com/AlexeyAB/darknet/blob/master/cfg/yolov4-tiny.cfg и чтобы поменять архитектуру сети вообще не надо программировать на C/C++/CUDA/Python/…. Авторы CSPNet вообще не правили ни строчки код, а только изменили cfg-файл: arxiv.org/abs/1911.11929

                            Успешно изменяют YOLO разные люди: и которые вообще не умеют программировать, но знают нейронные сети, и люди которые знают chain-rule/differentiation, могут писать собственные слои и их реализации на CUDA.
                              0
                              Думал о каком-нибудь Гугл Ленс, но не готов поспорить, что там на девайсе детекция, есть ещё гугл lookout, но у него пользователей три калеки, а аргумент про встроенные в mlkit/mediapipe и прочие тулы для разработчиков сети — думаю не пройдёт.

                              После этого разговора я вообще уже не уверен, что есть свидетельства, что кто-то на самом использует детекцию, а уж тем более определить доли рынка конкретных моделей :)
                                0
                                После этого разговора я вообще уже не уверен, что есть свидетельства, что кто-то на самом использует детекцию, а уж тем более определить доли рынка конкретных моделей :)

                                Как же Apple тогда сейчас сортирует фото по наличию обнаженки, бюстгалтеров, мозаики, цукини… в галерее на iPhone? iz.ru/665343/2017-10-31/iphone-raspoznaet-foto-v-biustgalterakh-v-otdelnuiu-kategoriiu (надо понимать, что на фото может быть 10-20 равноценных мелких предметов, и классификация тут не подходит, нужна детекция)
                                Т.е. Apple отдала 200M$ за XNOR-YOLO, а вместо него для этой задачи использует ваш любимый медленный и кривой EfficientDet от Google, или там люди руками перебирают фото — как это работает? )

                                Детекция на смартфонах:
                                — детекция лиц перед их распознаванием
                                — сортировка фотографий в галерее по объектам
                                — поиск фотографий по предметам (забыл где на телефоне валяется фото, но помнишь что на нем была гитара)
                                — размытие фона при общении по Skype / Zoom /… — уж этим все воспользовались во время карантина
                                — размытие фона на фотографиях

                                Лучший детектор YOLO можно расширить до лучшего Instance Segmentator YOLACT++, например, чтобы отображать только одного человека, а остальных людей и фон размывать, используя YOLACT++ arxiv.org/pdf/1912.06218.pdf или Poly-YOLO arxiv.org/pdf/2005.13243.pdf



                                а уж тем более определить доли рынка конкретных моделей :)


                                Ну то что у Apple доля мирового рынка 32% мирового дохода от продаж телефонов, 66% мирового дохода от мобильных телефонов + сервисов (iCloud, Apple Music, ...), и 15% по количеству проданных iPhone, и продажи 200 миллионов iPhone в год — это по моему не секрет:
                                www.forbes.com/sites/johnkoetsier/2019/12/22/global-phone-profits-apple-66-samsung-17-everyone-else-unlucky-13/#37452bf92ff3

                                www.ixbt.com/news/2020/01/30/apple-vozglavljaet-rynok-smartfonov-po-itogam-proshlogo-kvartala-.html


                                  0
                                  Как-то всё смешалось и детекция и сегментация. Откуда уверенность, что эпл в 2017 году использовал yolo для детекции бюстгалтеров? А детекцию лиц я с общей детекцией объектов не стал смешивать, потому что это в любой камере есть и нейросеточки там не всегда нужны (даже йоло — перебор, хотя у гугла и есть скоростной детектор лиц, который они с aimatter купили).

                                  Доля рынка Apple != доля рынка моделей детекторов. Я думал мы обсуждаем популярность разных моделей конкретно общих детекторов объектов, не телефонов и не в целом архитектур нейросетей. Так-то пример зума или скайпа отличный — там никакой йоло скорее всего, однако установлены миллиарды экземпляров. Или условный снапчат — там точно in-house модели для сегментации, а не йоу-ластоза :)
                                    0
                                    Как-то всё смешалось и детекция и сегментация.
                                    В лучших real-time алгоритмах Instance Segmentation (YOLACT++, Poly-YOLO) используется модифицированный детектор YOLO.
                                    Then producing a full-image instance segmentation from these two components is simple: for each instance, linearly combine the prototypes using the corresponding predicted coefficients and then crop with a predicted bounding box.


                                    Доля рынка Apple != доля рынка моделей детекторов

                                    Достоверно известно, что Apple использует детекцию в десятке задач (сортировка галереи, поиск в галерее по названию объекта, ...) в любом iPhone -> Apple купила XNOR-YOLO за 200M$ -> Apple заменила все свои детекторы на всех новых iPhone (200М штук в год) на более быстрые и точные XNOR-YOLO.
                                    Но вы утверждаете, что купила за 200M$, но не использует )
            0

            Использовал darknet от AlexeyAb для нескольких домашних проектов на yolov3(распознавание дорожных знаков и распознавание эвакуаторов), обучал на RTX2080. В принципе все работало неплохо. Правда, знаки обучались почти неделю. Единственное, что не смог сделать, перенести обученные модели на jetson nano.

              +1
              1) А что с поддержкой int8? Когда вышла YOLOv3 у нас какие-то были проблемы при попытке всё это перетащить на TensorRT (вроде с tiny там тоже что-то было весьма конкурентное). В результате получалось что какие-то аналоги под int8 были пошустрее без существенной потери качества по сравнению с Yolo.
              В статье у вас вижу только int16. С int8 не тестили, или какие-то ограничения архитектуры?

              2) Вообще этот проект интересно весьма выглядит — github.com/ceccocats/tkDNN на который вы ссылку приводите. Что-то я нигде на формумах под Jetson ссылок не видел. Хотя он должен массу проблем решать.
              Это что-то новое?

              3) А сколько fps показывает на Jetson tx2 и Jetson nano? На днях читал что на nano чуть ли не 1 fps у кого-то вышло.
                +2
                1. Проблем с int8 квантованием Yolo в TensorRT не было, были проблемы с производительностью из-за необходимости использовать кастомную активацию leaky, легко решалось заменой на relu: arxiv.org/pdf/1904.02024.pdf
                Сейчас Yolov3 нативно поддерживается в nVidia Deepstream 4.0 (TensorRT) поэтому никаких проблем вообще нет: news.developer.nvidia.com/deepstream-sdk-4-now-available
                Мало того, Xnor.ai научились обучать Yolo на bit1 весах, собственно основатели и создали Yolo: www.forbes.com/sites/janakirammsv/2020/01/19/apple-acquires-xnorai-to-bolster-ai-at-the-edge/#7727a8913975

                2. tkDNN относительно новая библиотека.

                3. Я запускал YOLOv4 256x256 async=3 (Leaky вместо Mish) на 1 Watt neurochip Intel Myriad X со скоростью 11 FPS. При этом точность на MSCOCO test-dev такая же как у обычного YOLOv3:
                YOLOv4 256x256 (leaky) — 33.3% AP — 53.0% AP50
                YOLOv3 416x416 (default) — 31.0% AP — 55.3% AP50.
                Можно такую умную камеру+нейрочип использовать shop.luxonis.com — одновременно и объекты обнаруживает и расстояние до них

                YOLOv3-spp 192x320 на iPhone (A13 iOS) показывает более 30 FPS apps.apple.com/app/id1452689527
                  0
                  Всё-таки TPU от Intel и Jetson Nano это принципиально разные штуки. Первый сильно энергоэффективнее если сеть на нём работает. Но архитектура там сильно разная, как результат — производительность может рандомно прыгать. Но да, nano под tensorrt должен быть побыстрее в большинстве случаев.

                  Да не суть. Всё равно хорошо что новые сети появляются и точность растёт.
                    0
                    Вышла модель YOLOv4-tiny с экстремально высокой скоростью 370 FPS на GPU 1080ti, или 16 FPS на Jetson Nano (max_N, 416x416, batch=1, Darknet-framework): github.com/AlexeyAB/darknet/issues/6067

                    Дождемся официальной реализации и релиза yolov4-tiny в OpenCV, и там скорее всего будет Real-time 30 FPS на Jetson-Nano и NPU Intel Myriad X (1 Watt), и ещё быстрее при batch=4 / INT8.
                      0
                      А скажите ещё, на CPU так всё плохо и будет? Там можно как-то хотя бы 30 FPS с батчами по 4 выбить? А то я тут у ZlodeiBaal спрашивал, не лучше ли комбинировать на CPU оптический трекер с yolo, т.к. что-то крайне мало FPS в детекторе получается. Может, действительно, INT8 в OpenCV/OpenVino улучшит ситуацию? Или просто архитектура не оптимизирована под CPU и лучше брать что-то другое?
                        0
                        Моя позиция была всё же, что оптический трекер не нужен когда есть хорошая детекция. И я приводил много примеров когда детекторы дают высокую скорость на процессоре.
                        Сетей которые быстро детектируют достаточно много. Конечно, их нужно на железо портировать и пробовать максимально его использовать. И круто, что в их семействе появилась ещё одна.
                          +1
                          Можно 46 FPS с batch=1 FP32 на CPU.

                          Скорость и точность разных YOLO: github.com/AlexeyAB/darknet/issues/5079

                          На CPU — 90 Watt — FP32 (Intel Core i7-6700K 4GHz 8 Logical Cores) OpenCV-DLIE, FPS

                          1. github.com/AlexeyAB/darknet/blob/master/cfg/yolov3-tiny-prn.cfg46 FPS

                          2. github.com/AlexeyAB/darknet/blob/master/cfg/yolov4-tiny.cfg — такая же быстрая, но точнее, подождите неделю пока в OpenCV добавят поддержку github.com/opencv/opencv/issues/17666 И затем сразу можете использовать OpenCV-master-branch github.com/opencv/opencv/archive/master.zip
                          Или дождитесь релиза нового бинарника: opencv.org/releases

                          Работает быстрее, если скомпилировать OpenCV с бэкэндом OpenVINO: github.com/opencv/opencv/wiki/Intel's-Deep-Learning-Inference-Engine-backend
                            +1
                            Если на слабых процессорах (ARM, Apple, Qualcomm, ...) думаете делать, то дождитесь реализации yolov4-tiny на github.com/Tencent/ncnn и попробуйте её (YOLOv4-full там уже работает): github.com/Tencent/ncnn/issues/1885
                              +2
                              Около 42 FPS работает yolov4-tiny на CPU Intel Core i7 7700HQ используя OpenCV-dnn, если скомпилировано с OpenVINO backend: github.com/opencv/opencv/wiki/Intel's-Deep-Learning-Inference-Engine-backend

                              Без OpenVINO-backend — 28 FPS.

                              — YOLOv4-tiny: accuracy 40.2% AP50 on Microsoft COCO dataset:

                              1770 FPS — on GPU RTX 2080Ti — (416x416, fp16, batch=4) tkDNN/TensorRT

                              1353 FPS — on GPU RTX 2080Ti — (416x416, fp16, batch=4) OpenCV

                              39 FPS — 25ms latency — on Jetson Nano — (416x416, fp16, batch=1) tkDNN/TensorRT

                              290 FPS — 3.5ms latency — on Jetson AGX — (416x416, fp16, batch=1) tkDNN/TensorRT

                              42 FPS — on CPU Core i7 7700HQ (4 Cores / 8 Logical Cores) — (416x416, fp16, batch=1) OpenCV-dnn (compiled with OpenVINO backend) github.com/AlexeyAB/darknet/issues/6067#issuecomment-656693529

                              20 FPS on CPU ARM Kirin 990 — Smartphone Huawei P40 (416x416, GPU-disabled, batch=1) Tencent/NCNN

                              120 FPS on nVidia Jetson AGX Xavier — MAX_N (416x416, fp16, batch=1) — Darknet framework

                              371 FPS on GPU GTX 1080 Ti — (416x416, fp16, batch=1) Darknet framework

                              More: github.com/AlexeyAB/darknet/issues/6067
                              0
                              Круто, спасибо!
                              Обязательно попробую!
                        0
                        Приветствую автора. Подскажите пожалуйста, есть ли какие либо исследования детальные по neck (FPN,PAN,biFPN,FPN в YOLOv4), интересуют в большей степени case study по поводу количества блоков в пирамиде, оптимального числа fmaps которые нужно отправлять в fpn ( стандарт 256, тестил и 128, но супер сильной разницы не заметил) и по тому как сделать fpn более efficient с точки зрения forward pass затрат времени.Как я вижу вы проводили довольно большей ресерч по поводу комбинаций различных модулей и параметров, возможно вы и об этом знаете.
                          +1
                          Количество фильтров/слоев в Neck (FPN, PAN, BiFPN, ASFF, ...) сильно зависит от network resolution, backbone, dataset, BoF/BoS,… чуть что-то изменил, и надо заново подбирать. Это всегда будет поиск компромисса или точнее и медленнее, или быстрее, но точность хуже. Мы же старались добавить фичи, которые увеличивают точность без уменьшения скорости, и которые затем можно использовать в любых других сетях, детекторах или даже задачах.

                          Единственное, что могу посоветовать, это использовать те же скейл параметры (α = 1.2, β = 1.1, γ = 1.15), как в EfficientNet/Det для compound scaling method, если хотите уменьшить/увеличить сеть и скорость/точность. arxiv.org/abs/1905.11946

                          Вы можете использовать NAS (как часть AutoML) для подбора оптимальной архитектуры, но если вы не Google, который может тратить миллионы $ на NAS, то больших результатов ждать не стоит. en.wikipedia.org/wiki/Neural_architecture_search

                          В Google-brain использовали NAS в большей или меньшей степени для: NAS-FPN, MnasNet + NECK, EfficientNet/Det, MixNet,… а все равно не смогли сделать сеть точнее, чем старая Yolov3 при той же скорости, если запускать обе на том же GPU (TitanV/TeslaV100).

                          +1
                          Добрый день!
                          AlexeyAB прокомментируете v5?
                          Что-то он вышел буквально через месяц после вашего, но проработан куда слабее. Нет всей той массы сравнительных графиков, нет примеров под Jetson | OpenVino, нет даже банального сравнения на одном графике с v4.
                          Я так понимаю он не от вашей команды?
                            +2
                            Привет.
                            А batch=32 для измерения Latency (ms) не смутило сразу? )
                            Тут два варианта:

                            1. Либо один пакет в 32 изображения обрабатывается за 17мс с точностью 47%AP, т.е. скорость ~2000 FPS с точностью 47%AP

                            2. Либо один пакет в 32 изображения обрабатывается за ~500мс, а затем они зачем то это делят на 32, и получают 17мс. Только задержка 1 сэмпла в пакете не может быть меньше задержки всего пакета 500мс.

                            То есть чтобы понять, что дурят, даже в нейронных сетях не надо разбираться, надо только знать что такое Latency и Batching.

                            По факту Ultralytics-YOLOv5 чуть хуже, чем YOLOv4 если честно сравнивать: github.com/AlexeyAB/darknet/issues/5920

                          0
                          Алексей, спасибо за поддержку и развитие проекта. Как там с Джо, не общаетесь?
                          Если кто не в теме, Joseph Redmon месяца четыре назад заявил —
                          I stopped doing CV research because I saw the impact my work was having. I loved the work but the military applications and privacy concerns eventually became impossible to ignore.
                            0
                            Ещё 2 года назад меня звали в Xnor-ai, когда они отказались от открытых разработок. А затем этика, патенты, продажа, неразглашение. Сейчас он может позволить себе заниматься общественной деятельностью вместо computer vision.

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое