Как стать автором
Обновить

Много иероглифов – много нейросетей: как построить эффективную систему распознавания для большого числа классов?

Время на прочтение7 мин
Количество просмотров8.2K
Всего голосов 29: ↑29 и ↓0+29
Комментарии11

Комментарии 11

А не пробовали заточить сети на распознавание составляющих иероглифы элементов по отдельности, и затем другую сеть на распознавание иероглифов по сочетаниям и положениям элементов?

Да, такой подход мы называем факторизацией, мы его тоже пробовали. Он очень хорошо работает для корейской письменности, там собственно он и используется. Для китайского качество пока получается ниже, чем у двухуровневой модели, но мы планируем продолжать исследования в этом направлении.

Если честно, мне кажется этот подход и для латиницы с кириллицей должен прекрасно срабатывать. Особенно, если отслеживать не только наличие элементов, их положение, но и их способы их связанности друг с другом — отступы, засечки, промежутки, сдвиги и т.п…
Да, может заработать. Здесь главный вопрос в том, каким образом такую сложную информацию закодировать в выходах нейронной сети, чтобы она при этом хорошо обучилась.
Для корейского с факторизацией всё просто и интуитивно, т.к. составляющих элементов достаточно мало, и их позиции в символе строго фиксированы. В итоге можно просто сделать у сети 4 выхода небольшого размера, которые кодируют символ.
Для китайского уже становится сложнее, потому что составляющих элементов сильно больше, как и возможных комбинаций их взаимного расположения.
С европейскими языками, кстати, скорее всего будет проще, чем с китайским, тут вопрос эксперимента. Другой вопрос будет ли от этого какая-то практическая польза, ибо алфавит там уже небольшой и распознаётся хорошо и быстро одной простенькой нейросетью.
Я пока не разобрался, в каком формате выводятся из сетей, определяющих лица, положение найденного лица на фотографии? Но почему-то уверен, что примерно в этом же формате можно их передавать сетке, оценивающей сочетание элементов.
Там обычно предсказывают 3 числа, соответствующие углам поворота в пространстве (Yaw, pitch, roll) и обучают на это задачу регрессии. В символах тоже можно подумать в направлении регрессии и кодирования взаимного расположения элементов через неё, вполне возможно что заработает.
Это ж Вы не про позицию, а про ракурс. А я про позицию…
Вы не пробовали CapsNet для End-to-End?
В иероглифах важно взаимное расположение небольшого количества стандартных элементов, а сильная сторона CapsNet вроде бы как раз в умении выделять подобные вещи. То есть они могут хорошо решить задачу факторизации иероглифа.
Или это тоже тупик?
Капсульные сети в задачах распознавания пока не пробовали. В теории действительно может хорошо работать для иероглифов, но экспериментов пока не было, так что точно сказать не могу. Не думаю, что это тупик, но в научном сообществе применения CapsNets для End-to-End OCR нигде не видел.
Алексей, спасибо за подробное изложение вашего подхода к распознаванию китайских иероглифов с помощью нейронных сетей. Я, когда-то интересовался этой задачей. Хочу спросить: «Есть ли возможность воспользоваться данными растровых изображений всех 10 000 иероглифов для целей обучения?». Хотелось бы восстановить алгоритм и пропустить через него. Может удастся чем-то помочь.
Спасибо, рады стараться. Ваш вопрос не совсем понял. В нашем подходе по факту используются для обучения растровые данные (картинки) всех доступных изображений иероглифов. Или вы имеете ввиду данные, полученным синтетическим рендерингом из шрифтов?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий