Простая классификация изображений промышленного уровня

Привет, мир,

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

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

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

Почему мы создали этот API

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

Однако при разработке наших собственных моделей у нас было ощущение, что во многих случаях мы не могли не тратить слишком много часов на написание кода Python - нам все равно приходилось переделывать некоторые части, а иногда и изобретать велосипед, когда дело доходило до создание конвейеров данных, настройка стратегий увеличения данных, адаптация архитектуры нейронной сети к определенному набору данных или оптимизация наших скриптов для обучения на нескольких графических процессорах.

Фактически, мы даже поняли, что у каждого из нас есть внутренние репозитории для различных моделей и наборов данных. Это означало, что у нас не было правильных определений различных архитектур нейронных сетей (например, MobileNet, ResNet, VGGNet, nasnet и т. Д.).

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

Представляем наш простой и модульный API для классификации изображений

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

В частности, мы преследовали следующие цели:

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

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

Как вы можете это использовать?

Все чисто TensorFlow - с его последней версией. Он очень стабилен и надежен, и его можно масштабировать до центра обработки данных, состоящего из графических процессоров. У нас есть много функций предварительной обработки, которые вы можете настроить. Часть обучающей модели находится в TensorFlow 2, где все аккуратно и чисто. Часть экспорта такая же - вы можете экспортировать в несколько строк кода.

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

Кроме того, вы можете запустить его с помощью простой команды:

Чистые нейросетевые архитектуры

Начните свой проект с проверенных и протестированных архитектур нейронных сетей, таких как MobileNet, ResNet, VGGNet, EfficientNet, nasnet и других. Все это проверено и протестировано внутри компании.

Стратегии увеличения объема данных

Выберите из списка вариантов - от случайных геометрических преобразований до дрожания цвета.

Создание конвейера данных

Используйте последнюю оптимизацию конвейера данных TensorFlow с уже настроенной обработкой записи TF, управлением кешем и параллелизмом данных.

Обучение на нескольких графических процессорах

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

Экспорт

Быстро экспортируйте или сохраните обученную модель и начните эффективное развертывание с помощью TensorRT.

Составление отчетов

Быстро собирайте журналы с TensorBoard и выбирайте из списка варианты визуализации.

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

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

Где это найти

Здесь: API классификации UpStride.

Мы надеемся, что этот API может быть вам полезен. Не стесняйтесь поделиться им с друзьями и коллегами, оставьте звезду на GitHub или отправьте нам отзыв на [email protected].

О, еще одна вещь: скоро мы поделимся вторым репозиторием для сегментации и обнаружения объектов - следите за обновлениями!