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

Rasoee заняла второе место на Global PyTorch Summer Hackathon 2020 в категории мобильных и веб-приложений. Автор Ариджит Гупта. Сделано с Амея Лаад, Аниш Мулай, Дев Чуривала и Смитеш Патил, студентами бакалавриата BITS Goa

Что такое Расое?

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

Как это работает

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

Соберите свой путь к набору данных

При анализе наборов данных, доступных в Интернете, мы увидели, что наиболее достоверным из доступных наборов данных был Набор данных Food-101.

Но набор данных Food-101 показался нам немного ограниченным в разнообразии, и, хотя качество набора данных чрезвычайно высокое, мы решили пойти на риск и создать свой собственный набор данных. Для этого мы использовали парсер изображений bing и много терпения. В результате получился ужасно зашумленный набор данных, который мы затем очистили в меру наших возможностей, но теперь у нас был набор данных с 308 различными категориями продуктов питания.

Модели, модели повсюду

Теперь наступил момент, когда нам пришлось принять самое сложное решение: какую модель использовать? PyTorch имеет такой большой набор моделей, которые можно использовать даже в официальной документации, что мы избалованы выбором. После просмотра множества моделей и рассмотрения соотношения между их размером и глубиной мы остановились на использовании одной из реализаций EfficientNet для PyTorch, а именно модели EfficientNet B2, которая имеет 9,2 млн параметров и размер ~ 300 МБ. Трое из нас обучали разные модели и выполняли предварительную обработку, но в конце концов мы остановились на модели, которая дала нам самую высокую точность, и мы достигли точности 91,31%, используя потери CrossEntropy. Сценарий обучения очень простой, а блокнот для обучения можно найти здесь.

Пользовательский интерфейс

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

Мобильное приложение имеет очень интуитивно понятный пользовательский интерфейс с простым нажатием для загрузки и чистым экраном результатов.

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

Смотреть вперед

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

Вот и все о нашем проекте! Не стесняйтесь проверить:
- Наш Веб-сайт
- Репозиторий Github
- Мобильное приложение

Наконец, мы хотели бы поблагодарить команды PyTorch и Devpost за организацию Global PyTorch Summer Hackathon, несмотря на трудные времена. Опыт онлайн-хакатона был замечательным, и все мы получили массу удовольствия, работая над своей идеей, и было здорово увидеть, что ее признали достойной приза.