Ожидается, что беспилотные автомобили станут будущим личного транспорта. Многие компании, от стартапов до технологических гигантов, инвестируют в свои команды НИОКР в надежде стать первыми, кто достигнет полной автоматизации уровня 5. Одной из важных функций, которыми в настоящее время обладают беспилотные автомобили, является возможность использовать искусственный интеллект и машинное обучение для обнаружения, локализации и классификации своего окружения, чтобы они могли принимать решения в режиме реального времени на основе наиболее точной информации. По этой причине команда Udacity выпустила набор данных сцен вождения, где каждый объект снабжен меткой (пешеход, автомобиль, светофор и т. Д.) И ограничивающей рамкой, обозначающей его точное местоположение на изображении.

Реальная жизнь не сопровождается аннотациями, поэтому наличие системы обнаружения объектов имеет решающее значение для прогнозирования окружения автомобиля и обеспечения безопасной навигации пятого уровня. Подобно моделям глубокого обучения, которые могут научиться назначать метки для целых изображений, такие модели, как YOLO v3, были разработаны и обучены точному рисованию ограничивающих рамок и назначению меток более чем 80 различным типам объектов.

Однако, когда инженеры машинного обучения хотят внедрить такие модели, как YOLO v3, для своих собственных проектов, им нужен способ визуально проверить результат. Кроме того, им может потребоваться предоставить доступ к таким приложениям исследователям, менеджерам и руководителям с разными уровнями доступа. Dash предоставляет доступные, краткие и масштабируемые строительные блоки для создания этого типа инструментов на родном, идиоматическом языке Python - JavaScript не требуется. В следующих разделах мы опишем процесс создания приложения, которое отображает выходные данные YOLO v3 на общедоступных изображениях и сравнивает их с человеческими аннотациями.

Перевод ваших идей в приложение Dash

В качестве первого шага мы создали автономные функции для отображения изображений, загрузки YOLO v3 и форматирования ограничивающих рамок из файлов метаданных. Убедившись, что функции работают, мы создали простой макет с компонентами, которые хотели отобразить, и убедились, что используем только один обратный вызов. За несколько часов мы создали приложение YOLO Dash менее чем из 350 строк кода, и мы были готовы развернуть его и поделиться им со всем миром. Это приложение размещено в Dash Gallery, и вы можете попробовать его здесь.

Изображение, дублированное с обеих сторон, показывает кадр из набора данных Udacity. С помощью элементов управления слева вы можете выбрать объект, который хотите увидеть. Затем вы можете последовательно или случайным образом выбрать другой кадр для отображения. На левом изображении человеческие аннотации наложены на изображение с использованием закрашенных следов рассеяния, тогда как правая сторона показывает предсказанные ограничивающие рамки YOLO v3, которые вычисляются в реальном времени. Мы специально выбрали эту модель, поскольку она способна обрабатывать до 45 кадров в секунду, что идеально подходит для обнаружения в реальном времени. Используя ползунки с правой стороны, вы можете настроить вывод модели, изменив минимальную достоверность, необходимую для отображения блока, а также допустимое перекрытие между двумя блоками одного и того же класса. В этом приложении ничего предварительно не вычисляется: модель YOLO v3 запускается по запросу на каждом кадре и в ответ на изменения параметров.

Создание модульного и многоразового кода

В типичном рабочем процессе на основе блокнотов для науки о данных, например в Jupyter, когда вы хотите параметризовать вывод своих блокнотов, вы можете использовать виджеты IPython, такие как FloatRangeSlider и Dropdown, которые полезны для быстрого прототипирования. Однако, когда вы хотите развернуть и масштабировать свой код, эти widgets вызовы внутри автономной функции модели не всегда удобны, поскольку вы хотите, чтобы ваш код был как можно более модульным, чтобы повторно использовать его в других настройках.

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

Каждый обратный вызов в Dash воплощает отдельную идею. В этом приложении для обнаружения самоуправляемых объектов наша основная идея состоит в том, чтобы отобразить сравнительный результат YOLO v3 с помощью одного обратного вызова. Если вы хотите добавить больше контента в свое приложение (например, добавить модель, которая прогнозирует трехмерную структуру изображения), все, что вам нужно сделать, это обновить макет и создать новый обратный вызов. Из 350 строк кода в этом приложении Dash две трети представляют собой полностью автономный код, предназначенный только для ML, а оставшаяся треть - это чистый макет Dash и код обратного вызова, все красиво разделенные и тестируемые по модулю.

Интерактивная навигация с собственными фигурами Plotly

В Dash Сюжетные фигуры - это первоклассные граждане. Так же, как вы можете использовать их для отображения диаграмм рассеяния и гистограмм, вы также можете использовать фигуры Plotly, чтобы сделать ваши изображения более интерактивными. Например, с помощью Plotly images вы можете легко создать интерактивный проводник изображений примерно на 40 строках Python. Вы можете увеличивать, панорамировать и изменять размер каждого изображения по своему вкусу. Эта функция полезна для обнаружения перекрывающихся и неточных ограничивающих рамок, предсказанных вашей моделью обнаружения; такие детали могли быть упущены, если бы мы отображали только статические изображения. Кроме того, вы можете назначить текст при наведении курсора на каждую ограничивающую рамку, где вы можете включить такую ​​информацию, как достоверность модели.

Dash - это последняя миля для развертывания и масштабирования инициатив ИИ

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

Заинтересованы ли вы в создании подобных приложений Dash и их развертывании в корпоративной среде на масштабируемой современной инфраструктуре Kubernetes? Если так, протяните руку, чтобы узнать больше. Вы также можете ознакомиться со всеми примерами машинного обучения в нашей галерее приложений, чтобы увидеть различные способы использования Dash в качестве интерфейса для ваших проектов машинного обучения.