Содержание
Как обработать фото в Midjourney и сделать аватарку в любом стиле:
Даша Лейзаренко
нагенерировала полный сервер аватарок
Профиль автора
Midjourney прославилась умением генерировать изображения по описанию с нуля, но этим ее возможности не ограничиваются.
В середине ноября вышла четвертая версия нейросети. Алгоритм научился создавать более реалистичные изображения, скрещивать две картинки и точнее обрабатывать запросы. Что важно, сильно улучшили инструмент, позволяющий генерировать картинки на основе реального референса. Теперь пользователи могут качественно стилизовать собственные фотографии.
В соцсетях уже научились генерировать аватары в разных стилях. По мотивам одной из инструкций рассказываем, как добавить к своим фото немного «Наруто» или «Гарри Поттера».
Кратко о Midjourney
Это нейросеть, которая генерирует картинки по текстовому описанию. Их вполне можно спутать с «человеческими» артами. Midjourney — самая доступная из конкурентов. К Dall-E нет публичного доступа, а для запуска Stable Diffusion нужен хороший компьютер.
В Midjourney огромное количество настроек. С их помощью можно менять детализированность картинки, соотношение сторон и другие параметры. Подробнее о том, как пользоваться нейросетью, мы рассказывали в большом гайде.
В бесплатной версии нейросети 25 попыток. Этого вполне достаточно, чтобы сгенерировать десяток качественных картинок. Ограничения можно убрать, заплатив за подписку, но сделать это российской банковской картой нельзя. Второй способ — заново создавать аккаунты в «Дискорде», но есть риск получить бан.
Как сгенерировать стилизованный аватар в Midjourney
Один из пользователей «Твиттера» рассказал в треде, как создать картинку на основе своей фотографии. Пересказываем и дополняем его советы.
Шаг 1. Midjourney доступна только в виде бота в «Дискорде». Нужно зарегистрироваться на платформе и присоединиться к официальному серверу команды нейросети.
/discord/
Как правильно пользоваться Discord: для игр, общения и работы
Шаг 2. Во вкладке Newcomer Rooms перейдите в любой канал Newbies. В этих каналах пользователи создают картинки. Вы будете видеть все их попытки создать картинку при помощи нейросети, а они — ваши.
Шаг 3. Напишите в чате команду /settings и установите следующие настройки: MU version 4, Style med, Regular upscale, Remix mode, Fast Mode.
Если у вас есть платная подписка, можно чуть поменять настройки. Я улучшила качество изображений. Источник: дискорд-сервер Midjourney
Шаг 4. Введите команду /imagine, наберите любой текст и отправьте в чат. Это тестовый запрос, который ни к чему не приведет. После него появится сообщение, в котором нужно принять правила пользования Midjorney. Нажмите Accept ToS.
Шаг 5. Выберите свою фотографию, где хорошо видно лицо. Загрузите фотографию на любой хостинг, откуда можно скопировать ссылку на изображение. Просто загрузить картинку в «Дискорд» не выйдет. Подойдет хостинг Postimages — он не ухудшает качество. Скопируйте оттуда ссылку из поля direct link. Фотографию можно также скопировать из «Телеграма» или «Вконтакте».
/list/messenger-alternatives/
Вместо WhatsApp и Telegram: 7 альтернативных мессенджеров для смартфонов и компьютеров
Шаг 6. Вернитесь в «Дискорд», снова наберите в чате команду /imagine, а в появившейся строке Prompt добавьте ссылку на свою фотографию.
Шаг 7. После пробела дополните картинку текстовым описанием, что должно поменяться. Запрос будет отражать стилизацию вашей фотографии. Например, если вы хотите сделать из себя персонажа «Гарри Поттера», введите Harry Potter character. Если вам нравится какой-то визуальный стиль, добавляйте art style, например Van Gogh art style. Не обязательно придерживаться этих правил, пишите все, что приходит в голову. Можно экспериментировать, но помните про ограничение в 25 генераций.
Шаг 8. Нейросеть в прямом эфире сгенерирует четыре картинки. Это еще не готовый результат. Под коллажем появятся кнопки — U1, U2, U3, U4 и V1, V2, V3, V4. Первый параметр — апскейлинг. Выберите наиболее удачную картинку из четырех, а нейросеть улучшит ее разрешение и заодно добавит деталей. Второй параметр позволяет создать новые вариации конкретной картинки из коллажа — на случай, если вам нравится результат, но хочется посмотреть, что еще сделает нейросеть в том же духе. На апскейлинг тоже тратятся бесплатные генерации.
Шаг 9. Перезапустить генерацию по тому же запросу можно кнопкой со стрелками. Чтобы сохранить результат, откройте изображение и кликните на «Открыть оригинал». Картинка откроется во вкладке браузера.
/list/neuroart/
Как рисуют нейросети: пробуем 10 сервисов
Как добиться хорошего результата
По картинке генерировать проще, чем с нуля: вы сразу показываете нейросети, с чем ей работать. Но сложности могут возникнуть при составлении запроса или придумывании идей. Несколько наших советов на случай, если результаты генерации вам не нравятся.
Выбирайте селфи или портреты с хорошим освещением. Лицо должно быть изображено крупным планом. Если использовать фото по пояс или в полный рост, высока вероятность того, что Midjourney проигнорирует ваши черты лица. Зато в таком случае у нейросети остается место, чтобы нарисовать красивый и детальный фон. Так что, вероятно, придется выбирать.
Мой коллега обработал фото в стиле фильма «Бегущий по лезвию 2049» — красиво, но его самого почти не видно, а лицо сгенерировалось без деталей
Уточняйте в запросе гендер. Midjourney иногда может сгенерировать вместо девушки мужчину и наоборот. Причем нередки ситуации, когда по одному запросу нейросеть делает, к примеру, трех девочек и одного деда. Если не хотите стать бородатым дядей, то добавьте к запросу female, girl или woman.
Не придумывайте запрос — возьмите картинку. Нейросеть умеет миксовать два изображения. Вместо того чтобы писать запрос, можно просто скопировать ссылку на любое изображение с понравившимся вам персонажем или стилем. Так нейросеть справляется даже лучше: у меня несколько раз не вышло сгенерировать себя в образе супергероини через запрос, а с картинкой сработало отлично.
/spec-neuropictures/
Сможете угадать известную картину по рисунку нейросети?
Я, скрещенная с Чудо-женщиной
Меняйте фотографии. Некоторые фотографии получаются лучше в стиле аниме, а другие — в более реалистическом стиле. Если снимок «не работает» в определенной стилистике, попробуйте другое фото.
Попробуйте преобразовать фото с животными. Особенно советуем тематические мультики вроде «Мой сосед Тоторо». Нейросеть очень охотно стилизует котов и собак.
Воспользуйтесь специальным сервисом по подбору запроса. Если не можете сами придумать, в каком стиле себя сделать, воспользуйтесь промптерами — небольшими сервисами, помогающими сформулировать запрос. Там есть перечень популярных стилей, с которыми нейросеть точно справляется. Советуем Prompter и Phraser.
С помощью каких еще нейросетей можно обработать фото
Dream Studio. В облегченной версии нейросети Stable Diffusion есть возможность загрузить свое фото и добавить к нему запрос. Получается не так качественно, как в Midjourney, но зато нейросеть добавляет больше деталей из запроса. Бесплатно можно сгенерировать до 200 изображений.
Draw Anyone. Сервис работает на основе Stable Diffusion и генерирует аватарки в заданных разработчиками стилях. Нужно загрузить 5—10 своих фотографий и ждать, пока они обрабатываются. Очередь длинная — обработка может занимать до четырех дней. Бесплатно можно сохранить только несколько изображений.
/stable-diffusion/
Как пользоваться нейросетью Stable Diffusion без навыков программирования
FaceTune. В приложение для ретуши лица добавили ИИ-генератор стилизованных изображений. Нужно загрузить пять своих фотографий и ждать, пока они обработаются. После этого можно как применять подготовленные разработчиками фильтры, так и прописывать свой запрос. Генерировать картинки можно бесплатно и безлимитно. Приложение доступно для iOS и Android.
Результат генерации и запрос в FaceTune
Мы постим кружочки, красивые карточки и новости о технологиях и поп-культуре в нашем телеграм-канале. Подписывайтесь, там классно: @t_technocult.
Russian DALL-E
Модели позволяют создавать изображения, которых раньше не существовало.
Всё что нужно — текстовое описание на русском или другом языке.
Ниже — технические характеристики каждой из моделей, а также примеры созданных ими изображений.
Попробуйте вместе с генеративными художниками создать уникальные изображения, используя свои собственные формулировки. Попросите генеративных художников изобразить что-то особенное и для вас.
Эта модель генерирует красочные изображения за считанные минуты.
Протестировать модель можно в разделе Kandinsky 2.0 или в мобильном приложении Салют — достаточно сказать виртуальному ассистенту «Запусти художника», а затем голосом попросить его что-нибудь нарисовать 🧑🎨
Также к вашим услугам предшественники Kandinsky 2.0 — генеративные художники ruDALL-E Malevich и ruDALLE-E Kandinsky
А с помощью ruDALL-E Emojich можно генерировать новые эмодзи. 🧚👩💻💁♂️
Посмотреть 👀👀👀
Рождественская ночь с красивым месяцем и нарядной ёлкой
Модель Kandinsky 2. 0 использует метод обратной диффузии и за считанные минуты создаёт красочные изображения на различные темы по текстовому запросу на русском и других языках.
Можно даже комбинировать разные языки в рамках одного запроса.
Нейросеть разработали и обучили исследователи Sber AI при партнёрской поддержке ученых из Института искусственного интеллекта AIRI на объединённом датасете Sber AI и SberDevices из 1 млрд пар «текст — изображение».
Попробуйте
Параметры обучения и модели:
- Два мультилингвальных текстовых энкодера, эмбеддинги которых конкатенируются —344M + 300M параметров соответственно
- В основе обратной диффузии модель UNet с 1.2B параметрами
- Динамический трешхолдинг в процессе сэмплирования
- Количество шагов диффузии — 1000
- batch_size=48
- Длина текстового промта — 77 токенов
Прочитать подробнее про Kandinsky 2. 0 можно здесь
Код и веса модели находятся в открытом доступе: GitHub,
HuggingFace
A red colored panda in the space, photo
Древние истуканы, которым поклоняются древние люди
Обложка для диска с эпическим металлом и женским вокалом
Ярмарка на Красной Площади в Москве в 17м веке в стиле Сурикова
Больше примеров
Русская text-to-image модель, генерирующая изображения по тексту.
Архитектура такая же, как у ruDALL-E XL. Ещё больше параметров в новой версии!
Попробуйте
Параметры обучения и модели:
- 12 млрд параметров
- Энкодер изображений — кастомная VQGAN модель, преобразующая картинку в последовательность из 32×32 символов
- YTTM токенизатор текстов со словарем 16384 токенов
- Специализированные маски attention для визуальных последовательностей
- Поддержка переранжирования результатов моделью ruCLIP
- Поддержка повышения разрешения выполняется одним из двух способов RealESRGAN или диффузионный суперрез
Подсолнухи в вазе, Винсент Ван Гог
Сюрреализм, стиль
Картошка, стилизованная под аниме, с эффектами электрических разрядов, на фоне современного города в неоновом кибепанк стиле
Закат и город
Больше примеров
По короткому текстовому описанию ruDALL-E генерирует яркие и красочные изображения на самые разные темы и сюжеты. Модель понимает обширный набор понятий и генерирует совершенно новые изображения и объекты, которых не существовало в реальном мире.
Попробуйте
Параметры обучения и модели:
- 1,3 млрд параметров
- Энкодер изображений — кастомная VQGAN модель, преобразующая картинку в последовательность из 32×32 символов
- YTTM токенизатор текстов со словарем 16000 токенов
- Специализированные маски attention для визуальных последовательностей
- Поддержка переранжирования результатов моделью ruCLIP
- Поддержка поднятия разрешения с помощью модели RealESRGAN
Красивый горный пейзаж
Очень красивая собака
Красивая желтая птичка с красным клювом
Больше примеров
По короткому текстовому описанию ruDALL-E генерирует смайлики, которые можно использовать для стикеров, клипартов и прототипов дизайна. Модель понимает обширный набор понятий и генерирует совершенно новые эмодзи, которых не существовало до этого.
Попробуйте
Параметры обучения и модели:
- ruDALL-E Emojich — файнтюн ruDALL-E Malevich. Для дообучения модели было собрано 2749 иконок эмодзи и соответствующих русскоязычных описаний
- 1,3 млрд параметров
- Энкодер изображений — кастомная VQGAN модель, преобразующая картинку в последовательность из 32×32 символов
- YTTM токенизатор текстов со словарем 16000 токенов
- Специализированные маски attention для визуальных последовательностей
- Поддержка поднятия разрешения с помощью модели RealESRGAN
Гэндальф
Дональд Трамп из лего
Neural Network Stock-Fotos und Bilder
- CREATIVE
- EDITORIAL
- VIDEOS
Beste Übereinstimmung
Neuestes
Ältestes
Am beliebtesten
Alle Zeiträume24 Stunden48 Stunden72 Stunden7 Tage30 Tage12 MonateAngepasster Zeitraum
Lizenzfrei
Lizenzpflichtig
RF и RM
Durchstöbern Sie 1.
293 нейронная сеть Stock-Photografie und Bilder. Например, как искусственный интеллект, так и машинное обучение.
нейтральный сетевой абстрактный фон — нейронная сеть стоковые фото и изображения турбулентные провода — нейронная сеть стоковые фото и изображения интеллектуальные концепции — нейронные сети стоковые фото и изображения вектор-дизайн — стоковые изображения нейронной сети, -клипарт, -мультфильмы и -символнейрон система — нейронная сеть сток-фото и бильдерлогистиктехника абстрактный vernetzung verbindungen hintergrund — нейронная сеть сток-график, -клипарт, -мультфильмы и -символнейрон система — нейронная сеть сток-фото и бильдернетворк, концептуальная иллюстрация — нейронная сеть сток-график, -клипарт, -мультфильмы и -символические интеллектуальные линии иконки. медвежий барер строгий. пиксель идеальный. для мобильных устройств и Интернета. enthält symbole wie künstliche intelligenz, maschinelles lernen, internet der dinge, big data, netzwerktechnologie, roboter, финансовые облачные вычисления. — нейронная сеть сток-график, -клипарт, -мультфильмы и -символы обучение мозгу — нейронная сеть сток-фото и бильдернетворкинг абстрактный маршрут лабиринта U-Bahn Kreuzung Hintergrundmuster — нейронная сеть сток-график, -клипарт, -мультфильмы и -символенетворк, иллюстрация — Нейронная сеть стоковых фотографий и изображений социальных медиа-технологий-netzwerk-hintergrund — Нейронная сеть стоковых изображений, -клипартов, -мультфильмов и -символов, мультиэтнических для schungsteam untersucht мутации ДНК. ärztin im vordergrund — нейронная сеть стоковых фотографий и изображений, цифровое формирование, футуристическая фоновая композиция, кибернетические частицы — нейронные сети стоковых фотографий и двусмысленных абстрактных изображений — нейронные сети, графические изображения, -клипарты, -мультфильмы и -symboledatenverarbeitung — dünnlinien-vektorsymbol gesetzt. медвежий барер строгий. пиксель идеальный. набор символов с датами, инфографикой, большими данными, облачными вычислениями, машинным обучением, системой безопасности. — графика нейронной сети, -клипарт, -мультфильмы и -символическая нейронная сеть, концептуальная иллюстрация -grafiken, -clipart, -cartoons und -symbole三維空間中的的發光大腦 — нейронная сеть стоковые фотографии и фотографии, социальные сети, wissenschaft-technik-hintergrund — нейронная сеть стоковая графика, -клипарт, -мультфильмы и -дизайн сети символов -hintergrund — графика нейронной сети, -clipart, -cartoons und -symboleweibliche untersuchung von dna-proben. computerbildschirme mit dna-sequenzen — нейронная сеть стоковые фотографии и изображения 3d биомедицинская иллюстрация — нейронная сеть стоковые фотографии и изображения интеллектуальные цифровые концепции — нейронные сети стоковые фотографии и бильдерабстрактная схема хинтегрунд — нейронная сеть стоковая графика, -клипарт, -мультфильмы und -symbolehelle netzwerk hintergrund — графика нейронной сети, -clipart, -cartoons und -symbolehuman gehirn — графика нейронной сети, -clipart, -cartoons und -symbolelebhafte netzwerkverbindungen — графика нейронной сети, -clipart, -cartoons und -Символическая сеть мозга с искусственным интеллектом — Нейронная сеть стоковые фотографии и бильдерхед куклы с кабелем компьютера, подключенного к мозгу сетевые стоковые фотографии и интеллектуальные изображения — satz von linienvektorsymbolen — нейронная сеть ork stock-grafiken, -clipart, -cartoons und -symbolehell technologie-netzwerk — нейронная сеть, графика, -клипарт, -мультфильмы и -symboledigital портрет: вид сбоку — нейронная сеть, стоковые фотографии и изображения, интеллектуальные баннеры — запас нейронной сети -grafiken, -clipart, -cartoons und -symbolekünstliche intelligenz buchstaben grauenhintergrund -neural network stock-grafiken, -clipart, -cartoons und -symboleabstract swirl lines -neural network stock-fotos und bilderabstract menschliches gesicht — die macht des geistes — künstliche intelligenz , психология, технология — нейронная сеть стоковые фото и бильдерискусственная нейронная сеть, иллюстрация — нейронная сеть стоковая графика, -клипарт, -мультфильмы и -символкластер — нейронная сеть стоковая графика, -клипарт, -мультфильмы и -символический мозг, нейронная сеть, иллюстрация — нейронная сеть сток-графики, -клипарт, -мультфильмы и -символы для поиска пара без мутации ДНК. computerbildschirme mit dna-helix im vordergrund — нейронная сеть сток-фотографии и билдероблако-netzwerk — пиксельный совершенный контур-символ — нейронная сеть сток-графика, -клипарт, -мультфильмы и -symboleneuron система — нейронная сеть сток-фото и современный vernetzung leiterplattenlogistik абстрактный фон — нейронная сеть сток-график, -клипарт, -мультфильмы и -символмозг и сеть — нейронная сеть сток-фотографии и бильдербрейн сеть — нейронная сеть сток-фото и бильдернетворк, абстрактная иллюстрация — нейронная сеть сток-фото и бильдерхэнд, показывающая цифровую изображение человеческого мозга в сети — нейронная сеть стоковые фото и изображения network stock-fotos und bilderbrain нейронная сеть, иллюстрация — нейронная сеть сток-графика, -клипарт, -мультфильмы и -символы ign neuronaler netzwerke, ki-konzept, vektorvorlage — нейронная сеть, графика, -clipart, -cartoons und -symboleabstrakter leererunderground. нейроналер хинтергрунд. — графика нейронной сети, -клипарт, -мультфильмы и -symbolehintergrund des abstrakten ratermusters des netzwerkknotens — графика нейронной сети, -clipart, -cartoons und -symboleabstract, цифровое образование, футуристическая разноцветная фоновая композиция, кибернетические частицы — нейронная сеть, сток-фотографии и изображение фон 22
Полное руководство для начинающих по глубокому обучению: сверточные нейронные сети и классификация изображений | Энн Боннер
Познайте основы CNN и классификации изображений за считанные минуты
Изображение VislazFotosas через Pixabay
Или, наоборот, получается не то, что ты вкладываешь».
― Дайан Арбус
В вашей любимой социальной сети всплывает уведомление о том, что кто-то разместил фотографию, на которой вы можете быть.
Верно.
Это худшая твоя фотография.
GIF через GIPHY
Как это произошло?
Классификация изображений !
Сверточная нейронная сеть (CNN) — это класс нейронных сетей глубокого обучения . CNN представляют собой огромный прорыв в распознавании изображений. Они чаще всего используются для анализа визуальных образов и часто работают за кулисами при классификации изображений. Их можно найти в основе всего, от пометок к фотографиям в Facebook до беспилотных автомобилей. Они усердно работают за кулисами во всем, от здравоохранения до безопасности.
Они быстрые и эффективные. Но как они работают?
Классификация изображений — это процесс получения входных данных (например, изображения) и вывода класса (например, «кот») или вероятности того, что входные данные относятся к определенному классу («существует 90%-ная вероятность того, что этот ввод — кошка»). Вы можете посмотреть на картинку и понять, что перед вами ужасный снимок собственного лица, но как компьютеру научиться этому?
Со сверточной нейронной сетью!
CNN имеет
- сверточные слои
- слои ReLU
- объединяющие слои
- полностью связанный слой
Классическая архитектура CNN будет выглядеть примерно так:
-> Convolution -> ReLU Input
0 ->ReLU -> Объединение в пул ->
ReLU -> Свертка -> ReLU -> Объединение в пул -> Полное подключение
CNN свертывает (не свертывает…) изученные функции с входными данными и использует 2D сверточные слои. Это означает, что этот тип сети идеально подходит для обработки 2D-изображений. По сравнению с другими алгоритмами классификации изображений, CNN фактически используют очень мало предварительной обработки. Это означает, что они могут выучить фильтры, которые приходится делать вручную в других алгоритмах. CNN можно использовать во множестве приложений, от распознавания изображений и видео, классификации изображений и рекомендательных систем до обработки естественного языка и анализа медицинских изображений.
CNN вдохновлены биологическими процессами. Они основаны на интересном исследовании, проведенном Хьюбелем и Визелем в 60-х годах в отношении зрения у кошек и обезьян. Схема подключения в CNN исходит из их исследования организации зрительной коры. В глазу млекопитающего отдельные нейроны реагируют на зрительные стимулы только в рецептивном поле, которое представляет собой ограниченную область. Рецептивные поля разных областей частично перекрываются, так что перекрывается все поле зрения. Так работает CNN!
Изображение NatWhitePhotography на Pixabay
CNN имеют входной слой, выходной слой и скрытые слои. Скрытые слои обычно состоят из сверточных слоев, слоев ReLU, объединенных слоев и полносвязных слоев.
- Сверточные слои применяют к входным данным операцию свертки. Это передает информацию на следующий уровень.
- Объединение объединяет выходные данные кластеров нейронов в один нейрон следующего слоя.
- Полностью связанные слои соединяют каждый нейрон в одном слое с каждым нейроном в следующем слое.
В сверточном слое нейроны получают входные данные только из подобласти предыдущего слоя. В полносвязном слое каждый нейрон получает входные данные от каждого элемента предыдущего слоя.
CNN работает, извлекая признаки из изображений. Это устраняет необходимость ручного извлечения признаков. Черты не тренируются! Они изучаются, пока сеть тренируется на наборе изображений. Это делает модели глубокого обучения чрезвычайно точными для задач компьютерного зрения. CNN обучаются обнаружению признаков через десятки или сотни скрытых слоев. Каждый слой увеличивает сложность изученных функций.
GIF через GIPHY
CNN
- начинается с входного изображения
- применяет множество различных фильтров для создания карты объектов
- применяет функцию ReLU для увеличения нелинейности
- применяет объединяющий слой к каждой карте объектов
- объединяет объединенные изображения в один длинный вектор.
- вводит вектор в полносвязную искусственную нейронную сеть.
- обрабатывает функции через сеть. Последний полносвязный слой обеспечивает «голосование» классов, которые нам нужны.
- тренируется через прямое и обратное распространение в течение многих, многих эпох. Это повторяется до тех пор, пока у нас не будет четко определенной нейронной сети с обученными весами и детекторами признаков.
Что это значит?
В самом начале этого процесса входное изображение разбивается на пиксели.
GIF через GIPHY
Для черно-белого изображения эти пиксели интерпретируются как двумерный массив (например, 2×2 пикселя). Каждый пиксель имеет значение от 0 до 255. (Ноль — полностью черный, а 255 — полностью белый. Между этими числами существует шкала серого.) На основе этой информации компьютер может начать работу с данными.
Для цветного изображения это трехмерный массив с синим, зеленым и красным слоями. Каждый из этих цветов имеет собственное значение от 0 до 255. Цвет можно найти, объединив значения в каждом из трех слоев.
Свертка
Основной целью этапа свертки является извлечение признаков из входного изображения. Сверточный слой всегда является первым шагом в CNN.
У вас есть входное изображение, детектор объектов и карта объектов. Вы берете фильтр и применяете его блок за блоком пикселей к входному изображению. Вы делаете это путем умножения матриц.
Допустим, у вас есть фонарик и лист пузырчатой пленки. Ваш фонарик освещает область размером 5 х 5 пузырей. Чтобы посмотреть на весь лист, вы водили фонариком по каждому квадрату 5×5, пока не увидели все пузыри.
Фото stux на Pixabay
Свет от фонарика — это ваш фильтр , а область, по которой вы скользите, — это рецептивное поле . Свет, скользящий по рецептивным полям, — это ваш фонарик , свернутый . Ваш фильтр представляет собой массив чисел (также называемых весами или параметрами). Расстояние, на которое свет от вашего фонарика скользит по мере его перемещения (вы перемещаете фильтр по одному ряду пузырьков за раз? По двум?), называется 9. 0040 шаг . Например, шаг, равный единице, означает, что вы перемещаете фильтр по одному пикселю за раз. Конвенция – это шаг в два.
Глубина фильтра должна быть такой же, как и глубина ввода, поэтому, если бы мы смотрели на цветное изображение, глубина была бы равна 3. Это делает размеры этого фильтра 5x5x3. В каждой позиции фильтр умножает значения в фильтре на исходные значения в пикселе. Это поэлементное умножение. Умножения суммируются, образуя единое число. Если вы начали с верхнего левого угла пузырчатой пленки, это число соответствует верхнему левому углу. Теперь вы перемещаете фильтр в следующую позицию и повторяете процесс вокруг пузырчатой пленки. Массив, который вы получите, называется карта функций или карта активации ! Вы можете использовать более одного фильтра, что позволит лучше сохранять пространственные отношения.
GIF через GIPHY
Вы укажете такие параметры, как количество фильтров, размер фильтра, архитектуру сети и так далее. CNN самостоятельно изучает значения фильтров в процессе обучения. У вас есть много вариантов, с которыми вы можете работать, чтобы сделать лучший классификатор изображений для вашей задачи. Вы можете дополнить входную матрицу нулями ( заполнение нулями ), чтобы применить фильтр к граничным элементам матрицы входного изображения. Это также позволяет вам контролировать размер карт объектов. Добавление нулевого заполнения составляет широких сверток . Отсутствие заполнения нулями — это узкая свертка .
Именно так мы обнаруживаем изображения! Мы не смотрим на каждый пиксель изображения. Мы видим такие черты, как шляпа, красное платье, татуировка и так далее. В наши глаза постоянно попадает так много информации, что мы не можем справиться с каждым ее пикселем. Мы позволяем нашей модели делать то же самое.
Результатом этого является свернутая карта признаков . Оно меньше, чем исходное входное изображение. Это облегчает и ускоряет работу с ним. Мы теряем информацию? Некоторые, да. Но в то же время целью детектора признаков является обнаружение признаков, что он и делает.
Мы создаем много карт объектов, чтобы получить наш первый сверточный слой. Это позволяет нам определить множество различных функций, которые программа может использовать для обучения.
Детекторы признаков можно настроить с разными значениями для получения разных результатов. Например, можно применить фильтр, который может повысить резкость и сфокусировать изображение или размыть изображение. Это придало бы равное значение всем ценностям. Вы можете улучшать края, обнаруживать края и многое другое. Вы бы сделали это, применяя разные детекторы объектов для создания разных карт объектов. Компьютер способен определить, какие фильтры наиболее целесообразны, и применить их.
Основная цель здесь — найти функции на вашем изображении, поместить их в карту объектов и при этом сохранить пространственные отношения между пикселями. Это важно, чтобы пиксели не перепутались.
Давайте представим это!
Поздоровайтесь с моим маленьким другом:
Фото Kirgiz03 на Pixabay
Мы собираемся использовать этого парня для входного изображения.
Мы сделаем его черно-белым
import cv2
import matplotlib.pyplot as plt
%matplotlib inlineimg_path = 'data/pixabay_Kirgiz03.jpg'# Загрузить цветное изображение
bgr_img = cv2.imread(img_path)# Преобразовать в оттенки серого [0,1]
gray_img = gray_img.astype("float32")/255# Plot image
plt.imshow(gray_img, cmap='gray')
plt.show()
Давайте определим и визуализируем наши фильтры
импортировать numpy как npfilter_vals = np.array([[-1, -1, 1, 1], [-1, -1, 1, 1], [-1, -1, 1, 1], [-1, -1, 1, 1]])print('Форма фильтра: ', filter_vals.shape)
Форма фильтра: (4, 4)
# Определите четыре разных фильтра, каждый из которых является линейной комбинацией `filter_vals`, определенных вышеfilter_1 = filter_vals
filter_2 = -filter_1
filter_3 = filter_1. T
filter_4 = - filter_3
filter = np.array([filter_1, filter_2, filter_3, filter_4])# Распечатайте значения фильтра 1 в качестве примера
print('Filter 1: \n', filter_1)
и мы увидим:
Фильтр 1:
[[-1 -1 1 1]
[-1 -1 1 1]
[-1 -1 1 1]
[-1 -1 1 1]]
Вот визуализация наших четырех фильтров
Теперь давайте определим сверточный слой (сейчас я люблю PyTorch, так что мы используем здесь.)
import torch
import torch.nn as nn
import torch.nn.functional as F# Нейронная сеть с одним сверточным слоем с четырьмя фильтрами
class Net(nn.Module):def __init__ (self, weight):
super(Net, self).__init__()
# Инициализирует веса сверточного слоя, чтобы они были весами 4 определенных фильтров
k_height, k_width = weight.shape[2:]
# Предполагается, что имеется 4 фильтра оттенков серого weight = torch.nn.Parameter(weight)def forward(self, x):
# Вычисляет выходные данные сверточного слоя до и после активации )# Возвращает оба слоя
return conv_x,activated_x# Создает экземпляр модели и устанавливает веса
weight = torch. from_numpy(filters).unsqueeze(1).type(torch.FloatTensor)
model = Net(weight)# Распечатать слой в сети
print(model)
Посмотрим
Net(
(conv): Conv2d(1, 4, kernel_size=(4, 4), stride=(1, 1),bias=False)
)
Добавьте еще немного кода
def viz_layer(layer , n_filters= 4):
рис = plt.figure(figsize=(20, 20))для i в диапазоне(n_filters):
yticks=[])
# Захват выходных данных слоя
ax.imshow(np.squeeze(layer[0,i].data.numpy()), cmap='gray')
ax.set_title('Output %s' % str(i+1 ))
Затем еще немного
# Построить исходное изображение
plt.imshow(gray_img, cmap='gray')# Визуализировать все фильтры
fig = plt.figure(figsize=(12, 6))
fig.subplots_adjust (слева = 0, справа = 1,5, снизу = 0,8, сверху = 1, hspace = 0,05, wspace = 0,05)
для i в диапазоне (4):
ax = fig.add_subplot (1, 4, i+ 1, xticks=[], yticks=[])
ax.imshow(filters[i], cmap='grey')
ax. set_title('Filter %s' % str(i+1))# Преобразование изображения во входной тензор (до и после активации)
conv_layer,activated_layer = model(gray_img_tensor)# Визуализируйте вывод сверточного слоя
viz_layer(conv_layer)
И мы можем визуализировать вывод сверточного слоя до применения функции активации ReLu!
Теперь давайте создадим собственное ядро, используя оператор Собеля в качестве фильтра обнаружения границ. Фильтр Собеля очень часто используется для обнаружения границ. Он хорошо справляется с поиском закономерностей интенсивности в изображении. Применение фильтра Собеля к изображению — это способ получения аппроксимации производной изображения отдельно в направлении x или y.
Мы преобразуем нашего маленького чувака в оттенки серого для фильтрации
grey = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)plt.imshow(gray, cmap='gray')
Итак, начнем!
# Массив 3x3 для определения границ
sobel_y = np.array([[ -1, -2, -1],
[ 0, 0, 0],
[ 1, 2, 1]]) sobel_x = np. array([[-1, 0, 1],
[0, 0, 0],
[1, 2, 1]])filtered_image = cv2.filter2D(grey, -1, sobel_y)plt.imshow(filtered_image , cmap='grey')
Хотите проверить математику? взгляните на Введение в сверточные нейронные сети от Jianxin Wu
Слой ReLU
Слой ReLU (выпрямленная линейная единица) — это еще один шаг к нашему сверточному слою. Вы применяете функцию активации к своим картам объектов, чтобы увеличить нелинейность в сети. Это потому, что сами изображения очень нелинейны! Он удаляет отрицательные значения из карты активации, устанавливая их равными нулю.
Свертка — это линейная операция с такими вещами, как поэлементное матричное умножение и сложение. Реальные данные, которые мы хотим, чтобы наша CNN изучала, будут нелинейными. Мы можем объяснить это с помощью такой операции, как ReLU. Вы можете использовать другие операции, такие как танх или сигмовидная . ReLU, однако, является популярным выбором, потому что он может обучать сеть быстрее без каких-либо серьезных потерь в точности обобщения.
Выписка C.-C. Джей Куо Понимание сверточных нейронных сетей с помощью математической модели .
Хотите копнуть глубже? Попробуйте Kaiming He, et al. Углубленное изучение выпрямителей: превосходство в производительности на уровне человека по классификации ImageNet .
Если вам нужна дополнительная информация о абсолютных основах функций активации, вы можете найти ее здесь !
Вот как выглядит наш маленький приятель после того, как функция активации ReLU превращает все отрицательные значения пикселей в черный цвет.
viz_layer(activated_layer)
Объединение в пул точный оттенок в точном месте. Это бесполезно для хорошего CNN! Вам нужны изображения, которые перевернуты, повернуты, сжаты и так далее. Вам нужно много изображений одного и того же объекта, чтобы ваша сеть могла распознать объект (скажем, леопарда) на всех изображениях.
Независимо от размера и расположения. Неважно, какое освещение или количество пятен, крепко ли тот леопард спит или давит добычу. Вы хотите пространственная дисперсия ! Вы хотите гибкости. Вот что такое объединение.
Объединение в пул постепенно уменьшает размер входного представления. Это позволяет обнаруживать объекты на изображении независимо от того, где они расположены. Объединение в пул помогает уменьшить количество необходимых параметров и объем требуемых вычислений. Это также помогает контролировать переоснащение .
Переоснащение может быть чем-то вроде того, когда вы запоминаете очень конкретные детали перед тестом, не понимая информацию. Когда вы запоминаете детали, вы можете отлично справляться со своими карточками дома. Однако вы провалите настоящий тест, если вам представят новую информацию.
(Еще один пример: если у всех собак в ваших обучающих данных есть пятна и темные глаза, ваша сеть будет полагать, что для того, чтобы изображение было классифицировано как собака, на нем должны быть пятна и темные глаза. Если вы проверите свои данные с помощью теми же обучающими данными, он проделает потрясающую работу по правильной классификации собак!Но если вашими выходными данными будут только «собака» и «кошка», и вашей сети будут представлены новые изображения, содержащие, скажем, ротвейлера и хаски, она будет вероятно, закончатся классификацией и ротвейлера, и хаски как кошек.Вы можете видеть проблему!)
Фото Hybrid на Unsplash
Без отклонений ваша сеть будет бесполезна с изображениями, которые не совсем соответствуют данным обучения. Всегда, всегда, всегда разделяйте тренировочные и тестовые данные ! Если вы тестируете данные, на которых тренировались, ваша сеть запоминает информацию! Когда он знакомится с любыми новыми данными, он делает ужасную работу.
Переоснащение — это не круто.
Итак, для этого шага вы берете карту объектов , применяете объединяет слой , и результатом является объединенная карта объектов .
Наиболее распространенным примером объединения является max pooling . При максимальном объединении входное изображение разбивается на набор областей, которые не перекрываются. Выходы каждой области являются максимальным значением в каждой области. Это делает меньший размер с меньшим количеством параметров.
Максимальное объединение — это захват максимального значения в каждой точке изображения. Это избавляет от 75% информации, которая не является функцией. Принимая максимальное значение пикселей, вы учитываете искажения. Если объект немного повернется влево или вправо или что-то еще, объединенный объект будет таким же. Вы уменьшаете размер и параметры. Это здорово, потому что это означает, что модель не будет соответствовать этой информации.
Вы можете использовать объединение средних значений или объединение сумм , но это не самый распространенный вариант. На практике максимальный пул работает лучше, чем оба варианта. При максимальном объединении вы берете наибольшее значение пикселя. При объединении средних значений вы берете среднее значение всех значений пикселей в этом месте изображения. (На самом деле сейчас наблюдается тенденция к использованию фильтров меньшего размера или полному отказу от объединяющих слоев. Это связано с агрессивным сокращением размера представления.)
Хотите узнать подробнее, почему вам может понадобиться выбрать максимальное объединение и почему вы можете предпочесть шаг в два пикселя? Проверьте Доминика Шерера и др. al, Оценка операций объединения в сверточных архитектурах для распознавания объектов .
Если вы перейдете сюда, вы сможете увидеть действительно интересную 2D-визуализацию сверточного слоя. Нарисуйте число в поле в левой части экрана, а затем просмотрите вывод. Вы можете видеть свернутые и объединенные слои, а также предположения. Попробуйте навести указатель мыши на один пиксель, чтобы увидеть, где был применен фильтр.
Итак, теперь у нас есть входное изображение, примененный сверточный слой и примененный объединяющий слой.
Давайте визуализируем вывод слоя объединения!
Мы были здесь:
Слой объединения принимает в качестве входных данных карты объектов, изображенные выше, и уменьшает размерность этих карт. Он делает это путем построения нового, меньшего изображения только максимальных (самых ярких) значений в заданной области ядра.
Видите, как изменился размер изображения?
Круто, да?
Сведение
Это довольно простой шаг. Вы объединяете объединенную карту объектов в последовательный столбец чисел (длинный вектор). Это позволяет этой информации стать входным слоем искусственной нейронной сети для дальнейшей обработки.
Полносвязный слой
На этом этапе мы добавляем искусственную нейронную сеть к нашей сверточной нейронной сети. (Не уверен насчет искусственных нейронных сетей? Вы можете узнать о них здесь!)
Основная цель искусственной нейронной сети — объединить наши функции в большее количество атрибутов. Они будут предсказывать классы с большей точностью. Это объединяет функции и атрибуты, которые могут лучше предсказывать классы.
На этом шаге ошибка вычисляется, а затем распространяется обратно. Веса и детекторы признаков настраиваются, чтобы помочь оптимизировать производительность модели. Затем процесс повторяется снова и снова и снова. Вот как наша сеть тренируется на данных!
Как работают выходные нейроны, когда их больше одного?
Во-первых, мы должны понять, какие веса применять к синапсам, которые соединяются с выходом. Мы хотим знать, какие из предыдущих нейронов важны для вывода.
Если, например, у вас есть два выходных класса, один для кошки и один для собаки, нейрон, который считывает «0», абсолютно не уверен, что функция принадлежит кошке. Нейрон, который читает «1», абсолютно уверен, что функция принадлежит кошке. В последнем полносвязном слое нейроны будут считывать значения от 0 до 1. Это означает разные уровни уверенности. Значение 0,9 будет означать уверенность в 90%.
Нейроны кошки, которые уверены, что функция идентифицирована, знают, что это изображение кошки. Они говорят математический эквивалент: «Это мои нейроны! Я должен быть спровоцирован!» Если это происходит много раз, сеть узнает, что при срабатывании определенных функций изображение является кошкой.
Фото Линнеи Сандбакк на Unsplash
После множества итераций нейрон кошки узнает, что когда активируются определенные функции, изображение — это кошка. Нейрон собаки (например) узнает, что когда активизируются некоторые другие функции, изображение является собакой. Нейрон собаки узнает, что, например, нейрон «большого мокрого носа» и нейрон «висящего уха» с большой долей уверенности вносят вклад в нейрон собаки. Это придает больший вес нейрону «большого мокрого носа» и нейрону «висящего уха». Нейрон собаки учится более или менее игнорировать нейрон «усов» и нейрон «радужной оболочки кошки». Нейрон кошки учится придавать больший вес таким нейронам, как «усы» и «кошачья радужка».
(Хорошо, на самом деле нейронов с «большим мокрым носом» или «бакенбардами» не существует. Но обнаруженные признаки действительно имеют отличительные черты определенного класса.)
Фото Ноэми Макавей-Катоц на Unsplash обученный, вы можете передать изображение, и нейронная сеть сможет определить вероятность класса изображения для этого изображения с большой уверенностью.
Полностью подключенный слой представляет собой традиционный многослойный персептрон. Он использует классификатор в выходном слое. Классификатор обычно представляет собой функцию активации softmax. Полная связь означает, что каждый нейрон в предыдущем слое соединяется с каждым нейроном в следующем слое. Какова цель этого слоя? Чтобы использовать функции из выходных данных предыдущего слоя для классификации входного изображения на основе обучающих данных.
После того, как ваша сеть запущена и работает, вы можете увидеть, например, что у вас есть вероятность 95%, что ваше изображение является собакой, и вероятностью 5%, что ваше изображение является кошкой.
Фото Alexas_Fotos на Pixabay
Почему сумма этих чисел равна 1,0? (0,95 + 0,05)
Ничто не говорит о том, что эти два выхода связаны друг с другом. Что заставляет их относиться друг к другу? По сути, они не будут, но они будут, когда мы введем функцию softmax 9.0041 . Это приводит значения от 0 до 1 и делает их в сумме равными 1 (100%). (Вы можете прочитать все об этом в Википедии.) Функция softmax берет вектор оценок и сжимает его в вектор значений от 0 до 1, которые в сумме дают 1.
После применения функции softmax вы можете применить функция потерь. Перекрестная энтропия часто идет рука об руку с softmax. Мы хотим минимизировать функцию потерь, чтобы максимизировать производительность нашей сети.
В начале обратного распространения ваши выходные значения будут крошечными. Вот почему вы можете выбрать перекрестную потерю энтропии. Градиент был бы очень низким, и нейронной сети было бы трудно начать подстраиваться в правильном направлении. Использование кросс-энтропии помогает сети оценить даже малейшую ошибку и быстрее перейти в оптимальное состояние.
Хотите больше? Проверьте
- Это видео от Джеффри Хинтона Функция Softmax
- Среднее введение в потерю поперечной энтропии By Rob Dipietro
Как реализовать A -Azzzer Nezzeze 04
Что теперь?
На данный момент все обучается через прямое и обратное распространение через много-много эпох. Мы получаем очень хорошо определенную нейронную сеть, в которой обучены все веса и признаки. Теперь у нас есть то, что может распознавать и классифицировать изображения! (Не уверены в прямом и обратном распространении? Ознакомьтесь с абсолютными основами здесь!)
Так что же только что произошло?
Мы начали с входного изображения и применили несколько различных функций для создания карты функций. Мы применили ReLU для увеличения нелинейности и применили объединяющий слой к каждой карте объектов. (Мы сделали это, чтобы убедиться, что у нас есть пространственная дисперсия в наших изображениях, чтобы уменьшить размер изображений и избежать чрезмерной подгонки модели к данным, сохраняя при этом функции, которые нам нужны.) Мы сгладили все объединенные изображения. в один длинный вектор. Мы вводим вектор в нашу полностью связанную искусственную нейронную сеть. Здесь все функции обрабатывались через сеть. Это дало нам последний полностью подключенный слой, который обеспечил «голосование» классов, которые нам нужны. Все это было обучено с помощью прямого и обратного распространения, пока мы не получили четко определенную нейронную сеть, в которой обучались весовые коэффициенты и детекторы признаков.
Теперь мы можем распознавать и классифицировать изображения!
Photo by Lucas Sankey on Unsplash
Вы уже на пути к тому, чтобы сделать это:
(Вы хотите это сделать? Вот четкий и полный план создания невероятно точного классификатора изображений с помощью PyTorch! Вы можете создать классификатор изображений, который может сказать вам с огромной степенью уверенности, какой вид цветка вы смотрите!)
Хотите узнать больше? Оформить заказ
- Introduction to Convolutional Neural Networks Jianxin Wu
- Оригинальная статья Yann LeCun, Gradient-Based Learning Applied to Document Recognition
- The Nine Deep Learning Papers You Need to Know About (Understanding CNNs part 3) 1 9 Adit Deshpande
Спасибо, что заглянули в третью часть серии «Глубокое обучение для новичков, новичков и неофитов »!
Вы можете найти первую часть здесь: Введение в глубокое обучение