Сжатие модели - очень интересная и простая идея, стоит попробовать

Из книги "Глубокое обучение" (Ян Гудфеллоу, Иошуа Бенджио, Аарон Курвилль). Сжатие модели (Bacilua te al., 2006). Основная идея - заменить исходную дорогостоящую модель другой, потребляющей меньше памяти и работающей быстрее. Сжатие модели применимо, когда размер исходной модели обусловлен в основном стремление предотвратить переобучение. В большинстве случаев модель с наименьшей ошибкой обобщения представляет собой ансамбль нескольких независимо обученных моделей. Вычислять предсказания всех n членов ансамбля дорого. Иногда даже одна модель обобщается лучше, если она велика (например, если применялась регуляризация прореживанием).
Такие большие модели обучают некоторую функцию f(x), но используют при этом гораздо больше параметров, чем необходимо для решения задачи. Их размер велик только потому что число обучающих примеров ограничено. После того как функция f(x) аппроксимирована, мы сможем сгенерировать обучающий набор, содержащий бесконечно много примеров, просто применив f к случайной выборке x. Затем мы обучаем новую, меньшую модель, так чтобы она совпадала с f(x) на этой выборке. 

Видео тестирование алгоритмов распознавания лиц и автомобильных номеров

Решил собрать все и протестировать "как есть" на данный момент. Вот что из этого вышло.
https://youtu.be/iPnIucrydo4

Пиксельная сегментация символов с помощью сверточной нейронной сети

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


 Давайте же спроектируем нейронную сеть и обучим ее строить такие маски!

Read more...Collapse )


  

Нелинейная ректификация изображения автомобильного номера, простейшая сегментация символов

Решил воспользоваться отпуском и (пока обучается очередная нейросетка) написать короткий пост, чтобы прервать длительное молчание. В прошлой статье речь шла о сегментации автомобильного номера, в результате которой получался набор из шести точек, лежащих на рамке номера. Вот таких:
1.png
Теперь же, по этим точкам выполним ректификацию номера и предварительную сегментацию символов. Ректификация это такая процедура, в результате которой будет получено прямое, не искаженное перспективой или изгибом самой пластины изображение автомобильного номера. Будто камера направлена прямо на номер, перпендикулярно ему, а сам номер закреплен ровно, без изгибов. Сегментация символов для изображения номера опредит какие пиксели принадлежат символам, а какие являются фоновыми. Предварительной же она является потому, что в конечном варианте алгоритм сегментации реализован на нейронной сети. Но чтобы обучить эту сеть требовалась размеченная обучающая выборка, состоящая из нормализованных изображений номеров и пиксельных масок, задающих пиксели, принадлежащие символам(цифрам и буквам). Поскольку всю работу по разметке датасетов делаю я сам, то решено было частично автоматизировать этот процесс с помощью классического(не нейросетевого) алгоритма. Сначала алгоритм находит маски символов, а затем уже я вручную отбираю те из них, которые найдены с достаточно высоким качеством и редактирую в паинте, если нужно.

Read more...Collapse )

Сегментация автомобильных номеров с помощью регрессионной модели на глубокой нейронной сети

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

Read more...Collapse )

Обучение сверточной нейронной сети для распознавания лиц на c++ (Часть 2)

Эта статья - продолжение первой части повествования о нелегкой судьбе с++ программиста, ступившего на путь глубинного обучения.

Read more...Collapse )

Обучение сверточной нейронной сети для распознавания лиц на c++ (Часть 1)

В этот журнал я пишу обо всем, с чем сталкиваюсь впервые. В этот раз я поддался всеобщей истерии, и речь пойдет о сверточных нейронных сетях. Еще в этот раз я постараюсь подробно описать ход своих мыслей, а не просто перечислить результаты и способы их достижения. Поэтому будет "многа букаф".
Я очень долго сопротивлялся таким "грязным, искусственным" нейросетям, предпочитая "чистый, естественный" SVM. Серьезные пацаны уже давно решают проблемы используя сверточные нейронные сети. Нужна какая-то не сложная задача, желательно уже решенная мной в другой парадигме, чтобы опробовать на ней новую для меня технологию. Решено: распознаем лица. Для разогрева видео конечного продукта:
https://www.youtube.com/watch?v=mwDbGpAZdxU
Read more...Collapse )

О наступлении эры свободного образования

Да, эра свободного интернет образования в России наступила. В открытый доступ видеолекции выложили следующие университеты:
НМУ: http://ium.mccme.ru/IUM-video.html
МФТИ: http://lectoriy.mipt.ru/course
НГУ: http://www.inp.nsk.su/students/theor/videolectures/
        https://www.youtube.com/channel/UCglW_rYzVGwnzUsWDxbyS_w
СпбГУ: https://www.lektorium.tv/university/2883
            https://www.lektorium.tv/university/3393
МГУ: http://media.msu.ru/?cat=439
        http://media.msu.ru/?cat=60
        https://www.youtube.com/channel/UCimGOl6wSQWDbBFoVMQGzMg/playlists
        https://www.youtube.com/user/aktoshik/playlists
НИЯУ МИФИ: https://www.youtube.com/user/NRNUMEPhI/playlists
        http://online.mephi.ru/courses
ИТМО: https://courses.ifmo.ru
Нижегородский университет: http://www.hpcc.unn.ru/?dir=12
и другие.

Также существует много альтернативных источников:
Видеотека mathnet.ru: http://www.mathnet.ru/php/presentation.phtml?option_lang=rus
Курсы от Yandex: http://yandexdataschool.ru/edu-process/courses
sibscience: https://www.youtube.com/user/sibscience/playlists?view=1&sort=dd&shelf_id=0
Курс космологии академика Рубакова: http://www.evarist.org/problem_sets/sovremennaya-vselennaya/
...