Переделка приложения 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».

Заключение

Результатом этой работы является то, что происходит, когда вы смотрите такое техническое шоу, как «Силиконовая долина». Теперь вам просто нужно найти таких же ботаников, как вы, и разработать приложение, которое позволит вам добиться успеха в роли Цзин Ян!