Платформы для обнаружения объектов

ТензорФлоу:

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

TensorFlow — это система машинного обучения, которая работает в больших масштабах и в гетерогенных средах. Он использует графы потоков данных для представления вычислений, общего состояния и операций, изменяющих это состояние. Он сопоставляет узлы графа потока данных между многими машинами в кластере и внутри машины между несколькими вычислительными устройствами, включая многоядерные ЦП, графические процессоры общего назначения и специально разработанные ASIC, известные как блоки тензорной обработки (TPU).

ТензорФлоу Лайт:

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

Поскольку задачи машинного обучения требуют значительных вычислительных ресурсов, для повышения производительности используется оптимизация модели. Минимальные аппаратные требования TFM с точки зрения размера оперативной памяти (ОЗУ) и скорости процессора низкие, а основным узким местом является скорость вычислений, поскольку желаемая задержка для мобильных приложений невелика.

TensorFlow Lite (TFL) — это эволюция TFM, которая уже поддерживает развертывание на мобильных и встроенных устройствах. Поскольку существует тенденция включать машинное обучение в мобильные приложения, а пользователи предъявляют более высокие требования к своим мобильным приложениям с точки зрения камеры и голоса. Некоторые из оптимизаций, включенных в TFL, включают аппаратное ускорение через кремниевый слой, фреймворки, такие как Android Neural Network API, и оптимизированные для мобильных устройств ANN, такие как MobileNets и SqueezeNet. Модели, обученные TF, автоматически преобразуются в модель TF с помощью TF.

CUDA и cuDNN:

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

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

Кафе:

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

В Caffe ученые и практики в области мультимедиа имеют упорядоченный и расширяемый набор инструментов для современных алгоритмов глубокого обучения с готовыми эталонными моделями. Быстрый код CUDA и вычисления на графическом процессоре соответствуют потребностям отрасли, обеспечивая скорость обработки более 40 миллионов изображений в день на одном графическом процессоре K40 или Titan. Одни и те же модели можно запускать в режиме ЦП или ГП на различном оборудовании: Caffe отделяет представление от фактической реализации, а плавное переключение между разнородными платформами ускоряет разработку и развертывание. Caffe можно запускать даже в облаке.

Теано:

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

Интерфейсом для Theano является Python, мощный и гибкий язык, который позволяет быстро создавать прототипы и обеспечивает быстрый и простой способ взаимодействия с данными. Недостатком Python является его интерпретатор, который во многих случаях является плохим механизмом для выполнения математических вычислений как с точки зрения использования памяти, так и с точки зрения скорости. Theano преодолевает это ограничение, используя компактность и пластичность языка Python и сочетая их с быстрым и оптимизированным вычислительным механизмом.

Керас:

Keras — это высокоуровневый API нейронных сетей, написанный на Python и способный работать поверх TensorFlow, CNTK или Theano. Он был разработан с акцентом на возможность быстрого экспериментирования. Преимущества использования Keras:

  • Позволяет легко и быстро создавать прототипы (благодаря удобству использования, модульности и расширяемости)
  • Поддерживает как сверточные сети, так и рекуррентные сети, а также их комбинации.
  • Работает без проблем на CPU и GPU

ПиТорч:

PyTorch — это пакет Python, который предоставляет две функции высокого уровня:

  • Тензорные вычисления (например, NumPy) с сильным ускорением графического процессора
  • Глубокие нейронные сети, построенные на ленточной системе автоградации

Использованная литература:

[1] Оскар Алсинг. (2018). Обнаружение мобильных объектов с использованием TensorFlow Lite и Transfer Learning.

[2] Март н Абади, Ашиш Агарвал, Пол Бархам, Юджин Бревдо, Жифэн Чен, Крейг Ситро, Грег С. Коррадо, Энди Дэвис, Джеффри Дин, Матье Девин, Санджай Гемават, Ян Гудфеллоу, Эндрю Харп, Джеффри Ирвинг, Майкл Айсард , Янцин Цзя, Рафал Йозефович, Лукаш Кайзер, Манжунат Кудлур, Джош Левенберг, Дэн Ман Э, Раджат Монга, Шерри Мур, Дерек Мюррей, Крис Ола, Майк Шустер, Джонатон Шленс, Бенуа Штайнер, Илья Сутскевер, Кунал Тальвар, Пол Такер, Винсент Ванхуке, Виджай Васудеван, Фернанда Виегас, Ориол Виньялс, Пит Уорден, Мартин Ваттенберг, Мартин Вике, Юань Юй и Сяоцян Чжэнь. (2015). TensorFlow: крупномасштабное машинное обучение в гетерогенных распределенных системах.

[3] Рами Аль-Рфу, Гийом Ален, Амджад Альмахайри, Кристоф Ангермюллер, Дмитрий Богданау, Николя Баллас, Фридрик Бастьен, Джастин Байер, Анатолий Беликов, Александр Белопольский, Йошуа Бенжио, Арно Бержерон, Джеймс Бергстра, Валентин Биссон , Джош Бличер Снайдер, Николя Бушар, Николя Буланже Левандовски, Ксавье Бутилье, Александр де Брбиссон, Оливье Брелё, Пьер-Люк Кэррье, Кёнхён Чо, Ян Чоровски, Пол Кристиано, Тим Куйманс, Марк Александр Кт, Мириам Кт, Аарон Курвиль, Янн Н. Дофин, Оливье Делалло, Жюльен Демут, Гийом Дежарден, Сандер Дилеман, Лоран Дин, Млани Дюкофф, Винсент Дюмулен, Самира Эбрахими Кау, Думитру Эрхан, Зие Фан, Орхан Фират, Матье Жермен, Ксавье Глоро, Ян Гудфеллоу, Мэтт Грэм, Каглар Гулсере, Филипп Амель, Ибан Арлуше, Жан-Филипп Хенг, Бальц Хидаси, Сина Хонари, Арджун Джейн, Сбастьен Жан, Кай Джиа, Михаил Коробов, Вивек Кулкарни, Алекс Лэмб, Паскаль Ламблин, Эрик Ларсен, Цар Лоран, Шон Ли, С Аймон Лефрансуа, Саймон Лемье, Николас Лонар, Чжоухан Линь, Джесси А. Ливизи, Кори Лоренц, Иеремия Лоуин, Цяньли Ма, Пьер-Антуан Манзагол, Оливье Мастропьетро, ​​Роберт Т. МакГиббон, Роланд Мемишевич, Барт ван Мерринбур, Винсент Михальски, Мехди Мирза, Альберто Орланди, Кристофер Пал, Разван Паскану, Мохаммад Пезешки, Колин Раффель, Дэниэл Реншоу, Мэтью Роклин, Адриана Ромеро, Маркус Рот, Питер Садовски, Джон Сальватье, Франсуа Савар, Ян Шлтер, Джон Шульман, Габриэль Шварц, Юлиан Влад Сербан , Дмитрий Сердюк, Самира Шабанян, Тьен Саймон, Сигурд Шпикерманн, С. Рамана Субраманьям, Якуб Сыгновски, Джрми Тангвай, Гийс ван Тулдер и др. (2016). Theano: платформа Python для быстрого вычисления математических выражений.

[4] Янцин Цзя, Эван Шелхамер, Джефф Донахью, Сергей Караев, Джонатан Лонг, Росс Гиршик, Серджио Гуадаррама, Тревор Даррелл. (2014). Caffe: сверточная архитектура для быстрого внедрения функций.

[5] Шолле, Ф. (2015) Керас https://keras.io

[6] Пашке, Адам и Гросс, Сэм и Чинтала, Сумит и Чанан, Грегори и Янг, Эдвард и ДеВито, Захари и Лин, Земинг и Демезон, Албан и Антига, Лука и Лерер, Адам. (2017). Автоматическое дифференцирование в PyTorch.

[7] Джон Николлс, Ян Бак, Майкл Гарланд и Кевин Скадрон. 2008. Масштабируемое параллельное программирование с помощью CUDA.

[8] https://github.com/tensorflow/tensorflow

[9] https://medium.com/datadriveninvestor/how-to-deploy-tensorflow-to-android-feat-tensorflow-lite-957a903be4d

[10] https://devblogs.nvidia.com/tensor-ops-made-easier-in-cudnn/

[11] https://commons.wikimedia.org/wiki/File:Theano_logo.svg

[12] https://www.exxactcorp.com/Caffe

[13] https://github.com/pytorch/pytorch