This page in English
Приложение для на основе IONDV. Framework(репозиторий кода) для накопления данных, нормирования и разметки изображений, создания, обучения и сопоставление моделей Tensor Flow без программирования для стандартной функциональности. Возможно полная кастомизации логики в виде модификаций моделей и обработки датасета с разработкой кода на Node.js.
В приложение реализован пример импорта данных датасета Fashion-MNIST
IONDV. Framework - это опенсорсное приложение на node.js реализующее функциональность цифровой инструментальной платформы быстрой разработки веб-приложений и микросервисов основанное на метаданных и расширяемое модулями. Основное назначение комплекса решений ускорение создания учетных веб-приложений (ERP) по технологии low-code. Платформа состоит из нескольких опенсорынх компонентов IONDV. Framework, модулей modules и готовых приложений показывающих его функциональность, а также визуальной среды разработки метаданных приложений Studio с открытм кодом. Разработанное приложение можно запустить за 80 секнуд.
-
Дополнительная информация IONDV. Framework site.
Посмотрите короткое видео по созданию и разметке датасета, создании модели нейронной сети, обучению модели и проверке качества распознавания и все это без строчки кода - https://www.youtube.com/watch?v=PhIxyhRCXGY
Демо система доступна по адресу без регистрации: https://tensorflow-dataset.iondv.com. Пользователь demo, пароль ion-demo. В демо режиме ограничено кол-во обучаемых паттернов до 30 штук, импорт до 50 объектов. Вы можете собрать приложение у себя локально для запуска без ограничений. Инструкция ниже.
Датасет формируется как объекты системы, которые можно создавать, загружать, удалять, редактировать.
Для каждого объекта можно определить входит ли он в обучающую выборку или выборку для проверки.
Система позволяет создавать модели и параметризировать их, а также создавать различные обученные модели на текущем датасете.
Обученные модели можно скачивать в формате tensorflow
Для обученных моделей можно создавать отчеты, для сравнения качества распознавания.
TODO
Первое что нужно сделать - наполнить бд объектами для обучения. Самый простой способ это импортировать уже готовые объекты. Для этого нужно перейти во вкладку навигации Datasets и открыть набор fashion-mnist. В этом наборе должны быть указаны все настройки импорта и прикреплены два файла - 2k_train.csv для обучения сети (состоит из выборки в 2000 элементов из fashion-mnist) и 300_test.csv для проверки обучения (300 элементов из fashion-mnist). Для импорта нужно нажать кнопку Import data в окне объекта. Импорт будет происходить в фоновом режиме. Нужно подождать около 30-40 секунд чтобы импортировались все 2300 объектов (проверить можно на вкладке навигации Object).
Следующий шаг - обучить модель. Во вкладке model должна быть уже готовая модель из обзора tensorflow от IBM. Можно сделать свою, но так как структура метаданных для модели пока не очень хорошо оформлена, то для демо лучше взять эту. Определившись с моделью можно идти на вкладку model snapshot. Здесь лежат снимки состояний модели и должен быть один созданный заранее, его нужно открыть. В снимке прикреплена ссылка на модель и заданы все 10 типов объектов из fashion-mnist. Если нужно обучить только на некоторые типы, то список можно отредактировать. Далее нужно скомпилировать модель - в окне редактирования снимка кнопка Compile. После этого в полях Model file и Weights file должны появиться файлы скомпилированной модели. На этом этапе можно запускать обучение - кнопка Teach. Модель обучается на данных по частям, каждая часть проходит 10 эпох. Размеры частей и количество эпох сейчас задаются в IMPORT_BATCH_SIZE, TRAINING_BATCH_SIZE и EPOCHS. Лог обучения и проверки пока не загружается - нужно будет доделать.
Когда модель закончит обучение, ее можно использовать для распознавания объектов. Для этого во вкладке objectPrediction создается новый объект распознавания. В поле Model snapshot нужно прикрепить снимок модели, в поле Object создается новый объект (или прикрепляется имеющийся). В Object заполняется name - любое имя, в image или normalized image нужно прикрепить картинку. Если картинка не нормализована перед загрузкой, то она должна быть в image. В поле crop settings можно задать настройки кадрирования. После того как задано имя и картинка объект нужно сохранить (не закрывать). После сохранения в правом верхнем углу нужно нажать кнопку бизнес-процесса Verify для нормализации и проверки на уникальность картинки. Если проверка пройдена, то объект будет добавлен в набор. Потом его можно использовать в обучении, для этого в Type нужно задать тип, а в State указать Learn или Check, в зависимости от того, будет ли модель на нем обучаться или проверяться. Когда все готово, можно закрыть объект, вернуться в objectPrediction и нажать сохранение. В окне появится кнопка Process with tensorflow. Если ее нажать, то сеть попытается распознать объект на основе того, чему научилась. В логе для каждого типа будет записано насколько вероятно то, что объект относится к этому типу. В поле prediction появится вероятность, с которой сеть уверена в решении, а в recognized type - тип, к которому в итоге решено отнести объект.
Если результаты неудовлетворительные, то сети нужно больше примеров для обучения - можно загрузить fashion-mnist целиком, в нем 61000 элементов. Инструкция в prebuild/readme.txt - пункт 1. Наборы будут скачаны во вложенную папку. Их нужно прикрепить в объект dataset и импортировать, потом переобучить модель.
Нужно создать экземпляр класса object, загрузить картинку в image, либо, при наличии предварительно нормализованной картинки, загрузить ее в normalizedImage. После загрузки нужно перейти по бизнес процессу с помощью кнопки Verify. При необходимости произойдет нормализация картинки, а также проверка на ее уникальность в наборе. Если все успешно - отметится поле verified. После этого объект можно распознать.
curl -T <путь к файлу с картинкой> http://127.0.0.1:8888/rest/recognize
Класс dataset - нужно указать источник данных и нажать кнопку в верхней части окна редактирования объекта. В демонстрационном режиме (NODE_ENV=demo) загружаются 50 случайных паттернов (или меньше, если случайный выбор попал на паттерн, который уже имеется в наборе).
- количество регулируется в lib/util/importFromDataset.js константой DEMO_IMPORT_LIMIT.
Структура метаданных приведена на рисунке:
Назначение основных классов:
- object - объект данных датасета - содержит исходную картинку, нормализованную картинку, тип классификации заданный оператором, связку с результатами предсказания.
- object prediction - класс, связывающий объект данных с результатом обучения - содержит связку с результатом обучения и объектом, процент предсказания, тип и логи.
- learning result - результат обучения - содержит дату создания и редактирования, файл обученной модели и логи.
- models - модель - содержит информацию о типе модели, парамметры компиляции, коллекцию связанных слоев.
- layers - слой модели - содержит информацию о наименовании слоя, активации, наполнении и т.д, в зависимости от заданного слоя.
- dataset - набор данных - содержит информацию о наименовании, типе источника, источник обучения и тестирования, тип обозначенной метки.
Сборка этого приложения на linux может потребовать наличия g++ (для сборки tfjs-node). Обычно g++ можно найти в дереве пакетов ОС непосредственно, либо в составе базовых инструментов разработки, таких как build-essential для Ubuntu.
Пример установки g++ на Ubuntu:
apt install g++
либо
apt install build-essential
Максимальный размер файла.
Позволяет задать максимальный размер заружаемых файлов. Настройка выполняется для атрибута типа "Файл" на форме представления.
Пример:
"options": {
"maxSize": 256000000
}
Размер указывается в Кб.
Разрешенные типы файлов.
Позволяет указать допустимые расширения загружаемых файлов. Настройка выполняется на форме класса для свойства "allowedFileTypes"
атрибута типа "Коллекция файлов".
Пример:
"allowedFileTypes": ["csv", "zip"]
Copyright (c) 2020 LLC "ION DV".
All rights reserved.