Malaysian Smart Factory 4.0 @ SHRDC недавно разработала приложение для глубокого обучения с низким кодом и открытым исходным кодом, используя библиотеку Deeplearning4J под названием DL4JRA (Deeplearning4Java React App). Как человеку, который изучил библиотеку DL4J, мне пришлось опробовать приложение, чтобы посмотреть, соответствует ли оно тому, что я изучил. Я не очень хорошо разбираюсь в библиотеке, скажем так, но я собираюсь попробовать ее, используя те знания, которые мне из нее известны.

Краткое введение обо мне (чтобы вы поняли контекст моего уровня знаний); Я выпускник факультета машиностроения с базовыми знаниями в области программирования, который решил заняться машинным обучением и анализом данных. Я присоединился к программе обучения искусственному интеллекту, которая преподавала DL4J, поэтому мои знания о Java ограничены только базовыми знаниями DL4J.

Продолжайте. Согласно их странице GitHub, целью разработки DL4JRA является расширение использования искусственного интеллекта (ИИ) в различных вариантах использования и приложениях в более широком сообществе за счет разработки с низким кодом. Стратегия приложений Low Code с использованием DL4JRA позволит пользователям эффективно создавать наборы данных, маркировать (используя внешние инструменты маркировки, такие как Label Studio), обучать и развертывать в рамках цикла разработки. Это позволяет пользователю выполнять быструю разработку приложений и прототипирование соответствующих приложений глубокого обучения для приложений компьютерного зрения с использованием платформы DL4J. Это снижает входной барьер для сообщества, чтобы иметь возможность использовать ИИ для своих приложений с использованием DL4J.

Введение

Eclipse Deeplearning4Java — это библиотека программирования, написанная на Java для виртуальной машины Java (JVM), разработанная в основном группой машинного обучения в Сан-Франциско и коммерчески поддерживаемая Skymind, которая объединяет Deeplearning4J (DL4J), TensorFlow, Keras и другие библиотеки глубокого обучения на предприятии. дистрибутив под названием Skymind Intelligence Layer. Deeplearning4j был внесен в Eclipse Foundation в октябре 2017 года. Согласно Википедии, это открытое и активно разрабатываемое программное обеспечение для глубокого обучения.

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

Содержимое DL4JRA

Когда вы впервые откроете DL4JRA, вы увидите 5 функций:
· Генерация набора данных
· Нейронная сеть
· Обнаружение объектов
· Классификация изображений
· Сигнализация MQTT

Создать набор данных

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

Конечно, вы можете обучить свою модель всего на нескольких картинках, но гораздо лучше, если у вас будет много картинок (я говорю о сотнях и тысячах!). Итак, для этого вы можете укажите количество ваших скриншотов и у вас будут практически идентичные снимки вашего объекта. Я проверил это, перемещая объект перед веб-камерой, чтобы немного изменить набор данных, и DL4JRA может делать снимки экрана в соответствии с движением вашего объекта в реальном времени.

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

Нейронная сеть

Здесь находится большая часть библиотеки DL4J. Я вижу, что в рамках этой функции можно выполнить 4 задачи:

· Классификация объектов (с использованием многослойной сети)

MultilayerNetwork — это самый простой и основной способ начать создание сверточной нейронной сети в DL4J. Вы можете использовать Multilayer для создания сети классификации изображений или сети классификации CSV. DL4JRA предоставляет несколько слоев, которые вы можете использовать в соответствии с вашими потребностями: сверточная, субдискретизация, плотная и локальная нормализация отклика.

Если вы не хотите создавать свою собственную CNN, DL4JRA также предоставляет некоторые уже существующие модели, доступные для использования: SqueezeNet, VGG16 и VGG19. CNN обычно состоит из множества узлов и слоев, поэтому эти модели были заполнены узлами и оптимизацией, которые было бы трудно вручную организовать с узлами. SqueezeNet — самая легкая модель. Модели VGG тяжелее, и если у вас мощный процессор и оперативная память, вы можете использовать эти модели для обучения. В противном случае он не будет работать из-за нехватки памяти. У меня 8 ГБ ОЗУ, и я могу запустить только SqueezeNet. Для запуска VGG16 и VGG19 потребуется нечто большее.

· Сеть ComputationGraph

Все, что может MultiLayerNetwork, может и ComputationGraph, хотя конфигурация может быть немного сложнее. Я признаю, что не умею пользоваться ComputationGraph, за исключением создания рекуррентной нейронной сети (RNN) и долговременной памяти (LSTM) для классификации CSV TimeSeries, и это то, что может сделать DL4JRA. с узлами сети ComputationGraph.

· Сегментация изображения

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

· Обнаружение объектов (с использованием предварительно обученной модели)

Когда я впервые попробовал машинное обучение, я узнал о моделях YOLO. Мне нравится, когда я знаю, что мы можем использовать модели YOLO в библиотеке DL4J. DL4JRA подготовила специализированные узлы для обучения ваших наборов данных обнаружения объектов с использованием формата YOLO (под форматом YOLO я имею в виду наличие файлов аннотаций, содержащих метки объектов на изображениях). Существующие предварительно обученные модели в DL4JRA — это TinyYOLO и YOLOv2. Вы можете использовать это, чтобы обучить свою модель обнаруживать объекты, которые вы хотите обнаруживать, используя предварительно обученную модель TinyYOLO и YOLOv2 ИЛИ переобучить существующую пользовательскую модель TinyYOLO.

На данный момент он очень прост в использовании и навигации. Эта часть приложения использует узлы для организации потока вашей нейронной сети (если вы уже работали с Node-RED, использование аналогично этому). Итак, вам нужно просто перетащить и бросить.

Обнаружение объекта

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

Есть также функции записи и ведения журнала, если вы хотите увидеть результат впоследствии, который я нахожу хорошим и может компенсировать небольшое окно обнаружения и метку процента недоверия. Я могу вернуться к записи обнаружения объектов и наблюдать за обнаружениями должным образом, так как окно обнаружения немного маленькое, и я не могу правильно видеть обнаруженные метки; а также проверьте процент достоверности, проверив журнал.

Классификация изображений

Вы также можете протестировать свою модель классификации изображений здесь. Мне кажется странным, что в приложении есть функция обнаружения объектов и функция классификации изображений, но после ее использования я вижу некоторые существенные различия. Оно несомненно похоже на Обнаружение объектов, но вместо использования YOLO и показа окна обнаружения; это запускает вашу модель CNN в фоновом режиме и классифицирует изображение в целом. Вы можете поместить свой объект в вид веб-камеры и посмотреть, как ваша модель классифицирует изображение. Однако вам нужно будет настроить имена меток в алфавитном порядке, иначе будут отображаться только метка-1, метка-2 и так далее. Мы можем тестировать только с помощью обученной модели, а не с уже существующей моделью для тестирования, в отличие от тестирования обнаружения объектов.

Сигнализация MQTT

Наконец, последняя функция, которую нужно представить, — это сигнальная функция MQTT. Я не знаю, что такое MQTT и что с ним можно сделать, но я все равно хочу его протестировать ради статьи.

Итак, что такое MQTT? Это простой протокол обмена сообщениями, разработанный для ограниченных устройств с низкой пропускной способностью. Таким образом, вы можете использовать это для подключения DL4JRA к другим устройствам IOT. Они использовали протокол EMQX, который является брокером MQTT с открытым исходным кодом, но есть одна часть MQTT, которую мне нужно установить на локальном брокере для просмотра результатов обнаружения от Node-Red. Это отличный вариант, если вы хотите выполнить развертывание на локальном сервере, а не использовать общедоступный брокер, где наша безопасность может быть проблемой.

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

И это краткий итог знакомства с DL4JRA!

Я подготовил обучающие видео, которые доступны в этом плейлисте.

Вот первые разработчики и участники DL4JRA:
Li Xianlong (LinkedIn)
Tam Wei Yao (LinkedIn)
Николас (GitHub)
Нурул Иззати Сухарди (LinkedIn)

Malaysian Smart Factory 4.0 @ SHRDC открыта для сотрудничества с сообществом разработчиков, университетов и предприятий, чтобы внести свой вклад в проект! Вы можете обратиться в Ц. Доктор Чуа Вен Шьяндля обсуждения вариантов использования и вклада в DL4JRA.

Вы можете посетить и клонировать репозиторий реагирующих приложений через их страницу DL4JRA GitHub.