masterspammer (masterspammer) wrote,
masterspammer
masterspammer

Categories:

Учусь (творческий отпуск у меня)!

Сначала я ковырял комп. Долго. На материнке причину глюков не нашёл, только один отсутствующий конденсатор, подозрительно близкий к USB. Впаял на всякий случай для очистки совести. Остальные - такие хорошие, что даже противно. Поломанную материнку сдал в ремонт - шанс ремонта и его цена (согласно теории игр) говорят о том, что рискнуть нужно. Где-то тут же купил велокресло детское и ещё много чего по мелочи, всё дома починил (почти).

Потом ставил драйвер видео и cuda поверх - учитывая, что с N-й версии изменилась лицензия, то ставил N-1-ю. Долго. После изрядных разборок (два дня в сумме) оказалось, что в dmesg разные части драйвера пишут под разными "псевдонимами" и о том, что одна часть не заводится, я узнал только после вдумчевого чтения всего вывода dmesg. Это было больно. Поставил другую версию драйвера - всё заработало. С Днём Победы, кстати (как раз 9 мая заработало).

Ура, есть компьютер, и он может СЧИТАТЬ (именно так, капсом)! Поиграл с автоэнкодерами на керасе, красиво, но оно мне не очень надо - и это, кстати, тот самый идиот, где между выходом и входом мало-мало мозгов (тот случай, когда голь на выдумки хитра, кстати). Откопал старый проект (вот про него и ещё вот про него). На данных из Алдошиной работает хорошо, на страницах из Радио - почти никак (сканы говно). И никакого Фортрана в зависимостях, что характерно! Это был первый день отпуска.

Далее ковырял работу с pil и djvu. В общем как часто бывает, не понял одну маленькую фигню и долго тупил об получившийся результат. Почти подбором нашёл правильный формат и сохранил в png. Ура! Остальное потом! Тут же осваивал катание с велокреслом.

Осваивал numpy дальше и глубже. Чем-то (по логике! не по синтаксису) похоже на SQL - раз и нужные элементы нормировались (например), на numpy переписал работу с png и всякую зачаточную сегментацию. Пускал много соплей, так что третий день отпуска был не особо продуктивен. Зато я додумал одну фишку (см. ниже) и прочистил засорившуюся раковину.

В машинном обучении очень важна обучающая выборка, она должна быть большая и качественная (типа как mnist), а всяки one shot learning - не для нас, начинающих. Но халявы-то хочется, а распознавать картинки, которые уже 1000 человек распознавали (здравствуй, Лена), как-то не хочется! В общем, так - пусть у нас есть много отсканированного текста (для примера взял старую книгу про транформаторы, там около 800 страниц) и хочется его разметить. Сначала нет ничего вообще, в нейронную сеть пихать нечего, только здоровенные картинки.

Берётся одна (типичная, ну то есть не титульная) страница и как-то сегментируется в полуручном режиме - компьютер ошибается, но поправить его, что тут две строки, а не одна - довольно просто (интерфейс - PNG с выделением цветом, правка - тупо GIMP), потом так же строки (но уже исправленные) разбиваются на символы. Текст просто вбивается в текстовый редактор, параллельно корректируется автоматическая разметка (интерфейс - текстовый редактор на одном мониторе, графический - на другом).

Дальше компьютер это выверяет сам - в каждой строке текста должно быть столько букв, сколько квадратиков в соответствующей строке на картинке; дополнительно - строка разбивается на слова (по пробелам и по расстоянию между квадратиками соответственно) и сравниваются число слов и их длины. Ну и spellchecker. На этом этапе находится МНОГО ошибок. На выходе - размеченный текст.

Всё это гораздо приятнее и быстрее, чем резать картинку на буквы и собирать тестовое множество. Пусть режет компьютер, а вкравшуюся в ряд букв "и" букву наприме "а" я уж замечу.

Это первый этап. На нём __как-то__ уже можно обучить сеть (обогащение данных, балансировка, все дела). Дальше - сегментация в таком же в полуручном режиме ещё кучки страниц и распознавание её обученной сетью. Дальше - снова править результат (распознанный текст), используя возможности автоматической проверки и коррекции и объём обучающей выборки удвоен!

Ну и так далее... Естественно, некоторых букв будет МНОГО, так что k-means на них натравлю или что-то подобное.

Сегодня провёл полную разметку одной страницы, вечером учить буду. Картинки не приложу, так как не дома и у провайдера явственные глюки маршрутизации (нет, не Роскомнадзор - в его базе пусто и конкретно этот глюк как бы не старше соответствующих полномочий данной организации), так что потом при случае (картинки сегментации сильно похожи на FineReader, так что не стоят они того, чтоб через прокси за ними лезть).

-------

Из интересных идей - обучить глубокий автоэнкодер на неразмеченных данных и учить сеть уже на его кодировке. Можно даже глубокую сеть гонять безо всякой сегментации - где букву найдёт, там найдёт - это конечно по пушке из воробья, но я же не волшебник, я только учусь.
Tags: ТекстовыеАлгоритмы, Халява, ХочетсяСтранного
Subscribe

  • (no subject)

    Вспомнился тут анекдот про давящие трусы неподходящего размера, из-за которых отрезали яйца. Две мембраны немного пострадали в дороге - не ясно,…

  • Power ON!

    Пять дней прошло - и только сегодня скрутил провода в кучу (фильтры пока лежат на полке) и соединил с усилителем. Динамикам не то, чтоб сильно плохо…

  • Техноорки

    Началось с того, что у жены в машине начал часто загораться индикатор аккумулятора и иногда возникать глюки зажигания на полной нагрузке…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments