Искусство флаттера: машинное обучение

Искусство флаттера

The Art of Flutter — это серия Medium для начинающих, иллюстрирующая различные ключевые темы и идеи о Flutter и Dart. В этой серии также будут представлены Firebase, платформа Backend-as-a-Service (BaaS) как часть Google Cloud Platform, а также рассказывается о том, как использовать Flutter с Firebase использует Golang для облачных функций Firebase в массовом производстве.

Flutter с машинным обучением Firebase

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

Одна из ключевых функций — Firebase ML (машинное обучение). Под капотом он работает на различных сервисах Google Cloud Platform, таких как Google Cloud Vision и Cloud Auto ML.

Как интегрировать Firebase ML

Firebase ML предоставляет вам 3 варианта интеграции возможностей машинного обучения в ваши приложения.

API машинного обучения

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

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

 

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

С помощью API машинного обучения вы можете в кратчайшие сроки создать приложение на основе машинного обучения.

Tensorflow Lite с обучаемой машиной

Второй вариант — обучить кастомную модель с помощью Tensorflow Lite с помощью Teachable Machine. Как вариант, вы можете написать код самостоятельно, используя Python, JavaScript или Swift.

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

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

См. также:  Fairmodels: давайте бороться с предвзятыми моделями машинного обучения (часть 2 - визуализация)

Убедившись в точности модели, вы можете экспортировать модель и преобразовать ее в формат, соответствующий вашей платформе. В этом случае мы можем экспортировать пользовательскую модель как модель Tensorflow Lite для мобильных приложений.

После того, как вы экспортировали модель в виде загружаемого zip-файла, вы получите 2 файла — labels.txt и model_unquant.tflite. Файл labels.txt — это список меток данных для модели для соответствующей классификации входных данных. Файл model_unquant.tflite — это фактическая пользовательская модель в формате Tensforflow Lite.

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

 

После того, как модель была встроена в мобильные приложения Flutter, вы можете использовать пользовательскую модель Tensorflow Lite с помощью пакета tflite.

В следующей демонстрации приложения я использовал пакеты tflite и camera, чтобы создать приложение для распознавания продуктов, которое распознает продукты pslove с помощью потока живых изображений из канала камеры. Объединив технологии Flutter, Firebase ML и Tensorflow и связанные с ними инструменты, я могу легко создать это мобильное приложение за день.

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

Облако AutoML Vision

Третий вариант — использовать Cloud AutoML Vision для обучения вашей пользовательской модели. Как и в случае с обучаемой машиной, вы можете быстро и легко обучать пользовательские модели машинного обучения без необходимости самостоятельно кодировать их. Эта служба обычно используется для более сложных случаев использования, которые невозможно эффективно реализовать с помощью Teachable Machine.

Однако Cloud AutoML Vision имеет больше функций, чем Teachable Machine. Cloud AutoML Vision позволяет обучать классификации по нескольким меткам в дополнение к классификации по одной метке, которую Teachable Machine может предоставить. Более того, он может генерировать прогнозы с помощью REST API или экспортировать как модель Tensorflow для использования в мобильных и встроенных устройствах.

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

 

По цене он дороже Teachable Machine. Как правило, использование облачной службы не является бесплатным и взимается в зависимости от использования в соответствии с различными типами действий в службе Cloud AutoML Vision. Однако вы можете запросить бесплатные пробные кредиты с первым набором бесплатных квот в течение первого года использования службы.

См. также:  Создание среднего RSS-канала в приложении Flutter

Flutter с Firebase ML в действии

Активное участие в международном хакатоне # Hack20 Flutter

Чтобы увидеть Flutter с Firebase ML в действии, мы с коллегой воспользовались возможностью принять участие в ежегодном хакатоне под названием # Hack20 Flutter International Hackathon. На этом хакатоне мы хотели поэкспериментировать с новыми функциями и пакетами как во Flutter, так и в Firebase.

После некоторого обсуждения с моим коллегой я решил поэкспериментировать с Firebase ML, и мой коллега создаст пользовательские интерфейсы для демонстрационного приложения. На этом хакатоне мы должны создать приложение на основе заданной темы. В нашем демонстрационном приложении мы решили создать приложение Flutter на основе темы в стиле ретро, ​​Cyberpunk Future.

Представляем Retrotrack

На этом хакатоне мы создали ретро-приложение за 24 часа. Приложение называется Retrotrack. Это приложение для отслеживания температуры лица в стиле ретро Flutter, построенное в футуристическом стиле на основе Машинного обучения Firebase.

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

Он разработан с использованием Машинного обучения Firebase, Провайдер, Улей, Вспышка, Камера и Изображение.

Поскольку нам необходимо измерять температуру каждый день и во время посещения разных мест, Retrotrack позволяет легко и весело измерять температуру. Это приложение можно использовать как в частных, так и в общественных местах, таких как торговые центры, рабочие места, школы и даже на частных мероприятиях. Дизайн приложения вдохновлен популярной видеоигрой Fallout, которая изображает жизнь после постапокалиптического мира в пустошах.

Прохождение приложений

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

Первый вариант использования — обнаружение лиц на заданном изображении. Приложение сначала открывает камеру и делает снимок отдельного человека или группы людей. После того, как камера получит изображение, приложение отправит изображение в Firebase ML для обнаружения лиц на изображении.

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

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

См. также:  3 менее известных оператора трубы в Tidyverse

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

Чтобы получить правильный текстовый блок, нам нужно очистить исходную строку, удалив нечисловые символы, такие как алфавиты и пробелы. После этого мы попробуем преобразовать текстовый блок в двойную переменную. Если текстовый блок не может быть преобразован в переменную типа double, это означает, что это не число или он содержит нечисловые символы. Затем, если текстовый блок можно преобразовать в переменную типа double, мы проверим, находится ли значение типа double в пределах человеческого диапазона температур. С помощью этого простого алгоритма мы вернем лучший результат с обрезанным изображением обнаруженной температуры, которое будет определено как действительное значение температуры.

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

Ключевые выводы

Firebase ML — одна из мощных функций экосистемы Firebase. Все, что вам нужно сделать, это использовать API машинного обучения для большинства случаев использования. Если ваши варианты использования требуют от вас создания собственных пользовательских моделей, вы можете использовать веб-инструмент Teachable Machine или службу Cloud AutoML для обучения пользовательских моделей с вашими наборами данных и экспорта пользовательских моделей как моделей Tensorflow или в качестве REST. Сервис API за считанные минуты.

Поскольку мы продемонстрировали использование службы Firebase ML с нашим приложением Flutter, это позволяет легко реализовать машинное обучение при разработке программного обеспечения без необходимости приобретать опыт машинного обучения.

В то же время мы смогли создать приложение Flutter на основе машинного обучения в течение 24 часов! Спасибо Firebase и Flutter за создание потрясающих технологий для всех разработчиков по всему миру!

На хакатоне # Hack20 Retrotrack был признан 100 лучших проектов (из 266 проектов) в финальном раунде (Раунд 2) глобального голосования сообщества. Спасибо сообществу Flutter за голоса!

Пожалуйста, следите и следите за будущими статьями в публикации FlutterSG.

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

Статьи по Теме

Понравилась статья? Поделиться с друзьями:
IT Шеф
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: