Переделка приложения SeeFood из «Силиконовой долины»
Используйте Teachable Machine и Flutter для разработки приложения Jian Yang
Я провел рождественские каникулы, пересматривая потрясающий комедийный сериал Силиконовая долина, в котором Цзянь Ян разработал мобильное приложение для классификации еды на «хот-дог» и «не хот-дог». Вот кусок сериала!
Мой энтузиазм по поводу этого шоу побудил меня воссоздать прототип приложения, который в основном будет выглядеть следующим образом:
Создайте модель
Прежде всего, мы должны продолжить, создав бинарный классификатор для определения продуктов, принадлежащих к категории хот-дог, и тех, которые к ней не относятся. В моей последней статье я показал, как создать систему глубокого обучения, способную классифицировать собак и кошек, вы можете найти ее здесь.
Для простоты я представлю в этом письменном руководстве довольно классный и эффективный инструмент под названием Обучаемая машина, который позволит вам создать двоичный классификатор в несколько кликов!
Первым шагом является создание нового проекта изображения.
После этого вы переименуете свой первый класс в «HotDog», а второй — в «Not HotDog».
После завершения шагов 1 и 2 вы можете загрузить все изображения, соответствующие установленным категориям, перетащив их на кнопку Загрузить. Вы можете найти нужные изображения в следующем наборе данных Kaggle.
Наконец, нажмите на «модель поезда» и подождите. В конце этапа обучения вы сможете загрузить обученную модель в формате tensorflow lite.
Затем вы извлечете сжатый архив после его загрузки и откроете файл label.txt. Чтобы остаться с простыми текстами «HotDog» и «Not HotDog», удалите из файла символы «0» и «1».
Данные
В наборе данных, который я предоставил с общедоступной лицензией, всего 3000 изображений, доступных для обучения: из этого количества 1500 показывают хот-дог на картинке, а на остальных появляются не хот-доги изображения, такие как еда, люди, домашние животные и т. д.
Более того, тестовый набор состоит из 322изображений для обоих категории.
Создадим мобильное приложение
Для разработки этого приложения я собираюсь использовать Flutter в Android Studio. Если вы не знаете, как настроить приложение Flutter, просто выполните эти простые шаги.
В папку ресурсов (если у вас ее нет, просто создайте ее) вставьте извлеченные файлы: labels.txt и model_unquant.tflite. .
Я также добавил еще три изображения, которые будут отображаться, когда приложение возвращает результат: хот-дог или нет.
Откройте файл pubspec.yaml и вставьте ниже эти зависимости.
dependencies: flutter: sdk: flutter image_picker: ^0.8.4+4 tflite: ^1.1.2 splashscreen: ^1.3.5
Если у вас возникли проблемы с установкой этих пакетов, просто найдите их на https://pub.dev/ и следуйте инструкциям.
Вам также необходимо добавить (раскомментировать) каталог assets в файл pubspec.yaml:
# To add assets to your application, add an assets section, like this: assets: - assets/ # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg
Откройте Android/app/build.gradle и вставьте следующий код в блок android:
aaptOptions{ noCompress ‘tflite’ noCompress ‘lite’ }
и измените minSdkVersion на 19.
Теперь вам нужно создать только 2 файла дротика в папке lib:
Теперь скопируйте и вставьте следующий код в файл main.dart.
В предыдущем коде мы установили заголовок приложения, а домашняя страница была перенаправлена на класс Home. Теперь мы наконец можем создать класс Home в файле home.dart.
Даже если этот код кажется довольно сложным, большая его часть просто делает вещи более красивыми, устанавливая цвета, макет, текст и т. д.
Важные методы немногочисленны. Начнем с pickImage и pickGallryImage. Это асинхронные функции, поскольку им нужно, чтобы пользователь сделал или выбрал фотографию со своего устройства. В начальном состоянии метод loadModel просто загружает модель, которую мы разработали с помощью Teachable Machine. После этого модель закрывается в Расположенный метод. Метод classifyImage — это ядро приложения, которое при наличии файла изображения возвращает «HotDog» и «Not HotDog».
Заключение
Результатом этой работы является то, что происходит, когда вы смотрите такое техническое шоу, как «Силиконовая долина». Теперь вам просто нужно найти таких же ботаников, как вы, и разработать приложение, которое позволит вам добиться успеха в роли Цзин Ян!