Содержание
Нейросеть рисует: 5 способов сгенерировать картины онлайн
Сервисы для генерации картинок с помощью искусственного интеллекта набирают популярность: многие видят в них новый источник креатива для дизайна и рекламы. Некоторые приложения бесплатны и доступны всем желающим
Возможности искусственного интеллекта используют не только в серьезных, но и в развлекательных целях. Существует целый ряд сервисов, которые способны сгенерировать картинки по текстовому описанию. РБК Тренды подготовили подборку таких сервисов и протестировали их, попросив нарисовать одно и то же. Запрос выглядел так: «space dolphin earth pink blue metaverse music» («космос дельфин Земля розовый синий метавселенная музыка»).
Содержание:
- DALL-E Mini
- ruDALL-E Kandinsky
- Midjourney
- Starryai
- Dream by WOMBO
DALL-E Mini
Как попробовать:
- зайти на официальный сайт Dall-E Mini через ресурс Hugging Face;
- найти раздел dall-e;
- ввести текстовое описание на английском языке, разделяя слова пробелами;
- нажать Run;
- когда изображение будет сгенерировано, понадобится сделать снимок экрана, чтобы сохранить всю подборку, или сохранить каждую картинку по отдельности.
Нейросеть в начале 2021 года представила компания Илона Маска OpenAI. Разработчики обучили ее создавать изображения из коротких текстовых подписей. Приложение работает на основе другой модели генерации текста от OpenAI — GPT-3. Она обучена на 12 млн параметров и способна создавать антропоморфные версии животных и объектов, объединять в картинке несвязанные концепции, подбирать текст для существующих изображений. Название программы отсылает к художнику-сюрреалисту Сальвадору Дали и персонажу Wall-E из одноименного мультфильма. В 2022 году команда выпустила версию DALL-E 2, которая генерирует реалистичные изображения, но пока она недоступна широкому кругу пользователей и компаний.
ruDALL-E Kandinsky
Как попробовать ruDALL-E Kandinsky:
- зайти на официальный сайт нейросети;
- выбрать «Попробовать»;
- ввести текстовое описание в окне через пробелы на русском языке;
- ввести код подтверждения;
- скачать готовую картинку или поделиться ею в соцсетях через специальную кнопку.
Также можно посмотреть варианты сгенерированных для других пользователей картинок по похожим запросам (по нашему таких не нашлось).
Картинка по описанию ruDALL-E Kandinsky
Нейросеть в 2021 году разработало подразделение SberAI совместно со SberDevices, Самарским университетом, AIRI и SberCloud. Оно работает на базе программного обеспечения DALL-E, но генерирует картинки по описанию на русском языке. В открытом доступе уже есть модели генератора — ruDALL-E Malevich (XL), которая генерирует картинки в стиле Малевича; Sber VQ-GAN, которая генерирует изображения в хорошем разрешении; ruCLIP Small для ранжирования изображений и подписей, а также Super Resolution (Real ESRGAN) для генерации в супервысоком разрешении.
В 2022 году SberAI выпустила большую модель ruDALL-E Kandinsky, обученную на 12 млрд параметров. Она доступна в приложении «Салют» от SberDevices и в боте Discord. По словам разработчиков, генерация изображений учитывает точное описание желаемого и создает уникальные изображения, которые раньше не существовали. Их можно использовать для иллюстраций статей, а также в копирайтинге и рекламе.
Midjourney
Как попробовать:
- зарегистрироваться на платформе для геймеров Discord;
- зайти на официальный сайт Midjourney и авторизоваться через Discord;
- перейти в один из ботов newbie и ввести в поле для отправки сообщения команду /imagine;
- ввести описание на английском языке в плашке Prompt;
- кликнуть «Отправить»;
- появятся четыре картинки, после этого можно воспользоваться кнопкой U, чтобы улучшить разрешение одной из них, или кнопкой V, чтобы создать еще четыре вариации выбранной картинки;
- нажать на понравившуюся картинку и выбрать «Открыть оригинал», а затем сохранить ее, также можно сохранить весь коллаж.
Эту нейросеть разработала одноименная американская компания, которую основал ученый и бывший сотрудник Института Макса Планка Дэвид Хольц. В середине июля 2022-го Midjourney вышла в фазу бета-тестирования и стала доступной для пользователей по всему миру. В бесплатной версии можно сгенерировать 25 сетов в низком разрешении или меньше, так как попытки улучшить изображения засчитываются как новая попытка генерации. По сравнению с конкурентами Midjourney обеспечивает более высокое разрешение итоговых картинок и большую детализацию в соответствии с текстовым запросом.
Starryai
Как попробовать:
- перейти на сайт Starryai, кликнуть «Start Creating»;
- пройти верификацию через Google или Apple;
- выбрать опцию Altair или Orion;
- в окне Prompt ввести текстовое описание на английском языке;
- в окне появится картинка, которая будет преобразовываться прямо на глазах;
- кликнуть на готовое изображение и выбрать Download, также можно поделиться картинкой в соцсетях или даже создать из нее анимацию.
Нейросеть создает картинки на основе текстового описания, но с дополнениями. В режиме Altair можно создать сказочное изображение, которое будет представлять собой более абстрактные художественные рендеры ИИ. В режиме Orion можно создавать более сложные и кинематографичные изображения, смешивая до трех стилей. Для генерации используется система кредитов, которые можно не только купить за деньги, но и заработать — посмотреть рекламу или поделиться работой в соцсетях. Для уже готового изображения доступна опция увеличения разрешения за дополнительные кредиты.
Dream by WOMBO
Как попробовать:
- зайти на сайт Dream;
- в окне Prompt вбить текстовое описание на английском языке;
- выбрать стиль картинки и кликнуть Create;
- нажать Save, также можно повторить попытку генерации, нажав Generate Again.
Сервис от канадского стартапа WOMBO позволяет создавать вертикальные обложки. При этом можно выбрать режим («Мистический», «Барокко», «Фэнтези» и так далее) и прикрепить картинку-референс, а также собственный NFT (невзаимозаменяемый токен). Нейросеть выдает абстрактные результаты. Генерация картинки происходит в режиме реального времени. Веб-версия сервиса бесплатна.
В мае 2022 года Google также показала свою нейросеть Imagen, которая генерирует изображения на основе текста методом диффузии: начинает со схематичного изображения и улучшает его. Сначала Imagen создает изображение 64×64 пикселя, но потом доводит его до 1024×1024 пикселя. В итоге картинка получает настолько высокую детализацию, что ее можно принять за фотоснимок.
Картинка, сгенерированная Imagen / Google AI
Сначала Google открыла свой сервис для ограниченного бета-тестирования, но теперь оно, похоже, закрыто. Видимо, в ближайшем будущем Imagen станет общедоступным.
Midjourney — нейросеть генерирующая картинки по текстовому описанию / Хабр
В наше время нейросетью уже мало кого удивишь, эти штуки умеют обрабатывать видео, вести диалог с человеком, выполнять поиск материалов в интернете, писать музыку, распознавать объекты на фото, помогают обрабатывать фото и многое другое. Сегодня я хочу рассказать о сетке рисующей картинки — Midjourney.
Команда Midjourney позиционирует себя как независимую исследовательскую лабораторию, занимающуюся расширением творческих способностей человечества.
Проект был запущен в феврале 2022 ученым и предпринимателем Дэвидом Хольцом.
Давид Хольц — выпускник факультета прикладной математики Университета Северной Каролины в Чапел-Хилл. В студенчестве работал в Институте Макса Планка, где изучал алгоритмы нейровизуализации, также работал в исследовательском центре NASA и принимал участие в разработке технологии LiDAR (обнаружение и определение дальности с помощью света, технология используется, в том числе, в камерах iPhone).
Подробнее о личности основателя можно прочесть вот в этой заметке.
Midjourney является независимым самофинансируемым проектом над которым трудится команда из 11 штатных сотрудников, а также большое количество внешних консультантов. Перечень всех участников проекта доступен на официальном сайте проекта.
Работу Midjourney обеспечивают алгоритмы распознавания речи и алгоритмы создающие образы. Проще говоря, Миджорни умеет распознавать печатный текст и преобразовывать его в картинки. Для этого необходимо на английском языке описать сюжет, направить его на обработку сетке и дождаться результата. После полученный результат можно немного модернизировать, увеличить его качество и скачать.
Получаются вот такие картинки.
Сетка представлена в формате Дискорд-бота. Придуманный сюжет нужно направить боту в чат, а в ответ он пришлёт сгенерированную картинку.
Наличие такого инструмента в будущем очень сильно упростит работу дизайнера, решив проблему отсутствия контента на стоках, длительный поиск необходимых материалов.
Для быстрого создания контента понадобится воображение, умение структурировать информацию и интерпретировать ее в понятные словосочетания. Ну, круто же!
Я уверен, что никакие нейросети и Скайнеты не заменят дизайнера, но очень сильно упростят его работу.
Теперь о том, как протестировать это чудо техники. 😊
Сейчас сетка находится на этапе открытого бета-тестирования, доступ может получить каждый. Для этого необходимо:
1. Перейти на сайт Миджорни — midjourney.com и нажать кнопку «join the beta».
2. Сайт перенаправит вас в Discord. Там необходимо авторизоваться или создать аккаунт. Авторизация через Дис обязательна — нейросеть работает в формате Дискорд-бота.
3. Далее нужно дать сетке необходимые разрешения.
4. После чего система вас может направить в личный кабинет Миджорни. Выглядит он как на скрине. Чтобы из кабинета попасть в Дискорд-бот нужно нажать на ваш аватар в нижней части экрана и выбрать пункт «Go to Discord». Может сразу направить в бот, бывает по-разному. 😊
5. Открывшийся канал нейросети, будет выглядеть так.
6. Можно ознакомиться со справочной инфой в разделе «welcome», там кратко описано что к чему.
7. После чего нужно перейти в любой канал название которого начинается как newbies: «newbies-102», «newbies-132» и т. д.
8. Находясь в канале необходимо в текстовую строку ввести команду «/imagine promt» и текст сюжета, должно получиться как на скрине.
9. После того как будет вставлен текст нужно нажать энтер и можно наблюдать в реальном времени процесс генерации картинок. Это займет около минуты.
10. Можно не ждать — когда картинка будет готова нейросеть пришлет уведомление. Перейти к записи в канале можно через центр уведомлений Дискорда.
11. Ознакомившись с результатом, можно попросить сетку проработать варианты одного из сюжетов нажав одну из кнопок V1, V2, V3 или V4. Кнопки соответствуют одному из четырёх предложенных вариантов.
12. Кнопки типа U1 и т.д. необходимы для инициации процесса улучшения качества картинки — «upscale».
13. После того как картинка будет доработана ее можно скачать или ещё немного доработать, увеличить размер до максимума, а также оценить.
На GitHub существует более обширный гайд по работе с сетью. В нём доступны различные дополнительные команды и настройки.
Ссылка на гайд тут.
Стоит ещё добавить, что большинство продуктов делаются людьми для зарабатывания денег и Миджорни не исключение. Для тестирования работы сетки разработчиками бесплатно предоставляются «25 действий»: можно сгенерировать 25 сетов по 4 картинки в низком качестве или меньшее количество сетов и за оставшиеся баллы (действия) проработать варианты или увеличить качество изображений.
Когда лимит будет исчерпан бот пришлет вам вот такое уведомление.
Для увеличения лимитов можно перейти в админку сети и приобрести один из предложенных пакетов.
На этом у меня всё. Очень рекомендую протестировать сетку и очень жду, когда нейросети станут одним из инструментов дизайна, таким же привычным как Фигма или Фотошоп. 😊
Использование сверточной нейронной сети для классификации изображений | Автор: Никлас Ланг. Его встроенный сверточный слой уменьшает большую размерность изображений без потери информации. Вот почему CNN особенно подходят для этого варианта использования.
Если мы хотим использовать полносвязную нейронную сеть для обработки изображений, мы быстро обнаружим, что она не очень хорошо масштабируется.
Интуитивное руководство по искусственным нейронным сетям
Искусственные нейронные сети (ИНС) — наиболее часто используемое модное слово в контексте искусственного интеллекта и…
medium.com
Для компьютера изображение в формате RGB сводка трех разных матриц. Для каждого пикселя изображения он описывает, какой цвет отображает этот пиксель. Мы делаем это, определяя красный компонент в первой матрице, зеленый компонент во второй, а затем синий компонент в последней. Итак, для изображения размером 3 на 3 пикселя мы получаем три разные матрицы 3×3.
Изображение 3x3x3 RGB | Фото: Автор
Для обработки изображения мы вводим каждый пиксель как вход в сеть. Таким образом, для изображения размером 200x200x3 (т. е. 200 пикселей на 200 пикселей с 3 цветовыми каналами, например, красным, зеленым и синим) мы должны предоставить 200 * 200 * 3 = 120 000 входных нейронов. Тогда каждая матрица имеет размер 200 на 200 пикселей, всего 200 * 200 записей. Затем эта матрица, наконец, существует три раза, каждый для красного, синего и зеленого. Затем проблема возникает в первом скрытом слое, потому что каждый из нейронов там будет иметь 120 000 весов из входного слоя. Это означает, что количество параметров будет увеличиваться очень быстро по мере увеличения количества нейронов в скрытом слое.
Эта проблема усугубляется, когда мы хотим обрабатывать большие изображения с большим количеством пикселей и цветовых каналов. Такая сеть с огромным количеством параметров, скорее всего, столкнется с переоснащением. Это означает, что модель будет давать хорошие прогнозы для обучающей выборки, но не будет хорошо обобщаться на новые случаи, о которых она еще не знает. Кроме того, из-за большого количества параметров сеть, скорее всего, перестанет обращать внимание на отдельные детали изображения, поскольку они будут потеряны в массе. Однако, если мы хотим классифицировать изображение, например. независимо от того, есть в нем собака или нет, эти детали, такие как нос или уши, могут стать решающим фактором для правильного результата.
По этим причинам сверточная нейронная сеть использует другой подход, имитируя то, как мы воспринимаем окружающую среду нашими глазами. Когда мы видим изображение, мы автоматически делим его на множество маленьких частей и анализируем их одно за другим. Собирая эти подобразы, мы обрабатываем и интерпретируем изображение. Как этот принцип можно реализовать в сверточной нейронной сети?
Работа происходит в так называемом сверточном слое . Для этого мы определяем фильтр, который определяет, насколько большими должны быть частичные изображения, на которые мы смотрим, и длину шага, которая определяет, сколько пикселей мы продолжаем между вычислениями, то есть насколько близки частичные изображения друг к другу. Сделав этот шаг, мы сильно уменьшили размерность изображения.
Следующим шагом является уровень объединения . С чисто вычислительной точки зрения здесь происходит то же самое, что и в слое свертки, с той разницей, что мы берем из результата либо среднее, либо максимальное значение, в зависимости от приложения. Это позволяет сохранить мелкие детали в нескольких пикселях, которые имеют решающее значение для решения задачи.
Наконец, есть полносвязный слой , как мы его уже знаем из обычных нейронных сетей. Теперь, когда мы значительно уменьшили размеры изображения, мы можем использовать слои с плотной сеткой. Здесь отдельные части изображения снова связываются, чтобы распознать связи и выполнить классификацию.
Теперь, когда у нас есть общее представление о том, что примерно делают отдельные слои, мы можем подробно рассмотреть, как изображение становится классификацией. Для этого пытаемся по изображению 4х4х3 узнать, есть ли на нем собака.
На первом этапе мы хотим уменьшить размеры изображения 4x4x3. Для этого мы определяем фильтр размером 2×2 для каждого цвета. Кроме того, мы хотим, чтобы длина шага равнялась 1, т.е. после каждого шага расчета фильтр должен двигаться вперед ровно на один пиксель. Это не уменьшит размер настолько сильно, но детали изображения будут сохранены. Если мы перенесем матрицу 4×4 на матрицу 2×2 и продвинем один столбец или одну строку на каждом шаге, наш сверточный слой будет иметь на выходе матрицу 3×3. Отдельные значения матрицы рассчитываются путем скалярного произведения матриц 2×2, как показано на рисунке.
Сверточный слой | Фото: Author
Слой (Max) Pooling Layer принимает в качестве входных данных матрицу 3×3 слоя свертки и пытается еще больше уменьшить размерность и дополнительно взять важные функции изображения. Мы хотим сгенерировать матрицу 2×2 в качестве выходных данных этого слоя, поэтому мы делим входные данные на все возможные частичные матрицы 2×2 и ищем наибольшее значение в этих полях. Это будет значение в поле выходной матрицы. Если бы мы использовали слой среднего пула вместо слоя максимального пула, вместо этого мы вычислили бы среднее значение четырех полей.
Слой объединения | Фото: Автор
Слой пула также отфильтровывает шумы изображения, т.е. элементы изображения, не влияющие на классификацию. Например, стоит ли собака перед домом или перед лесом, поначалу не важно.
Полносвязный слой теперь делает именно то, что мы намеревались сделать со всем изображением в начале. Мы создаем нейрон для каждой записи в меньшей матрице 2×2 и соединяем их со всеми нейронами следующего слоя. Это дает нам значительно меньше измерений и требует меньше ресурсов для обучения.
Затем этот слой, наконец, узнает, какие части изображения необходимы для классификации собаки или не собаки. Если у нас есть изображения, которые намного больше, чем наш пример 5x5x3, конечно, также можно установить слой свертки и слой пула несколько раз подряд, прежде чем перейти к полносвязному слою. Таким образом, вы можете уменьшить размерность настолько, чтобы уменьшить усилия по обучению.
Tensorflow имеет широкий спектр наборов данных, которые мы можем загрузить и использовать, написав всего несколько строк кода. Это особенно полезно, когда вы хотите протестировать новые модели и их реализацию и поэтому не хотите долго искать подходящие данные. Кроме того, Google также предлагает поиск набора данных, с помощью которого можно найти подходящий набор данных за несколько кликов.
Введение в TensorFlow
Знакомство с платформой машинного обучения, ее архитектурой и сравнением с PyTorch . Набор данных содержит в общей сложности 60 000 цветных изображений, разделенных на десять различных классов изображений, например. лошадь, утка или грузовик. Отметим, что это идеальный набор данных для обучения, поскольку каждый класс содержит ровно 6000 изображений. В моделях классификации мы всегда должны следить за тем, чтобы каждый класс включался в набор данных одинаковое количество раз, если это возможно. Для набора тестовых данных мы берем в общей сложности 10 000 изображений и, следовательно, 50 000 изображений для набора обучающих данных.
Каждое из этих изображений имеет размер 32×32 пикселя. Пиксели, в свою очередь, имеют значение от 0 до 255, где каждое число представляет код цвета. Поэтому мы делим значение каждого пикселя на 255, чтобы нормализовать значения пикселей в диапазоне от 0 до 1.
Чтобы убедиться, что все изображения отображаются правильно, мы печатаем первые десять изображений, включая класс, к которому они принадлежат. Поскольку это только изображения размером 32×32, они относительно размыты, но вы все равно можете сказать, к какому классу они относятся.
Теперь в Tensorflow мы можем построить свёрточную нейронную сеть, определив последовательность каждого слоя. Поскольку мы имеем дело с относительно небольшими изображениями, мы будем использовать стек Convolutional Layer и Max Pooling Layer дважды. Изображения имеют, как мы уже знаем, 32 размера по высоте, 32 размера по ширине и 3 цветовых канала (красный, зеленый, синий).
Сверточный слой использует сначала 32, а затем 64 фильтра с ядром 3×3 в качестве фильтра, а слой максимального объединения ищет максимальное значение в матрице 2×2.
После этих двух стеков мы уже значительно уменьшили размеры изображений, до 6 пикселей по высоте, 6 пикселей по ширине и всего до 64 фильтров. С третьим и последним сверточным слоем мы уменьшаем эти размеры до 4x4x64. Прежде чем мы построим из этого полносвязную сеть, мы заменим матрицу 3 × 3 для каждого изображения вектором из 1024 элементов (4 * 4 * 64) без потери информации.
Теперь мы достаточно уменьшили размеры изображений и можем добавить еще один скрытый слой с 64 нейронами, прежде чем модель завершится выходным слоем с десятью нейронами для десяти разных классов.
Модель со 122 570 параметрами теперь готова к построению и обучению.
Прежде чем мы сможем начать обучение сверточной нейронной сети, мы должны скомпилировать модель. В нем мы определяем, по какой функции потерь следует обучать модель, оптимизатору, т.е. по какому алгоритму меняются параметры, и какую метрику мы хотим показывать, чтобы иметь возможность контролировать процесс обучения.
После обучения сверточной нейронной сети в общей сложности в течение 10 эпох мы можем посмотреть на рост точности модели, чтобы определить, удовлетворены ли мы обучением.
Наше предсказание класса изображения верно примерно в 80% случаев. Это не плохое значение, но и не особенно хорошее. Если мы хотим увеличить это еще больше, мы могли бы обучить сверточную нейронную сеть для большего количества эпох или, возможно, настроить плотные слои даже по-другому.
- Сверточные нейронные сети используются для обработки изображений и речи и основаны на структуре зрительной коры человека.
- Они состоят из слоя свертки, слоя объединения и полностью связанного слоя.
- Сверточные нейронные сети делят изображение на более мелкие области, чтобы в первый раз просмотреть их отдельно.
- Сверточные нейронные сети можно запрограммировать всего за несколько шагов с помощью Tensorflow.
- Важно настроить расположение слоев свертки и максимального объединения для каждого отдельного варианта использования.
Если вам нравится моя работа, подпишитесь здесь или посетите мой сайт Data Basecamp ! Кроме того, Medium позволяет читать 3 статьи в месяц бесплатно. Если вы хотите иметь неограниченный доступ к моим статьям и тысячам замечательных статей, не стесняйтесь получить членство за $ 5 в месяц, нажав на мою реферальную ссылку: https: //medium.com/@niklas_lang/membership
Зачем вам знать Большие данные
Определение больших данных и связанных с ними потенциальных угроз
medium.com
Понимание MapReduce с помощью Гарри Поттера
MapReduce — это алгоритм, который позволяет обрабатывать большие наборы данных параллельно, т. е. на нескольких компьютерах… 13 бесплатных сайтов, которые помогут вам начать
После того, как вы решили, что хотите изучать кодирование, вы будете избалованы выбором многочисленных онлайн-инструментов, предназначенных для помощи…
в направлении datascience. com
- https://www.tensorflow.org/tutorials/images/cnn
Как разработать нейронную сеть для распознавания изображений с помощью PyTorch | by Harsh R
В этом посте я покажу вам, как создать нейронную сеть с нуля и использовать ее для распознавания дорожных знаков. Этот проект выполнен с использованием PyTorch, поэтому вы можете проверить мой предыдущий пост:
Руководство для начинающих по тензорным операциям в PyTorch
Это первый пост в серии руководств на тему «Глубокое обучение с PyTorch: от нуля до GAN», мысль команды на…
medium.com
Логистическая регрессия в Fashion-MNIST
Добро пожаловать в мой второй пост из серии «Глубокое обучение с PyTorch: от нуля до GAN», созданный командой jovian.ml …
medium.com
Распознавание/классификация изображений — это метод компьютерного зрения, который используется для идентификации объектов, людей, надписей и, в нашем случае, знаков на изображении. Это процесс распознавания образов на изображении и отнесения их к определенному классу.
Этот процесс включает две части ввода и вывода, где:
Ввод: изображение или набор изображений
Вывод : класс или метка, к которой принадлежит изображение
3, in В этом проекте мы собираемся создать модель нейронной сети, которая будет предсказывать метку/класс изображения.
Теперь, когда понятно, над чем мы работаем, давайте поговорим о данных!
Немецкий набор данных о дорожном движении содержит три файла pickle: train, test и validation. В обучающем и тестовом наборах содержится 12 630 изображений, а в проверочном наборе — 4 410 изображений. Изображения представляют собой цветные изображения размером 32×32 пикселя. Класс каждого изображения кодируется как целое число в диапазоне от 0 до 42.
Немецкие дорожные знаки
Для начала нам нужно импортировать пакеты.
Наши данные находятся в файлах pickle, поэтому для их загрузки нам нужно импортировать пакет pickle.
Теперь, когда мы загрузили данные, давайте изучим набор данных с помощью pandas и NumPy.
Поскольку мы используем PyTorch, нам нужно сделать наши данные совместимыми с тензорами torch. Для этого нам нужно нормализовать данные. Мы делаем это, копируя данные в массив NumPy с целочисленным типом данных, а затем используем метод Normalize для приведения массива к типу с плавающей запятой.
После предварительной обработки данных мы создаем тензорный набор данных, который позже будет использоваться для создания загрузчиков данных для обучения, проверки и тестирования.
Теперь мы подошли к основной части.
Но сначала давайте разберемся что такое нейронная сеть прямого распространения?
Нейронная сеть с прямой связью представляет собой набор нейронов, организованных слоями. Каждый узел входного слоя соединен со всеми узлами скрытых слоев, а некоторые или все узлы скрытого слоя соединены со всеми узлами выходного слоя. Количество узлов во входном слое часто равно количеству объектов в наборе данных, поэтому каждый узел представляет один объект. Аналогично, количество узлов в выходном слое равно количеству классов в данных, поэтому, когда представлена входная выборка класса c, c-й узел в выходном слое активен, а все остальные молчат.
Нейронная сеть может быть представлена одним скрытым слоем и достаточным количеством элементов, также возможно наличие нескольких скрытых слоев.
Вот как выглядит модель:
В определении класса вы можете увидеть наследование базового класса ImageClassificationBase. В базовом классе есть несколько важных шагов для расчета прогнозов, потерь и точности для этапов обучения и проверки.
Для реализации нейронной сети нам нужно следовать официальному стилю PyTorch. Нам предоставлены два метода или функции, которые __init__() и forward() .
- __init__()
В __init__() мы просто определяем слои нейронной сети. Как показано, мы создаем простую полностью связанную нейронную сеть из 6 слоев, чтобы классифицировать и распознавать, к какому классу принадлежит дорожный знак. Входной слой принимает данные изображений размером 32×32 пикселя. Затем входные данные далее передаются на 4 слоя с 1324, 500, 256, 128, 64 с выходным слоем размером 43, потому что существует 43 различных класса.
- forward()
Обратите внимание, что некоторые функции используются в прямом методе, а не в методе __init__. Это связано с тем, что метод __init__ не имеет возможности обучения.
В прямом методе первое, что мы делаем, это сглаживаем изображение в одномерный вектор. Мы делаем это, чтобы преобразовать многомерное изображение в одномерное. Позже мы используем функцию F.relu, которая является функцией активации ReLU для узлов.
Пока все хорошо? Мы успешно определили полностью подключенную нейронную сеть с прямой связью!
Рекомендую попробовать обучить модель на разном количестве эпох, разной скорости обучения, выбрать правильную функцию активации.
Одним из многих преимуществ использования PyTorch является то, что он дает нам возможность использовать графический процессор, который обеспечивает более быстрые вычисления. Итак, мы перемещаем модель и веса на устройство cuda с помощью метода to_device.
После переноса данных на устройство cuda начинаем процесс обучения методом подгонки. На первом этапе обучения я пробовал 100 эпох со скоростью обучения 0,01. Это привело к потере проверки 2.2009и точность проверки 0,4561 .
Во второй попытке я обучил модель на 50 эпох со скоростью обучения 0,03. В результате мы получили потери при проверке 3,5628 и точность проверки 0,5873.
Теперь для последней попытки я использовал ту же скорость обучения и уменьшил количество эпох до 10. Мы видим очень небольшое увеличение потерь при проверке до 3,6163, а точность проверки составляет 0,6362. Неплохо!
Эта часть содержит визуализацию того, как обученная модель будет работать на тестовом наборе.
Мы можем попробовать разные скорости обучения и эпохи, но полученная точность не будет сильно отличаться. Это потому, что это простая искусственная нейронная сеть.