Сверточные нейронные сети | Глубокие нейронные сети на Python

preview_player
Показать описание

Принципы сверточных нейронных сетей (convolutional neural networks):
- Локальное восприятие.
- Разделяемые веса.
- Уменьшение размерности.

Сверточная сеть состоит из чередующихся слоев свертки и подвыборки.

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

В нейронных сетях ядра свертки определяются автоматически в процессе обучения.

Слой подвыборки выполняет уменьшение размерности. Раньше использовалось усреднение, а теперь чаще применяется выбор максимального значения.

Рассматривается пример сверточной сети LeNet-5, которую разработал Ян Лекун для распознавания рукописных цифр индекса на почтовых отправлениях.

Для обучения сверточных сетей используется алгоритм обратного распространения ошибки с ограничением на веса.

При реализации проекта используются средства поддержки, выделенные в качестве гранта на основании конкурса, проведенного Общероссийской общественно-государственной просветительской организации «Российское общество «Знание».

Мой канал с краткими и понятными объяснениями сложных тем в ИТ и компьютерных науках:
Рекомендации по теме
Комментарии
Автор

Андрей, было очень интересно, спасибо!

hmtlhyu
Автор

Спасибо большое, прекрасная тема. ждем еще !

Dima
Автор

спасибо) только у вас в видео услышал про ядро свёртки, до этого я думал там происходит магия)

TrailleuR
Автор

Спасибо, первый источник в котором говорится о том откуда берутся значения ядра

evgeniylepikov
Автор

Спасибо за полезное видео. У вас замечательный канал. Лайк, подписка 👍🏻👍🏻👍🏻👍🏻

elizathestranger
Автор

Это я хорошо зашел, а то с керасом сейчас как раз балуюсь, и вообще только залез в NN очень доходчиво излагаешь и без излишней сложности.

inbuckswetrust
Автор

Спасибо, но у меня возник вопрос по поводу датасетов. Как можно создать свой? Точнее говоря, в каком виде изображения подаются в программу. Например, если я хочу использовать для обучения сети, файлы формата .dcm где по факту пиксель по факту есть информация о градации серого в изображении. Просто не совсем понятно, как правильно подать в сеть данный тип изображения.

KArdiNaL
Автор

Андрей, здравствуйте!
Я новичок в вопросах сверточных сетей, но имеется опыт в обработке изображений с использованием различных фильтров.
Мой вопрос очень простой, возможно даже глупый... )
Подскажите, после "прохождения" входного изображения шестью фильтрами, мы получаем шесть карт признаков.
Что происходит дальше, правильно ли я понимаю, что каждую из полученных шести карт признаков мы проходим новой матрицей для получения новых признаков? Другими словами, мы используем шесть "независимых" потоков с различными ядрами сверток для получения новых карт признаков?
Если это так, то правильно ли я понимаю, что сеть "растет" в ширину на количество потоков в прогрессии равной каждому новому ядру свертки? Или где-то происходит суммирование карт признаков для уменьшения числа потоков?
Спасибо

maximkononov
Автор

что то с распознаванием лиц непонятно, на вход какое изображение поступает? Потому что на выходе получается множество лиц, а на входе тогда что было?

roqowdh
Автор

Чесно говоря непонятно, чем локальное восприятие свёрточной нейронной сети отличается от подсчёта обычной взешенной суммы входов нейрона - ведь там и там сумма произведений входов и весов. Далее, непонтяно где в ядре свёртки разделяемые веса? Что это такое? Чем от обычных весов отличаются

romarizkov
Автор

Здравствуйте, у вас очень качественный материал по всему курсу, огромное спасибо за то что вы делаете. Скажите каким образом подбирается необходимое количество слоев свертки, слоев подвыборки, и в целом слоёв нейронной сети, не только сверточной, но и линейной. Есть ли какая то зависимость, от признаков, от объема выборки либо же от других параметров? Заранее спасибо.

olegatormega
Автор

Спасибо, Андрей!
Особенно поравилось, что канонический пример сети из работы LeCun et al разобран полностью. А то когда я знакомился с темой - авторы многих тьториалов как попки его копипастили, но от и до не разобрал никто.
А есть у Вас лекция в которой рассказывается, как сверточная сеть в процессе самообучения выбирает оптимальные ядра свертки?!

letYourMoneyGrowcom
Автор

Подскажите пожалуйста новичку, я использую pycharm как среду разработки, что мне нужно догрузить помимо python, чтоб хотя бы повторить то, что вы в уроках даёте, или может надо как-то специально настроить что-то в данной среде? Спасибо

samsonovG
Автор

Здравствуйте, Андрей! А как можно написать сверточную нейронную сеть, чтоб она не только распознавала объект, но и выделяла его?

whatsonot
Автор

А для распознавания цифр мы свёрточную нейросеть можем применить?

sergeyufimtsev
Автор

Рассуждая о распознавании машин разных размеров, что признак важнее чем его координаты. Я согласен, но роботы, которые перекладывают кубики, они по картинке определяют положение, у них нету усредняющих слоев? Как они ищут конкретные Точки на знакомом объекте (чтобы потом по их положению определить положение объекта) ?

knkn
Автор

Неплохо конечно для 10 минут, но все, что там можно было перепутать он успешно перепутал :)

spamno
Автор

1:12 и 2:05 противоречат пункты друг другу. Полносвязная сеть не видит изображение как массив, а видит как набор (set), потому что каждый входной нейрон подключен ко всем нейронам следующего слоя и не зависит от порядка или последовательности.

HPMuwa
Автор

Андрей, спасибо большое Вам за познавательные уроки!
Возник следующий вопрос про слои в LeNet-5:
В первом сверточном слое рассматривается 6 ядер свертки, затем на этапе подвыборки(второй слой) каждый из полученных подслоев первого слоя уменьшается в размерности.
На третьем слое(второй сверточный) определяется 16 ядер свертки.
Вопрос: Какая связь между 6 подслоями второго слоя и 16 подслоями третьего слоя(16 и 6 же не кратны друг другу. Если бы было, скажем 12 ядер свертки, то было бы ясно, что, например, к каждому подслою применяется 2 ядра)
Спасибо!

kmmnwoy
Автор

На странице "Популярные ядра свертки" ядро "Выделение границ" указано неверно. Пожалуйста, поправьте.

qrixyon