Flygrade
Каталоги, рейтинги, поисковые системы
США
Июль 2023
Замысел Flygrade: в приложении авторизованный юзер наводит камеру на карточку и получает информацию о грейде этой карточки по десятибалльной шкале. Оценка выставляется для каждой из сторон, а затем выводится общий средний балл.
Услуга платная, но можно купить абонемент, чтобы оценка каждой конкретной карточки обошлась дешевле — так в приложении работает монетизация.
Данные оценки сохраняются в личном кабинете, их можно использовать позже.
Цель проекта — с помощью нейронной сети определить, какую бы оценку поставила коллекционной карточке профессиональная оценочная комиссия. Шкала оценки состоит из 19 пунктов: от 1 (очень плохое качество) до 10 (идеальной качество) с шагом 0.5. У карточки 2 стороны, их нужно оценить независимо, а после получить итоговую оценку как взвешенное среднее из оценок каждой стороны. Кроме этого, есть 4 критерия, из которых собирается итоговое качество и которые тоже полезно уметь оценивать:
Выцветание карточки;
Потертости, царапины;
Качество углов;
Корректность центровки изображения на карточке.
Каждый из критериев имеет такую же шкалу, как и основная карточка. Их оценка не является обязательной, но способна помочь модели машинного обучения лучше обучиться.
Данные
От клиента нам были переданы порядка 7 тысяч карточек и их оценки: грейд для каждой стороны карточки и, для части карточек, грейды по каждому из четырех критериев.
Качество фотографий было хорошее, но была проблема: в данных был сильный перекос в сторону хороших карточек, т.е. примеров с грейдами в диапазоне 7–10 было гораздо больше, чем в диапазоне 1–6.5. Также перекос был и в критериях.
Чтобы исправить перекос и собрать больше данных, были дополнительно спаршены десятки тысяч изображений с сайта eBay. Они имели грейды и изображения — все как нам нужно.
Однако была проблема: изображения часто были не похожи на те, что мы хотели подавать сети: в них карточка была сильно далеко от камеры, в то время как пользователь в приложении фотографирует карточку почти в упор. Чтобы решить эту проблему, мы сделали сегментационную маску для тысячи карточек. После этого обучили сегментационную нейронную сеть и скормили ей остальные десятки тысяч карточек — таким образом смогли определить местоположение карточки в изображении. Это позволило нам подавать итоговой нейросети фото карточек с eBay в полный размер кадра.
Обучение
Для обучения итоговой модели использовалась сверточная нейронная сеть с основой от сети ResNet-50. По сути основная наша задача состояла из классификации изображения на 19 классов: грейд от 1 до 10 с шагом в 0.5. Обучив сеть на имеющихся данных, мы получили хорошее качество. Однако для нескольких тысяч изображений от клиента у нас также были данные о грейдах конкретных критериев. Они не были нужны для конечного результата, но могли ли они помочь нам увеличивать качество нашего основного классификатора? Мы решили это проверить. Мы взяли обученную на предыдущем этапе сеть и добавили к ней еще 4 классификационных головы под каждый критерий. После дообучили сеть в таком режиме на 5 классификационных голов — под 4 критерия + основной грейд. В итоге мы действительно смогли, хоть и не намного, но увеличить качество работы сети! При использовании в продакшене эти 4 вспомогательных головы были уже не нужны.
В результате у нас получилась сеть, качественно оценивающая грейд, который поставят карточке специализированные агентства по оценке. Даже когда она давала ошибки, погрешность была в ± полгрейда.
Backend приложения был полностью написан девелоперами Doubletapp. Использовали фреймворк FastAPI, по сравнению с Django он даёт большую производительность и вариативность.
В приложении создан личный кабинет для идентификации пользователя, в нем он сохраняет данные обработанных карточек. Также подключены стандартные инструменты платежей для GooglePlay и AppStore.
Мы разработали мобильное приложение на Flutter. С помощью инструментов ML можно узнать грейд карточки, есть возможность сохранить изображение и сопутствующую информацию, чтобы использовать ее позже и не заниматься оценкой повторно.
Клиент остался доволен результатами нашей работы, его стартап получил новый раунд инвестиций, и теперь, помимо техподдержки, мы планируем с помощью ИИ не только оценивать карточку, но и находить аналогичные карточки, которые выставлены на продажу прямо сейчас — цены карточек меняются, нужно подгадать удачный момент для продажи. В ближайших планах — подключить онлайн-аукцион eBay, где идет основная торговля спортивными карточками, и выставлять свежеоцененный раритет на онлайн-витрину.
При работе над этим приложением мы отточили свое владение ML-инструментами и готовы поработать над вашими проектами, где требуется использовать:
компьютерное зрение (Computer Vision, CV);
обработку текстов (natural language processing, NLP);
распознавание речи, speech recognition, обработку звуков.
Doubletapp с удовольствием обсудит вашу задачу