Ich sage euch: man muß noch Chaos in sich haben, um einen tanzenden Stern gebären zu können (“Also sprach Zarathustra”, Friedrich Nietzsche)
Выбор модели и сравнительный анализ с помощью Modelplace.AI
В этом посте расскажу, как выбрать правильную модель с помощью Modelplace.AI. Выбор правильной модели ускорит ваше приложение, поможет масштабировать его до миллионов запросов и сэкономит кучу денег на облачных вычислениях.
Прежде чем перейти к техническим деталям, посмотрим на проблемы n00b (новичка).
Выбор модели для n00bs
Допустим, вы программист, который не слишкои глубоко знаком с искусственным интеллектом, но хотите использовать детектор людей для приложения камеры. Вы не являетесь экспертом в области ИИ, но немного погуглив, чтобы узнать о многочисленных вариантах, которые у вас есть.
Самым популярным среди них, вероятно, является YOLO, что означает You Only Look Once. Название иронично, потому как не все верят в любовь с первого взгляда!
Вы посмотрите YOLO v1, v2, v3, v4, v5, v6 — ок, мы немного увлеклись. Пока нет v6, но есть так много вариантов! Какой выбрать?
Сбитый с толку, вы рискуете и наобум останавливаетесь на YOLO v4.
Вы тратите свою кровь, пот и слезы в течение следующих 4 часов, проверяя репозиторий GitHub, компилируя с необходимыми предпосылками, загружая модель и заставляя все работать на Raspberry Pi, только чтобы обнаружить, что модель работает медленно.
Вы пропустили крошечную версию YOLO!
Итак, вы делаете это снова и снова для Tiny YOLO v4. Отлично работает и ты счастлив.
Ваше счастье испаряется, когда старший программист AI в вашей команде спрашивает вас, почему вы выбрали Tiny YOLO v4 вместо Tiny YOLO v3.
У тебя нет ответа.
Вы предположили, что Tiny YOLO v4 будет лучше, чем Tiny YOLO v3, потому что вы знаете, что v4 старше v3.
Позже вы откроете для себя Modelplace.AI, который поможет вам решить эту проблему за секунды, но сейчас события могут пойти не так.
Вы демонстрируете свое приложение своему клиенту, и его не устраивает точность. Они готовы добавить приложению больше вычислительной мощности.
Хорошо, вы предлагаете YOLO v4.
Клиент, в Google, как рыба в воде, спрашивает про NAS-FPN?
Вы никогда об этом не слышали. И это стыдно.
Чтобы добавить оскорбления к травме, они спрашивают вас о CenterNet. Опять же, вы понятия не имеете.
Чтобы сохранить лицо, вы говорите клиенту, что проведете свое исследование и передадите его им. Теперь вы сталкиваетесь с мрачной перспективой установки этих моделей, обнаруживая точность каждой модели, понимание того, насколько быстро каждая модель, и проверка объема используемой памяти.
AI должен был доставить удовольствие!
В момент отчаяния вы бежите к одному волшебнику Uber AI, который, кажется, знает все. Независимо от того, чем вы занимаетесь, всегда найдется один такой человек.
Она расскажет вам об инструменте Benchmarking на Modelplace.AI, который навсегда изменит вашу жизнь.
Теперь, немного поговорим о технических моментах.
Что такое Modelplace.AI?
Modelplace.AI — это большая коллекция моделей искусственного интеллекта, которые вы можете опробовать на своих собственных изображениях и видео перед загрузкой моделей или установкой любого кода. Помимо качественной оценки моделей, вы также можете количественно сравнить модели, доступные для одной и той же задачи.После того, как вам понравится модель, у вас есть несколько вариантов использования ее в своем приложении.
Веб-API — вы можете использовать любую модель или их коллекцию, вызвав веб-API.
Open source models Python — если вы предпочитаете загрузить модель и запустить ее локально, многие модели доступны в виде загружаемого пакета Python, которое можно установить с помощью pip.
Зависимость от устройства — на веб-сайте также есть много моделей, которые работают непосредственно с OpenCV AI Kit. Вы можете приобрести OAK в магазине OpenCV.
Modelplace.AI также является торговой площадкой, где разработчики моделей искусственного интеллекта могут монетизировать свои модели. Эта функция в настоящее время находится в стадии бета-тестирования, и вы можете узнать больше, отправив письмо по адресу . Видео ниже — это краткое введение в Modelplace.AI.
Тестирование на Modelplace.AI
Сравнение двух моделей для конкретной задачи не так просто, как может показаться вначале. Например, одна модель может быть очень точной, но может быть очень затратной в вычислительном отношении. Вот почему мы сравниваем модели по трем различным показателям и визуализируем их на пузырьковой диаграмме на Modelplace.AI.
Производительность: мера скорости вывода. Показана длинная ось X.
Качество: мера точности модели. Показано по оси Y.
Размер модели: мера размера модели во время вывода. Показано с использованием размера круга.
Каждая диаграмма сгруппирована по типу задачи и набору данных, на котором были получены значения. Например, мы сравниваем модели обнаружения объектов на COCO.
Как читать тест
Раздел Benchmark расположен внизу страниц моделей.
Вы можете видеть, что пузырьковая диаграмма представляет все модели с тем же типом задачи (обнаружение) и тем же набором данных проверки MSCOCO (val2017), что и модель, на которой вы работаете (Tiny YOLO v4). Набор данных, используемый для оценки моделей, показан вверху диаграммы. Модель, на которую вы в данный момент смотрите, выделена фиолетовым кружком.
Чтобы увидеть конкретные значения, вы можете навести курсор на кружок.
YOLOX-X показывает лучшее качество, в то время как Tiny YOLO v3 намного быстрее, чем другие. Она занимает небольшой объем памяти, но если вам нужна более точная модель без резкого снижения скорости — Tiny YOLO v4 может быть лучшим вариантом.
Наборы данных
По возможности мы измеряем модели общего назначения на общедоступных наборах данных, таких как MSCOCO или PASCAL VOC. Однако для некоторых моделей (например, для модели обнаружения листьев) мы не можем измерить показатели качества, поскольку нет больших общедоступных наборов данных для измерения их качества. Поэтому мы используем значение, предоставленное авторами.Чтобы он оставался стандартным для всех моделей, мы следуем двум правилам:
Если модель универсальная, она измеряется на общедоступном наборе данных.
Если модель является конкретной, измеряются только показатели производительности, а значение качества берется из исходной публикации. Для этих моделей мы используем внутренний набор данных, и если он отображается на пузырьковой диаграмме.
Все описанные ниже подмножества были получены с использованием COCO python API. Путем передачи аргумента catIds (индексы категорий, которые должны быть извлечены из MSCOCO val2017) функции getAnnIds, были извлечены аннотации для конкретных классов.
MSCOCO (val2017 человек, автомобиль и только велосипед) набор данных — для проверки моделей обнаружения PVB (человек, автомобиль, велосипед): Детектор велосипедов для автомобилей.
6. Обнаружение текста: CTW1500 — для проверки моделей обнаружения текста.
7. Распознавание эмоций: AffectNet — для проверки моделей распознавания эмоций.
Качество
Мы используем определенные метрики для измерения качества в зависимости от типа задачи. В этом разделе представлен обзор показателей, используемых для каждого типа.
1. Обнаружение: средняя точность Mean Average Precision (mAP) — mAP с несколькими порогами пересечения по объединению Intersection over Union (IoU), Коэффициент Жаккараએ. В качестве окончательной метрики мы усредняем MAP по порогам IoU (от 0,5 до 0,95 с шагом 0,05)..
3. Обнаружение наземных ориентиров — Нормированная средняя ошибка, вычисляемая как расстояние между точным и предполагаемым ориентиром, нормированное на расстояние.Он рассчитывается по-разному в зависимости от модели:
для Обнаружение ориентира Ириса, нормализация выполняется с использованием диаметра от белого к белому (WWD). WWD рассчитывается как трехмерное расстояние между левым и правым ориентирами на контуре радужной оболочки, взятое из наземной истины.
4. Классификация — метрика точности с коэффициентами ошибок «топ-1» и «топ-5».
7. Отслеживание — MOTA. MOTA учитывает все ошибки конфигурации объекта, сделанные трекером, ложные срабатывания, промахи, несовпадения по всем кадрам.
Производительность
Метрика для измерения производительности — FPS и рассчитывается по формуле:
FPS = 1 / (Mean Preprocess Time + Mean Forward Time + Mean Postprocess Time)
Среднее время предварительной обработки — среднее время выполнения функции предварительной обработки на пакете;
Среднее время пересылки — среднее время выполнения функции пересылки на пакете;
Среднее время постобработки — среднее время выполнения функции постобработки на пакете.
Все модели оцениваются с размером партии 1.
Размер модели
Для размера модели мы используем размер модели на диске, который является разумным показателем размера модели в памяти.
Вычислительные машины
Все модели из одной области выводятся на облачных машинах с одинаковыми характеристиками для сравнения их на фарватере. Они оцениваются на виртуальной машине Google Cloud n1-standard-1.Эта машина имеет 1 виртуальный ЦП и 3,75 ГБ ОЗУ.
Примечание: Мы оцениваем все модели на vCPU, поэтому результаты ожидаемо низкие. Учтите, что при более мощном процессоре производительность будет выше.
Также для сравнения и лучшего понимания результатов производительности, например, мы оценили CenterNet на не облачной машине со следующими характеристиками: