Как работают сверточные нейронные сети | #13 нейросети на Python

  Рет қаралды 61,551

selfedu

selfedu

3 жыл бұрын

Что из себя представляют сверточные нейросети, их архитектура. Операции свертки (сверточные слои), операции Pooling: MaxPooling, MinPooling, AveragePooling. Их смысл. Пример архитектуры сверточной нейронной сети.
Телеграм-канал: t.me/machine_learning_selfedu
Инфо-сайт: proproprogs.ru

Пікірлер: 88
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Дорогие друзья! Небольшой квест. В этом видео я специально сделал небольшую арифметическую ошибку. Она не влияет на общее восприятие и понимание материала. И тот, кто обнаружит эту ошибку, тот красавчик! ))
@Valstan1
@Valstan1 3 жыл бұрын
Хммм... хитрый ход ) Придется второй раз пересмотреть, и тут два плюса, увеличится число просмотров, и улучшится качество понимания и запоминания материала. Хорошая идея подстегивания слушателей курса к Deep learning )))
@Valstan1
@Valstan1 3 жыл бұрын
11:26 - вот тут по-моему "ашипка", получится не 127 на 127, но 126 на 126 пикселов, так как и снизу и сверху и справа и слева теряется по пикселу. Смотрю дальше... может ишо чего замечу ) Переместил свой коммент сюда, чтобы в общей ветке другие не прочитали и не расстроились "ну вот, а я сам хотел бы поискать ашипку".
@selfedu_rus
@selfedu_rus 3 жыл бұрын
@@Valstan1 Красавчик! :))
@ywbc1217
@ywbc1217 3 жыл бұрын
​@@selfedu_rus я написал и потом удалил свой комментарий про это -- посчитав неважным -- в почте у вас должен остаться этот комментарий ) спасибо за ваши видео
@selfedu_rus
@selfedu_rus 3 жыл бұрын
@@ywbc1217 Спасибо, значит, вы тоже красавчик! ))
@Maraniks
@Maraniks 3 жыл бұрын
Лучше всех (Из тех кого я уже просмотрел) объясняешь как устроенна нейронная сеть Спасибо теперь я больше понимаю как устроенно это все
@elizabethgrant6018
@elizabethgrant6018 2 жыл бұрын
Спасибо огромное за Ваши уроки!
@adrianchervinchuk5632
@adrianchervinchuk5632 3 жыл бұрын
огромное спасибо за доходчивость и детальность
@user-qe4ti2dw2u
@user-qe4ti2dw2u 3 жыл бұрын
Хороший канал, надеюсь он наберет популярность!!!)
@LA-nc6nc
@LA-nc6nc Жыл бұрын
Хороший добрый комментарий в поддержку автора канала и контента.
@teastrum
@teastrum 4 ай бұрын
Спасибо большое за очень понятное объяснение!
@funreal8727
@funreal8727 2 жыл бұрын
11:37 126x126 а не 127x127 потому, что пиксели обрезаються справа и слева
@Neo27001
@Neo27001 Ай бұрын
а я думал добавляется один байес
@nickkhatkov8548
@nickkhatkov8548 3 ай бұрын
Безусловно просто и ясно.
@86Blind
@86Blind 3 жыл бұрын
Самое лучшие объяснения как работает нейронная сеть !!
@popsusekak
@popsusekak 18 күн бұрын
КАКОЙ ДОБРЯК!!!
@user-fb6dj3ij7p
@user-fb6dj3ij7p Жыл бұрын
Спасибо. Какое большое спасибо... Помог. А то сидел тупил.
@likey_dikey235
@likey_dikey235 Жыл бұрын
*Цепочка «элемент -> процесс -> элемент» (под изображением также понимаются и другие карты признаков (во 2-й цепи), MaxPool карты (в 1-й цепи, а вообще MaxPool карты - это те же карты признаков, но на прошлом шаге прошедшие обработку, операцию MaxPool)):* Изображение -> фильтр (весовая маска, где каждый вес между пикселем изображения и нейроном группы карты признаков настолько больше, насколько характернее нахождение на ожидаемом изображении точки, чтобы был составлен элемент. Таким образом, чем более изображение похоже на отбираемый фильтром элемент, тем больше будет значение нейрона, ответственного за этот отрабатываемый участок) -> Карта признаков Изображение -> операция MaxPool (выбор из каждой секции максимального значения в рамках данной секции) -> MaxPool карта *Суть в прилагательных:* Карта признаков - характерный MaxPool - наиболее выраженный ~~~ *Изменение геометрических размеров, параметров:* Новый слой карты признаков после фильтрации - увеличивается глубина ряда этого слоя. Т. к. из изображения (или из множества таких изображений, если речь идёт не о 1-м и 2-м слоях) извлекают больше 1-го признака -> фильтров и соответствующих карт признаков больше, чем их (MaxPool карт) было на предыдущем слое. Новый слой карты признаков (MaxPool карт) после операции Max Pool - уменьшается размер карты (ширина и высота). Т. к. сама операция MaxPool предполагает извлечение максимального значения из некоторых значений (а значение может называться максимальным только в сравнении с другим, а значит при их наличии). *Размерность в глаголах:* Карта признаков после фильтрации - глубина увеличивается, размерность сохраняется (но не всегда сохраняется, нужно установить соотвествующий падинг). Карта признаков после MaxPool - глубина сохраняется, размерность уменьшается (но не всегда уменьшается, однако по умолчанию падинг установлен так, что размерность уменьшается - если всё же нужно её сохранение, то можно установить соотвествующий падинг).
@VenatoresnamIgnotis
@VenatoresnamIgnotis 2 жыл бұрын
Подскажите пожалуйста один момент. Как следует из начала урока, один фильтр соответствует одной группе нейронов. В конце видео в примере мы получаем после пуллинга 10 карт признаков размером 16х16. Дальше вы говорите, что этот набор из 10 анализируется целиком одной группой нейронов, т.е. для каждой карты признаков (квадрата 16х16) будет свой фильтр и потом они суммируются и получается одна из 30 следующих карт признаков. Что-то не сходится у меня в голове эта мысль, как может быть получена одна из 30 карт признаков с помощью разных фильтров, из предыдущего утверждения следует что эта группа нейронов соответствует одному фильтру. Тот же вопрос про обработку многоканального изображения: если мы говорим про одноканальное изображение, то там вроде все ясно, а потом вы говорите что если каналов 3, то каждый канал обрабатывается своим фильтров (т.е. своей группой нейронов) и потом результат суммируется. Тогда получается, что для обработки 3х канального изображения нужно 3 группы нейронов, т.е. 3 фильра. Может быть все таки имеется в виду, что мы изначально берем грубо говоря 10 фильтров, и каждый канал прогоняем через эти фильтры и уже после этого суммируем? Просто что-то в голове все это не укладывается в логическую цепочку
@user-gu7dc5nj1g
@user-gu7dc5nj1g Жыл бұрын
класныеи видео
@mischa1115
@mischa1115 11 ай бұрын
Учусь в GB, там рассказывал преподаватель много много много - часа три, понял, что я мягко говоря не способен учиться. здесь за 20 минут я понял, как это все работает. было бы неплохо еще рассказать, для чего делается укрупнение признаков, возможный ответ, для увеличения скорости нейронной сети, за счет экономии вычислительных мощностей?
@MurzNN
@MurzNN 9 ай бұрын
Хочу уточнить, а не правильней ли будет при анализе и поиске объектов на изображении использовать всегда цветовую модель Lab а не RGB? Ведь она гораздо правильней представляет изображение с точки зрения содержимого - слой яркости показывает объекты, а a и b - их цветовые особенности. Что думаете по этому поводу?
@danilanelin
@danilanelin 2 жыл бұрын
Здравствуйте, спасибо за ваши уроки, но у меня возник вопрос. К примеру у меня есть нс, которая должна определять (с камеры) есть ли маска на человеке, или нет. Возникнут ли какие либо проблемы с распознаванием, так как обучающая выборка была стандартизирована, а изображение с камеры нет?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Да, могут возникнуть проблемы. Входные данные нужно стандартизировать также, как и при обучении НС.
@sakhaknives5567
@sakhaknives5567 3 жыл бұрын
привет! очень хорошо объяснено, спасибо за видео :) возник такой вопрос - как определить количество скрытых слоев? на 17:20 у вас 2 слоя сверточной сети, 2 слоя макс пулинга - почему именно такая конфигурация? можно ли было использовать 1 слой сверточной сети и 1 слой пулинга?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Да, это просто пример, конфигурации придумывает сам разработчик НС, исходя из опыта и разума )
@andreygulyaev823
@andreygulyaev823 4 ай бұрын
Подскажите не могу понять - начальные значения w0-w8 фильтра задаются случайным образом? То есть грубо говоря мы инициализируем n фильтров и дальше грубо говоря первым фильтром проходим по всему изображению получая значения первой группы нейронов. Потом вторым наугад инициализированным фильтром вторую группу нейронов и так далее? Второй вопрос - значения w0-w8 фильтра по окончанию прохождения всех слоев корректируются и все начинается заново? Таким образом случайно сгенерированный фильтр стремится к какому-то своему "правильному" состоянию? И третий вопрос - если я правильно понял - все наугад инициализированные фильтры - часть из них могут оказаться одинаковыми а мы просто будем тратить время на прогонку этих "относительно" одинаковых фильтров по нейросети?
@user-mm3zw3uy4q
@user-mm3zw3uy4q Жыл бұрын
Очень круто, спасибо! Хочу чуть-чуть поправить: не биос (BIOS), а байэс (bias).
@user-cv8fz4by4e
@user-cv8fz4by4e 8 ай бұрын
Байэс это ученый, а это нейрон смещения биас
@nikgavrilov993
@nikgavrilov993 2 жыл бұрын
Большое спасибо за видео! Вопрос - мне нужно найти слова в скане многострочного документа напечатанного на старой печатной машинке. Может ли нейронная сеть мне помочь в этом и какой Ваш урок мне в этом поможет? Заранее спасибо!
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Если это разовая работа, то проще воспользоваться программой FineReader. Иначе, вам просто придется повторять его алгоритм, а он очень не простой (и неизвестный).
@vadimmbld
@vadimmbld 3 жыл бұрын
Здравствуйте, а не подскажете как здесь будет работать обучение сети методом backpropagation. Т.е формула для корректировки весов содержит умножение на входящее значение, это значит, что фильтр должен проходить так же по исходной картинке меняя постепенно свои веса?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
Сам не погружался в математику в случае со сверточными сетями, но как пишут в литературе, здесь принципиально ничего не меняется, также идет коррекция весовых коэффициентов фильтров (сверток) с помощью packpropagation
@alexvincent3500
@alexvincent3500 2 жыл бұрын
Здравствуйте, а что делать, если при свёртке значение нейрона на выходе будет больше 255, его стоит оставить таким или приравнять к 255 ?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
выходное значение может быть любым, ограничение накладывает только функция активации
@sergeyyatsuk4794
@sergeyyatsuk4794 2 жыл бұрын
Здравствуйте, возник ряд вопросов, в ответ на которые я очень нуждаюсь. На 9:23 вы говорите, что каждая цветовая компонента обрабатывается своим отдельным фильтром, и для каждой цветовой компоненты отдельно образуется карта фильтров, затем они(карты фильтров) складываются между собой математически, по-элементно, и после того, как сума сформировалась к ней прибавляется смещение биос. В результате у нас получается числовое значение "Vk,m", оно пропускается через функцию активации и таким образом вычисляется выходное значение на выходном нейроне. Вопросы: 1) Получается, что при формировании карт признаков для цветовых компонент задействуется еще один слой нейронов? Ведь, исходя из информации, сказанной в видео-уроке, карта признаков состоит из выходных значений нейронов. То есть для формирования карт признаков для каждой цветовой компоненты используется дополнительный слой нейронов? 2) После сложения карт фильтров каждой из цветовых компонент и добавления биоса формируется "Vk,m" - матрица 3х3 (у вас в видео-уроке она имеет желтый окрас), которую вы именуете как "числовое значение", которое следовательно подается на вход активационной функции. Но ведь как матрица 3х3 может является "числовым значением Vk,m", если это так называемое "числовое значение" формируется с помощью последовательного по-элементного прибавления друг ко другу каждого элемента карт признаков цветовых компонент и в результате получается матрица 3х3, к которой в конце прибавляется смещение биос? Как такую матрицу можно именовать "числовым" значением?
@user-qb5bo3jv3e
@user-qb5bo3jv3e 2 жыл бұрын
Спасибо за урок! Только жаль не упомянули о том, как именно полученные на последнем слое карты активации отправлять на вход обычной полносвязной сети. Насколько мне известно, эти карты активации нужно "вытянуть" в одномерный вектор, и этот вектор уже должен подаваться на вход полносвязной сети. Причем если этот вектор получается большим, то это может привести например к долгому обучению т.к весов соответственно понадобится больше. Если размер "вытянутого" из карт активаций вектора получается большим, то его можно уменьшить, применив тот же max pooling но с более большим окном
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Вытягивать можно произвольным образом, при обучении НС сама подстроится под данные. А в Keras есть для этого специальный слой Flatten.
@user-qb5bo3jv3e
@user-qb5bo3jv3e 2 жыл бұрын
@@selfedu_rus Про Flatten уже увидел в следующем видео про CNN в этом плейлисте ) Спасибо!
@user-ll8se2kn3e
@user-ll8se2kn3e 3 жыл бұрын
В конце видео как из 10 каналов получилось 30 каналов можете объяснить?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
там на последних слоях всюду 30 каналов. Но даже если нужно из 30 получить 10, то значит, используется 10 фильтров размерностями w x w x 30 каждый, где w - размер карты признаков
@user-qb5bo3jv3e
@user-qb5bo3jv3e 2 жыл бұрын
Спасибо за урок! Предположим, что мы подали на вход Conv2D слою трехканальное изображение и назначили слою 64 ядра (фильтра). Правильно ли я понимаю, что под каждый канал будет выделено 64 фильтра, и работать это будет так: первый фильтр первого канала, первый фильтр второго канала, и первый фильтр третьего канала будут применены каждый к своему каналу, и результаты будут сложены, далее к этой суммарной матрице будет применен bias, а затем функция активации, и так 64 раза?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Если на входе трехканальное изображение, то для получения одного выходного канала будут применяться три разных фильтра для входных данных, затем суммироваться, добавляться биас и так 64 раза (для формирования 64 каналов).
@user-qb5bo3jv3e
@user-qb5bo3jv3e 2 жыл бұрын
@@selfedu_rus Ясно,спасибо!
@user-ek1qb2qo2u
@user-ek1qb2qo2u 3 жыл бұрын
Привет, у меня два вопроса. Один по пониманию. 1)Каждая группа нейронов выделяет какой то признак в соответствии с ядром фильтра, и передаёт эту полученную свёртку(сумму отсканированный кусочков 3 на 3 умноженных на ядро фильтра) следующей группе нейронов, следующая группа нейронов получает свёртку с предыдущего этапа и делает тоже самое(выделает признаки и передаёт полученную свёртку дальше). Max polling я пока не рассматриваю. Сначала нужно со свёрткой разобраться. Правильно я понимаю как происходит свёртка? 2) Нейросеть обучается на картинках одинакового размера, допустим 128x128 пикселей, а что если у меня картинка 5000x2500 пикселей и я хочу её прогнать через нейросеть и получить предсказание? Спасибо.
@selfedu_rus
@selfedu_rus 3 жыл бұрын
1) в целом, да, верно; 2) изображения других размеров должны быть приведены к формату изображений обучающей выборки (в том числе размеру, цветовому представлению, стандартизации, если она была и т.п.)
@Baron_Munghausen
@Baron_Munghausen 11 ай бұрын
Знать предмет и объяснить (передать) его несведущему совершенно разные вещи.
@user-of3pm6oi1m
@user-of3pm6oi1m 2 жыл бұрын
А разве карта признаков не должна быть 30x30? Или у нас фильтр был 1 пиксель? 17:13
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Не совсем понятен вопрос. У нас карта признаков 16x16x30, после mapooling размеры уменьшаются в 2 раза по первым 2-м коордианатм и становятся 8x8x30
@user-of3pm6oi1m
@user-of3pm6oi1m 2 жыл бұрын
@@selfedu_rus Ну на вход в нейронную сеть мы подали изображение 32х32, в первом скрытом слое пропускаем его через 10 групп нейронов, которые выполняют свертку изображения. На 11:00 вы говорили, что после прохождения маской по всему изображению, результат будет на 2 пикселя меньше (было 128х128, стало 126х126). То есть в примере на 17:00 после первого шага мы должны получить 10 карт признаков, каждая размером 30х30, или я не так понял?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
@@user-of3pm6oi1m Это все разные вещи. Вначале я говорил, как обрабатывать границы изображений. А далее, как работает операция maxpooling.
@user-of3pm6oi1m
@user-of3pm6oi1m 2 жыл бұрын
@@selfedu_rus Хорошо, спасибо
@user-rz4nv7zf1x
@user-rz4nv7zf1x 2 жыл бұрын
Не совсем понятно как нейронная сеть будет подбирать веса для своих "ядер фильтров", по какому алгоритму она их будет подправлять ?
@selfedu_rus
@selfedu_rus 2 жыл бұрын
также, как и для полносвязной - градиентным алгоритмом
@rpuropu
@rpuropu 3 жыл бұрын
Так это получается, что фильтр позволяет хоть как-то проинициализировать вертикальные связи до построения входного вектора, в отличае от пулинга.. явная потеря вертикальных связей. Однако, пулинг интуитивно кажется перспективным методом. Обдумаю во сне.. А если при поиске искомого фрагмента картинки получаются разные по масштабу области - разное количество пикселей, сильно разное, то пулингом их допускается приводить к одной размерности?
@selfedu_rus
@selfedu_rus 3 жыл бұрын
MaxPooling выделяет максимальные значения на выходах каналов (сверточных слоев), то есть, сохраняет максимум информации, сокращая размерность вектора (матрицы).
@rpuropu
@rpuropu 3 жыл бұрын
@@selfedu_rus да, я пока спал - передумал).. т.е. конечно выражение связи по вертикали в пулинге слабее, чем у фильтра 3 на 3 с средней вертикалью единичек, но всё же он передаёт инфу.. из фильтров альтернативой ему тогда будет что-то типа: 1 0 1 0 0 0 1 0 1 Если так можно выразиться) PS посмотрел следующий ролик, осознал поочерёдный алгоритм применения - успокоился)
@andreybutryakov6541
@andreybutryakov6541 3 жыл бұрын
Биос добавляется не к сумме а уже входит в нее (см. время показа 10.33)
@selfedu_rus
@selfedu_rus 2 жыл бұрын
Если несколько каналов, то сначала по всем каналам проходят свертки, а затем, один раз прибавляется смещение.
@komissarovrodion
@komissarovrodion 2 жыл бұрын
Dislike: 17:40 размер тензора уменьшается в 4 раза, а не в 2 раза, как сказано в видео
@selfedu_rus
@selfedu_rus 2 жыл бұрын
в 2 раза по каждой координате имелось в виду )) но формально вы правы, это нужно было уточнить
@komissarovrodion
@komissarovrodion 2 жыл бұрын
@@selfedu_rus Like: ошибку признал
@alikaiyr6308
@alikaiyr6308 2 жыл бұрын
@@komissarovrodion ок
@user-jc9yn7bm5z
@user-jc9yn7bm5z 3 жыл бұрын
А как вычисляется градиент, как происходит распространение ошибки? Почему об этом толком никто не говорит? Говорят только о самом очевидном
@user-pb1ot5xy3t
@user-pb1ot5xy3t 3 жыл бұрын
Про это есть отдельные уроки на этом канале
@nikolaydd6219
@nikolaydd6219 Жыл бұрын
Как обучить нейросеть на картинках (символах) которые на 99% похожи друг на друга?
@selfedu_rus
@selfedu_rus Жыл бұрын
Если затем предполагаются заметно другие картинки (не похожие на те, что обучается сеть), то ничего хорошего не выйдет. Это как обучить человека немецкому языку и отправить его в Англию в надежде, что он будет что-то понимать ))
@nikolaydd6219
@nikolaydd6219 Жыл бұрын
@@selfedu_rus Будет полезно посмотреть видео как распознать печатный текст. Я вот его пытаюсь сделать но нифига. В нете народ тоже ищет но везде только рукописный. А с печатным столько проблем оказалось) Я про случаи когда текст не сегментировать а распознавать строку с текстом, смещая выборку по X. Например символы 'но' распознаются как 100% 'ю'
@alexandrkil1140
@alexandrkil1140 2 жыл бұрын
чтото огромные формулы в начале как "не пришей кобыле хвост" ... что дают для чего, никаких выводов по ним нет, просто математическую запись показать ... лучше бы пару лишних минут про котиков ... а то там количество карт активации с каждым разом множится а мотив неясен и никак не обозначается ...
@lapatun1980
@lapatun1980 10 ай бұрын
126 на 126 - вместо 127 на 127
@selfedu_rus
@selfedu_rus 10 ай бұрын
да, есть такое ))
@mangod2411
@mangod2411 Жыл бұрын
Не пиксел, а пиксель!!!!!!!!! Пикселей, а не пикселов, пиксели, а не пикселы, и т.д.
@doifgoox8510
@doifgoox8510 Жыл бұрын
Пиксел
@cold_heart_i
@cold_heart_i Жыл бұрын
Ну по правде говоря будет на 2 пикселя меньше чем исходное изображение 126*126
@selfedu_rus
@selfedu_rus Жыл бұрын
верно! )
[DeepLearning | видео 1] Что же такое нейронная сеть?
19:00
3Blue1Brown translated by Sciberia
Рет қаралды 776 М.
🍕Пиццерия FNAF в реальной жизни #shorts
00:41
Climbing to 18M Subscribers 🎉
00:32
Matt Larose
Рет қаралды 33 МЛН
Why did the angel disappear?#Short #Officer Rabbit #angel
00:38
兔子警官
Рет қаралды 5 МЛН
She ruined my dominos! 😭 Cool train tool helps me #gadget
00:40
Go Gizmo!
Рет қаралды 55 МЛН
Самое простое объяснение нейросети
16:30
Программный Кот
Рет қаралды 110 М.
Как работает ChatGPT: объясняем нейросети просто
39:04
RationalAnswer | Павел Комаровский
Рет қаралды 1,2 МЛН
Нейронные сети. Детальный гайд
11:42
Кик Брейнс
Рет қаралды 35 М.
Делаю нейросеть с нуля
17:17
Onigiri
Рет қаралды 1,4 МЛН
Лекция. Сверточные нейронные сети
50:11
Deep Learning School
Рет қаралды 51 М.
The Biggest Myth In Education
14:27
Veritasium
Рет қаралды 13 МЛН
7  ПАРАДОКСОВ БЕСКОНЕЧНОСТИ
36:02
Mathin
Рет қаралды 448 М.
🍕Пиццерия FNAF в реальной жизни #shorts
00:41