Привет, Хабр! Как вы знаете, мы в Smart Engines не только любим распознавать документы, но и распознавать очень разные документы на очень разных устройствах, от Odroid до Эльбруса.
Недавно у нас в руках оказалась игровая консоль Steam Deck. Мы решили проверить, насколько шустро она справляется с распознаванием в сравнении с обычным ноутбуком. Если вам интересно посмотреть на результаты бенчмарка Steam Deck в не совсем обычной для нее задаче, добро пожаловать под кат!
Steam Deck - портативная игровая консоль от компании Valve, анонсированная в 2021 и поступившая в продажу в 2022 году. Из коробки девайс управляется операционкой Steam OS (на базе Arch Linux) и весьма интересным кастомным гибридным процессором от AMD на базе Zen 2 и RDNA 2. Помимо предустановленной Steam OS производитель не запрещает устанавливать и другие операционки (например, Windows) и даже втыкать сторонние железки (например, RX 6900 XT). За последние два года на Хабре достаточно много писали про Steam Deck и, если вам интересно узнать о ней больше с геймерской точки зрения, рекомендуем вот этот обзор от Pixonic.
Еще одной интересной особенностью Steam Deck является возможность переключения в режим рабочего стола ("Desktop Mode"), в котором тоже можно играть в игры (настроив предварительно обработку ивентов, поступающих с контроллера), а еще с помощью которого можно пользоваться девайсом как обычным десктопом под управлением Steam OS. Тем самым, на интересующий нас (ввиду профдеформации) вопрос - а как быстро Steam Deck будет распознавать документы - ответ получить совсем несложно, нужно просто собрать и запустить на нем наш софт.
Что еще более характерно, поскольку Steam OS основана на Arch Linux, не пришлось ничего дополнительно собирать - бинарники, собранные на стоящем рядом ноутбуке с Arch Linux, без каких-либо вопросов сразу запустились на Steam Deсk. Даже установить банальный софт для записи видео с экрана simplescreenrecorder было несколько сложнее (чтобы установить что-то из pacman, необходимо сначала разрешить системе делать изменения в /usr, что делается командой $ steam-readonly disable. Утверждается, что после обновления Steam OS все такие изменения в /usr затрутся, но это проблема не сегодняшнего дня).
Итак, давайте испытаем Steam Deck в задаче распознавания документов и сравним его производительность с обычным десктопом. В качестве последнего будет выступать уже немного потрепанный ноутбук Lenovo ThinkPad P1 под управлением Arch Linux. Сравнение релевантных технических характеристик приведено в таблице ниже.
Характеристика | Геймерский Steam Deck | Рабочая лошадка ThinkPad P1 |
Операционка | Steam OS 3.4.8 | Arch Linux |
Версия ядра | 5.13.0-valve36-1-neptune | 6.1.6-arch-1-1 |
CPU | AMD Custom APU 0405 2.8 GHz | Intel i7-8750H 2.2 GHz |
Ядра (треды) | 4 (8) | 6 (12) |
RAM | 16 Gb | 16 Gb |
Запускаемые бинарники были абсолютно идентичны, и каждый раз при запуске были задействованы все ядра CPU.
1. Распознавание машиночитаемых зон при помощи Smart Code Engine v2.0.0
Начнем мы с простого – с распознавания машиночитаемых зон (MRZ) международных документов. В качестве тестового пакета для распознавания MRZ были взяты 100 изображений искусственно сгенерированных муляжей греческого паспорта из датасета MIDV-2020.
Все 100 изображений были загружены и обработаны на Steam Deck за 9.466 сек. (среднее по 3-м запускам), или по 95 мс на одно изображение. На ноутбуке эта же задача заняла чуть дольше: 10.365 сек., или по 104 мс на одно изображение.
2. Распознавание паспортов при помощи Smart ID Engine v2.0.0
Перейдем к распознаванию уже не только машиночитаемых зон, но и остальных полей, которые могут быть на удостоверяющем личность документе. В качестве тестовых пакетов были взяты все те же 100 фотографий муляжей греческого паспорта, а также 100 фотографий муляжей 3-й страницы паспорта РФ из датасета MIDV-2020.
Все 100 изображений греческого паспорта, но уже с поиском и распознаванием полного набора полей, были обработаны на Steam Deck за 15.574 сек. (среднее по 3-м запускам), т.е. по 156 мс на изображение, и за 14.708 сек. на ThinkPad P1, 147 мс на изображение, на сей раз чуть быстрее, чем на консоли.
100 изображений муляжей паспорта РФ, при распознавании которого используется другой принцип поиска документа и полей, были обработаны на Steam Deck за 26.292 сек. и чуть медленнее на ноутбуке: за 30.153 сек.
3. Просто распознавание текста при помощи Smart Document Engine v2.0.0
Наконец, замерим распознавание произвольного текста на русском языке. В качестве тестового пакета был взят учебник для средней школы "Астрономия" Б.А. Воронцова-Вельяминова (Издательство "Просвещение", Москва, 1966 г.) на 165 страницах. Исходник был в формате DJVU, перед распознаванием он был сконвертирован в набор JPG-ов с разрешением 300 DPI при помощи ImageMagick.
Все 165 изображений были обработаны на Steam Deck за 109.134 сек. (среднее по 3-м запускам), или по 661 мс на изображение. Ноутбук справился за 105.365 сек., т.е. по 639 мс на изображение.
Все проведенные замеры:
Задача | Steam Deck | ThinkPad P1 | ||
Суммарно | Один файл | Суммарно | Один файл | |
MRZ | 9.466 сек | 95 мс | 10.365 сек | 104 мс |
Греческий паспорт | 15.574 сек | 156 мс | 14.708 сек | 147 мс |
Паспорт РФ | 26.292 сек | 263 мс | 30.153 сек | 302 мс |
“Астрономия” Б.А. Воронцова-Вельяминова | 109.134 сек | 662 мс | 105.365 сек | 639 мс |
Даже несколько удивительно, как случайно попавшиеся под руку и совсем непохожие друг на друга железки показали настолько близкие результаты. Сама по себе производительность Steam Deck не очень удивляет - все-таки на борту современный процессор, предназначенный для хорошей работы современных игрушек.
Но вот смотрю я на свой ThinkPad, на внешний монитор, внешнюю клавиатуру и мышь, и думаю - может быть, я и без него уже смогу обойтись? Эх, жалко порт у Steam Deck всего один, без докстанции подключать все это добро к консоли не очень эргономично.
Надеемся, что наш небольшой эксперимент показался вам интересным. С точки зрения практического использования Steam Deck, конечно, не совсем подходит для распознавания документов хотя бы по эргономическим соображениям (эх, вот если бы в нем была камера...). Не приходит на ум, как использовать в этой задаче джойстики, акселлерометр и тому подобное добро. Но если мы придумаем, как их применить в связке с каким-нибудь другим нашим софтом, то обязательно про это напишем.