"Машинное обучение"
Оптимизируйте стек вашего компьютерного зрения с помощью комплексной платформы 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. Как человек, которому нравится работать над компьютерным зрением, я с нетерпением жду этих функций.
Заключительные мысли
В этой статье мы рассмотрели некоторые насущные проблемы, с которыми сталкиваются практики ИИ и специалисты по обработке данных при работе над проблемами компьютерного зрения. Хотя иногда это может быть неприятно, но при использовании правильных инструментов и платформ работа с такими проблемами может быть чрезвычайно полезной.
Мы взяли общедоступный набор данных, использовали существующие и новые аннотации, дополнили набор данных, обучили его и сделали выводы по модели. Все это мы сделали без необходимости кодировать ни одной строчки. Разве это не потрясающе?
Лично я считаю, что эксперименты с платформой чрезвычайно полезны, и я искренне надеюсь, что вы нашли ценность в этой статье. Не стесняйтесь связываться со мной и оставлять любые отзывы.
Вы можете не ограничиваться одним этим примером, а многими другими, чтобы создать свое портфолио. Если вы работаете в отрасли и ваша команда часто занимается проектами резюме, то эта платформа вам просто необходима.