Skip to content
Меню
ЗВЁЗДНЫЕ ВОЙНЫ ЭНЦИКЛОПЕДИЯ РОЛЕВОЙ ИГРЫ
  • Рисование
  • Советы начинающим
  • Как рисовать
  • Карандашом
  • Поэтапно
  • Уроки
ЗВЁЗДНЫЕ ВОЙНЫ
Главная » Разное » Картинки пушинов: Картинки Пушина для срисовки (40 картинок) ✏

Картинки пушинов: Картинки Пушина для срисовки (40 картинок) ✏

Posted on 01.04.202312.02.2023

Содержание

  • Создание Пушина с помощью ИИ | Зак Надо
  • Пушин | Знай свой мем
        • Часть серии о Кошки. [Просмотреть связанные записи]
    • О
    • История
    • Приемная
        • Сделка с книгой
        • Известные изображения
    • Поисковый интерес
    • Внешние ссылки

Создание Пушина с помощью ИИ | Зак Надо

27 апреля 2018 г.

Не-ЭкспертЭксперт

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

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


Я сделал программу машинного обучения, которая генерирует новые (иногда новые!) картинки Пушин!

(Я не претендую на право собственности на Pusheen или что-либо связанное с Pusheen, зарегистрированное под торговой маркой Pusheen Corp.) Не секрет, что мы с моей девушкой являемся большими поклонниками кота Пушина, которого многие знают по симпатичной наклейке на Facebook. наборы. Итак, на ее день рождения я решил попытаться создать программу машинного обучения, чтобы создавать фотографии кошек, чтобы она могла наслаждаться! Чтобы задать некоторые ожидания для этого поста, я сделал это только для забавного проекта и на самом деле не знал, что я ожидал получить от этого, учитывая, что во всех доступных данных на самом деле есть только несколько уникальных поз и сцен.

Кроме того, вам действительно нужно только серое пятно примерно овальной формы с глазами, чтобы выглядеть как Пушин, поэтому планка была не такой высокой. При этом я доволен результатом и думаю, что он дает интересные и (обычно) реалистичные позы и позы.

Тип программы, которую я создал, называется «Генеративно-состязательная сеть» или сокращенно GAN. Термин «Генеративный» происходит от того факта, что это тип программы машинного обучения, которая может генерировать новые изображения, похожие на те, которые вы в нее вводите. Этот тип программы также называют «Противоборческой» , потому что на самом деле это две разные внутренние программы, которые борются друг с другом (подробнее об этом позже).

«Сеть» в названии происходит от типа внутренних программ, которые борются друг с другом, которые называются «нейронные сети» и сейчас являются очень популярным типом программы машинного обучения; для случайного обзора нейронных сетей есть бесчисленное множество видео и других руководств в Интернете.

Для того, чтобы наша пара программ имела представление о том, что мы хотим, мы должны дать им много изображений, похожих на те, которые мы хотим, чтобы они генерировали (чем больше, тем лучше). В частности, это была небольшая проблема с Pusheen, поскольку уникальных изображений Pusheen не так много (особенно по сравнению со стандартными наборами данных машинного обучения, которые содержат 50 000–1 200 000 изображений). Из-за относительной нехватки контента я использовал некоторые приемы, чтобы сделать новые изображения из оригиналов; одно изображение можно отражать, вращать и масштабировать, чтобы сделать много новых изображений из исходного. Теперь о тех двух ранее упомянутых программах, которые борются друг с другом, «генераторе» и «дискриминаторе».

Задача «генератора» состоит в том, чтобы взять на вход список чисел и преобразовать их в новое изображение. Эти случайные числа можно рассматривать как отправную точку для изображения, которое программа «генератор» собирается создать, подобно художнику, у которого есть очень простое, пушистое представление о том, что он собирается нарисовать, но ему нужно на самом деле заполнить его. формы и цвета. Некоторые исследователи машинного обучения называют эти списки случайных чисел «воображением» или «мыслями» программы, потому что программа учится интерпретировать их, чтобы составить собственное внутреннее представление о мире. Другой способ представить это так: когда мы подаем эти числа в генератор, два списка чисел с одинаковыми значениями будут создавать похожие изображения кошек, тогда как два списка чисел с очень разными значениями будут создавать очень разные изображения; программа узнает, что определенные значения этих списков соответствуют определенным вещам в изображениях Пушина, поэтому значения, которые находятся близко друг к другу, сделают изображения похожими.

Другая программа в борьбе называется «дискриминатор» . Его работа состоит в том, чтобы принимать в качестве входных данных либо изображения, созданные генератором, либо изображения из набора данных, которые мы используем в качестве примеров того, что нужно генерировать, а затем определять, откуда они взялись. Другими словами, дискриминатор должен узнать, насколько вероятно, что изображение взято из генератора или из реальной коллекции изображений. Это означает, что дискриминатору нужно будет выяснить, как выглядят изображения, которые мы даем в качестве примеров, чтобы он мог хорошо отличить настоящие изображения от поддельных, где поддельные изображения — это те, которые создает генератор. В случае Пушина ни один хороший распознаватель не скажет, что изображение реально, если на нем нет серого пятна с лицом.

Причина, по которой мы говорим, что эти две внутренние программы, генератор и дискриминатор, борются друг с другом, заключается в том, что мы настроили их таким образом, чтобы обе они старались как можно больше запутать другую. Под этим я подразумеваю:

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

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

Теперь, когда каждая программа в паре имеет свою цель, мы начинаем их тренировать. Типичная настройка для этого:

  1. дать дискриминатору несколько реальных изображений, чтобы он мог получить представление о том, как выглядит реальное изображение
  2. дать генератору несколько наборов случайных чисел, чтобы он мог сгенерировать несколько изображений
  3. передать сгенерированные изображения из 2. в дискриминатор, чтобы он знал, как выглядят сгенерированные изображения
  4. повтор с 1.

После повторения этого несколько сотен тысяч раз у нас должен быть генератор, который отлично справляется с созданием изображений, подобных реальным, которые мы предоставляем, и дискриминатор, который остается сбитым с толку реализмом как поддельных, так и реальных изображений (если все сделано правильно, он должен думать, что изображение с одинаковой вероятностью может быть реальным или поддельным). Ниже видео обучения одной из программ, где каждые 250 шагов я беру 16 случайных выходов из программы-генератора и отображаю их. Вы можете видеть, что сначала он изучает самые основы изображений, такие как серый кругообразный объект на белом фоне, а затем переходит к более сложным частям, таким как уши и хвосты, затем лица, а затем пробует объекты, кроме кошек. Если вы сделаете паузу ближе к концу, то увидите даже несколько прилично выглядящих примеров!

Итак, теперь, когда у нас есть общее представление о том, как работают GAN, мы можем просто взять кучу фотографий Пушина, объединить их в одну и получить потрясающих новых кошек, верно? Не так быстро; чтобы получить свои результаты, мне пришлось потратить несколько недель на настройку различных ручек и переключателей на каждой из программ дискриминатора и генератора, чтобы заставить их работать правильно.

Это включало такие решения, как:

  • насколько быстро программы обучаются (быстрее не всегда лучше, если они учат не то!)
  • количество изображений я выдаю программам на каждом шаге
  • насколько сложно я делаю дискриминатор и генератор

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

Несмотря на то, что я смог перевернуть / повернуть / увеличить их, чтобы сделать больше, по-прежнему существует очень много поз и ситуаций, о которых знает GAN. Много раз при выборе GAN для включения в этот пост мне приходилось выбирать между GAN, которые могли создавать некоторые новые сцены, а также некоторые капли, и GAN, которые создавали только одно или два уникальных изображения. Я часто выбирал первое, но как только они были должным образом настроены, я думаю, что программы смогли создать убедительные изображения!

(Я не претендую на право собственности на Pusheen или что-либо связанное с Pusheen, зарегистрированное под торговой маркой Pusheen Corp.) Не секрет, что мы с моей девушкой являемся большими поклонниками кота Пушина, которого многие знают по симпатичной наклейке на Facebook. наборы. Итак, на ее день рождения я решил попытаться создать генеративную модель для создания изображений кошек, чтобы она могла наслаждаться! Чтобы задать некоторые ожидания для этого поста, я сделал это только для забавного проекта и на самом деле не знал, что я ожидал получить от этого, учитывая, что во всех доступных данных на самом деле есть только несколько уникальных поз и сцен.

Кроме того, вам действительно нужно только серое пятно примерно овальной формы с глазами, чтобы выглядеть как Пушин, поэтому планка была не такой высокой. При этом я доволен результатом и думаю, что он дает интересные и (обычно) реалистичные позы и позы. Сначала я думал об использовании вариационного автоэнкодера для выполнения этой работы, но вместо этого остановился на генеративно-состязательной сети, потому что беспокоился о размытости изображений (а я никогда раньше не создавал GAN и хотел попробовать).

Данные, используемые для обучения GAN, были получены из различных изображений Пушина в Интернете. Собрав несколько сотен уникальных сцен и поз Пушина, я написал несколько шагов предварительной обработки, чтобы сделать фон белым, перевернуть, обрезать и повернуть его, чтобы получить гораздо больше изображений на исходное изображение.

Я предполагаю, что у вас есть базовые знания о том, как работают GAN, поэтому я не буду вдаваться в подробности. Я остановился на модели BEGAN, которая является типом GAN, который легче обучать, хотя, согласно некоторым недавним работам, большинство улучшений GAN неэффективны при достаточном вычислительном времени. Таким образом, эта модель отличается от ванильных GAN:

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

Модель BEGAN использует уравнение потерь, основанное на расстоянии Вассерштейна, за исключением того, что ее целью является минимизация абсолютного значения потерь автоэнкодера на реальных и поддельных изображениях, а не на самих изображениях. На практике это снижает абсолютное значение и минимизирует потери при реконструкции на реальных изображениях за вычетом потерь при реконструкции на поддельных изображениях. Кроме того, он вводит весовой коэффициент для фиктивных потерь при реконструкции, который изменяется пропорционально разнице между фиктивными и реальными потерями при реконструкции; это служит для поддержания баланса между дискриминатором и генератором, чтобы один не мог легко победить другого.

Я скоро опубликую код, но подведем итог: архитектуры и гиперпараметры, которые обычно хорошо работали для дискриминатора и генератора, были:

  • нормализация партии
  • шагов 1 сверток, за которыми следует 2-кратное изменение размера ближайшего соседа в G
  • сверток шага 1 с последующим объединением средних значений 2×2 в D
  • четыре набора сверточных слоев в каждом D и G, где каждый повторяется 2-4 раза с исчезающими остаточными связями между
  • 32 или 64 фильтра на сверточный слой в D
  • 32 или 64 фильтра на сверточный слой, начиная с G, затем удваиваясь для каждого последующего набора слоев (так, если бы они повторялись 3 раза, а я начал с 32, глубина слоя была бы [32, 32, 32, 64, 64 , 64, 128, 128, 128, 256, 256, 256])
  • скрытое измерение 100
  • скорость обучения 1e-4, 5e-4 или 1e-3
  • Я проделал немало поисков по гиперпараметрам, чтобы получить работающую модель (продолжайте прокручивать список ошибок), но я думаю, что в итоге это был довольно приличный генератор кошек. Ниже представлено обучающее видео одной из моделей, которую я использую в демках, где каждые 250 шагов я беру 16 сэмплов из генератора. Вы можете видеть, что сначала он изучает самые основы изображений, такие как серый кругообразный объект на белом фоне, а затем переходит к более сложным частям, таким как уши и хвосты, затем лица, а затем пробует объекты, кроме кошек. Если вы сделаете паузу ближе к концу, то увидите даже несколько прилично выглядящих сэмплов!

    Для некоторых моделей определенно были признаки выхода режима из строя, и даже некоторым из тех, что я выбрал в качестве демо, может не хватать новизны. Я думаю, что это отчасти связано с тем, что, хотя я смог искусственно расширить набор данных с помощью приемов предварительной обработки, для работы было всего несколько сотен исходных изображений, поэтому количество разнообразия, которое мог изучить GAN, было ограничено с самого начала. Я также нашел компромисс между коллапсом режима и моделями, которые могли создавать как здоровое разнообразие изображений, так и некоторые не полностью сформированные пушины, и часто использовал последние для генераторов в этом посте. Я знаю, что это не самый разнообразный генератор, но тем не менее я в целом доволен результатами.

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

    Модель 1Модель 2Модель 3

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

    Здесь я интерполировал четыре разных скрытых вектора, по одному в каждом углу, и показал получившихся кошек:

    Теперь предлагаю попробовать на себе! Напомним, что GAN — это пара программ, которые настроены так, чтобы обманывать друг друга, где генератор — это тот, который использует случайные числа для создания изображений. Это означает, что каждый раз, когда вы нажимаете кнопки ниже, чтобы изменить изображения, код, который я написал для запуска программы-генератора в браузере, получает несколько случайных чисел в качестве входных данных, а затем отображает свои выходные данные в виде изображений в вашем браузере. Нажмите на кнопку ниже, чтобы получить кучу случайных.

    Теперь предлагаю попробовать на себе! Я переписал программу генератора, используя tensorflow.js, библиотеку Javascript Tensorflow, чтобы все могло работать в браузере. Нажмите на кнопку ниже, чтобы получить кучу случайных.

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

    Или вы можете щелкнуть стрелки вверх/вниз в углах, чтобы изменить числа, которые передаются в генератор, что позволяет вам исследовать, как различные начальные точки влияют на то, как GAN создает изображения. Поскольку мы знаем, что одинаковые входные числа приводят к похожим изображениям, если у вас есть одинаковые числа в каждом углу, то изображения между ними должны выглядеть одинаково, тогда как если вы сделаете числа в углах далеко друг от друга, тогда изображения в каждом углу должны выглядеть одинаково. Очень разные. Сохранение небольших чисел обычно приводит к гораздо более кошачьим изображениям, и вы обычно получаете искаженные случайные цвета, если делаете их очень большими.

    Или измените три числа в каждом углу, которые проецируются на 100-D скрытое пространство:

    Еще одно замечательное свойство GAN заключается в том, что можно выполнять арифметические действия с числами, которые мы в него вводим, и та же самая арифметика наблюдается в сгенерированных изображениях. Обычный пример этого с лицами, как видно ниже (изображение отсюда):

    Здесь берут входные числа для мужчин в очках, вычитают из них входные числа или человека без очков, а затем добавляют к ним входные числа для женщины без очков, а когда они берут полученные числа и генерируют изображения, получаются женщины в очках! Это очень крутой результат GAN, который наглядно показывает нам, что входные числа, которые они принимают, также имеют для нас какое-то значение. Если бы вас попросили нарисовать результат «мужчина в очках» — «мужчина» + «женщина», вы, скорее всего, нарисовали бы женщину в очках; это то, что мы просим GAN сделать и здесь, потому что эти входные числа являются версией программы наших мыслей, когда мы внутренне визуализируем, как выглядят мужчины и женщины в очках и без них. Хотя эта демонстрация, по общему признанию, не так ясна для Пушина, как мне бы хотелось, с ней все равно интересно играть.

    Я включил пример выше, где есть «кошка с тако», из которой мы вычитаем «кошку, наклоняющуюся влево» и добавляем «кошку, наклоняющуюся вправо с поводком» (я понимаю, что я щедр на то, что эти дополнительные объекты), и в результате получается «котик, наклоняющийся вправо, с поводком и маленьким тако». Вы также можете попробовать сами ниже, изменив триплеты входных чисел, которые используются для создания начальных/вычтенных/добавленных изображений, и посмотрите, что получится в результате справа!

    Еще одно замечательное свойство GAN заключается в том, что можно выполнять арифметические действия в скрытом пространстве, и полученные скрытые векторы генерируют семантически разумные изображения:

    Я включил пример выше, где есть «кошка с тако», из которой мы вычитаем «кошку, наклоняющуюся влево» и добавляем «кошку, наклоняющуюся вправо с поводком» (я понимаю, что я щедр на то, что эти дополнительные объекты есть), и в результате получается «кошка, наклонившаяся вправо, с поводком и маленьким тако». Вы также можете попробовать сами, нажав на стрелки, чтобы изменить векторы скрытого пространства для начала/вычитания/добавления и увидеть результат справа!

    Я включил пример выше, где есть «кошка с тако», из которой мы вычитаем «кошку, наклоняющуюся влево» и добавляем «кошку, наклоняющуюся вправо с поводком» (я понимаю, что я щедр на то, что эти дополнительные объекты есть), и в результате получается «кошка, наклонившаяся вправо, с поводком и маленьким тако». Вы также можете попробовать сами ниже, изменив три числа под каждым изображением, которые проецируются на 100-D скрытое пространство для начала/вычитания/добавления, и посмотрите результат справа!

    Конечно, доведение модели до такого состояния не произошло сразу из коробки, поэтому вот несколько счастливых случайностей, которые произошли на этом пути:

    Водяные

    Огненные

    Земные

    Воздушные

    Сросшиеся пушины

    Несколько хвостовых шариков

    Желтые?

    ЗАЛГО ОН ПРИХОДИТ

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

    Я также хотел бы выразить огромную благодарность следующим людям, которые просматривали этот пост и оставляли отзывы о нем: Кайлин Дойрон, Крис Гримм, Кевин Паэт, Джаспер Снук. Загрузка спиннера отсюда.

    Пушин | Знай свой мем

    103

    436 927
    7
    176
    Часть серии о Кошки. [Просмотреть связанные записи]
    Субкультура
    Положение дел
    Подтвержденный
    Тип:
    веб-комикс
    Год
    2010
    Источник
    Тамблер
    Теги
    животное, кот, gif, tumblr, pusheen

    О

    Pusheen [1] — это анимационный веб-комикс, повествующий о жизни и мечтах титулованного серого полосатого кота.

    История

    Пушин был создан художниками Клэр Белтон и Эндрю Даффом как персонаж их веб-комикса Everyday Cute.0225 [3] , который был запущен в мае 2010 года. Лишь несколько старых комиксов были заархивированы [6] , однако упоминания о дополнительных сообщениях можно найти на странице сайта [4] в Facebook и в аккаунте Twitter. [5] Комикс вращается вокруг жизни персонажей, созданных по образцу Белтона, Даффа, их желтой собаки по имени Кармен и Пушина, пухлого серого полосатого кота, основанного на коте из детства Белтона. Ее имя происходит от ирландского слова «puisin» («котенок» по-английски), которое было дано кошке после того, как ее усыновили из приюта.

    26 февраля 2011 года Everyday Cute объявила [7] о запуске отдельного блога для анимации Pusheen. В первый день в блоге были размещены три анимации и один статичный веб-комикс об играх, в которые любит играть Пушин. По состоянию на август 2012 года все эти посты содержали более 1500 заметок, включая анимированный пост в формате GIF (показан ниже), который собрал более 7200 заметок.


    Приемная

    За пределами Tumblr Пушин был представлен на сайтах Catster [8] , Daily Dot [9] , LaughingSquid [11] , магазин новинок Блог Арчи Макфи [12] , Я могу есть чизбургер? [13] и Tumblr Storyboard [10] , где ее интервью собрали 16 400 заметок. По состоянию на август 2013 года официальная страница Пушина в Facebook [14] , созданная в феврале 2012 года, набрала более 1 миллиона лайков, а официальная учетная запись Twitter [15] насчитывает более 60 000 подписчиков. 27 июня 2012 года Пушин набрал 25 000 подписчиков на Tumblr. [16] Хотя текущее количество подписчиков неизвестно, в электронном письме Know Your Meme в августе 2012 года создатели заявили, что оно превышает 350 000.

    Сделка с книгой

    В июне 2012 года Белтон объявила [17] [18] , что она работает над книгой Пушина, содержащей множество комиксов с сайта, а также 25% ранее не публиковавшихся материалов. Книга под названием «Я — кот Пушин», номер [19] , должна выйти 29 октября 2013 года.


    Известные изображения


    Поисковый интерес

    Внешние ссылки

    [1] Pusheen — Home

    [3] Everyday Cute — Home

    [4] Facebook — повседневная милая

    [5] Twitter — @everydaycute

    5555551 [6] Deviantcute

    9 5555555555555555516666666666666666666666666666666 – Everyday Cute

    [7] Facebook – Объявление в блоге Pusheen

    [8] Catster – 7 веб-комиксов New-School Cat, которые мурлыкают прямо со страницы

    [9] The Daily Dot – The Morning GIF: Olympic Gold

    [10] Tumblr (через Wayback Machine) – Кот Пушин рассказывает все from Everyday Cute

    [12] Потрясающий гейзер Арчи Макфи.

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

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

    Рубрики

    • Для начинающих
    • Как рисовать
    • Карандаш
    • Поэтапно
    • Разное
    • Советы
    • Срисовка
    • Уроки
    2025 © Все права защищены.