Прочитайте мою историю. Используйте SwiftAnnoy, и вы тоже сможете его создать.

Помните 2020 год, когда мир закрылся, чтобы замедлить распространение Covid, и нам пришлось решать, что делать, терпеливо ожидая дома конца времен? Во время перерывов в папином детском саду и бесконечного воспроизведения Моаны по телевизору я разработал простой конвейер для извлечения изображений на устройстве. Он быстрый, компактный и эффективно использует память. В этой статье я поделюсь историей о том, как я разработал Board Game Snapshot (BG Snapshot), приложение для iOS, которое использует камеру для идентификации настольных игр. Попутно я предоставлю вам мотивацию для работы во встроенных пространствах, кратко расскажу о контрастных методах обучения, проведу краткий обзор примерного поиска ближайших соседей и представлю SwiftAnnoy, библиотеку-оболочку с открытым исходным кодом, которую вы можете использовать в ваши собственные приложения.

Возникновение идеи моего приложения

Уже более десяти лет мы с группой моих самых близких друзей собираемся на продолжительные выходные, посвященные непрерывным настольным играм, которые мы называем Nerdfest. У игр, в которые мы играем, нет таких общеизвестных названий, как Монополия, Морской бой или Риск. У некоторых из наших фаворитов есть такие названия, как Terraforming Mars, Peurto Rico и Root. Игры часто бывают сложными, насыщенными по темам и продолжительными (иногда >3 часа). Для тех, кто не знаком с этим хобби, можно попробовать Board Game Geek (BGG). BGG — это Википедия, посвященная всем, что касается настольных игр, и включает страницы с десятками тысяч игр! Фактически, огромный выбор стал одним из источников вдохновения для BG Snapshot. Другой пришел из моего местного игрового магазина. Я обнаружил, что постоянно использую BGG, чтобы получать рейтинги и обзоры игр, которые выглядели интересными, когда я просматривал полки, но меня раздражало все, что мне приходилось печатать. Мое решение, как вы, возможно, догадались по названию BG Snapshot, заключалось в разработке конвейера машинного обучения, который использует камеру для обнаружения и идентификации настольных игр, полностью отказавшись от клавиатуры.

На 1 из K классификаторов

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