Привет, Котин. Меня зовут Саша. Я работаю в области неврологии.
По многочисленным просьбам я наконец-то собрался с мыслями и решил написать серию коротких, почти пошаговых инструкций.
Инструкции о том, как обучить и изменить NeuroNet с самого начала и при этом сделать его совместимым с ботом Telegram.
Инструкции для таких тупиц, как я.
Сегодня мы выберем и протестируем архитектуру нейронной сети и соберем первый набор обучающих данных.
Выбор архитектуры
(После относительно успешного запуска бота selfie2anime (с использованием готовой модели UGATIT), я захотел сделать то же самое, но самостоятельно. Например, модель для превращения фотографий в мультфильмы.
Вот несколько примеров из моего photo2comicsbot, и мы с вами делаем нечто подобное.
Модель UGATIT оказалась слишком тяжелой для моей видеокарты, поэтому я обратил свое внимание на CycleGAN, более старое, но менее аппетитное соотношение.
Это приложение отличается разнообразием архитектур моделей и хорошим визуальным представлением процесса обучения в браузере.
CycleGAN не требует пар изображений для обучения, как в случае с архитектурами переноса стиля по одному изображению. Это важно, поскольку в противном случае все изображения пришлось бы перерисовывать в мультфильмы для создания обучающих образцов.
Задача по настройке алгоритма состоит из двух частей. Выходные данные должны содержать изображения, которые.
(a) выглядеть как мультфильм и (b) выглядеть как оригинальное изображение.
Пункт "а" может быть реализован в обычной GAN, где обученный критик отвечает за "комиксоподобность".
GAN, или Generative Adversarial Network, — это пара нейронных сетей, генератор и критик. Генератор преобразует входные данные. из фотографии в комикс, а рецензент сравнивает полученные "поддельные" результаты с настоящим комиксом. Задача генератора — обмануть рецензента и наоборот.
В процессе генератор учится создавать мультфильмы, все более похожие на настоящие, а рецензент учится лучше их различать.
Вторая часть процесса немного сложнее. Если у вас есть пара изображений из набора ‘A’ и изображение из набора ‘B’, но перерисованное в комиксе (что вам и нужно от модели), вы можете легко сравнить вывод генератора с парой изображений. Из набора ‘B’ обучающих образцов.
В нашем случае множества ‘A’ и ‘B’ вообще не связаны между собой. Набор "A" содержит случайные картинки, а набор "B" — случайные мультфильмы.
Сравнивать поддельный мультфильм со случайным мультфильмом из набора "B" бессмысленно, не в последнюю очередь потому, что это дублировало бы функцию критика, не говоря уже о непредсказуемых результатах.
Именно здесь на помощь приходит архитектура CycleGAN.
То есть, это пара GAN, первая из которых преобразует изображение из категории "A" (как в фотографии) в категорию "B" (как в мультфильме), а вторая — из класса "B" в класс "A".
Модели обучаются путем сравнения оригинальной фотографии с реконструированной фотографией (в результате цикла ‘A’-‘B’-‘A’, ‘фото-комикс-фото’) и с данными рецензента. Нормальный GAN.
Это позволяет нам выполнить обе части нашей миссии: создать мультфильмы, которые выглядят как оригинальная фотография, но при этом неотличимы от других мультфильмов.
Установка и проверка модели
Чтобы осуществить наш коварный план, вам понадобятся
- Совместимая с CUDA видеокарта и 8 ГБ оперативной памяти.
- Операционная система Linux
- Miniconda / Anaconda с Python 3.5+.
Если у вас нет GPU с поддержкой CUDA, или если настройка всего этого слишком сложна, вы всегда можете использовать GoogleColab. Если достаточное количество людей заинтересуется, создайте учебник о том, как сделать все следующее в Google Cloud.
После установки Anaconda / Miniconda (‘conda’) создайте новую среду для экспериментов и активируйте ее.
(Пользователи Windows должны сначала запустить приглашение Anaconda из меню Пуск).
Теперь все пакеты будут установлены в активной среде, не затрагивая другие среды. Это полезно, если вам нужна определенная комбинация различных версий пакетов, например, если вы используете чужой старый код и вам нужно установить более старые пакеты без ущерба для вашей жизни или основной рабочей среды.
Затем следуйте инструкциям в файле README.MD дистрибутива.
Сохраните дистрибутив CycleGAN.
(или просто загрузите файлы с GitHub).
Установите необходимые пакеты.
Загрузите готовый набор данных и соответствующую модель.
Запишите изображения, содержащиеся в загруженном наборе данных.
Откройте файл сценария из предыдущего параграфа, и вы увидите, что там есть и другие готовые наборы данных и модели.
Наконец, протестируйте модель с загруженным набором данных.
Результаты сохраняются в папке /results/horse2zebra_pretrained/.
Создание обучающей выборки
Не менее важным шагом после выбора архитектуры будущей модели (и после нахождения готовой реализации на github) является создание набора данных или наборов данных для обучения и тестирования модели.
Почти все зависит от используемых данных. Например, бот selfie2anime UGATIT был обучен на женских селфи и женских мультяшных лицах. Поэтому она, по крайней мере, интересна на фотографиях мужчин. Замените мужчину с окладистой бородой на маленькую девочку с высоким воротником. Вот ваша фотография после того, как вы узнаете, что он смотрит мультфильм.
Как вы уже заметили, стоит выбрать, какую фотографию C комика использовать на входе и получать на выходе. Планируйте редактировать свои селфи — добавляйте мультяшные селфи, крупные планы лиц и фотографии зданий — добавляйте фотографии зданий и мультяшные страницы со зданиями.
Для сравнения я использовал DIV2K и Urban100, но применял различные Google Stars.
Я использовал комиксы Marvel Universe, полные страницы, и выбрасывал рекламу и объявления, дизайн которых не был похож на комиксы. По понятным причинам я не могу разместить ссылки, но если вы понимаете, о чем я, вы можете легко найти отсканированные версии на ваших любимых сайтах комиксов.
Важно обратить внимание на различные иллюстрации и цветовые схемы для каждой серии.
Я много играю в "Дэдпула" и "Человека-паука", от чего моя кожа становится красной.
Неполный список других открытых наборов данных можно найти здесь.
Структура папок набора данных выглядит следующим образом
selfie2comics+--trainA+-trainB+-testA+-testB
trainA — наши фотографии (около 1000 фотографий) testA — фотографии для тестирования модели (достаточно 30 фотографий) trainB — наши мультфильмы (около 1000 фотографий) testB — мультфильмы для тестирования (30 фотографий)
Если такая возможность имеется, рекомендуется размещать их на SSD.
На этом пока все. В следующей версии мы начнем обучение модели и получим первые результаты.
Если у вас возникнут какие-либо проблемы, обязательно сообщите нам об этом. Это улучшит учебник и избавит будущих читателей от многих проблем.
Если вы уже пробовали обучать модель, пожалуйста, поделитесь своими результатами в комментариях. До скорой встречи!
Милые проверенные проститутки Нальчик, пылкие и страстные, они такие игривые и профессиональные, что любой захочет их. Выбери девушку сейчас. Пухлые губки, стройные ножки, проверенные проститутки Нальчик, это стоит попробовать с wownalchik.ru. Отказ исключён, всё, что пожелаете можно сделать в постели с проститутками - обворожительными феями интимного досуга.