Авторизация
Сброс пароля
Flygrade: приложение для коллекционеров бейсбольных карточек
1. Вводная задача от заказчика, проблематика, цели
Сегодня рынок спортивных карточек быстро растет и оценивается примерно в $10 млрд, а по прогнозу медиакомпании Cision к 2027 году может достигнуть $62 млрд. По словам исполнительного директора аукционов PWCC Marketplaces Брента Хьюгенса, коллекционирование карточек — это своего рода гибрид инвестиций и изобразительного искусства, но больше похоже на фондовый рынок.
Чтобы определить ценность и подлинность карточки, владельцы обращаются к экспертам-оценщикам, услуги которых недешевы. Карточкам, как фондовым бумагам, присваивают рыночный индекс, устанавливают рейтинг; коллекционеры отслеживают, кто владеет наиболее ценными экземплярами и какова их цена на сегодняшний день.
Представители американского стартапа — сами участники профильного комьюнити, хорошо понимают проблемы коллег с оценкой карточек — например, многие экземпляры уже очень старые и требуют предельно бережного обращения, поддержания температуры и освещения, к ним нужно аккуратно прикасаться, чтобы карточка не потеряла в цене. Стартаперы решили зайти на рынок грейдирования карточек и предложить коллекционерам мобильную услугу — деликатную, не требующую транспортировки и при этом объективную.
Представители стартапа обратились в Doubletapp с предложением: нужно разработать мобильное приложение с использованием инструментов ML, которое поможет коллекционерам определять грейд спортивных карточек.
Замысел Flygrade: в приложении авторизованный юзер наводит камеру на карточку и получает информацию о грейде этой карточки по десятибалльной шкале. Оценка выставляется для каждой из сторон, а затем выводится общий средний балл.
Услуга платная, но можно купить абонемент, чтобы оценка каждой конкретной карточки обошлась дешевле — так в приложении работает монетизация. Данные оценки сохраняются в личном кабинете, их можно использовать позже.
2. Описание реализации кейса и творческого пути по поиску оптимального решения
Для обучения нейросети мы получили от заказчика порядка 7000 уже грейдированных карточек. Но оказалось, что основная часть доступных нам карточек имеет высокий грейд, а образцов с низким грейдом не хватает. Для пополнения копилки с eBay спарсили десятки тысяч дополнительных карточек разного грейда и таким образом закрыли проблему с материалом для обучения.
Однако возникла следующая трудность: в приложении и на онлайн-аукционе карточки сфотографированы по-разному. В приложении пользователь подносит камеру телефона практически вплотную, а для фотографирования на eBay карточку ставят значительно дальше. Нашли решение: создали сегментационную маску и научили сеть понимать, что именно является карточкой, где границы этого объекта в пространстве. Теперь нейросеть могла использовать любые фото карточек с eBay для дообучения.
После обучения итоговой модели нейросети и интеграции ее в приложение, мы можем грейдировать карточку так же качественно и беспристрастно, как профессиональное оценочное агентство.
3. Результаты сотрудничества
ML
Цель проекта — с помощью нейронной сети определить, какую бы оценку поставила коллекционной карточке профессиональная оценочная комиссия. Шкала оценки состоит из 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
Backend приложения был полностью написан девелоперами Doubletapp. Использовали фреймворк FastAPI, по сравнению с Django он даёт большую производительность и вариативность.
В приложении создан личный кабинет для идентификации пользователя, в нем он сохраняет данные обработанных карточек. Также подключены стандартные инструменты платежей для GooglePlay и AppStore.
4. Заключение
Мы разработали мобильное приложение на Flutter. С помощью инструментов ML можно узнать грейд карточки, есть возможность сохранить изображение и сопутствующую информацию, чтобы использовать ее позже и не заниматься оценкой повторно.
Клиент остался доволен результатами нашей работы, его стартап получил новый раунд инвестиций, и теперь, помимо техподдержки, мы планируем с помощью ИИ не только оценивать карточку, но и находить аналогичные карточки, которые выставлены на продажу прямо сейчас — цены карточек меняются, нужно подгадать удачный момент для продажи.
В ближайших планах — подключить онлайн-аукцион eBay, где идет основная торговля спортивными карточками, и выставлять свежеоцененный раритет на онлайн-витрину.