"Машинное обучение"

Оптимизируйте стек вашего компьютерного зрения с помощью комплексной платформы MLOps

Хотел бы я найти это решение намного раньше

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

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

Я слышал, как клиент говорит:« Нет . »Стоимость развертывания нашего решения была слишком высокой. Потратив много времени на создание прототипа решения, я почувствовал разочарование, услышав это, но именно так работает отрасль.

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

Работая в удаленных командах, представьте, как собрать все активы (натренированные веса, изображения и эксперименты) в одном месте? Хотя я перечислил некоторые из проблем, с которыми мы столкнулись, основная проблема была ясна: нам нужно было раз и навсегда упростить наш стек компьютерного зрения.

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

Давайте нырнем, ладно?

Nexus спешит на помощь

Хотелось бы, чтобы я столкнулся с этим решением намного раньше.

Nexus - это платформа без кода, которая помогает практикам ИИ от маркировки, создания дополнений, обучения модели нейронной сети до развертывания корпоративного уровня. Это платформа MLOps, которая упрощает создание приложений для компьютерного зрения .

Если обещание настоящее, это огромная сумма.

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

Нет, я не шучу. В противном случае я бы не стал об этом писать.

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

Как я уже сказал, в Nexus есть уровень бесплатного пользования, на котором вы можете создать учетную запись, чтобы следить за тем, что я вам бесплатно покажу (спойлер: вам это понравится!).

Пример из реальной жизни: обнаружение автомобилей

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

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

Данные, которые мы будем использовать, изначально взяты из Машинного обучения TJHSST и могут быть загружены с Kaggle. Данные содержат изображения автомобилей и других транспортных средств на дороге, разделенных на наборы данных поездов и испытаний.

Шаг 1. Аннотации к данным

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

  • На главной странице нажмите create a project и дайте ему имя, например «Обнаружение автомобилей».
  • Выберите type как «Обнаружение объекта» и content как «Изображение». Это помогает платформе настроить репозиторий проекта по мере необходимости.
  • Затем щелкните значок image на боковой панели, загрузите все обучающие изображения. (Примечание: я удалил последнее обучающее изображение, поскольку на бесплатном уровне был лимит загрузки в 1000 изображений, но этого было более чем достаточно для обучения нашей модели.)

Поскольку в нашем наборе данных есть аннотации, я загрузил их в платформу, используя вкладку Annotations после выбора формата Bounding Box CSV Four Corner Detection. Пожалуйста, проверьте эту конкретную страницу, чтобы узнать, как должен быть отформатирован ваш CSV-файл. (Примечание: в нашем случае я добавил дополнительный столбец метка и соответствующим образом отредактировал заголовок.)

Платформа дает вам сводное представление, и мы замечаем, что аннотированы только 354/1000 изображений, а мы должны аннотировать остальные. Используйте вкладку Annotator слева, чтобы просматривать изображения одно за другим и быстро рисовать метки. В нашем случае при осмотре на изображениях без аннотаций машины вообще нет.

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

Шаг 2: Обучение модели

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

  • Щелкните вкладку workflow слева, чтобы создать пустую страницу рабочего процесса.
  • Щелкните правой кнопкой мыши пустую страницу и добавьте блоки. Общий рабочий процесс должен содержать три основных блока: набор данных, дополнения, модель. Перетащите и соедините их последовательно, чтобы превратить его в конвейер.

  • Настройте параметры, нажимая на блоки. Я экспериментировал с некоторыми из них, чтобы рассчитаться с моделью FasterRCNN InceptionV2 640x640 с размером партии 2, 5000 эпох, тестовым разделением поезда 0,2, и некоторым горизонтальным переворотом, вертикальным переворотом, центральным кадрированием в качестве дополнений.
  • Перед тренировкой, нажав Preview Augmentations, я сравнил различные наборы расширенных техник и полученные изображения, что помогло мне определиться с конкретными техниками аугментации, которые я хотел использовать.
  • Нажмите Run Training на кнопке в правом нижнем углу и начните тренировку. В качестве стратегии выбора я использовал 1 графический процессор Nvidia T4 с наименьшими потерями при проверке. Краткое описание наших конфигураций можно увидеть ниже.

  • На обучение у меня ушло около 3 часов, и была доступна интегрированная доска TensorBoard для анализа общих показателей оценки. Глядя на это, мы можем сказать, что наша модель хорошо сходимся и обучалась.

Наконец, щелкните вкладку artifacts, выберите артефакт, имеющий отношение к завершенному обучению. Щелкните его правой кнопкой мыши и загрузите модель TensorFlow на свой локальный компьютер.

Мы загружаем модель на нашу локальную машину, чтобы мы могли использовать визуальную платформу с открытым исходным кодом под названием Portal для локального прогнозирования.

Шаг 3: вывод

Мы будем использовать недавно выпущенный движок с открытым исходным кодом, Portal, который действительно хорошо интегрируется с Nexus, чтобы делать прогнозы. Портал - это самый быстрый способ загрузить и визуализировать ваши модели глубокого обучения, и точка.

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

Используя значок «+» на домашней странице, я зарегистрировал модель TensorFlow локально, указав путь к папке. Повторный щелчок по зарегистрированной модели загружает загрузку (Примечание: вы можете загрузить только одну модель в любой момент).

Используя опцию Open Folder на вкладке Assets Folder, я загрузил тестовые изображения, которые мы получили, мы загрузили изображения. Мы можем выполнять вывод изображений по одному или как массовую операцию. Я выбрал вариант Bulk Analysis и позволил модели делать прогнозы в реальном времени на изображениях.

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

Как вы уже поняли, я намеренно оставил пример простым, чтобы провести вас по всему стеку резюме с использованием платформ Nexus и Portal; однако возможностей на этих платформах больше.

Ресурсы, которые помогут вам расстаться

Хотя платформа многообещающая, я буду честен; Я застрял, когда столкнулся с проблемами во время работы над своим проектом, и вы тоже можете. Вот что я сделал:

  • Я просто зашел в чат на сайте и задавал вопросы. Команда мне очень помогла и терпеливо ответила на все мои вопросы.
  • Если вы застряли на каком-либо из перечисленных мной шагов, обратитесь к этой всеобъемлющей документации. Это было действительно полезно для меня.
  • Я следил за этим обучающим видео на YouTube.
  • Присоединяйтесь к слабому сообществу, чтобы общаться и предлагать отзывы напрямую команде разработчиков.

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

Заключительные мысли

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

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

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

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