Как функционируют точные нейронные сети с использованием Python | #13 Введение в нейросети




Сверточные нейросети (Convolutional Neural Networks, CNN) — это класс алгоритмов машинного обучения, обработка данных в которых основана на операции свертки. Архитектура CNN состоит из нескольких слоев: входного, сверточных и полносвязных слоев, а также слоев пулинга (MaxPooling, MinPooling, AveragePooling), которые уменьшают размерность данных, сохраняя наиболее значимые признаки. Сверточные ступени позволяют нейросети обнаруживать локальные признаки в изображениях. Вращательная нейронная сеть является примером конструкции CNN, которая позволяет классифицировать изображения с учетом их вращения. Телеграм-канал: [название канала], Инфо-сайт: [название сайта].


Напишите статью о Как работают сверхточные нейронные сети | #13 нейросети на Python
на на русском языке


Опубликовано

в

от

Метки:

Комментарии

39 комментариев на ««Как функционируют точные нейронные сети с использованием Python | #13 Введение в нейросети»»

  1. Аватар пользователя selfedu

    Дорогие друзья! Небольшой квест. В этом видео я специально сделал небольшую арифметическую ошибку. Она не влияет на общее восприятие и понимание материала. И тот, кто обнаружит эту ошибку, тот красавчик! ))

  2. Аватар пользователя Alexey Korepov

    Хочу уточнить, а не правильней ли будет при анализе и поиске объектов на изображении использовать всегда цветовую модель Lab а не RGB? Ведь она гораздо правильней представляет изображение с точки зрения содержимого — слой яркости показывает объекты, а a и b — их цветовые особенности. Что думаете по этому поводу?

  3. Аватар пользователя Илья Сергеев

    126 на 126 — вместо 127 на 127

  4. Аватар пользователя Проектирую и Строю

    Учусь в GB, там рассказывал преподаватель много много много — часа три, понял, что я мягко говоря не способен учиться.
    здесь за 20 минут я понял, как это все работает.
    было бы неплохо еще рассказать, для чего делается укрупнение признаков, возможный ответ, для увеличения скорости нейронной сети, за счет экономии вычислительных мощностей?

  5. Аватар пользователя White Horse

    Знать предмет и объяснить (передать) его несведущему совершенно разные вещи.

  6. Аватар пользователя LiKey Dikey

    Цепочка «элемент -> процесс -> элемент» (под изображением также понимаются и другие карты признаков (во 2-й цепи), MaxPool карты (в 1-й цепи, а вообще MaxPool карты — это те же карты признаков, но на прошлом шаге прошедшие обработку, операцию MaxPool)):
    Изображение -> фильтр (весовая маска, где каждый вес между пикселем изображения и нейроном группы карты признаков настолько больше, насколько характернее нахождение на ожидаемом изображении точки, чтобы был составлен элемент. Таким образом, чем более изображение похоже на отбираемый фильтром элемент, тем больше будет значение нейрона, ответственного за этот отрабатываемый участок) -> Карта признаков

    Изображение -> операция MaxPool (выбор из каждой секции максимального значения в рамках данной секции) -> MaxPool карта

    Суть в прилагательных:
    Карта признаков — характерный
    MaxPool — наиболее выраженный

    ~~~

    Изменение геометрических размеров, параметров:
    Новый слой карты признаков после фильтрации — увеличивается глубина ряда этого слоя. Т. к. из изображения (или из множества таких изображений, если речь идёт не о 1-м и 2-м слоях) извлекают больше 1-го признака -> фильтров и соответствующих карт признаков больше, чем их (MaxPool карт) было на предыдущем слое.

    Новый слой карты признаков (MaxPool карт) после операции Max Pool — уменьшается размер карты (ширина и высота). Т. к. сама операция MaxPool предполагает извлечение максимального значения из некоторых значений (а значение может называться максимальным только в сравнении с другим, а значит при их наличии).

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

    Карта признаков после MaxPool — глубина сохраняется, размерность уменьшается (но не всегда уменьшается, однако по умолчанию падинг установлен так, что размерность уменьшается — если всё же нужно её сохранение, то можно установить соотвествующий падинг).

  7. Аватар пользователя Man God

    Не пиксел, а пиксель!!!!!!!!! Пикселей, а не пикселов, пиксели, а не пикселы, и т.д.

  8. Аватар пользователя Екатерина Челмакина

    𝑊𝑜𝑢𝑡 =

    ((𝑊𝑖𝑛 − 𝑘𝑒𝑟𝑛𝑒𝑙_𝑠𝑖𝑧𝑒 + 2 ∗ 𝑝𝑎𝑑𝑑𝑖𝑛𝑔)/

    𝑠𝑡𝑟𝑖𝑑𝑒) + 1 — еще вот такая формула есть для определния размера изображения после свертки

  9. Аватар пользователя Игорь Потапов

    Очень круто, спасибо! Хочу чуть-чуть поправить: не биос (BIOS), а байэс (bias).

  10. Аватар пользователя Арра Куарра

    Спасибо. Какое большое спасибо…
    Помог.
    А то сидел тупил.

  11. Аватар пользователя Котэ Таська

    Ну по правде говоря будет на 2 пикселя меньше чем исходное изображение 126*126

  12. Аватар пользователя Nikolay DD

    Как обучить нейросеть на картинках (символах) которые на 99% похожи друг на друга?

  13. Аватар пользователя L&A

    Хороший добрый комментарий в поддержку автора канала и контента.

  14. Аватар пользователя Alex Vincent

    Здравствуйте, а что делать, если при свёртке значение нейрона на выходе будет больше 255, его стоит оставить таким или приравнять к 255 ?

  15. Аватар пользователя Кристина Фирсова

    Не совсем понятно как нейронная сеть будет подбирать веса для своих "ядер фильтров", по какому алгоритму она их будет подправлять ?

  16. Аватар пользователя Sergey Yatsuk

    Здравствуйте, возник ряд вопросов, в ответ на которые я очень нуждаюсь.

    На 9:23 вы говорите, что каждая цветовая компонента обрабатывается своим отдельным фильтром, и для каждой цветовой компоненты отдельно образуется карта фильтров, затем они(карты фильтров) складываются между собой математически, по-элементно, и после того, как сума сформировалась к ней прибавляется смещение биос. В результате у нас получается числовое значение "Vk,m", оно пропускается через функцию активации и таким образом вычисляется выходное значение на выходном нейроне.

    Вопросы:

    1) Получается, что при формировании карт признаков для цветовых компонент задействуется еще один слой нейронов? Ведь, исходя из информации, сказанной в видео-уроке, карта признаков состоит из выходных значений нейронов. То есть для формирования карт признаков для каждой цветовой компоненты используется дополнительный слой нейронов?

    2) После сложения карт фильтров каждой из цветовых компонент и добавления биоса формируется "Vk,m" — матрица 3х3 (у вас в видео-уроке она имеет желтый окрас), которую вы именуете как "числовое значение", которое следовательно подается на вход активационной функции. Но ведь как матрица 3х3 может является "числовым значением Vk,m", если это так называемое "числовое значение" формируется с помощью последовательного по-элементного прибавления друг ко другу каждого элемента карт признаков цветовых компонент и в результате получается матрица 3х3, к которой в конце прибавляется смещение биос? Как такую матрицу можно именовать "числовым" значением?

  17. Аватар пользователя Nik Gavrilov

    Большое спасибо за видео!
    Вопрос — мне нужно найти слова в скане многострочного документа напечатанного на старой печатной машинке.
    Может ли нейронная сеть мне помочь в этом и какой Ваш урок мне в этом поможет?
    Заранее спасибо!

  18. Аватар пользователя ivan

    11:37 126×126 а не 127×127 потому, что пиксели обрезаються справа и слева

  19. Аватар пользователя Elizabeth Grant

    Спасибо огромное за Ваши уроки!

  20. Аватар пользователя Alexandr Kil

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

  21. Аватар пользователя Заброшенные места

    Подскажите пожалуйста один момент. Как следует из начала урока, один фильтр соответствует одной группе нейронов. В конце видео в примере мы получаем после пуллинга 10 карт признаков размером 16х16. Дальше вы говорите, что этот набор из 10 анализируется целиком одной группой нейронов, т.е. для каждой карты признаков (квадрата 16х16) будет свой фильтр и потом они суммируются и получается одна из 30 следующих карт признаков. Что-то не сходится у меня в голове эта мысль, как может быть получена одна из 30 карт признаков с помощью разных фильтров, из предыдущего утверждения следует что эта группа нейронов соответствует одному фильтру. Тот же вопрос про обработку многоканального изображения: если мы говорим про одноканальное изображение, то там вроде все ясно, а потом вы говорите что если каналов 3, то каждый канал обрабатывается своим фильтров (т.е. своей группой нейронов) и потом результат суммируется. Тогда получается, что для обработки 3х канального изображения нужно 3 группы нейронов, т.е. 3 фильра. Может быть все таки имеется в виду, что мы изначально берем грубо говоря 10 фильтров, и каждый канал прогоняем через эти фильтры и уже после этого суммируем? Просто что-то в голове все это не укладывается в логическую цепочку

  22. Аватар пользователя Денис Агапитов

    А разве карта признаков не должна быть 30×30? Или у нас фильтр был 1 пиксель? 17:13

  23. Аватар пользователя Коля Васильев

    Спасибо за урок! Предположим, что мы подали на вход Conv2D слою трехканальное изображение и назначили слою 64 ядра (фильтра). Правильно ли я понимаю, что под каждый канал будет
    выделено 64 фильтра, и работать это будет так: первый фильтр первого канала, первый фильтр второго канала, и первый фильтр третьего канала будут применены каждый к своему каналу, и результаты будут сложены, далее к этой суммарной матрице будет применен bias, а затем функция активации, и так 64 раза?

  24. Аватар пользователя Коля Васильев

    Спасибо за урок! Только жаль не упомянули о том, как именно полученные на последнем слое карты активации отправлять на вход обычной полносвязной сети. Насколько мне известно, эти карты активации нужно "вытянуть" в одномерный вектор, и этот вектор уже должен подаваться на вход полносвязной сети. Причем если этот вектор получается большим, то это может привести например к долгому обучению т.к весов соответственно понадобится больше. Если размер "вытянутого" из карт активаций вектора получается большим, то его можно уменьшить, применив тот же max pooling но с более большим окном

  25. Аватар пользователя Родион Комиссаров

    Dislike: 17:40 размер тензора уменьшается в 4 раза, а не в 2 раза, как сказано в видео

  26. Аватар пользователя Artem Vasilevich

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

  27. Аватар пользователя Danila Nelin

    Здравствуйте, спасибо за ваши уроки, но у меня возник вопрос. К примеру у меня есть нс, которая должна определять (с камеры) есть ли маска на человеке, или нет. Возникнут ли какие либо проблемы с распознаванием, так как обучающая выборка была стандартизирована, а изображение с камеры нет?

  28. Аватар пользователя Sakha Knives

    привет!
    очень хорошо объяснено, спасибо за видео 🙂

    возник такой вопрос — как определить количество скрытых слоев? на 17:20 у вас 2 слоя сверточной сети, 2 слоя макс пулинга — почему именно такая конфигурация?
    можно ли было использовать 1 слой сверточной сети и 1 слой пулинга?

  29. Аватар пользователя Григорий Игоревич

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

  30. Аватар пользователя 123 321

    А как вычисляется градиент, как происходит распространение ошибки? Почему об этом толком никто не говорит? Говорят только о самом очевидном

  31. Аватар пользователя Михаил

    Самое лучшие объяснения как работает нейронная сеть !!

  32. Аватар пользователя A̪͌

    Здравствуйте, а не подскажете как здесь будет работать обучение сети методом backpropagation. Т.е формула для корректировки весов содержит умножение на входящее значение, это значит, что фильтр должен проходить так же по исходной картинке меняя постепенно свои веса?

  33. Аватар пользователя Динара Баймагамбетова

    В конце видео как из 10 каналов получилось 30 каналов можете объяснить?

  34. Аватар пользователя Лёша Шатурный

    Привет, у меня два вопроса. Один по пониманию. 1)Каждая группа нейронов выделяет какой то признак в соответствии с ядром фильтра, и передаёт эту полученную свёртку(сумму отсканированный кусочков 3 на 3 умноженных на ядро фильтра) следующей группе нейронов, следующая группа нейронов получает свёртку с предыдущего этапа и делает тоже самое(выделает признаки и передаёт полученную свёртку дальше). Max polling я пока не рассматриваю. Сначала нужно со свёрткой разобраться. Правильно я понимаю как происходит свёртка?
    2) Нейросеть обучается на картинках одинакового размера, допустим 128×128 пикселей, а что если у меня картинка 5000×2500 пикселей и я хочу её прогнать через нейросеть и получить предсказание?
    Спасибо.

  35. Аватар пользователя Дмитрий Тюрин

    Хороший канал, надеюсь он наберет популярность!!!)

  36. Аватар пользователя Andrey Butryakov

    Биос добавляется не к сумме а уже входит в нее (см. время показа 10.33)

  37. Аватар пользователя adrian chervinchuk

    огромное спасибо за доходчивость и детальность

  38. Аватар пользователя Роман Ершов

    Лучше всех (Из тех кого я уже просмотрел) объясняешь как устроенна нейронная сеть
    Спасибо теперь я больше понимаю как устроенно это все

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *