В современном мире нейронные сети и машинное обучение проникают во все сферы жизни, от медицины и транспорта до развлечений и бытовой техники. Однако использование искусственного интеллекта на ретро-устройствах кажется чем-то нереальным из-за их ограниченных возможностей. Проект распознавания рукописных цифр на Game Boy ломает этот стереотип, демонстрируя, что даже классическая 8-битная игровая консоль способна выполнять задачи, связанные с машинным обучением и нейросетями. Этот эксперимент объединяет в себе как современные алгоритмы, так и уникальные инженерные решения для работы с устаревшим железом.Game Boy — портативная игровая консоль, выпущенная в конце 80-х годов с процессором на основе 8-битной архитектуры.
Она не поддерживает аппаратные операции с плавающей запятой и даже не имеет инструкции для целочисленного умножения, что создаёт серьёзные трудности для реализации современных вычислительных моделей. Несмотря на это, разработчикам удалось уместить и обученную модель нейронной сети, и код для её работы на ограниченной памяти и процессорных ресурсах.Основой проекта является нейронная сеть, обученная на популярном датасете MNIST, который содержит изображения рукописных цифр. Для повышения качества и адаптации модели к особенностям Game Boy изображения преобразованы: они бинаризованы и подвергнуты скелетизации с помощью алгоритма Тонкого скелетирования Чжан-Суэня. Это помогает уменьшить толщину линий до одного пикселя — именно такие рисунки можно сделать на экране Game Boy с помощью встроенного инструмента рисования.
Нейронная сеть достаточно простая по архитектуре и состоит из полностью связанных слоев с функцией активации ReLU. Благодаря упрощённой структуре и ограничению на размер модели, она может эффективно работать с минимальным набором параметров. Ключевой момент — квантизация параметров и активаций до 8-битных целых чисел. Благодаря этому удалось избежать использования плавающей точки и сократить объем данных, что критично для Game Boy, где размер одного банкового сегмента памяти составляет всего 16 килобайт.Квантизация была выполнена по линейной схеме, предложенной учёными из компании Google, что позволило сохранить высокую эффективность модели при значительном снижении потребляемых ресурсов.
Важно отметить, что после обучения нейросети и квантизации её параметры сохраняются в бинарном виде непосредственно в ROM-карте игры. Таким образом, при запуске ROM на Game Boy происходит инференс — предсказание цифры, нарисованной игроком на экране.Пользовательский интерфейс ROM прост и удобен. С помощью крестовины на джойстике можно перемещать стилизованный карандаш по экрану, кнопками A и B наносить и удалять пиксели, а кнопка Select очищает рисунок. Для распознавания изображения требуется запустить прогноз, нажав кнопку Start.
После кратковременного мерцания экрана (примерно три секунды) устройство высвечивает предполагаемую цифру в нижней части экрана. При этом точность распознавания достигает около 93.86% на стандартном тестовом наборе из 10 000 изображений MNIST — весьма внушительный показатель для 8-битной платформы.Разработка и сборка проекта требуют навыков в машинном обучении и аркадном программировании. Для обучения нейросети используется скрипт на Python, запускаемый при помощи менеджера зависимостей uv, который гарантирует автоматическую установку всех необходимых библиотек.
По завершении обучения формируется файл с параметрами модели, который впоследствии используется для компиляции ROM с помощью ассемблера RGBDS. В итоге на выходе получается ROM-образ, пригодный для запуска на реальном железе или в эмуляторах.Особое внимание уделено тестированию работоспособности модели непосредственно на эмуляторе mGBA. С помощью написанного на Lua скрипта можно автоматически проверить точность распознавания на всех 10 000 изображениях тестового набора, что исключает необходимость ручного ввода и экономит огромное количество времени. Скрипт осуществляет загрузку каждой картинки, запускает модель и фиксирует результат, позволяя подвести итоговые статистические данные по эффективности работы нейросети в боевых условиях.
Этот проект не просто доказательство технической возможности внедрения искусственного интеллекта в старые игровые консоли. Это демонстрация интеграции современных алгоритмов машинного обучения с аппаратным обеспечением с крайне ограниченными ресурсами, что имеет потенциальное применение в встраиваемых системах, умной электронике с базовым железом и других устройствах с жесткими ограничениями по памяти и вычислительной мощности.Проект Neural network digit recognition на Game Boy вдохновляет разработчиков и энтузиастов на переосмысление того, что возможно даже в условиях лимитированных ресурсов. Он открывает новые горизонты для исследований в области оптимизации алгоритмов и адаптации их под классические платформы. Более того, такой опыт поднимает вопросы о будущем искусственного интеллекта на устройствах с ограниченной энергоэффективностью, где текущие мощные процессоры просто неуместны.
Итогом является не только успешная реализация распознавания рукописных цифр на ретро-консоли, но и базис для дальнейшего развития подобных проектов с акцентом на экономию ресурсов. В конечном счёте, синергия классики и инноваций создаёт привлекательное направление для хобби и профессионального развития, расширяя границы возможного в программировании и машинном обучении.