HomeРазноеПеревод пл фото: Error 404 (Not Found)!!1

Перевод пл фото: Error 404 (Not Found)!!1

Содержание

TextGrabber Android: перевод на месте

Ещё больше возможностей? Ведь есть уже OCR и перевод в фото режиме, есть режим реального времени, где перевод доступен даже без интернета. Но мы хотим ещё лучше и, вдохновившись вашими пожеланиями, выпускаем новый вариант просмотра результатов OCR и перевода. Знакомьтесь!

Желтый хит сезона

Весь процесс распознавания и перевода фрагментов текста в фото режиме остается как прежде, но доступен новый способ просмотра. Как это работает:

  1. В фото режиме выбираете язык распознавания.
  2. Фотографируете фрагмент, который нужно распознать (например, название блюда в меню или надпись в магазине).
  3. Оцениваете получившийся результат OCR, который теперь выводится прямо поверх оригинального изображения.
  4. Cлова, которые неуверенно распознаны (приложение сомневается в точности распознавания), подсвечиваются жёлтым цветом. Если нажать на слово два раза, его можно отредактировать.
  5. Затем выбираете язык перевода и нажимаете “Перевести” внизу экрана.
  6. Перевод также выводится поверх оригинального фото, именно в тех местах, где был исходный текст. Круто, правда же?
  7. Если нажать “Сохранить”, то будет создана новая заметка, в которой уже в привычном виде можно работать с результатами OCR и перевода: редактировать и делиться ими.

Как забрать текст из Instagram

Наши пользователи находят множество оригинальных способов применения TextGrabber. Например, фитнес-инструктор, которая ищет вдохновение в Instagram. Она делает скриншоты различных рецептов, импортирует их в TextGrabber, распознает и переводит на лету. Посмотрите, как удобно применять новую функцию наложения на примере рецепта!

Больше не нужно догадываться, что из переведенного текста к какой части фотографии относится. Новый текст накладывается на фото и все понятно при одном взгляде на экран телефона.

Скорее обновляйте или скачивайте TextGrabber Android! Ждем ваших впечатлений от новинки.

 

камера Переводчик — перевод фото + Сканер PDF, DOC для Андроид

камера Переводчик — перевод фото + Сканер PDF, DOC, фото.

Переводит фотографии и текстовые документы в любом формате

профессиональная камера переводчика когда-либо видел, не имеет границ. преобразует практически любой документ, распознавание мгновенно камеры и преобразования документов в другие форматы тотально. Совместимость с форматами в PDF, DOC, PNG, JPG и другие.

Обрезка изображения или фотографии только перевести нужный текст. Это просто, легко, интуитивно, это лучшая камера сканер переводчик, который существует в мире.

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

камера Переводчик — перевод фото + Сканер PDF, DOC, фото.:

— Переводит текст с помощью камеры мгновенно
— Поддержка более 80 языков
— Признает текстовые документы с PDF, DOC и других
— Признает фотографии и изображения с PNG, JPG и других
— Простота в использовании и интуитивно понятный интерфейс
— Обрезка изображения, чтобы перевести только нужный текст
— Делиться тексты или изображения из любого приложения или веб-браузер.
— Поделитесь текст или аудио переводы из приложения
— Настройте свой переводчик, с различными обои
— Расширить свои длинные переводы
— Распознавание голоса и аудио в более чем 40 языков
— Двойная функция, чтобы поделиться своими переводами, аудио или текст.
— Неограниченные переводы История
— История поиска
— Избранные в истории и фильтров
— Изменение порядка переводов
— Изменение размера шрифта текста

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

Преобразование документов в PDF, и переводит на любой язык с лучшим переводом двигателя, мгновенное распознавание текстов на всех языках. Распознает файлы и фотографии веб-сайтов, обмен мгновенными сообщениями, заметки и другие.

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

Обмен фотографиями прямо, что за пределами приложения, веб-браузер и переводит текстовые изображения и документы непосредственно.

Он распознает все текстовые форматы переведены на более чем 80 языков, распознавания речи и речевого вывода в более чем 40 языков, истории перевода для поиска в истории, и любимый цвет фильтра.

Несколько вариантов, как изменение размера шрифта, фоны, чистый кэш аудио и многое другое.

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

Аудио переводчик + фото переводчик на 72 языка — DOSMONO T2 с Bluetooth / WiFi / 4G

Аудио переводчик + переводчик фотографий на 72 языка — DOSMONO T2 с поддержкой Bluetooth / WiFi / 4G поддерживает перевод сфотографированных текстов на 28 языков. Электронный голосовой переводчик оснащен камерой и 3,7-дюймовым сенсорным экраном . Карманный переводчик может обрабатывать голосовой перевод на 72 языках и на 28 языках, а также переводить текст (с помощью сфотографированных изображений) . многофункциональное устройство с электронным двусторонним переводчиком , которое включает, помимо прочего, функцию «нажми и говори» (нажмите и говори на базе Walkie-Talkie), путеводитель, соединение Bluetooth и WiFi, сеть 4G через встроенную SIM- карту и много других дополнительных функций. Вы можете начать переводить разговоры с иностранцами и все остальное, что вам нужно перевести. Больше нет переводчика или гида в отпуске, вам достаточно этого электронного онлайн-голосового переводчика.

Большой полноцветный 3,7 «сенсорный экран обеспечивает удобное управление различными функциями устройства. Голосовой переводчик имеет встроенную 13-мегапиксельную заднюю камеру для захвата не только высококачественных изображений, но и для захвата текста на иностранном языке, а также переводчик впоследствии переведет его на выбранный язык.

Следующие 28 языков поддерживаются для перевода сфотографированных предложений и текстов: китайский (мандаринский), английский (США), арабский, датский (Дания), немецкий (Германия), испанский (Испания), финский (Финляндия), итальянский (Италия), Польский (Польша), Португальский (Португалия), Шведский (Швеция), Индонезийский (Индонезия), Чешский (Чешская Республика), Филиппинский (Филиппины), Хорватский (Хорватия), Исландский (Исландия), Венгерский (Венгрия), Вьетнамский (Вьетнам), турецкий (Турция), греческий (Греция), болгарский (Болгария), украинский (Украина), иврит, тайский (Таиланд), французский (Франция), японский (Япония), корейский (Южная Корея), русский ( Россия).

Лучший переводчик для онлайн-перевода предложений и текстов — Dosmono T2.

Карманный переводчик — Умный переводчик DOSMONO T2

Не переставайте знакомиться с новыми странами из-за языкового барьера, оставьте сообщение инновационному переводчику.

Революционный онлайн-переводчик подходит для повседневного использования в быту и на работе благодаря практичному, легкому и качественному дизайну. Благодаря использованию технологии голосового перевода мирового класса и облачной службы перевода Microsoft Azure, скорость распознавания перевода достигает 97% . При поддержке 72 языков ваши лимиты на поездки будут неограниченными, и вам больше не придется решать, посещать ли вы зарубежные страны или нет, из-за языкового барьера.

Переводчик отсканированных текстов

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

Путеводитель

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

Глобальное языковое общение

На основе сигнала глобальной сети 4G вы можете создать группу для общения между пользователями переводчиков DOSMONO. Вы создадите код связи для создания частной группы и сможете общаться со своими друзьями или деловыми партнерами.
Доступно до 6 каналов для общения с несколькими пользователями на их языках во время деловых встреч, путешествий и т. Д.

Цифровой переводчик поддерживает сеть 4G — SIM-карта

На задней панели устройства используйте прилагаемый пинцет, чтобы извлечь держатель для SIM-карты Nano.
Затем вставьте SIM-карту (с золотым чипом вниз) в держатель и снова вставьте держатель в устройство.

Увеличенное время автономной работы в режиме ожидания

Встроенный аккумулятор транслятора размером 3300 мАч заряжается примерно за 3 часа, а затем обеспечивает рабочее время в течение 8-10 часов, в режиме ожидания до 72 часов (3 дня).

Система онлайн-перевода поддерживает 72 языка

Английский, китайский, арабский, датский, немецкий, испанский, австралийский, французский, итальянский, японский, корейский, португальский, русский, вьетнамский, тайский и многие другие.

Особенности:

Поддержка 72 языков для голосового перевода
Поддержка 28 языков для перевода текста и изображений
Сенсорный экран 3,7 »
Подключение к сетям Bluetooth, WiFi и 4G
Аудио выход 3,5 мм
Переводчик фото
Путеводитель
Функция «Нажми, чтобы поговорить» между переводчиками

Характеристики:

Модель: T2
Дисплей: 3,7 «TFT LCD сенсорный экран
Разрешение экрана: 800×480
Операционная система: Android
Настройки сети: Bluetooth / WiFi / 4G
Языковая поддержка: 72 для голосового перевода
Аудио выход: 3,5 мм наушники
Поддерживаемые форматы: WAV, MP3, TXT
Ram: 1 ГБ
Память: 16 ГБ
Задняя камера: 13 мегапикселей
Аккумулятор: 3300 мАч
Время работы: до 3 дней
Перезарядка: микро USB
Цвет: черный, оранжевый
Размеры: 128 мм (длина) х 60 мм (ширина) х 14 мм (толщина)
Вес: 144 г

Содержимое пакета:

1x Многофункциональный переводчик
1x Micro USB кабель
1x пинцет
1x Руководство пользователя

Яндекс перевод фото в текст

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

Переводим текст по фотографии онлайн

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

Способ 1: Яндекс.Переводчик

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

    Откройте главную страницу сайта Яндекс.Переводчик и переместитесь в раздел «Картинка», кликнув на соответствующую кнопку.

Выберите язык, с которого нужно перевести. Если он для вас неизвестен, оставьте галочку возле пункта «Автоопределение».

Нажмите на ссылку «Выберите файл» или перетащите изображение в указанную область.

Вам нужно выделить картинку в обозревателе и нажать на кнопку «Открыть».

Желтым цветом будут отмечены те области картинки, которые смог перевести сервис.

Если вы хотите продолжить работу с этим текстом, кликните на ссылку «Открыть в переводчике».

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

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

Способ 2: Free Online OCR

Англоязычный сайт Free Online OCR работает по аналогии с предыдущим представителем, однако принцип его действия и некоторые функции отличаются, поэтому разберем более детально его и процесс перевода:

    Находясь на главной странице Free Online OCR, нажмите на кнопку «Выберите файл».

В открывшемся обозревателе выделите необходимую картинку и кликните на «Открыть».

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

Если вы не можете определить правильный вариант, просто выберите предположения из отобразившегося меню.

По завершении настроек кликните на «Upload».

В случае когда на предыдущем этапе вы не определили язык, сделайте это сейчас, а также поверните изображение на необходимое количество градусов, если это требуется, затем нажмите на «OCR».

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

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

Отблагодарите автора, поделитесь статьей в социальных сетях.

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

Как пользоваться Яндекс переводчиком по фото

  1. Если вы увидели непонятную вывеску на другом языке, вы можете ее просто сфотографировать и загрузить на сервис https://translate.yandex.ru/.
  2. Далее нужно открыть вверху ссылку «Картинки».
    Кнопка «Картинка» в Яндекс.Переводчик

    Исходная картинка, с которой будет производится перевод

Теперь, когда текст будет распознан сервисом Яндекс.Переводчик, нужно нажать на ссылку «Открыть в переводчике». Перед вами откроется новая страница с окном, поделенным на две части, где в первой будет язык, который был представлен на картинке. А во второй его части будет перевод на язык, который вы указали, на который должен был быть совершен перевод.

Окно Яндекс.Переводчик с исходным текстом и переводом

Что делать, если качество перевода не приемлемо?

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

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

Как Яндекс.Переводчик распознает текст на картинках?

В основе такого поиска лежит технология оптического опознавания символов. Яндекс.Переводчик распознает текст при помощи двух технологий: распознавание картинок и модуль определения текста. Нейронная сеть самостоятельно обучается определять текст при помощи миллионов просмотренных текстов на изображениях. Такое самообучение позволяет добиться высокого качества переведенных текстов. С каждой новой работой алгоритм выполняет все более качественную работу, ведь он определяет и запоминает только линии текста, в которых уверен на 100%.

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

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

Главное нужно указать изображение с текстом на вашем компьютере или телефоне, обязательно выбрать основной язык текста и нажать кнопку OK внизу страницы. Остальные настройки уже выставлены по умолчанию.

Пример сфотографированного текста из книги и скриншот распознанного текста на этой фотографии:

В зависимости от размера исходного изображения и количества текста обработка может продлиться около 1 минуты.
Для достижения лучшего результата распознания текста желательно обратить внимание на подсказки возле настроек. Перед обработкой изображение нужно повернуть на нормальный угол, чтобы текст шёл в правильном направлении и небыл перевёрнут вверх ногами, а также желательно обрезать лишние однотонные края без текста, если они есть.
Обе OCR-программы для распознования текста отличаются друг от друга и могут давать разные результаты, что позволяет выбрать наиболее приемлемый вариант из двух.

Исходное изображение никак не изменяется, вам будет предоставлен распознанный текст в обычном текстовом документе в формате .txt с кодировкой utf-8 и после обработки его можно будет открыть прямо в окне браузера или же после скачивания – в любом текстовом редакторе.

Массовая обработка фото. Перевод цветных фото в чёрно-белые.

Для начала все фотографии, подлежащие обработке, складываем в одну папку. Я создал папку Color_Photo в корне диска С: (адрес C:\Color_Photo). На самом деле, абсолютно не важно, где мы разместим эту папку. Также создаём папку размещения готовых фото. У меня это C:\Monochrom_Photo

Далее, создаем экшен (действие) для преобразования фото в чёрно-белое. Сам способ преобразования зависит от фото и задач, в данной статье я выбрал через вкладку Изображение—>Коррекция изображения—>Микширование каналов (Image—>Adjustments—>Channel Mixer), ставим галку на Монохромный (Monochrome).

Открываем панель экшенов (панель операций) нажатием клавиш Alt+F9. Создаём новый набор, кликнув кнопку (1), придумываем название (я назвал Monochrom), затем кликаем кнопку (2), создаём новую операцию, называем её как-нить (я назвал тоже Monochrom). Далее открываем любую фотку, жмём кнопку (3), это запись действий, она должна подсветиться красным. Кликаем по вкладке Изображение—>Коррекция изображения—>Микширование каналов, ставим галку на Монохромный, как описано выше. В панели действий кликаем по кнопке (4), это стоп записи. Должно полчиться , как на картинке ниже (кроме цифирок в квадратиках, конечно ))).

Закрываем все документы, открытые в Фотошопе.
Кликаем по вкладке Файл—>Автоматизация—>Пакетная обработка.
в открывшемся окне выбираем созданные нами набор и операцию Monochrom (1), см. рис. ниже.
Кликаем по меню Источник (2), выбираем «Папка». Кликаем по кнопке «Выбрать»(3), ищем папку с фотками. Ни рис. она закрыта выпавшим меню, но можно понять по аналогии с «Выходная папка» (ниже «Источника»). В окне, под «Источником» должен появиться путь к папке.
Те же действия проводим с «Выходной папкой», выбираем папку Monochrom_Photo (4).
Параметры именования файлов (6) не трогаем, пускай они останутся по умолчанию.
Ну вот и все, нажимаем ОК (5).

Если Вы всё сделали правильно, то должна начаться обработка цветных фото из папки C:\Color_Photo в чёрно-белые с сохранением в папку C:\Monochrom_Photo

Если кому-то что-то непонятно, то смотрите видео, дублирующее эти действия.
Для удобства просмотра рекомендую кликнуть по кнопке «просмотр в полном экране», которая находится в правом нижнем углу окна Youtube.

Переводчик с английского на русский чтобы фотать. Перевод текста по фотографии онлайн

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

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

Способ 1: Яндекс.Переводчик

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

  1. Откройте главную страницу сайта Яндекс.Переводчик и переместитесь в раздел «Картинка»
    , кликнув на соответствующую кнопку.
  2. Выберите язык, с которого нужно перевести. Если он для вас неизвестен, оставьте галочку возле пункта «Автоопределение»
    .
  3. Далее по такому же принципу укажите язык, на котором хотите получить информацию.
  4. Нажмите на ссылку «Выберите файл»
    или перетащите изображение в указанную область.
  5. Вам нужно выделить картинку в обозревателе и нажать на кнопку «Открыть»
    .
  6. Желтым цветом будут отмечены те области картинки, которые смог перевести сервис.
  7. Нажмите на одну из них, чтобы увидеть получившийся результат.
  8. Если вы хотите продолжить работу с этим текстом, кликните на ссылку «Открыть в переводчике»
    .
  9. Слева отобразится надпись, которую смог распознать Яндекс.Переводчик, а справа будет показан получившийся результат. Теперь вы можете использовать все доступные функции этого сервиса – редактирование, озвучивание, словари и многое другое.

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

Способ 2: Free Online OCR

Англоязычный сайт Free Online OCR работает по аналогии с предыдущим представителем, однако принцип его действия и некоторые функции отличаются, поэтому разберем более детально его и процесс перевода:

  1. Находясь на главной странице Free Online OCR, нажмите на кнопку «Выберите файл»
    .
  2. В открывшемся обозревателе выделите необходимую картинку и кликните на «Открыть»
    .
  3. Сейчас нужно выбрать языки, с которых будет производиться распознавание.
  4. Если вы не можете определить правильный вариант, просто выберите предположения из отобразившегося меню.
  5. По завершении настроек кликните на «Upload»
    .
  6. В случае когда на предыдущем этапе вы не определили язык, сделайте это сейчас, а также поверните изображение на необходимое количество градусов, если это требуется, затем нажмите на «OCR»
    .
  7. Текст отобразится в форме снизу, перевести его можно, используя один из предложенных сервисов.

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

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

Сегодняшний обзор я посвящаю школьникам, студентам и всем, кто получает образование. Вашему вниманию – 6 бесплатных мобильных приложений для распознавания и перевода текста из фото, которые больше всего нравятся пользователям. Эти программы уберегут ваши зубы от слишком быстрого стачивания при изучении иностранных языков и не только.

Translate.Ru

Translate.Ru
– продукт одного из лучших разработчиков систем автоматизированных переводов PROMT, справится не только с текстом на сфотканной странице учебника или мониторе ПК, но и научит правильному произношению иностранных слов, а также поможет понять, о чем говорит препод.

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

Чтобы перевести текст с картинки, достаточно навести на нее камеру или загрузить из галереи. Как показал эксперимент, с английскими, французскими и немецкими надписями на фото Translate.Ru справляется на ура, но с восточными языками дела обстоят не очень. Фрагмент на китайском программа не распознала вообще, на корейском – перевела отдельные фразы.

Прочие функции Translate.Ru

  • Возможность выбора тематики переводимого текста, что повышает точность результата.
  • Считывание и перевод текстов из приложений и буфера обмена.
  • Перевод слов и фраз, сказанных в микрофон.
  • Словарь и разговорник с голосовым помощником (произношение иностранных слов).
  • Режим «Диалог» – возможность переводить вашу речь и сообщения собеседника на нужные языки в реальном времени.
  • Интеграция с мессенджером iMessage на устройствах iOS.
  • Хранение на телефоне 50 последних переведенных материалов. Ведение списка избранного.

Яндекс.Переводчик

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

Яндекс поддерживает свыше 90 национальных языков. Большинство из них доступны только онлайн, но 3 основных, а также турецкий, итальянский и испанский загружены в программу изначально и могут использоваться автономно. В режиме фотоперевода доступны 12 языков. Помимо перечисленных выше, это польский, китайский, португальский, чешский и украинский.

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

Программа требует регистрации. Если вы используете на устройстве почтовый аккаунт Яндекс, вход в него будет выполнен автоматически.

Другие возможности Яндекс.Переводчика

  • Перевод веб-страниц, приложений (через контекстное меню в Андроиде 6.0 и новее), содержимого буфера обмена.
  • Сохранение истории переведенных материалов, добавление в избранные.
  • Голосовой ввод переводимого текста.
  • Произношение слов и фраз на английском, турецком и русском.
  • Автоопределение языка.
  • Подсказки для быстрого набора иностранных слов.
  • Поддержка смарт-часов Apple Watch и Android Wear: отображение на экране перевода слов и целых фраз, произнесенных в микрофон.

Переводчик Microsoft

Переводчик Microsoft
– стильно оформленное, удобное и функциональное приложение, способное на точные и быстрые переводы с 60-ти национальных языков. Работает онлайн и офлайн. Для использования программы в режиме офлайн выбранные языковые пакеты придется загрузить на устройство.

В отличие от Яндекса, продукт Microsoft поддерживает фотопереводы на все или почти все 60 языков (об ограничении ничего не сказано). Нельзя утверждать, что их качество всегда на высоте, но отрывок текста на корейском был распознан и переведен довольно прилично, на китайском – чуть хуже.

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

Кнопка загрузки в программу фото из галереи находится в этом же разделе.

Прочие функции и возможности переводчика Microsoft

  • Синхронный перевод произнесенных фраз в онлайн-беседах с количеством участников до 100 человек.
  • Встроенный словарь и разговорник с транслитерацией и произношением переводимых фраз.
  • Перевод текстов в других программах через контекстное меню (поддерживается, начиная с Андроида 6.0).
  • Сохранение истории и ведение списка избранного.
  • Поддержка смарт-часов Android Wear и Apple Watch – отображение перевода произнесенных слов и фраз на экране.

Google Translate

Google Translate
, пожалуй, самое известное и всенародно любимое средство автоматических переводов. И рекордсмен по количеству поддерживаемых языковых пакетов – здесь их целых 103 и из них 59 доступны в автономном режиме. Фотоперевод текстов с картинок возможен на 39 языков.

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

Чтобы выполнить фотоперевод в приложении Google Translatе, коснитесь иконки камеры и наведите последнюю на нужный объект. Что делать дальше, думаю, понятно без пояснений.

Другие функции Google Translate

  • Разговорный режим (синхроперевод с 32 языков).
  • Режим рукописного вода (перевод написанного от руки).
  • Перевод текстовых данных из приложений и СМС-сообщений.
  • Разговорник (пустой, заполняется пользователем).
  • Голосовой ввод и озвучивание переведенных фраз.

Translator Foto – Voice, Text & File Scanner

Приложение Translator Foto – Voice, Text & File Scanner
хоть и имеет меньший набор функций, но работает ничуть не хуже конкурентов. Наоборот, даже лучше многих, поскольку оно, как и Google Translate, поддерживает 100 с лишним языков.

Перевод текста из фото – основная функция программы. Чтобы ею воспользоваться, коснитесь кнопки с изображением фотоаппарата, выберите источник – галерею или новый снимок. При выборе второго варианта запустится приложение «Камера». После съемки фотография текста, который вы хотите перевести, загрузится в программу. Для запуска переводчика коснитесь кнопки в правом нижнем углу снимка.

Translator Foto довольно сносно распознает языки печатного текста на картинках и неплохо переводит их на русский. Точность результатов почти на том же уровне, что у продуктов Microsoft и Яндекс.

Остальные возможности Translator Foto – Voice, Text & File Scanner

  • Распознавание и перевод произнесенных фраз.
  • Перевод скопированного или вручную введенного текста.
  • Озвучивание переводимых фраз.
  • Сохранение в другой программе или пересылка другому пользователю набранного (скопированного) текста вместе с переводом.
  • Сохранение истории и списка избранного.

TextGrabber

TextGrabber
вышел «из-под пера» ведущего разработчика программных продуктов в области лингвистики – компании ABBYY. Возможно, как переводчик он и проигрывает Google Translate, но по точности распознавания печатных строк на изображениях ему, пожалуй, нет равных. При подключении программы к Интернету для переводов доступно более 100 иностранных языков, в автономном режиме – 10. Распознавание текстов ведется на 60-ти с лишним языках.

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

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

Прочие функции и возможности TextGrabber

  • Распознавание и перевод текстов с картинок в галерее (как и у конкурентов).
  • Встроенный редактор для ручных исправлений.
  • Создание заметок (в бесплатной версии доступно всего 3 заметки).
  • Кликабельность ссылок, адресов, телефонов в распознанном и переведенном тексте.
  • Передача текстовых данных в другие приложения, автоматическое копирование в буфер обмена.

Удачного перевода!

Ещё на сайте:

Студентам на заметку. Лучшие приложения для распознавания и перевода текста с фотографий для Android и iOS
обновлено: Сентябрь 7, 2018
автором: Johnny Mnemonic

Технологии не стоят на месте и уже, казалось бы, что невозможно было сделать вчера, сегодня становится обыденностью. Вот и сейчас хочу рассказать вам, как можно сделать перевод текста по фото онлайн
, потратив на это малое количество времени. В статье я буду руководствоваться двумя онлайн сервисами. Первый — Free Online OCR, а второй — Яндекс Переводчик.

Перевод по фото

Процедура будет проходить в два этапа. Сначала нам потребуется распознать и скопировать надпись с изображения . Здесь можно прибегнуть к интернет ресурсам, например, OCR Convert, i2OCR, NewOCR, OnlineOcr, FreeOcr, OCRonline. И программам, скажем, ABBYY FineReader. А затем последует перевод.

Перед началом работы следует подчеркнуть важные моменты:

  • Шрифт на фото должен выглядеть отчетливо и не сильно сливаться с рисунком.
  • Расширение файла должно иметь графическое расширение PCX, GIF, BMP, JPG, JPEG, PNG, ICO, SVG, TIFF, AI, PSD, RAW, PSP и т.д.
  • Не закачивайте огромно-пиксельные форматы.
  • Поскольку используется машинный перевод, исход может быть не совершенен и потребуется доработка.

Free Online OCR

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

Допустим, вот такой вариант.

Переходим на сайт , нажимаем «Обзор» и закачиваем нужный документ для того, чтобы перевести слова с фотографии. Да, чуть не забыл, чуть ниже надо выставить язык распознания. В моем случае это «English» и «Russian».

Теперь жмем кнопку «Upload + OCR».

В новом, открывшемся окне мы видим следующее, — файл, который был нами загружен, а внизу текст с него.

Теперь, что мы делаем, — это перевод. Кликаем по ссылке «Google Translate» (я показал ее на скриншоте выше) для получения результата.

Как перевести текст по фото, используя «Яндекс Переводчик»

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

Переходим по ссылке , выбираем язык (затрудняетесь с выбором? — рекомендую поставить «Автоопредиление»), я отметил с Английского на Русский, кликаем по «Выберите файл», загружаем документ.

В новом окне будет показана скопированная надпись. Здесь важно учитывать тот факт, что обнаруженный системой текст будет выделен другим цветом
, соответственно, если какое-то слово отмечено не будет, то перевод его не отобразится.

На этом все. Если вам известны бесплатные утилиты, интернет-ресурсы, пишите в комментарии.

К записи «Перевод текста по фото онлайн» 5 комментариев

Карманные переводчики текста – уже привычная часть нашей жизни. А как насчет того, чтобы сфотографировать текст, распознать, да еще и перевести? О том, какими способностями наделены современные фото-переводчики
, наша сегодняшняя статья.

Переводчик Google

Одно из самый популярных приложений в Google Play. Переводчик Google умеет не только распознавать текст на фото
(что делает довольно неплохо), но и позволяет пользователю работать с обычным переводчиком. Приложение можно использовать без подключения к интернету, при скачивании дополнительных языковых пакетов. Кроме того, есть функция перевода SMS, рукописного текста (можно lf;t рисовать иероглифы) и распознавания речи. В фото-переводчике
заложена возможность воспринимать не только базовые языки, но и такие, как греческий, венгерский и индонезийский. Грамотный перевод последних языков занимает значительно больше времени, поэтому лучше использовать его в случае, если в послании содержится часто употребимая информация, встречающаяся в местах паломничества туристов и в бытовом окружении. Кроме самого перевода, программа также выводит пользователю воспринятый текст и его транскрипцию. Из пока недоработанных моментов можно отметить небольшое смещение некоторых слов текста при сканировании примерно на строку. Также странным показалось, что если заблокировать экран после выведенного перевода, а затем снова вернуть телефон в рабочее состояние, то результат перевода будет утерян и придется проходить процесс заново.

Lingvo Dictionaries

Мобильный переводчик от компании ABBYY на сегодняшний момент взаимодействует не просто с текстом самых популярных 30 языков, но и обладает возможностью фото-перевода
. Помимо этого в программе есть упражнения для запоминания слов, профессиональная озвучка от носителей языка и функция добавления своего слова в словарь. Фото-переводчик
при переводе фотографий работает практически идеально – при хорошем освещении и не боковой съемке текста. В противном случае не пытается распознать даже и части изображения, выдает сообщение о невозможности это сделать. В последней версии также был исправлен ряд недостатков. Приложение больше не вылетает при большом количестве дополнительно загруженных словарей (есть встроенные покупки более экзотических языков). Lingvo Dictionaries также оптимизировано для удобной работы с общим списком слов, объединенной словарной карточкой.

ABBYY TextGrabber + Translator

Переводчик компании ABBYY, специализирующийся на распознавании текста с фотографий. Отличительной особенностью является то, что перевод можно осуществлять с 60 встроенных языков, не скачивая дополнительные пакеты. Распознавание текста происходит без использования интернета, но для его перевода соединение потребуется. Поддерживается возможность править переработанный текст и сохранять его на телефоне, дополнительно они сохраняются во внутренней истории приложения, где с ними также можно проводить базовые операции. Из-за большого количества встроенных языков приложению сложно распознать язык самому в процессе сканирования, это занимает довольно много времени. Рекомендуется заранее выбирать соответствующий оригинальному тексту язык распознавания для более быстрой работы приложения. К несущественным недостаткам программы относится тот факт, что встроенная функция загрузки изображения из галереи поддерживает только стандартные форматы изображений. ABBYY TextGrabber + Translator также не форматирует текст при выводе отсканированного изображения. То есть текст идет сплошным потоком, игнорируя абзацы и большие промежутки, делая разделение только между словами.

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

Translator

Тема фото-переводчиков
не обошла стороной и владельцев Windows Phone. Программа не имеет вычурного замысловатого названия, но имеет все базовые функции современных фото-переводчиков
. Разработанное Bing приложение, помимо всего прочего, помогает в заучивании иностранных слов функцией установки “слова дня” на главный экран телефона. Довольно необычной деталью является то, что приложение может писать переведенный текст прямо поверх снятого фото. Эта функция не всегда удобна при большом количестве слов и мелком шрифте, но ее можно отключить.

Украина не стала прощаться с летним временем. Перевод часов остается

Автор фото, Getty Images

Верховная рада Украины не поддержала отказ от сезонного перевода стрелок часов раз в полгода. 28 марта стрелки часов на Украине будут переведены на час вперед.

Законопроект «Об исчислении времени в Украине» предлагал отменить сезонный перевод часов, а автор инициативы, член партии «Слуга народа» вице-спикер Руслан Стефанчук объяснял отказ от перевода соображениями здоровья людей.

Зачем?

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

Автор фото, Руслан Стефанчук

Подпись к фото,

Руслан Стефанчук считает, что перевод часов не полезен для здоровья. И с ним согласен целый ряд исследователей

Стефанчук также предлагал утвердить понятие «киевского времени», то есть времени часовой зоны, в которой расположена столица Украины — город Киев, что соответствует второму часовому поясу в национальной шкале координированного времени Украины UTC (UA) +2.

По мнению депутата, это направлено на защиту территориальной целостности Украины: «На временно оккупированных территориях Украины установлено время государства-агрессора — Российской Федерации. Поэтому установление и закрепление на всей территории Украины без исключения единого киевского времени позволит и укрепить позиции безопасности Украины, и будет способствовать деоккупации и реинтеграции временно оккупированных территорий».

Россия ввела московское время в аннексированном Крыму, а также в непризнанных республиках на востоке Украины.

Впервые Украина начала переводить время на час вперед летом 1981 года вместе с остальными республиками СССР. В 2011 году (вслед за Россией) переход на зимнее время отменили, но населению страны это не понравилось (вслед за Россией же!), и решение отозвали.

Россия перешла на постоянное летнее время в 2011 году. Президент РФ Дмитрий Медведев тоже объяснял это решение негативным влиянием на здоровье людей. Но уже в 2014 году из-за многочисленных жалоб Россия решила перевести часы на зимнее время.

А в мире?

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

Однако если эти соображения имели вес сто лет назад, сегодня, по оценкам чешских ученых, обобщивших многочисленные исследования этого вопроса, перевод часов позволяет сэкономить лишь 0,34% электроэнергии.

Автор фото, Getty Images

На момент выхода исследования 77 стран и регионов с совокупным населением около 1,5 млрд человек практиковали переход на летнее время. Но сегодня все больше государств от него отказывается.

В 2019 году Европарламент отменил обязательный перевод часов на летнее и зимнее время в странах ЕС. С 2021 года каждый член Евросоюза может сам выбирать: сохранить действующую систему перевода часов или вообще отказаться от нее.

До этого специальная директива ЕС обязывала все 28 стран-членов переходить на летнее время в последнее воскресенье марта, и на зимнее — в последнее воскресенье октября.

Перед этим прошло публичное обсуждение идеи с отказом от сезонного времени, в котором приняли участие более 4,6 млн граждан ЕС. Абсолютное большинство высказалось за то, чтобы отменить перевод часов.

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

Перевод стрелок — это плохо?

Существует немало исследований, изучающих связь тех или иных заболеваний с переводом часов.

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

Автор фото, Getty Images

По данным исследователей медицинского Каролинского Института в Стокгольме, при переходе на летнее время повышается риск инфарктов миокарда на 5% в первую неделю, а наибольший рост числа инфарктов наблюдается в первые три дня.

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

Связь между переходом на летнее время и числом ДТП установили ученые в США и Канаде, однако эти данные не подтверждаются исследованиями финских и шведских ученых.

В исследовании, опубликованном в 2017 году в American Economic Journal: Applied Economics, утверждается, что переход на летнее время стал причиной более 30 смертей, социальные издержки составили 275 млн долларов в год, главным образом из-за недосыпа.

По некоторым данным, сдвиг часов коррелирует со снижением экономической эффективности, и в 2000 году издержки от перехода на летнее время на фондовых биржах США в один день составили 31 млрд долларов.

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

Связь между летним временем и уровнем преступности пока также достоверно не установлена — и даже если она есть, судя по всему, заметной роли в статистике преступлений она не играет.

weihaox / awesome-image-translation: Коллекция потрясающих ресурсов для преобразования изображений в изображения.

отличных документов для перевода изображения в изображение

Коллекция ресурсов по переводу изображения в изображение.

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

Содействие

Если вы думаете, что я что-то упустил (или у вас есть какие-либо предложения (документы, реализации и другие ресурсы), не стесняйтесь получить запрос

Отзывы и предложения приветствуются!

Формат уценки

:

 ** Вот название бумаги.** 
* [Автор 1] (домашняя страница), Автор 2 и Автор 3. *
Конференция или Журнал Год. [[PDF] (ссылка)] [[Проект] (ссылка)] [[Github] (ссылка)] [[Видео] (ссылка)] [[Данные] (ссылка)]

Содержание

2021

CVPR 2021

DivCo: Синтез разнообразных условных изображений через противопоставленную генеративную состязательную сеть. [PDF] [GitHub]
Руи Лю, Исяо Гэ, Чинг Лам Чой, Сяоган Ван, Хуншэн Ли.

(устно) CoMoGAN: Непрерывный преобразование изображения в изображение на основе модели. [PDF] [GitHub]
Фабио Пиццати, Пьетро Черри, Рауль де Шаретт.

PISE: Синтез и редактирование изображений человека с помощью независимого GAN. [PDF] [Проект] [Github]
Цзиньсон Чжан, Кун Ли, Ю-Кун Лай, Цзинюй Ян.

ASAPNet: Пространственно-адаптивные пиксельные сети для быстрой трансляции изображений. [PDF] [Проект]
Тамар Ротт Шахам, Майкл Гарби, Ричард Чжан, Эли Шехтман, Томер Михаэли.

Преобразование изображения в изображение с помощью иерархического распутывания стилей. [PDF] [Github]
Синьян Ли, Шэнчуань Чжан, Цзе Ху, Люцзюань Цао, Сяопэн Хун, Сюдун Мао, Фэйюэ Хуанг, Юнцзянь Ву, Жунжун Цзи.

Учителя делают больше, чем учат: моделирование преобразования изображения в изображение. [PDF]
Цин Цзинь, Цзянь Рен, Оливер Дж. Вудфорд, Цзячжуо Ван, Гэн Юань, Янчжи Ван, Сергей Туляков.

ICLR 2021

[список принятых документов]

DINO: GAN на основе условной энергии для трансляции доменов. [PDF]
Константинос Вугюкас, Ставрос Петридис, Майя Пантик.

Наслаждайтесь редактированием: управляемые GAN для редактирования изображений с помощью скрытой космической навигации. [PDF]
Пейе Чжуанг, Олувасанми Койеджо, Александр Г. Швинг.

Прочие

iFlowGAN: Генеративная состязательная сеть на основе обратимого потока для неконтролируемого преобразования изображения в изображение.
Longquan Dai, Jinhui Tang.
ТПАМИ 2021.[PDF]

Дополнительные, гетерогенные и состязательные сети для преобразования изображения в изображение.
Фэй Гао, Синсинь Сю, Цзюнь Юй, Мэймэй Шан, Сян Ли и Дачэн Тао.
ТИП 2021. [PDF] [Проект]

SAM: Только вопрос преобразования стиля в возраст с использованием модели регрессии на основе стиля.
Юваль Алалуф, Ор Паташник, Даниэль Коэн-Ор.
arxiv 2021. [PDF] [Github]

Новое приложение преобразования изображения в изображение: структура выпрямления хромосом путем обучения на основе одного изображения.
Сифан Сун, Дайюнь Хуан, Ялунь Ху, Чуньсяо Ян, Цзя Мэн, Фей Ма, Цзямин Чжан, Цзюнглонг Су.
arxiv 2021. [PDF]

Преобразование изображения в изображение: методы и приложения.
Yingxue Pang, Jianxin Lin, Tao Qin, Zhibo Chen.
arxiv 2021. [PDF]

Многодоменное преобразование изображения в изображение с адаптивным графом вывода.
The-Phuc Nguyen, Stéphane Lathuilière, Elisa Ricci.
ICPR 2021.[PDF]

Пространственное наведение на основе внимания для преобразования изображения в изображение.
Yu Lin, Yigong Wang, Yifan Li, Yang Gao, Zhuoyi Wang, Latifur Khan.
WACV 2021. [PDF]

2020

ECCV 2020

[список принятых документов]

Самоконтролируемый CycleGAN для объектной адаптации изображения к изображению. [PDF]
Синьпэн Се, Цзявэй Чен, Юэсян Ли, Линьлинь Шэнь, Кай Ма, Ефэн Чжэн.

Универсальный синтез видео в видео. [PDF] [Github]
Арун Малля, Тинг-Чун Ван, Каран Сапра, Мин-Ю Лю.

Контрастивное обучение для непарного преобразования изображения в изображение. [PDF] [Проект] [Github]
Парк Тэсон, Алексей А. Эфрос, Ричард Чжан, Цзюнь-Ян Чжу.

Неселфи: преобразование селфи в портреты с нейтральной позой в дикой природе. [PDF]
Лицянь Ма, Чжэ Линь, Коннелли Барнс, Алексей А. Эфрос, Джингван Лу.

TSIT: Простая и универсальная платформа для преобразования изображения в изображение. [PDF]
Лиминг Цзян, Чан Сюй Чжан, Минъян Хуан, Чуньсяо Лю, Цзяньпин Ши, Чен Чейн Лой.

LEED: Редактирование выражений без меток с помощью распутывания. [PDF]
Жунлян Ву, Шицзянь Лу.

Неконтролируемый синтез от эскиза к фотографии. [PDF] [Github]
Рунтао Лю, Цянь Ю, Стелла Ю.

Регуляризация согласованности преобразования: полу-контролируемая парадигма преобразования изображения в изображение. [PDF]
Аамир Мустафа, Рафаль К. Мантюк.

Междоменный каскадный глубокий перевод функций. [PDF]
Орен Кацир, Дани Лищински, Даниэль Коэн-Ор.

Непарный преобразование изображения в изображение с использованием состязательной потери согласованности. [PDF]
Ихао Чжао, Жуйхай Ву, Хао Донг.

COCO-FUNIT: Неконтролируемая трансляция нескольких снимков с помощью кодировщика условного стиля содержимого. [PDF] [Github]
Куниаки Сайто, Кейт Саенко, Мин-Ю Лю.

XingGAN для создания изображений людей. [Github]
Хао Тан, Сун Бай, Ли Чжан, Филип Х. С. Торр, Нику Себе.

GANHopper: Multi-Hop GAN для неконтролируемого преобразования изображения в изображение. [PDF]
Уоллас Лира, Йоханнес Мерц, Даниэль Ричи, Даниэль Коэн-Ор, Хао Чжан.

TuiGAN: обучение универсальному преобразованию изображения в изображение с двумя непарными изображениями. [PDF] [Github]
Цзяньсинь Линь, Инсюэ Панг, Инцэ Ся, Чжибо Чен, Цзебо Ло.

Распутывание окклюзии на основе модели для преобразования изображения в изображение. [PDF]
Фабио Пиццати, Пьетро Черри, Рауль де Шаретт.

Семантическая связь, сохраняющая дистилляцию знаний для преобразования изображения в изображение. [pdf] [Приложение]
Цзи Ли, Руовей Цзян, Пархам Аараби.

Информационная сеть интеллектуального анализа данных для многодоменного преобразования изображения в изображение. [pdf] [Приложение]
Цзе Цао, Хуайбо Хуан, И Ли, Ран Хэ, Чжэнань Сунь.

Neural Wireframe Renderer: обучение преобразованию каркаса в изображение. [pdf] [Github] [Приложение]
Юань Сюэ, Цзихан Чжоу, Сяолей Хуан.

ForkGAN: Взгляд в дождливую ночь. [PDF]
Ziqiang Zheng, Yang Wu, Xinran Han, Jianbo Shi.

CVPR 2020

[список принятых документов]

Учимся рисовать карикатуры с использованием мультипликационных изображений белого ящика. [PDF] [Github] [Проект]
Xinrui Wang и Jinze Yu.

Внимательная нормализация для условной генерации изображения. [PDF]
Йи Ван, Ин-Конг Чен, Сянюй Чжан, Цзянь Сунь, Цзяя Цзя.

Создание разнообразных изображений с помощью саморегулирующихся сетей GAN. . [PDF] [Проект] [Github]
Стивен Лю, Тунчжоу Ван, Дэвид Бау, Цзюнь-Ян Чжу, Антонио Торральба.

Детальное преобразование изображения в изображение для визуального распознавания. [PDF]
Вэй Сюн, Ютун Хэ, Исюань Чжан, Вэньхань Луо, Линь Ма, Цзебо Луо.

RL-CycleGAN: Реальное моделирование с учетом обучения с подкреплением. [PDF]
Канишка Рао, Крис Харрис, Алекс Ирпан, Сергей Левин, Джулиан Ибарз, Мохи Хансари.

CouncilGAN: разрыв цикла: все, что вам нужно, — это коллеги. [PDF] [Проект] [Github]
Ори Низан, Айеллет Тал.

DUNIT: Неконтролируемое преобразование изображения в изображение на основе обнаружения. [PDF]
Деблина Бхаттачарджи, Сынрён Ким, Гийом Визье и Матьё Зальцманн.

UCTGAN: рисование разнообразных изображений на основе неконтролируемого межпространственного перевода. [PDF]
Лэй Чжао, Цихан Мо, Сихуань Линь, Чжичжун Ван, Чживэнь Цзо, Хайбо Чен, Вэй Син, Дунмин Лу.

Wish You Were Here: Контекстно-зависимое человеческое поколение. [PDF]
Оран Гафни, Лиор Вольф.

Трансляция непарных изображений с учетом деформации для оценки позы на лабораторных животных. [PDF]
Сиюань Ли, Семих Гюнель, Мирела Острек, Паван Рамдья, Паскаль Фуа, Хельге Родин.

Неконтролируемая мультимодальная регистрация изображения с сохранением геометрии преобразования изображения в изображение. [PDF]
Моав Арар, Йифтах Джинджер, Дов Данон, Амит Х. Бермано, Даниэль Коэн-Ор.

Оживление старых фотографий. [PDF] [Github] [Проект]
Зию Ван, Бо Чжан, Дондун Чен, Пань Чжан, Дон Чен, Цзин Ляо, Фань Вэнь.

Раскраска эталонного изображения на основе эталонного изображения с использованием дополненной самопроверки и плотного семантического соответствия. [PDF]
Джунсу Ли, Ынъёп Ким, Юнсун Ли, Донджун Ким, Джэхёк Чанг, Джагуль Чу.

СМИС: семантически мультимодальный синтез изображений. [PDF] [Проект] [Github]
Чжэнь Чжу, Чжилян Сюй, Аншэн Ю, Сян Бай.

SEAN: синтез изображений с семантической адаптивной нормализацией. [PDF] [Видео] [Github]
Пейхао Чжу, Рамин Абдал, Ипенг Цинь, Питер Вонка.

CoCosNet: Междоменное заочное обучение для преобразования изображений на основе образцов. [PDF] [Проект] [Неофициальный]
Пань Чжан, Бо Чжан, Дун Чен, Лу Юань, Фанг Вэнь.

Комментарий
CoCosNet = DEVC + SPADE

STEFANN: Редактор текста сцены с использованием адаптивной нейронной сети для шрифтов. [PDF] [Проект] [Github] [Данные]
Прасун Рой, Саумик Бхаттачарья, Субханкар Гош, Умапада Пал.

Интуитивно понятный интерактивный синтез бороды и волос с генеративными моделями. [PDF]
Кайл Ольшевски, Дуйгу Джейлан, Цзюнь Син, Хосе Эчеваррия, Чжили Чен, Вейкай Чен, Хао Ли.

Обработка семантического изображения с помощью графов сцены. [PDF]
Хелиса Дхамо, Азаде Фаршад, Иро Лайна, Насир Наваб, Грегори Д. Хагер, Федерико Томбари, Кристиан Рупрехт.

Домен Адаптивное преобразование изображения в изображение. [PDF]
Ин-Конг Чен, Сяоган Сю и Цзяя Цзя.

Внимательная нормализация для условной генерации изображения. [PDF]
И Ван, Ин-Конг Чен, Сяню Чжан, Цзянь Сунь и Цзяя Цзя.

Управляемый вариационный автоэнкодер для обучения распутыванию. [PDF]
Чжэн Дин, Ифань Сю, Вэйцзянь Сюй, Гаурав Пармар, Ян Ян, Макс Веллинг, Чжуовэнь Ту.

Полуавтоматическое обучение для преобразования нескольких фрагментов изображения в изображение. [PDF] [Github]
Ясин Ван, Салман Хан, Абель Гонсалес-Гарсия, Йост ван де Вейер, Фахад Шахбаз Хан.

Дополнительная колоноскопия с использованием расширенного и направленного CycleGAN для трансляции изображений с потерей качества. [PDF]
Шон Мэтью, Саад Надим, Срути Кумари, Ари Кауфман.

ADGAN: синтез изображений управляемого человека с декомпозированной по атрибутам GAN. [PDF] [Проект] [Github]
Ифан Мэнь, Имин Мао, Юнин Цзян, Вэй-Ин Ма, Чжухуэй Лянь.

LGGAN: локальные зависящие от класса и глобальные конкурирующие сети на уровне изображений для генерации сцен с семантическим управлением. [PDF] [Github]
Хао Тан, Дан Сюй, Ян Ян, Филип Х. С. Торр, Нику Себе.

StarGAN v2: Синтез разнообразных изображений для нескольких доменов. [PDF] [GitHub] [Tensorflow] [Данные AFHQ]
Юнджей Чой, Ёнджунг У, Джеджун Ю, Чон-Ву Ха. Clova AI Research, NAVER Corp.

Сжатие GAN: эффективные архитектуры для интерактивных условных GAN. [PDF] [Демо] [Github]
Муян Ли, Цзи Линь, Яояо Дин, Чжицзянь Лю, Цзюнь-Ян Чжу и Сун Хан.

HiDT: дневной перевод высокого разрешения без доменных этикеток. [PDF]
Иван Анохин, Павел Соловьев, Денис Корженков, Алексей Харламов, Тарас Хахулин, Глеб Стеркин, Алексей Сильвестров, Сергей Николенко, Виктор Лемпицкий.

NICE: повторное использование дискриминаторов для кодирования: на пути к неконтролируемому преобразованию изображения в изображение. [PDF] [Github]
Runfa Chen, Wenbing Huang, Binghui Huang, Fuchun Sun, Bin Fang.

AAAI 2020

[список принятых документов]

Разработка портативных генерирующих состязательных сетей для трансляции изображений. [PDF]
Хантинг Чен, Юньхэ Ван, Хань Шу, Чанюань Вэнь, Чунцзин Сю, Боксинь Ши, Чао Сю, Чан Сюй.

Быстрый и надежный прямой перевод параметров для автоматического создания игрового персонажа. [PDF]
Тяньян Ши, Чжэнся Цзоу, И Юань, Чанцзе Фань.

Обучение переносу: неконтролируемый перевод домена с помощью метаобучения. [PDF] [Github]
Цзяньсинь Линь, Ицзюнь Ван, Чжибо Чен, Тяньюй Хэ.

От общего к частному: многодоменная трансляция с помощью сетей трансформации доменов. [PDF]
Юн Ван, Лун Юэ Ван, Шумин Ши, Виктор Ли, Чжаопэн Ту.

Создание разнообразного перевода за счет управления многоголовым вниманием. [PDF]
Цзевэй Сунь, Шуцзянь Хуан, Хао-Ран Вэй, Синь-юй Дай, Цзяцзюнь Чен.

Доброжелательные примеры: незаметные изменения могут повысить производительность перевода изображений. [PDF]
Виннеш Сринивасан, Клаус-Роберт Мюллер, Войцех Самек, Шиничи Накадзима.

Мультимодальное преобразование изображения в изображение с согласованной структурой.
Che-Tsung Lin, Yen-Yi Wu, Po-Hao Hsu, Shang-Hong Lai.

Перевод непарных китайских иероглифов на основе GAN с помощью преобразования скелета и рендеринга штрихов.
Имин Гао, Цзянцинь Ву.

Другое 2020

BalaGAN: Трансляция изображений между несбалансированными доменами через кросс-модальный перенос.
Ор Паташник, Дов Данон, Хао Чжан, Даниэль Коэн-Ор.
arxiv 2020. [PDF]

Регуляризованный CycleGAN Липшица для повышения семантической устойчивости при непарном преобразовании изображения в изображение.
Чживэй Цзя, Боди Юань, Канкан Ван, Хун Ву, Дэвид Клиффорд, Чжицян Юань, Хао Су.
arxiv 2020. [PDF]

Заочное обучение с полным разрешением для перевода изображений.
Xingran Zhou, Bo Zhang, Ting Zhang, Pan Zhang, Jianmin Bao, Dong Chen, Zhongfei Zhang, Fang Wen.
arxiv 2020. [PDF]

RF-GAN: легкая и реконфигурируемая сеть для непарного преобразования изображения в изображение.
Али Коксал, Шицзянь Лу.
ACCV 2020. [PDF]

Преобразование изображений в частотной области: более фотореалистичное, лучшее сохранение идентичности.
Mu Cai, Hong Zhang, Huijuan Huang, Qichuan Geng, Gao Huang.
arxiv 2020. [PDF]

Непарный преобразование изображения в изображение с помощью скрытого переноса энергии.
Ян Чжао, Чанъю Чен.
arxiv 2020. [PDF]

fairfaceGAN: Трансляция изображения лица в изображение с учетом справедливости.
Сонхи Хван, Сонхо Парк, Дохён Ким, Мираэ До, Хиран Бён.
BMVC 2020. [PDF]

Трансляция из сети в сеть с помощью условных обратимых нейронных сетей.
Робин Ромбах, Патрик Эссер, Бьорн Оммер.
NeurIPS 2020. [PDF] [Github] [Project]

Тонкая настройка онлайн-образцов для преобразования изображения в изображение.
Тэвон Кан, Сухён Ким, Суну Ким, Сынрён Ким.
arxiv 2020. [PDF]

Стилизованная нейронная живопись.
Zhengxia Zou, Tianyang Shi, Shuang Qiu, Yi Yuan, Zhenwei Shi.
arxiv 2020. [PDF] [Проект] [Github]

Жидкая деформация GAN с вниманием: унифицированная структура для синтеза человеческих образов.
Вэнь Лю, Чжисинь Пяо, Чжи Ту, Вэньхань Луо, Линь Ма, Шэнхуа Гао.
arxiv 2020. [PDF]

DCN: преобразование образа нулевой пары в изображение с использованием условной нормализации домена.
Самарт Шукла, Андрес Ромеро, Люк Ван Гул, Раду Тимофте.
WACV 2021. [PDF] [Проект]

Пиксельный синтез выражения лица.
Арбиш Акрам и Назар Хан.
arxiv 2020. [PDF]

SAVI2I: Непрерывное и разнообразное преобразование изображения в изображение с помощью векторов атрибутов со знаком.
Ци Мао, Синь-Ин Ли, Хун-Ю Цзэн, Цзя-Бинь Хуан, Сивэй Ма, Мин-Сюань Ян.
arxiv 2020. [PDF] [Проект] [Github]

Исследование генеративных состязательных сетей для преобразования изображения в изображение в моделировании STEM.
Ник Лоуренс, Мингрен Шен, Жуйки Инь, Клорис Фэн, Дэйн Морган.
arxiv 2020. [PDF] [Github]

Кросс-гранулярное обучение для многодоменного преобразования изображения в изображение.
Huiyuan Fu, Ting Yu, Xin Wang, Huadong Ma.
ACM MM 2020. [PDF]

Расширенная регуляризация циклической непротиворечивости для преобразования непарного изображения в изображение.
Такехико Окава, Наото Иноуэ, Хирокацу Катаока, Накамаса Иноуэ.
ICPR 2020. [PDF]

Неконтролируемый преобразование изображения в изображение через предварительно обученную сеть StyleGAN2.
Цзялу Хуанг, Цзин Ляо, Сэм Квонг.
arxiv 2020. [PDF] [Github]

DeepI2I: Включение глубокого иерархического преобразования изображения в изображение путем передачи из GAN.
yaxing wang, Lu Yu, Joost van de Weijer.
NeurIPS 2020. [PDF] [Github]

Удивительная эффективность линейного неконтролируемого преобразования изображения в изображение.
Эйтан Ричардсон, Яир Вайс.
arxiv 2020. [PDF] [Github]

BalaGAN: Трансляция изображений между несбалансированными доменами через кросс-модальный перенос.
Ор Паташник, Дов Данон, Хао Чжан, Даниэль Коэн-Ор.
arxiv 2020. [PDF]

Кодирование в стиле: кодировщик StyleGAN для преобразования изображения в изображение.
Элад Ричардсон, Юваль Алалуф, Ор Паташник, Йотам Ницан, Янив Азар, Став Шапиро, Даниэль Коэн-Ор.
arxiv 2020. [PDF] [Github] [Project]

Семантически адаптивное преобразование изображения в изображение для доменной адаптации семантической сегментации.
Луиджи Мусто, Андреа Зинелли.
BMVC 2020. [PDF]

ПОХОДКА: Неконтролируемое преобразование изображения в изображение с корректировкой градиента.
Ибрагим Батухан Аккая, Угур Халиджи.
ICIP 2020. [PDF]

Управляемый извлечением неконтролируемый многодоменный перевод изображения в изображение.
Рауль Гомес, Яхуи Лю, Марко Де Надаи, Димостенис Карацас, Бруно Лепри, Нику Себе.
ACM MM 2020. [PDF]

GAN с двойным вниманием для синтеза семантических изображений.
Хао Тан, Сун Бай, Нику Себе.
ACM MM 2020. [PDF] [Github]

От дизайнерского эскиза к реальной одежде: перевод непринужденного имиджа моды.
Yu Han, Shuai Yang, Wenjing Wang, Jiaying Liu.
ACM MM 2020. [PDF] [Проект]

Обучение карикатуре с помощью семантического преобразования формы.
Вэньцин Чу, Вэй-Чи Хунг, И-Сюань Цай, Ю-Тин Чанг, Ицзюнь Ли, Дэн Цай, Мин-Сюань Ян.
IJCV 2020. [PDF]

Синтез мультипликационного видео на основе глубоких набросков.
Сяоюй Ли, Бо Чжан, Цзин Ляо, Педро В. Сандер.
arxiv 2020. [PDF]

Кодирование в стиле: кодировщик StyleGAN для преобразования изображения в изображение.
Элад Ричардсон, Юваль Алалуф, Ор Паташник, Йотам Ницан, Янив Азар, Став Шапиро, Даниэль Коэн-Ор.
arxiv 2020. [PDF]

Переведите области лица, которые вам нравятся, с помощью нормализации по регионам.
Вэньшуан Лю, Вэньдин Чен, Линьлинь Шэнь.
arxiv 2020. [PDF]

Неконтролируемое создание мультимодального стилизованного контента.
Омри Сендик, Дани Лищински, Даниэль Коэн-Ор.
СИГГРАФ 2020.[PDF] [Документы SIGGRAPH 2020 в Интернете]

MichiGAN: Генерация изображений волос с несколькими входами для редактирования портретов.
Zhentao Tan, Menglei Chai, Dongdong Chen, Jing Liao, Qi Chu, Lu Yuan, Сергей Туляков, Nenghai Yu.
SIGGRAPH 2020. [PDF]

DCMIT: Неконтролируемое многодоменное мультимодальное преобразование изображения в изображение с явным распутыванием, ограниченным доменом.
Weihao Xia, Yujiu Yang, Jing-Hao Xue.
Нейронные сети 2020.[PDF]

Создание реалистичного говорящего лица с сохранением идентичности.
Санджана Синха, Сандика Бисвас, Броджешвар Бховмик.
IJCNN 2020. [PDF]

Доменный мост для непарного преобразования изображения в изображение и неконтролируемой адаптации домена.
Фабио Пиццати, Рауль де Шаретт, Микела Заккария, Пьетро Черри.
WACV 2020. [PDF]

U-GAT-IT: неконтролируемые генерирующие сети внимания с адаптивной нормализацией уровня-экземпляра для преобразования изображения в изображение.
Чунхо Ким, Минджэ Ким, Хену Кан, Кванхи Ли.
ICLR 2020. [PDF] [Официальный Tensorflow] [Pytorch] [photo2cartoon] [Morph UGATIT]

GANILLA: Генеративные состязательные сети для перевода изображения в иллюстрацию.
Самет Хиксонмез, Нермин Самет, Эмре Акбас, Пинар Дуйгулу.
Image and Vision Computing 2020. [PDF] [Github]

Преобразование изображения в изображение с текстовыми подсказками.
Боуэн Ли, Сяоцзюань Ци, Филип Х.С. Торр, Томас Лукасевич.
arxiv 2020. [PDF]

CLADE: переосмысление пространственно-адаптивной нормализации.
Чжентао Тан, Дондун Чен, Ци Чу, Менглей Чай, Цзин Ляо, Минмин Хэ, Лу Юань, Нэнхай Юй.
arxiv 2020. [PDF]

Непарный перевод фото в мангу на основе методологии рисования манги.
Хао Су, Цзяньвэй Ню, Сюэфэн Лю, Цинфэн Ли, Цзяхэ Цуй, Цзи Ван.
arxiv 2020. [PDF]

TriGAN: преобразование изображения в изображение для адаптации домена с множеством источников.
Субханкар Рой, Александр Сиарохин, Энвер Сангинето, Нику Себе, Элиза Риччи.
arxiv 2020. [PDF]

Многоканальные сети GAN с выбором внимания для управляемого преобразования изображения в изображение.
Хао Тан, Дэн Сюй, Ян Ян, Джейсон Дж. Корсо, Филип Х.С. Торр, Нику Себасти.
arxiv 2020. (Расширенная версия SelectionGAN, опубликованная в CVPR2019)
[PDF]
[Githtub]

CDGAN: Циклические дискриминативные порождающие состязательные сети для преобразования изображения в изображение.
Канчарагунта Кишан Бабу, Шив Рам Дубей.
arxiv 2020. [PDF]

На пути к неконтролируемому преобразованию изображения в изображение с нулевым кадром.
Юаньци Чен, Сяомин Юй, Шан Лю, Ге Ли.
arxiv 2020. [PDF]

Улучшение распутывания стиля и содержимого при преобразовании изображения в изображение.
Авив Габбай, Йедид Хошен.
arxiv 2020. [PDF] [Проект]

MCMI: многоцикловая трансляция изображений с взаимными информационными ограничениями.
Сян Сюй, Мегха Навхал, Грег Мори, Манолис Савва.
arixv 2020. [PDF]

Создание городских сцен будущего посредством синтеза транспортных средств.
Алессандро Симони, Лука Бергамини, Андреа Палацци, Симоне Кальдерара, Рита Куккьяра.
arxiv 2020. [PDF]

Трансляция аналогового изображения для создания тумана.
Руи Гонг, Дэнсинь Дай, Юхуа Чен, Вэнь Ли, Люк Ван Гул.
arxiv 2020. [PDF]

MatchGAN: Самоконтролируемая полууправляемая условно-генеративная состязательная сеть.
Цзяцзе Сун, Бинод Бхаттарай, Тэ-Гюн Ким.
arxiv 2020. [PDF] [Github]

TUNIT: переосмысление действительно неконтролируемого преобразования изображения в изображение.
Кёнджун Бэк, Юнджей Чой, Ёнджунг У, Джеджун Ю, Хёнджунг Шим.
arxiv 2020. [PDF] [Github]

Захватывайте как хотите.
Чен Гао, Си Лю, Ран Хэ, Шуйчэн Янь, Бо Ли.
arxiv 2020. [PDF]

2019

NeurIPS 2019

[список принятых документов]

Преобразование изображения в изображение с несколькими отображениями посредством обучения распутыванию. [PDF]
Сяомин Ю, Юаньци Чен, Шан Лю, Томас Ли, Ге Ли.

Потоковое преобразование изображения в изображение с распутыванием элементов. [PDF]
Рухо Кондо, Кейсуке Кавано, Сатоши Коиде, Такуро Куцуна.

Явное отделение содержимого изображения от трансляции и поворота с помощью Spatial-VAE. [PDF]
Тристан Беплер, Эллен Чжон, Котаро Келли, Эдвард Бриньоле, Бонни Бергер. *

Обучение прогнозированию условных сверток от макета к изображению для синтеза семантических изображений. [PDF]
Сихуэй Лю, Гоцзюнь Инь, Цзин Шао, Ван Сяоган, Ли Хуншэн.

ICCV 2019

[список принятых документов]

Tex2Shape: Детальная геометрия полного человеческого тела из одного изображения. [PDF]
Тимо Алльдик, Жерар Понс-Молл, Кристиан Теобальт, Маркус Магнор.

Прямая трансляция параметров для автоматического создания игрового персонажа. [PDF]
Тяньян Ши, И Юань, Чанцзе Фань, Чжэнся Цзоу, Чжэньвэй Ши, Юн Лю.

Изучение фиксированных точек в генерирующих состязательных сетях: от преобразования изображения в изображение до обнаружения и локализации заболеваний. [PDF]
Md Mahfuzur Rahman Siddiquee, Zongwei Zhou, Nima Tajbakhsh, Ruibin Feng, Michael B. Gotway, Yoshua Bengio, Jianming Liang.

Интерактивный эскиз и заливка: преобразование многоклассового эскиза в изображение. [PDF]
Арнаб Гош, Ричард Чжан, Пунит К. Докания, Оливер Ван, Алексей А.Эфрос, Филип Х. С. Торр, Эли Шехтман.

Deep CG2Real: преобразование из синтетического в реальное посредством распутывания изображений. [PDF]
Сай Би, Калян Сункавалли, Федерико Перацци, Эли Шехтман, Владимир Г. Ким, Рави Рамамурти.

Коэволюционное сжатие для трансляции непарных изображений. [PDF]
Хань Шу, Юньхэ Ван, Сюй Цзя, Кай Хан, Хантинг Чен, Чунцзин Сюй, Ци Тянь, Чанг Сюй.

Сим-параметризованный динамический вывод для трансляции изображений смешанной области. [PDF]
Симён Чанг, Парк Сонук, Джон Ян, Ноджун Квак.

RelGAN: многодоменное преобразование изображения в изображение с помощью относительных атрибутов. [PDF]
По-Вей Ву, Ю-Цзин Линь, Че-Хан Чанг, Эдвард Ю. Чанг, Ши-Вей Ляо.

ADSPM: Атрибутное спонтанное движение при трансляции непарных изображений. [PDF] [Github]
Ruizheng Wu, Xin Tao, Xiaodong Gu, Xiaoyong Shen, Jiaya Jia.

Танцуют все сейчас. [PDF]
Кэролайн Чан, Шири Гиносар, Тинхуэй Чжоу, Алексей А. Эфрос.

Мультимодальный перенос стиля через графические обрезки. [PDF]
Юлунь Чжан, Чен Фанг, Илинь Ван, Чжаовэнь Ван, Чжэ Линь, Юнь Фу, Цзимей Ян.

Закрытое решение для универсального переноса стиля. [PDF]
Мин Лу, Хао Чжао, Анбанг Яо, Южун Чен, Фэн Сюй, Ли Чжан.

Управляемый перевод изображения в изображение с двунаправленным преобразованием элементов. [PDF]
Бадур Аль-Бахар, Цзя-Бинь Хуанг.

FUNIT: неконтролируемое преобразование изображения в изображение по нескольким кадрам. [PDF]
Мин-Ю Лю, Сюнь Хуанг, Арун Малля, Теро Каррас, Тимо Айла, Яакко Лехтинен, Ян Каутц.

InGAN: захват и перенацеливание «ДНК» естественного изображения. [PDF]
Ассаф Шохер, Шай Багон, Филипп Изола, Михал Ирани.

Liquid Warping GAN: унифицированная структура для имитации движения человека, передачи внешнего вида и синтеза новых представлений. [PDF]
Вэнь Лю, Чжисинь Пяо, Цзе Минь, Вэньхань Луо, Линь Ма, Шэнхуа Гао.

SMIT: стохастическое преобразование изображения в изображение с несколькими метками.
Андрес Ромеро, Пабло Арбелаес, Люк Ван Гул, Раду Тимофте.
ICCV Workshops 2019. [PDF] [Github]

CVPR 2019

[список принятых документов]

CollaGAN: совместная GAN для импутации отсутствующих данных изображения.
Донгук Ли, Чун Ён Ким, Вон-Джин Мун, Чон Чоль Йе.
CVPR 2019. [PDF]

Скрытое масштабирование фильтра для мультимодального неконтролируемого преобразования изображения в изображение. [PDF]
Язид Альхарби, Нил Смит, Питер Вонка.

Внимание! Передача стилей при помощи нескольких штрихов. [PDF]
Юань Яо, Цзяньцян Рен, Сюаньсун Се, Вейдун Лю, Юн-Цзинь Лю, Цзюнь Ван.

Текстурированные нейронные аватары. [PDF]
Александра Шишея, Егор Захаров, Кара-Али Алиев, Ренат Баширов, Егор Бурков, Карим Искаков, Алексей Ивахненко, Юрий Малков, Игорь Пасечник, Дмитрий Ульянов, Александр Вахитов, Виктор Лемпицкий.

Гомоморфная интерполяция скрытого пространства для непарного преобразования изображения в изображение. [PDF] [Github]
Ин-Конг Чен, Сяоган Сю, Чжуотао Тянь, Цзяя Цзя.

Многоканальный GAN выбора внимания с каскадным семантическим управлением для трансляции перекрестных изображений. [PDF]
Хао Тан, Дан Сю, Нику Себе, Янчжи Ван, Джейсон Дж. Корсо, Ян Ян.

TraVeLGAN: преобразование изображения в изображение с помощью векторного обучения трансформации. [PDF]
Мэтью Амодио, Смита Кришнасвами.

ReversibleGAN для преобразования изображения в изображение с эффективным использованием памяти. [PDF]
Тихо Ф.А. ван дер Аудераа, Даниэль Э. Уорролл.

Преобразование изображения в изображение с помощью групповой трансформации глубокого отбеливания и окрашивания. [PDF] [Github]
Вонун Чо, Сонха Чой, Дэвид Китэ Парк, Инкю Шин, Джагуль Чу.

На пути к визуальному переводу функций. [PDF]
Цзе Ху, Жунжун Цзи, Хун Лю, Шэнчуань Чжан, Чэн Дэн, Ци Тянь.

На пути к преобразованию изображения в изображение на уровне экземпляра. [PDF]
Чжицян Шен, Минъян Хуанг, Цзяньпин Ши, Сянъян Сюэ, Томас С. Хуанг.

Art2Real: раскрытие реальности произведений искусства с помощью семантически-ориентированного преобразования изображения в изображение. [PDF]
Маттео Томей, Марселла Корниа, Лоренцо Баральди, Рита Куккьяра.

TransGaGa : Неконтролируемое преобразование изображения с учетом геометрии в изображение. [PDF] [arxiv] [проект]
Уэйн Ву, Кайди Цао, Ченг Ли, Чен Цянь, Чен Чейндж Лой.

ICLR 2019

[список принятых документов]

Чувствительные к разнообразию условно генерирующие состязательные сети. [PDF]
Дингдон Ян, Сынхун Хонг, Юнсок Чан, Тяньчен Чжао, Хунлак Ли.

InstaGAN: преобразование изображения в изображение с учетом экземпляров. [PDF] [Github]
Сангу Мо, Минсу Чо, Джину Шин.

Гармонический непарный преобразователь изображения в изображение. [PDF]
Руи Чжан, Томас Пфистер, Цзя Ли.

Локальное преобразование изображения в изображение через пиксельную адаптивную нормализацию экземпляров Highway. [PDF]
Вонун Чо, Сынхван Чой, Парк Джуну, Парк Дэвида Китэ, Тао Цинь, Джагуль Чу.

EG-UNIT: Образцовый управляемый неконтролируемый преобразование изображения в изображение с семантической согласованностью. [PDF]
Лицянь Ма, Сюй Цзя, Стаматиос Георгулис, Тинне Туйтелаарс, Люк Ван Гул.

Неконтролируемый перевод изображений «один ко многим». [PDF]
Самуэль Лавуа-Маркильдон, Себастьян Лашапель, Миколай Биньковски, Аарон Курвиль, Йошуа Бенджио, Р. Девон Хьельм.

Неконтролируемое преобразование изображения в последовательность с использованием сетей Canvas-Drawer. [PDF]
Кевин Франс, Чин-И Ченг.

Неконтролируемый преобразование видео в видео. [PDF]
Дина Башкирова, Бен Усман, Катя Саенко.

AAAI 2019

Использование преобразования изображения в изображение временного ряда для расширения диапазона анализа местообитаний диких животных. [PDF]
Руобин Чжэн, Цзэ Луо, Баопин Янь.

Управляемый перевод изображения в видео: пример создания мимики. [PDF]
Лицзе Фань, Вэньбин Хуан, Чжуан Гань, Цзюньчжоу Хуан, Бокинг Гун.

OT-CycleGAN: Управление однозначным отображением в CycleGAN с помощью оптимального транспорта. [PDF]
Лу Гуаньсун, Чжимин Чжоу, Сун Юйюань, Кан Рен, Юн Юй.

Журнал 2019

DosGAN: Исследование явного надзора за доменом для скрытого распутывания пространства при непарном преобразовании изображения в изображение.
Цзяньсинь Линь, Чжибо Чен, Инцэ Ся, Сен Лю, Тао Цинь, Цзебо Ло.
TPAMI 2019. [PDF] [Github]

DRIT ++: преобразование разнообразных изображений в изображения с помощью распутанных представлений.
Синь-Ин Ли, Хун-Ю Цзэн, Ци Мао, Цзя-Бинь Хуан, Ю-Дин Лу, Маниш Сингх, Мин-Сюань Ян.
IJCV 2019. [PDF] [Проект] [Github]

Маскированная линейная регрессия для изучения локальных рецептивных полей для синтеза мимики.
Назар Хан, Арбиш Акрам, Ариф Махмуд, Сания Ашраф, Кашиф Муртаза.
IJCV 2019. [PDF] [Github]

Покажи, посети и переведи: неконтролируемый перевод изображений с саморегулированием и вниманием.
Чао Ян, Тэхван Ким, Руичжэ Ван, Хао Пэн, К.-К. Джей Куо.
TIP 2019. [PDF]

AttGAN: изменение атрибутов лица путем изменения только того, что вы хотите.
Zhenliang He, Wangmeng Zuo, Meina Kan, Shiguang Shan, Xilin Chen.
TIP 2019. [PDF] [Github]

Прочие 2019

VR Анимация лица с помощью многоэкранного перевода изображений.
Ши-Эн Вэй, Джейсон Сараги, Томас Саймон, Адам В. Харли, Стивен Ломбарди, Михал Пердок, Александр Хайпс, Давэй Ван, Эрнан Бадино, Ясер Шейх.
SIGGRAPH 2019. [PDF]

Стилизация видео на примере.
Ондржей Ямришка, Шарка Сохорова, Ондржей Текслер, Михал Лукач, Якуб Фишер, Джингван Лу, Эли Шехтман, Даниэль Сикора.
SIGGRAPH 2019. [PDF]

VR Анимация лица с помощью многоэкранного перевода изображений.
Ши-Эн Вэй, Джейсон Сараги, Томас Саймон, Адам В. Харли, Стивен Ломбарди, Михал Пердок, Александр Хайпс, Давэй Ван, Эрнан Бадино, Ясер Шейх.
СИГГРАФ 2019.[PDF]

C2-GAN: Цикл в цикле создания состязательных сетей для генерации изображений на основе ключевых точек.
Хао Тан, Дан Сю, Гаоуэн Лю, Вэй Ван, Нику Себе, Ян Ян.
ACM MM 2019. [PDF] [Проект] [Github]

На пути к автоматическому прямому переводу.
Праджвал Ренукананд, Рудрабха Мукхопадхьяй, Джерин Филип, Абхишек Джха, Винай Намбудири и К. Джавахар.
ACM MM 2019. [PDF] [Github] [Project]

Сохранение семантической и временной согласованности для непарного преобразования видео в видео.
Kwanyong Park, Sanghyun Woo, Dahun Kim, Donghyeon Cho, In So Kweon.
ACM MM 2019. [PDF]

Mocycle-GAN: преобразование непарного видео в видео.
Ян Чен, Инвэй Пань, Тин Яо, Синмей Тянь, Тао Мэй.
ACM MM 2019. [PDF]

Обдуманное обучение для преобразования изображения в изображение.
Тяньюй Хэ, Инцэ Ся, Цзяньсинь Линь, Сюй Тан, Ди Хэ, Тао Цинь, Чжибо Чен.
IJCAI 2019. [PDF]

RL-GAN: передача обучения для связанных задач обучения с подкреплением посредством преобразования изображения в изображение.
Шани Гамриан, Йоав Гольдберг.
ICML 2019. [список принятых документов] [PDF] [Дополнительный PDF-файл] [Github]

CartoonRenderer: переводчик мультистилевых изображений мультфильмов на основе экземпляров.
Yugang Chen, Muchun Chen, Chaoyue Song, Bingbing Ni.
Международная конференция по мультимедийному моделированию (MMM2020). [PDF]

AttentionGAN: Генеративные состязательные сети, ориентированные на внимание, для неконтролируемого преобразования изображения в изображение.
Хао Тан, Дан Сюй, Нику Себе, Ян Ян.
IJCNN 2019. [Github]

Преобразование изображения в изображение с регуляризацией многопутевого согласования.
Цзяньсинь Линь, Инцэ Ся, Ицзюнь Ван, Тао Цинь, Чжибо Чен.
IJCAI 2019. [PDF]

CrossNet: скрытая перекрестная согласованность для перевода непарных изображений.
Омри Сендик, Дани Лищински, Даниэль Коэн-Ор.
WACV, 2020. [PDF]

DeepHist: дифференцируемые слои гистограммы стыков и цветовой гистограммы для преобразования изображения в изображение.
Мор Ави-Аарон, Ассаф Арбель, Тэмми Риклин Равив.
arxiv 2019. [PDF]

Асимметричные генеративные состязательные сети для преобразования изображения в изображение.
Хао Тан, Дан Сю, Хун Лю, Нику Себе.
arxiv 2019 (расширение ACCV 2018) [PDF] [GitHub]

PPN2V: полностью неконтролируемый вероятностный Noise2Void.
Мангал Пракаш, Манан Лалит, Павел Томанчак, Александр Крулл, Флориан Джуг.
arxiv 2019.[PDF] [GitHub] [MPI-CBG: Институт молекулярной клеточной биологии и генетики Макса Планка]

Междоменный каскадный глубокий перевод функций.
Орен Кацир, Дани Лищински, Даниэль Коэн-Ор.
arxiv 2019. [PDF]

Неявные пары для повышения непарного преобразования изображения в изображение.
Йифтах Джинджер, Дов Данон, Адар Авербух-Элор, Даниэль Коэн-Ор.
arxiv 2019. [PDF]

PN2V: Probabilistic Noise2Void: Неконтролируемое снижение шума с учетом содержимого.
Александр Крулль, Томас Викар, Флориан Джуг.
arxiv, 3 июня 2019 г. [PDF] [Github]

Преобразование непарных изображений с помощью адаптивной нормализации на основе свертки.
Вонун Чо, Кангёль Ким, Ынъёп Ким, Хёну Дж. Ким, Джегуль Чу.
arxiv 2019. [PDF]

РЕДАКТИРОВАТЬ: Преобразование изображения в изображение с учетом предметной области.
Юаньбинь Фу, Цзяи Ма, Линь Ма, Сяоцзе Го.
arxiv 2019. [PDF] [GitHub]

injectionGAN: На пути к изучению унифицированного отображения «многие ко многим» для трансляции разнообразных изображений.
Венджу Сюй, Шон Кешмири, Гуанхуи Ван.
arxiv 2019. [PDF]

AGUIT: Непарный преобразование изображения в изображение, управляемое атрибутами, с полу-контролируемым обучением.
Синьян Ли, Цзе Ху, Шэнчуань Чжан, Сяопэн Хун, Цисян Е, Чэнлинь Ву, Жунжун Цзи.
arxiv 2019. [PDF] [Github]

До 2018 г.

Преобразование изображения в изображение для адаптации предметной области ..
Зак Мурез, Сохейл Колоури, Дэвид Кригман, Рави Рамамурти, Кюнгнам Ким..
CVPR 2018. [PDF]

StarGAN: Унифицированные генерирующие состязательные сети для многодоменного преобразования изображения в изображение.
Юнджей Чой, Миндже Чой, Мунён Ким, Чон-Ву Ха, Сунгхун Ким, Джегуль Чу.
CVPR 2018. [Github] [PDF]

БЛОК: Неконтролируемые сети преобразования изображения в изображение.
Мин-Ю Лю, Томас Бреуэл, Ян Каутц.
NIPS 2017. [PDF] [Github]

DTN: неконтролируемое создание междоменных изображений.
Янив Тайгман, Адам Поляк, Лиор Вольф.
arxiv 2016. [PDF] [Github]

Сети фейдеров: управление изображениями с помощью скользящих атрибутов.
Гийом Лампле, Нил Зегидур, Николя Усунье, Антуан Бордес, Людовик Денуайе, Марк Аурелио Ранзато.
NIPS 2017. [Github] [PDF]

IcGAN: обратимые условные GAN для редактирования изображений.
Guim Perarnau, Joost van de Weijer, Bogdan Raducanu, Jose M.Альварес.
NIPS 2016 Практикум по обучению соперничеству. [Github] [PDF]

GeneGAN: Преобразование обучающего объекта и подпространство атрибутов из непарных данных.
Шучан Чжоу, Тайхун Сяо, И Ян, Диецяо Фэн, Циньяо Хэ, Вэйран Хэ.
BMVC 2017. [Github] [PDF]

Face-Age-cGAN: старение лица с помощью условно-генеративных состязательных сетей.
Григорий Антипов, Моэз Баккуш, Жан-Люк Дюжеле.
ICIP 2017.[PDF]

DualGAN: двойное обучение без учителя для преобразования изображения в изображение.
Цзили Йи, Хао Чжан, Пинг Тан, Минлунь Гун.
ICCV 2017. [Github] [PDF]

DiscoGAN: обучение обнаружению междоменных отношений с генерирующими противоборствующими сетями.
Тэксу Ким, Мунсу Ча, Хёнсу Ким, Чон Квон Ли, Дживон Ким.
ICML 2017. [Github] [PDF]

CycleGAN: Непарное преобразование изображения в изображение с использованием согласованных с циклом состязательных сетей.
Джун-Ян Чжу, Парк Тэсун, Филипп Изола, Алексей А. Эфрос.
ICCV 2017. [Проект] [Github] [pytorch-CycleGAN-and-pix2pix] [PDF]

BicycleGAN: на пути к мультимодальному преобразованию изображения в изображение.
Джун-Ян Чжу, Ричард Чжан, Дипак Патхак, Тревор Даррелл, Алексей А. Эфрос, Оливер Ван, Эли Шехтман.
NIPS 2017. [PDF] [Проект] [Github] [TensorFlow]

pix2pix: преобразование изображения в изображение с использованием условных состязательных сетей.
Филипп Изола, Цзюнь-Ян Чжу, Тинхуэй Чжоу, Алексей А. Эфрос.
CVPR 2017. [Проект] [Github] [PDF]

Лицензия

Эта работа находится под международной лицензией Creative Commons Attribution 4.0.

фото кредит — французский перевод — Linguee

Мы просим только сохранять конфиденциальность паролей и передавать их перечисленным лицам th a t фото кредит b e g .

Commissiondelac … nationale.gc.ca

Nous requireons toutefois que les mots dene demeurent confidentiels et que les rfrences Photographyiques упоминает как источник.

Commissiondelac … nationale.gc.ca

фото кредит : R например, ional Council of […]

Бордовый

cr-bourgogne.com

crdit фото: Co nsei l r gi onal de […]

Бургундия

cr-bourgogne.com

Если предоставлена ​​фотография, также предоставляется подпись a n d фото кредит ( w ho сделал снимок).

dsancr.com

S i с фотографиями l ‘article, une lgende e t un gnrique (qui a pri s la photo) d 944 o …]

tre fournis.

dsancr.com

Фото: : D или г Аллен Команда […]

демонстрирует свои навыки оказания первой помощи на Играх.

nss-snrs.gc.ca

Фотография c наш toisie de Doug Al len Une […]

quipe встретил en vidence ses comptences родственников aux premiers soins aux Jeux.

nss-snrs.gc.ca

Фотографии размером 8,5 x 11 дюймов включают белую рамку, в которую вписано официальное название или

[…]
титулы, а также t h e фото кредит .

gg.ca

L’un comprend un cadre blanc de format 8,5 x 11 pouces dans lequel sont inscrits le titre

[…]
ainsi qu e la упомянуть из источника .

gg.ca

Фото: : D av id Schafer […]

добровольцев из Манитобы работают вместе во время учений.

nss-snrs.gc.ca

Фотография c ou rtoisie de Da vid Schafer […]

Des bnvoles du Manitoba travaillent ensemble lors de l’exercice.

нсс-снр.gc.ca

подчиняется идентичности архитектора «Art & Build Architectes» в

[…]

Брюссель и «Denu & Paradon Architectes» в Страсбурге упоминаются в

[…]
дополнение к Совету ЕС ro p e фото кредит

coe.int

le nom des architectes Art & Build

[…]

Architectes Bruxelles et Denu и Paradon Architectes Strasbourg devra tre

[…]
упомянуть n , en plu s d u crdit C ons eil de l ‘E urope

coe.int

A Solar Energy Powered H или s e Фотография предоставлена ​​ : R ob ert Mailloux, La Presse […]

11.09.2009 -Узнайте, как один из наших фотоэлектрических

[…]
Специалист по энергетике

использует солнечную энергию для питания своего дома на одну семью.

canmetenergy-c … an-rncan.gc.ca

Une m ai son alimente par l ‘nergie s olai re Фотография: Robe rt Mailloux, […]

La Presse 11 сентября 2009 — Voyez comment l’un de nos spcialistes

[…]

en nergie photovoltaque tyre profit de l’nergie solaire pour alimenter sa rsidence unifamiliale.

canmetenergy-c … an-rncan.gc.ca

Совет евро pe Фотография предоставлена ​​ Di sclaimer

coe.int

Conseil de l ‘E urope Crdit photos Clau se d e non-responsabilit

coe.int

Генеральный секретарь ЮНКТАД Супачай Панитчпакди во время ЮНКТАД

[…]
XII Заключительная пленка ry Фото : D . Anobil / ISD

unctad12.org

Участники de la table ronde thmatique 1 sur la Mondialisation, dveloppement et

[…]
rduction de la pauvre t — Crdit p hot o: D. An ob il / ISD

unctad12.org

Фотография предоставлена ​​ : C и adian Light Source Inc., Университет […]

Саскачеван

wd-deo.gc.ca

Фотография, av ec la pe rm iss io n de le Центр ca nadie n [район]

синхротрон, Университет Саскачевана.

wd-deo.gc.ca

Во втором формате фотографии имеют размер 8 x 10 дюймов и должны использоваться вместе с

[…]
дополнительная подпись a n d фото кредит a s s e отдельный текст.

gg.ca

L’autre est de format 8 x 10 pouces, sans titre et al.

[…]

от источника, et peut tre utilis lorsqu’une lgende et la упоминание о

[…]
исходный код mp agnen t l a фото d и un t ex te смежные.

gg.ca

Point Pleasant Park в Галифаксе, после

[…]
Ураган Хуан (2 00 3 ) Фотография предоставлена ​​ : P ar ks и Open […]

Spaces, HRM

часы-одуванчики.около

Parc de Point Pleasant, Галифакс, aprs le pass de

[…]
l’ourag an Juan (2 003 ) Фото: Par ks и O pe n Spaces, HRM

dandelionwatch.ca

C ov e r Фотография предоставлена ​​ : C ol lection of […]

Верховный суд США

america.gov

Crdit pho tog raph iq ue pour la couverture […]

: Collection de la Cour suprme des tats-Unis.

america.gov

( Фотография предоставлена ​​ : C час истофер Хеггтвейт, […]

Департамент финансов Канады)

фин.gc.ca

( Photo gr acieuset de Chri st opher […]

Heggtveit, министерство финансов Канады)

fin.gc.ca

Передняя pa g e фото предоставлено ( m od ified): […]

Александр Константинов.

Publications.gc.ca

S или rce d e l фото ( mod ifie ) de la couverture […]

: Александр Константинов.

Publications.gc.ca

Когда ученики создадут свои иллюстрации, спросите

[…]
их wri te a фото кредит t h at включает […]

название, дата, когда фотография была сделана, описание фотографии, объект и автор фотографии.

nac-cna.ca

Une fois que les lves ont cr leurs иллюстрации, demandez-leur de rdiger la упоминание об источнике, указывающем на название, la date, la

[…]
описание на de l фото, le pe rs onnage et […]

le nom de l’auteur.

nac-cna.ca

Рисунок 16: Западная жаба (Anaxyrus boreas) с радиопередачей tt e r Фотография предоставлена ​​ : C . Browne

pc.gc.ca

Рисунок 16: Crapaud de l’Ouest (Anaxyrus boreas) avec metteur radio Источник: C.Браун

pc.gc.ca

( Фотография предоставлена ​​ : C en ter для Великих озер […]

и водные науки)

dfo-mpo.gc.ca

( Изображение четыре nie par : Ce ntre p наши les […]

Grands Lacs et les Sciences Aquatiques)

dfo-mpo.gc.ca

Фотография предоставлена ​​

dfo-mpo.gc.ca

Заказчик: COVABAR

dfo-mpo.gc.ca

Фотография предоставлена ​​ i s r equired (имя фотографа, […]

с местонахождением и годом).

km.fao.org

Le nom du photographe, la localization et

[…]
l’ann e de l Фотографии ont n cessaires […]

pou r ajouter d e nouvelles images la banque.

km.fao.org

Фотография предоставлена ​​ : T he Властелин колец: […]

Возвращение короля

nrc-cnrc.gc.ca

Photo gra ci euset: Le S ei gneur […]

des anneaux: le retour du roi

nrc-cnrc.gc.ca

Фотография предоставлена ​​ : L im agrain, Vilmorin […]

Clause & Cie, Maurice Bassin, Pierre Bonnefoy, Jrme Chatin, Denis Pourcher, Pierre Soissons

limagrain.com

Crdit фото: L имидж дождь , Вильморин […]

Clause & Cie, Maurice Bassin, Pierre Bonnefoy, Jrme Chatin, Denis Pourcher, Pierre Soissons

limagrain.com

( Фотография предоставлена ​​ : B ri an Buchsdruecker […]

для Школы государственной политики.

fin.gc.ca

( Фотография g rac ieuset d e Bri an Buchsdruecker […]

для публичной политики)

fin.gc.ca

Пожалуйста, уважайте их работу, включив их nam e ( a фото кредит w i ll появляются при загрузке фотографии) при использовании […]

этих изображений.

banqueimages.valrhona.com

Merci de respecter leur travail en

[…]
indiquant le ur no m ( crdit ph oto qu i apparait lorsque vous tlcharge z la photo) l или s de l s фото .

banqueimages.valrhona.com

Фото: : T he Public Archives Of Canada

www2.parl.gc.ca

Источник de la фотография : Arc ульи p ублики […]

du Canada

www2.parl.gc.ca

Фото: : P или черты Барри […]

Фитцджеральд, Международные информационные программы, Государственный департамент

америка.gov

Фотографии de Bar ry F it zgerald, […]

Bureau des Programs d’information internationale du dpartement d’tat des tats-Unis.

america.gov

Фото: : C или poral Shawn […]

М. Кент, Служба визуализации пластов.

cfpsa.com

Фото : C apo ral S га wn M.Кент, […]

Служба создания образов.

cfpsa.com

Фото: : D FO / Provincial Airlines

ccga-gcac.com

Фотография g ra cieuset du MPO / Tr и спортсменов […]

Ариенс Провинсио

ccga-gcac.com

A l l фото предоставлено a t U Конференция Организации Объединенных Наций […]

Центр: Даниэль Тшин

unaids.org

T или tes le s фото a u Cent re d e конференции […]

des Nations Unies: Даниэль Тшин

unaids.org

Как разработать Pix2Pix GAN для преобразования изображения в изображение

Последнее обновление 18 января 2021 г.

Генеративная состязательная сеть Pix2Pix, или GAN, представляет собой подход к обучению глубокой сверточной нейронной сети для задач преобразования изображения в изображение.

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

В этом руководстве вы узнаете, как разработать генерирующую состязательную сеть Pix2Pix для преобразования изображения в изображение.

После прохождения этого руководства вы будете знать:

  • Как загрузить и подготовить спутниковое изображение в набор данных преобразования изображений в изображения Google Maps.
  • Как разработать модель Pix2Pix для перевода спутниковых фотографий в изображения карты Google.
  • Как использовать окончательную модель генератора Pix2Pix для перевода специальных спутниковых изображений.

Начните свой проект с моей новой книги «Генеративные состязательные сети с Python», включая пошаговые руководства и файлы исходного кода Python для всех примеров.

Приступим.

  • Обновлено январь / 2021 : Обновлено, поэтому замораживание слоев работает с нормой партии.

Как разработать генерирующую состязательную сеть Pix2Pix для преобразования изображения в изображение
Фотография сделана Европейской южной обсерваторией, некоторые права защищены.

Обзор учебного пособия

Это руководство разделено на пять частей; их:

  1. Что такое Pix2Pix GAN?
  2. Набор данных преобразования изображений со спутника на карту
  3. Как разработать и обучить модель Pix2Pix
  4. Как переводить изображения с помощью модели Pix2Pix
  5. Как перевести карты Google на спутниковые изображения

Что такое Pix2Pix GAN?

Pix2Pix — это модель генерирующей состязательной сети или GAN, разработанная для универсального преобразования изображения в изображение.

Подход был представлен Филипом Изола и др. в своей статье 2016 года под названием «Преобразование изображения в изображение с помощью условно-состязательных сетей», представленной на CVPR в 2017 году.

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

Модель Pix2Pix — это тип условного GAN, или cGAN, где создание выходного изображения зависит от входа, в данном случае исходного изображения. Дискриминатору предоставляется как исходное изображение, так и целевое изображение, и он должен определять, является ли цель правдоподобным преобразованием исходного изображения.

Генератор обучается через состязательную потерю, что побуждает генератор генерировать правдоподобные изображения в целевой области. Генератор также обновляется с помощью потерь L1, измеренных между сгенерированным изображением и ожидаемым выходным изображением. Эта дополнительная потеря побуждает модель генератора создавать правдоподобные переводы исходного изображения.

Pix2Pix GAN был продемонстрирован на ряде задач преобразования изображения в изображение, таких как преобразование карт в спутниковые фотографии, черно-белые фотографии в цветные и эскизы продуктов в фотографии продуктов.

Теперь, когда мы знакомы с Pix2Pix GAN, давайте подготовим набор данных, который мы можем использовать для преобразования изображения в изображение.

Хотите разрабатывать сети GAN с нуля?

Пройдите бесплатный 7-дневный ускоренный курс по электронной почте (с образцом кода).

Нажмите, чтобы зарегистрироваться, а также получите бесплатную электронную версию курса в формате PDF.

Загрузите БЕСПЛАТНЫЙ мини-курс

Набор данных преобразования изображений со спутника на карту

В этом уроке мы будем использовать так называемый набор данных « maps », который использовался в статье Pix2Pix.

Это набор данных, состоящий из спутниковых снимков Нью-Йорка и соответствующих страниц с картами Google. Проблема перевода изображений связана с преобразованием спутниковых фотографий в формат карт Google или, наоборот, изображений карт Google в спутниковые фотографии.

Набор данных представлен на веб-сайте pix2pix и может быть загружен в виде 255-мегабайтного zip-файла.

Загрузите набор данных и распакуйте его в текущий рабочий каталог. Это создаст каталог под названием « карты » со следующей структурой:

карты
├── поезд
└── val

карты

├── поезд

└── val

Папка поезда содержит 1097 изображений, тогда как набор данных проверки содержит 1099 изображений.

Изображения имеют цифровое имя файла и находятся в формате JPEG. Каждое изображение имеет ширину 1200 пикселей и высоту 600 пикселей и содержит как спутниковое изображение слева, так и изображение Google Maps справа.

Пример изображения из набора данных Maps, включая изображение со спутника и Google Maps.

Мы можем подготовить этот набор данных для обучения модели Pix2Pix GAN в Keras. Мы просто будем работать с изображениями в наборе обучающих данных. Каждое изображение будет загружено, масштабировано и разделено на элементы спутниковой карты и карты Google.В результате получится 1097 пар цветных изображений с шириной и высотой 256 × 256 пикселей.

Функция load_images () ниже реализует это. Он перечисляет список изображений в заданном каталоге, загружает каждое с целевым размером 256 × 512 пикселей, разбивает каждое изображение на элементы спутника и карты и возвращает массив каждого из них.

# загружаем все изображения из каталога в память
def load_images (путь, размер = (256,512)):
src_list, tar_list = список (), список ()
# перечисляем имена файлов в каталоге, предполагаем, что все изображения
для имени файла в listdir (путь):
# загрузить и изменить размер изображения
пикселей = load_img (путь + имя файла, target_size = размер)
# преобразовать в массив numpy
пикселей = img_to_array (пиксели)
# разделить на спутник и карту
sat_img, map_img = пикселей [:,: 256], пикселей [:, 256:]
src_list.добавить (sat_img)
tar_list.append (map_img)
возврат [asarray (src_list), asarray (tar_list)]

# загрузить все изображения из каталога в память

def load_images (path, size = (256,512)):

src_list, tar_list = list (), list ()

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

для имени файла в listdir (путь):

# загрузить и изменить размер изображения

пикселей = load_img (путь + имя файла, target_size = size)

# преобразовать в массив numpy

пикселей = img_to_array (пикселей)

# разбить на спутник и карту

sat_img, map_img = пикселей [:,: 256], пикселей [:, 256:]

src_list.append (sat_img)

tar_list.append (map_img)

return [asarray (src_list), asarray (tar_list)]

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

Полный пример приведен ниже.

# загружать, разделять и масштабировать набор данных карт, готовый к обучению
из os import listdir
из numpy import asarray
из numpy import vstack
из кераса.preprocessing.image import img_to_array
из keras.preprocessing.image import load_img
из numpy import savez_compressed

# загружаем все изображения из каталога в память
def load_images (путь, размер = (256,512)):
src_list, tar_list = список (), список ()
# перечисляем имена файлов в каталоге, предполагаем, что все изображения
для имени файла в listdir (путь):
# загрузить и изменить размер изображения
пикселей = load_img (путь + имя файла, target_size = размер)
# преобразовать в массив numpy
пикселей = img_to_array (пиксели)
# разделить на спутник и карту
sat_img, map_img = пикселей [:,: 256], пикселей [:, 256:]
src_list.добавить (sat_img)
tar_list.append (map_img)
возврат [asarray (src_list), asarray (tar_list)]

# путь к набору данных
путь = ‘карты / поезд /’
# загрузить набор данных
[src_images, tar_images] = load_images (путь)
print (‘Загружено:’, src_images.shape, tar_images.shape)
# сохранить как сжатый массив numpy
filename = ‘maps_256.npz’
savez_compressed (имя файла, src_images, tar_images)
print (‘Сохраненный набор данных:’, имя файла)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

18

19

20

21

22

23

24

25

26

27

28

29

30

# загрузить, разделить и масштабировать набор данных карт, готовый к обучению

из os import listdir

из numpy import asarray

из numpy import vstack

from keras.preprocessing.image import img_to_array

from keras.preprocessing.image import load_img

from numpy import savez_compressed

# загрузить все изображения из каталога в память

def load_images (path, size = (2) 9000): src_list, tar_list = list (), list ()

# перечислить имена файлов в каталоге, предположим, что все являются изображениями

для имени файла в listdir (путь):

# загрузить и изменить размер изображения

пикселей = load_img (путь + имя файла , target_size = size)

# преобразовать в массив numpy

пикселей = img_to_array (пикселей)

# разделить на спутник и карту

sat_img, map_img = пикселей [:,: 256], пикселей [:, 256:]

src_list.append (sat_img)

tar_list.append (map_img)

return [asarray (src_list), asarray (tar_list)]

# путь к набору данных

path = ‘maps / train /’

#

load dataset6 [src_images, tar_images] = load_images (путь)

print (‘Loaded:’, src_images.shape, tar_images.shape)

# сохранить как сжатый массив numpy

filename = ‘maps_256.npz’

savez, src_images, tar_images)

print (‘Сохраненный набор данных:’, имя файла)

При выполнении примера загружаются все изображения в наборе обучающих данных, суммируются их формы, чтобы убедиться, что изображения были загружены правильно, а затем массивы сохраняются в новый файл с именем maps_256.npz в формате сжатого массива NumPy.

Загружено: (1096, 256, 256, 3) (1096, 256, 256, 3)
Сохраненный набор данных: maps_256.npz

Загружено: (1096, 256, 256, 3) (1096, 256, 256, 3)

Сохраненный набор данных: maps_256.npz

Этот файл можно загрузить позже с помощью функции load () NumPy и получения каждого массива по очереди.

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

# загружаем подготовленный набор данных
из numpy import load
из matplotlib import pyplot
# загрузить набор данных
data = load (‘maps_256.npz’)
src_images, tar_images = данные [‘arr_0’], данные [‘arr_1’]
print (‘Загружено:’, src_images.shape, tar_images.shape)
# сюжет исходных изображений
n_samples = 3
для i в диапазоне (n_samples):
pyplot.subplot (2, n_samples, 1 + i)
pyplot.axis (‘выключено’)
pyplot.imshow (src_images [i] .astype (‘uint8’))
# построить целевое изображение
для i в диапазоне (n_samples):
пиплот.подзаговор (2, n_samples, 1 + n_samples + i)
pyplot.axis (‘выключено’)
pyplot.imshow (tar_images [i] .astype (‘uint8’))
pyplot.show ()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

# загрузить подготовленный набор данных

из numpy import load

из matplotlib import pyplot

# загрузить набор данных

data = load (‘maps_256.npz ‘)

src_images, tar_images = data [‘ arr_0 ‘], data [‘ arr_1 ‘]

print (‘ Loaded: ‘, src_images.shape, tar_images.shape)

# построить исходные изображения

n_samples

для i в диапазоне (n_samples):

pyplot.subplot (2, n_samples, 1 + i)

pyplot.axis (‘off’)

pyplot.imshow (src_images [i] .astype (‘uint8’) ))

# построить целевое изображение

для i в диапазоне (n_samples):

pyplot.subplot (2, n_samples, 1 + n_samples + i)

pyplot.ось (‘off’)

pyplot.imshow (tar_images [i] .astype (‘uint8’))

pyplot.show ()

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

Загружено: (1096, 256, 256, 3) (1096, 256, 256, 3)

Загружено: (1096, 256, 256, 3) (1096, 256, 256, 3)

Также создается график из трех пар изображений, показывающий спутниковые изображения вверху и изображения карты Google внизу.

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

График из трех пар изображений, показывающий спутниковые изображения (вверху) и изображения Google Map (внизу).

Теперь, когда мы подготовили набор данных для перевода изображений, мы можем разработать нашу модель Pix2Pix GAN.

Как разработать и обучить модель Pix2Pix

В этом разделе мы разработаем модель Pix2Pix для перевода спутниковых фотографий в изображения Google Maps.

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

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

Архитектура состоит из двух моделей: дискриминатора и генератора.

Дискриминатор — это глубокая сверточная нейронная сеть, которая выполняет классификацию изображений. В частности, условная классификация изображений. Он принимает как исходное изображение (например, спутниковое фото), так и целевое изображение (например, изображение Google Maps) в качестве входных данных и прогнозирует вероятность того, является ли целевое изображение реальным или поддельным переводом исходного изображения.

Дизайн дискриминатора основан на эффективном воспринимающем поле модели, которое определяет отношение между одним выходом модели и количеством пикселей во входном изображении.Это называется моделью PatchGAN и тщательно спроектировано таким образом, чтобы каждый выходной прогноз модели соответствовал квадрату или фрагменту входного изображения размером 70 × 70. Преимущество этого подхода заключается в том, что одна и та же модель может применяться к входным изображениям разных размеров, например. больше или меньше 256 × 256 пикселей.

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

Функция define_discriminator () ниже реализует модель дискриминатора 70 × 70 PatchGAN в соответствии с дизайном модели в статье. Модель берет два входных изображения, которые объединены вместе, и предсказывает исправление вывода предсказаний. Модель оптимизирована с использованием бинарной кросс-энтропии, и используется взвешивание, так что обновления модели дают половину (0,5) обычного эффекта.Авторы Pix2Pix рекомендуют это взвешивание обновлений модели, чтобы замедлить изменения дискриминатора по сравнению с моделью генератора во время обучения.

# определяем модель дискриминатора
def define_discriminator (image_shape):
# инициализация веса
init = RandomNormal (стандартное отклонение = 0,02)
# вход исходного изображения
in_src_image = Вход (shape = image_shape)
# ввод целевого изображения
in_target_image = Вход (shape = image_shape)
# объединить изображения по каналам
merged = Concatenate () ([in_src_image, in_target_image])
# C64
d = Conv2D (64, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (объединено)
d = LeakyReLU (альфа = 0.2) (г)
# C128
d = Conv2D (128, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)
d = BatchNormalization () (d)
d = LeakyReLU (альфа = 0,2) (d)
# C256
d = Conv2D (256, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)
d = BatchNormalization () (d)
d = LeakyReLU (альфа = 0,2) (d)
# C512
d = Conv2D (512, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)
d = BatchNormalization () (d)
d = LeakyReLU (альфа = 0.2) (г)
# второй последний выходной слой
d = Conv2D (512, (4,4), padding = ‘same’, kernel_initializer = init) (d)
d = BatchNormalization () (d)
d = LeakyReLU (альфа = 0,2) (d)
# вывод патча
d = Conv2D (1, (4,4), padding = ‘same’, kernel_initializer = init) (d)
patch_out = Активация (‘сигмоид’) (d)
# определить модель
model = Модель ([in_src_image, in_target_image], patch_out)
# скомпилировать модель
opt = Адам (lr = 0,0002, beta_1 = 0,5)
model.compile (loss = ‘binary_crossentropy’, optimizer = opt, loss_weights = [0.5])
вернуть модель

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

34

35

36

37

38

# определение модели дискриминатора

def define_discriminator (image_shape):

# инициализация веса

init = RandomNormal (stddev = 0.02)

# исходное изображение input

in_src_image = Input (shape = image_shape)

# целевое изображение input

in_target_image = Input (shape = image_shape)

# объединять изображения по каналам

merged (объединить) (объединить) (объединить) [in_src_image, in_target_image])

# C64

d = Conv2D (64, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (объединено)

d = LeakyReLU (альфа = 0,2) (d)

# C128

d = Conv2D (128, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)

d = BatchNormalization () (d)

d = LeakyReLU (альфа = 0.2) (d)

# C256

d = Conv2D (256, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)

d = BatchNormalization ( ) (d)

d = LeakyReLU (alpha = 0.2) (d)

# C512

d = Conv2D (512, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)

d = BatchNormalization () (d)

d = LeakyReLU (alpha = 0.2) (d)

# второй последний выходной слой

d = Conv2D (512, (4,4), padding = ‘same’, kernel_initializer = init) (d)

d = BatchNormalization () (d)

d = LeakyReLU (alpha = 0.2) (d)

# вывод патча

d = Conv2D (1, (4,4), padding = ‘same’, kernel_initializer = init) (d)

patch_out = Activation (‘sigmoid’) (d)

# определить модель

model = Model ([in_src_image, in_target_image], patch_out)

# compile model

opt = Adam (lr = 0.0002, beta_1 = 0.5)

model.compile (loss = ‘binary_crossentropy’, optimizer = opt, loss_weights = [0,5])

модель возврата

Модель генератора сложнее модели дискриминатора.

Генератор представляет собой модель кодера-декодера, использующую архитектуру U-Net. Модель берет исходное изображение (например, спутниковое фото) и генерирует целевое изображение (например, изображение Google Maps). Для этого сначала используется понижающая дискретизация или кодирование входного изображения до уровня узкого места, а затем повышающая дискретизация или декодирование представления узкого места до размера выходного изображения. Архитектура U-Net означает, что между уровнями кодирования и соответствующими уровнями декодирования добавляются пропускные соединения, образуя U-образную форму.

Изображение ниже проясняет пропускные соединения, показывая, как первый уровень кодера соединяется с последним уровнем декодера и так далее.

Архитектура генератора U-Net модели
, взятая из преобразования изображения в изображение с помощью условно состязательных сетей

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

Функция define_generator () ниже реализует модель генератора кодировщика-декодера U-Net. Он использует вспомогательную функцию define_encoder_block () для создания блоков слоев для кодера и функцию decoder_block () для создания блоков слоев для декодера. В выходном слое используется функция активации tanh, что означает, что значения пикселей в сгенерированном изображении будут в диапазоне [-1,1].

# определить блок кодировщика
def define_encoder_block (layer_in, n_filters, batchnorm = True):
# инициализация веса
init = RandomNormal (stddev = 0.02)
# добавить слой понижающей дискретизации
g = Conv2D (n_filters, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (layer_in)
# условно добавить пакетную нормализацию
если батчнорм:
g = BatchNormalization () (g, обучение = True)
# дырявая активация relu
г = LeakyReLU (альфа = 0,2) (г)
вернуть г

# определяем блок декодера
def decoder_block (layer_in, skip_in, n_filters, dropout = True):
# инициализация веса
init = RandomNormal (стандартное отклонение = 0,02)
# добавить слой с повышающей дискретизацией
g = Conv2DTranspose (n_filters, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (layer_in)
# добавить пакетную нормализацию
g = BatchNormalization () (g, обучение = True)
# условно добавить отсев
если бросил:
g = выпадение (0.5) (g, обучение = True)
# объединить с пропустить соединение
g = Concatenate () ([g, skip_in])
# активация relu
g = Активация (‘relu’) (g)
вернуть г

# определить модель автономного генератора
def define_generator (image_shape = (256,256,3)):
# инициализация веса
init = RandomNormal (стандартное отклонение = 0,02)
# ввод изображения
in_image = Вход (shape = image_shape)
# модель кодировщика
e1 = define_encoder_block (in_image, 64, batchnorm = False)
e2 = define_encoder_block (e1, 128)
e3 = define_encoder_block (e2, 256)
e4 = define_encoder_block (e3, 512)
e5 = define_encoder_block (e4, 512)
e6 = define_encoder_block (e5, 512)
e7 = define_encoder_block (e6, 512)
# бутылочное горлышко, без партии norm и relu
b = Conv2D (512, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (e7)
b = Активация (‘relu’) (b)
# модель декодера
d1 = decoder_block (b, e7, 512)
d2 = decoder_block (d1, e6, 512)
d3 = decoder_block (d2, e5, 512)
d4 = decoder_block (d3, e4, 512, dropout = False)
d5 = decoder_block (d4, e3, 256, dropout = False)
d6 = decoder_block (d5, e2, 128, dropout = False)
d7 = decoder_block (d6, e1, 64, dropout = False)
# выход
g = Conv2DTranspose (3, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d7)
out_image = Активация (‘tanh’) (г)
# определить модель
model = Модель (in_image, out_image)
вернуть модель

1

2

3

4

5

6

7

8

9

10

11

12

13

14

18

19

20

21

22

23

24

25

26

27

28

29

30

34

35

36

37

38

39

40

41

42

43

44

45

46

48

51

52

53

54

55

56

57

58

59

60

61

# определение блока кодера

def define_encoder_block (layer_in, n_filters, batchnorm = True):

# инициализация веса

init = RandomNormal (stddev = 0.02)

# добавить слой понижающей дискретизации

g = Conv2D (n_filters, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (layer_in)

# условно добавить пакетную нормализацию

, если batchnorm:

g = BatchNormalization () (g, training = True)

# активация утечки relu

g = LeakyReLU (alpha = 0,2) (g)

return g

# определить декодер block

def decoder_block (layer_in, skip_in, n_filters, dropout = True):

# инициализация веса

init = RandomNormal (stddev = 0.02)

# добавить уровень передискретизации

g = Conv2DTranspose (n_filters, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (layer_in)

# добавить пакетную нормализацию

g = BatchNormalization () (g, training = True)

# условно добавить выпадение

если выпадение:

g = выпадение (0,5) (g, обучение = True)

# слияние с пропуском соединения

g = Concatenate () () ([g, skip_in])

# повторная активация

g = Activation (‘relu’) (g)

return g

# определение модели автономного генератора

def define_generator (image_shape = ( 256,256,3)):

# инициализация веса

init = RandomNormal (stddev = 0.02)

# image input

in_image = Input (shape = image_shape)

# модель кодировщика

e1 = define_encoder_block (in_image, 64, batchnorm = False)

e2 = define_encoder_block3 =

define_encoder_block (e2, 256)

e4 = define_encoder_block (e3, 512)

e5 = define_encoder_block (e4, 512)

e6 = define_encoder_block (e5, 512)

e7 = define_encoder , без пакетной нормы и relu

b = Conv2D (512, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (e7)

b = Activation (‘relu’ ) (b)

# модель декодера

d1 = decoder_block (b, e7, 512)

d2 = decoder_block (d1, e6, 512)

d3 = decoder_block (d2, e5, 512)

d4 = decoder_block (d3, e4, 512, dropout = False)

d5 = decoder_block (d4, e3, 256, dropout = False)

d6 = decoder_block (d5, e2, 128, dropout = False)

d7 = decoder_block (d6, e1, 64, dropout = False)

# output

g = Conv2DTranspose (3, (4,4), strides = (2,2), padding = ‘same ‘, kernel_initializer = init) (d7)

out_image = Activation (‘ tanh ‘) (g)

# define model

model = Model (in_image, out_image)

return model

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

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

Генератор обновляется посредством взвешенной суммы как состязательных потерь, так и потерь L1, где авторы модели рекомендуют взвешивать 100 к 1 в пользу потерь L1.Это сделано для того, чтобы генератор сильно побуждал генерировать правдоподобные переводы входного изображения, а не просто правдоподобные изображения в целевой области.

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

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

Функция define_gan () ниже реализует это, принимая уже определенные модели генератора и дискриминатора в качестве аргументов и используя функциональный API Keras для их соединения в составную модель. Обе функции потерь указаны для двух выходных данных модели, а веса, используемые для каждого, указаны в аргументе loss_weights функции compile () .

# определить комбинированную модель генератора и дискриминатора для обновления генератора
def define_gan (g_model, d_model, image_shape):
# сделать веса в дискриминаторе необучаемыми
для слоя в d_model.слои:
если не isinstance (слой, BatchNormalization):
layer.trainable = Ложь
# определяем исходное изображение
in_src = Вход (shape = image_shape)
# подключаем исходное изображение ко входу генератора
gen_out = g_model (in_src)
# подключить вход источника и выход генератора к входу дискриминатора
dis_out = d_model ([in_src, gen_out])
# src image как вход, сгенерированное изображение и вывод классификации
model = Модель (in_src, [dis_out, gen_out])
# скомпилировать модель
opt = Адам (lr = 0.0002, beta_1 = 0,5)
model.compile (loss = [‘binary_crossentropy’, ‘mae’], optimizer = opt, loss_weights = [1,100])
вернуть модель

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

# определить комбинированный генератор и модель дискриминатора, для обновления генератора

def define_gan (g_model, d_model, image_shape):

# сделать веса в дискриминаторе необучаемыми

для слоя в d_model.Layers:

if not isinstance (layer, BatchNormalization):

layer.trainable = False

# определить исходное изображение

in_src = Input (shape = image_shape)

# подключить исходное изображение ко входу генератора

gen_out = g_model (in_src)

# подключить вход источника и выход генератора к входу дискриминатора

dis_out = d_model ([in_src, gen_out])

# src изображение в качестве входа, сгенерированное изображение и выход классификации

model = Model (in_src, [dis_out, gen_out])

# скомпилировать модель

opt = Adam (lr = 0.0002, beta_1 = 0,5)

model.compile (loss = [‘binary_crossentropy’, ‘mae’], optimizer = opt, loss_weights = [1,100])

return model

Затем мы можем загрузить наш набор данных парных изображений в сжатом формате массива NumPy.

Это вернет список из двух массивов NumPy: первый для исходных изображений и второй для соответствующих целевых изображений.

# загрузить и подготовить обучающие изображения
def load_real_samples (имя файла):
# загружаем сжатые массивы
данные = загрузка (имя файла)
# распаковать массивы
X1, X2 = данные [‘arr_0’], данные [‘arr_1’]
# масштаб от [0,255] до [-1,1]
Х1 = (Х1 — 127.5) / 127,5
Х2 = (Х2 — 127,5) / 127,5
возврат [X1, X2]

# загрузить и подготовить обучающие образы

def load_real_samples (filename):

# загрузить сжатые массивы

data = load (filename)

# распаковать массивы

X1, X2 = data [‘arr_0’], data [ ‘arr_1’]

# масштаб от [0,255] до [-1,1]

X1 = (X1 — 127,5) / 127,5

X2 = (X2 — 127,5) / 127.5

возврат [X1, X2]

Для обучения дискриминатора потребуются пакеты реальных и поддельных изображений.

Функция generate_real_samples () ниже подготовит пакет случайных пар изображений из обучающего набора данных и соответствующую метку дискриминатора class = 1 , чтобы указать, что они реальны.

# выбираем партию случайных выборок, возвращаем изображения и выбираем
def generate_real_samples (набор данных, n_samples, patch_shape):
# распаковать набор данных
trainA, trainB = набор данных
# выбираем случайные экземпляры
ix = randint (0, trainA.форма [0], n_samples)
# получить выбранные изображения
X1, X2 = поезд A [ix], поезд B [ix]
# генерировать «настоящие» метки классов (1)
y = единицы ((n_samples, patch_shape, patch_shape, 1))
return [X1, X2], y

# выберите пакет случайных выборок, возвращает изображения и цель

def generate_real_samples (dataset, n_samples, patch_shape):

# unpack dataset

trainA, trainB = dataset

# select random instance

ix 0, поезд А.shape [0], n_samples)

# получать выбранные изображения

X1, X2 = trainA [ix], trainB [ix]

# генерировать метки реальных классов (1)

y = единицы ((n_samples, patch_shape , patch_shape, 1))

возврат [X1, X2], y

Функция generate_fake_samples () ниже использует модель генератора и пакет реальных исходных изображений для создания эквивалентного пакета целевых изображений для дискриминатора.

Они возвращаются с меткой class-0, чтобы указать дискриминатору, что они поддельные.

# генерировать пакет изображений, возвращает изображения и цели
def generate_fake_samples (g_model, samples, patch_shape):
# создать поддельный экземпляр
X = g_model.predict (образцы)
# создать фальшивые метки классов (0)
y = нули ((len (X), patch_shape, patch_shape, 1))
возврат X, y

# генерировать пакет изображений, возвращать изображения и цели

def generate_fake_samples (g_model, samples, patch_shape):

# генерировать поддельный экземпляр

X = g_model.предсказать (образцы)

# создать ‘поддельные’ метки классов (0)

y = нули ((len (X), patch_shape, patch_shape, 1))

return X, y

Обычно модели GAN не сходятся; вместо этого находится равновесие между моделями генератора и дискриминатора. Таким образом, мы не можем легко судить, когда обучение должно быть остановлено. Таким образом, мы можем сохранить модель и использовать ее для периодического генерирования примеров преобразования изображения в изображение во время обучения, например, каждые 10 эпох обучения.

Затем мы можем просмотреть сгенерированные изображения в конце обучения и использовать качество изображения для выбора окончательной модели.

Функция summarize_performance () реализует это, беря модель генератора в момент обучения и используя ее для генерации числа, в данном случае трех, переводов случайно выбранных изображений в наборе данных. Затем исходное, сгенерированное изображение и ожидаемая цель наносятся на график в виде трех рядов изображений, а график сохраняется в файл. Кроме того, модель сохраняется в файл в формате H5, что упрощает загрузку в дальнейшем.

Имена файлов изображений и моделей включают номер итерации обучения, что позволяет нам легко различать их в конце обучения.

# сгенерировать образцы и сохранить как график и сохранить модель
def summarize_performance (шаг, g_model, набор данных, n_samples = 3):
# выбираем образец входных изображений
[X_realA, X_realB], _ = generate_real_samples (набор данных, n_samples, 1)
# создать партию поддельных образцов
X_fakeB, _ = generate_fake_samples (g_model, X_realA, 1)
# масштабировать все пиксели от [-1,1] до [0,1]
X_realA = (X_realA + 1) / 2.0
X_realB = (X_realB + 1) / 2.0
X_fakeB = (X_fakeB + 1) / 2.0
# построить реальные исходные изображения
для i в диапазоне (n_samples):
pyplot.subplot (3, n_samples, 1 + i)
pyplot.axis (‘выключено’)
pyplot.imshow (X_realA [i])
# построить сгенерированное целевое изображение
для i в диапазоне (n_samples):
pyplot.subplot (3, n_samples, 1 + n_samples + i)
pyplot.axis (‘выключено’)
pyplot.imshow (X_fakeB [i])
# построить реальное целевое изображение
для i в диапазоне (n_samples):
пиплот.подзаговор (3, n_samples, 1 + n_samples * 2 + i)
pyplot.axis (‘выключено’)
pyplot.imshow (X_realB [i])
# сохранить график в файл
filename1 = ‘plot_% 06d.png’% (шаг + 1)
pyplot.savefig (имя_файла1)
pyplot.close ()
# сохраняем модель генератора
filename2 = ‘model_% 06d.h5’% (шаг + 1)
g_model.save (имя_файла2)
print (‘> Сохранено:% s и% s’% (имя_файла1, имя_файла2))

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

# сгенерировать образцы и сохранить как график и сохранить модель

def summarize_performance (step, g_model, dataset, n_samples = 3):

# выбрать образец входных изображений

[X_realA, X_realB], _ = generate_real_samples (dataset, n_samples, 1)

# создать пакет поддельных образцов

X_fakeB, _ = generate_fake_samples (g_model, X_realA, 1)

# масштабировать все пиксели от [-1,1] до [0,1]

X_realA = (X_realA + 1) / 2.0

X_realB = (X_realB + 1) / 2.0

X_fakeB = (X_fakeB + 1) / 2.0

# построить реальные исходные изображения

для i в диапазоне (n_samples):

pyplot.subplot (3, n_samples, 1 + i)

pyplot.axis (‘off’)

pyplot.imshow (X_realA [i])

# plot сгенерированное целевое изображение

для i в диапазоне (n_samples):

pyplot.subplot (3, n_samples, 1 + n_samples + i)

pyplot.axis (‘off’)

pyplot.imshow (X_fakeB [i])

# построить реальное целевое изображение

для i в диапазоне (n_samples):

pyplot.subplot (3, n_samples, 1 + n_samples * 2 + i)

pyplot.axis (‘off ‘)

pyplot.imshow (X_realB [i])

# сохранить график в файл

filename1 =’ plot_% 06d.png ‘% (step + 1)

pyplot.savefig (filename1)

pyplot.close ()

# сохранить модель генератора

filename2 = ‘model_% 06d.h5’% (step + 1)

g_model.save (filename2)

print (‘> Сохранено:% s и% s’% (filename1, filename2))

Наконец, мы можем обучить модели генератора и дискриминатора.

Функция train () ниже реализует это, принимая в качестве входных данных заданный генератор, дискриминатор, составную модель и загруженный набор данных. Количество эпох установлено на 100, чтобы сократить время обучения, хотя в статье использовалось 200. Размер партии 1 используется, как рекомендовано в статье.

Обучение включает фиксированное количество итераций обучения. В наборе обучающих данных 1097 изображений. Одна эпоха — это одна итерация по этому количеству примеров, при этом размер пакета, равный единице, означает 1097 шагов обучения. Генератор сохраняется и оценивается каждые 10 эпох или каждые 10970 обучающих шагов, а модель будет работать в течение 100 эпох, или всего 109 700 обучающих шагов.

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

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

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

# поезд pix2pix модель
def train (d_model, g_model, gan_model, набор данных, n_epochs = 100, n_batch = 1):
# определить выходную квадратную форму дискриминатора
n_patch = d_model.output_shape [1]
# распаковать набор данных
trainA, trainB = набор данных
# подсчитываем количество пакетов за период обучения
bat_per_epo = интервал (len (trainA) / n_batch)
# рассчитываем количество итераций обучения
n_steps = bat_per_epo * n_epochs
# вручную перечислить эпохи
для i в диапазоне (n_steps):
# выбрать партию реальных образцов
[X_realA, X_realB], y_real = generate_real_samples (набор данных, n_batch, n_patch)
# создать партию поддельных образцов
X_fakeB, y_fake = generate_fake_samples (g_model, X_realA, n_patch)
# обновить дискриминатор для реальных образцов
d_loss1 = d_model.train_on_batch ([X_realA, X_realB], y_real)
# обновить дискриминатор для сгенерированных образцов
d_loss2 = d_model.train_on_batch ([X_realA, X_fakeB], y_fake)
# обновить генератор
g_loss, _, _ = gan_model.train_on_batch (X_realA, [y_real, X_realB])
# подвести итоги
print (‘>% d, d1 [%. 3f] d2 [%. 3f] g [%. 3f]’% (i + 1, d_loss1, d_loss2, g_loss))
# подвести итоги работы модели
если (i + 1)% (bat_per_epo * 10) == 0:
summarize_performance (я, g_model, набор данных)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

# train pix2pix model

def train (d_model, g_model, gan_model, dataset, n_epochs = 100, n_batch = 1):

# определение выходной квадратной формы дискриминатора

n_patch = d_model.output_shape [1]

# распаковать набор данных

trainA, trainB = dataset

# вычислить количество пакетов за период обучения

bat_per_epo = int (len (trainA) / n_batch)

# вычислить количество итераций обучения

n_steps = bat_per_epo * n_epochs

# вручную перечислить эпохи

для i в диапазоне (n_steps):

# выбрать партию реальных образцов

[X_realA, X_realB], y_real_patch_realBase), y_real_patch_real_sample = (сгенерировать)

# создать пакет поддельных образцов

X_fakeB, y_fake = generate_fake_samples (g_model, X_realA, n_patch)

# обновить дискриминатор для реальных образцов

d_loss1 = d_model.train_on_batch ([X_realA, X_realB], y_real)

# обновить дискриминатор для сгенерированных сэмплов

d_loss2 = d_model.train_on_batch ([X_realA, X_fakeB], y_fake)

# обновить генератор 9_delssan, train_on_batch (X_realA, [y_real, X_realB])

# суммируем производительность

print (‘>% d, d1 [%. 3f] d2 [%. 3f] g [%. 3f]’% (i + 1, d_loss1 , d_loss2, g_loss))

# суммировать производительность модели

if (i + 1)% (bat_per_epo * 10) == 0:

summarize_performance (i, g_model, dataset)

Соединив все это вместе, ниже приведен полный пример кода для обучения Pix2Pix GAN преобразованию спутниковых фотографий в изображения Google Maps.

# пример pix2pix gan для спутника для преобразования изображения в изображение
из numpy import load
из numpy импортных нулей
из множества импортных
из numpy.random import randint
от keras.optimizers импорт Адам
из keras.initializers import RandomNormal
из keras.models импорт модели
from keras.models import Input
из keras.layers импортировать Conv2D
from keras.layers import Conv2DTranspose
from keras.layers import LeakyReLU
из кераса.активация импорта слоев
из keras.layers import Concatenate
из keras.layers import Dropout
из keras.layers import BatchNormalization
from keras.layers import LeakyReLU
из matplotlib import pyplot

# определяем модель дискриминатора
def define_discriminator (image_shape):
# инициализация веса
init = RandomNormal (стандартное отклонение = 0,02)
# вход исходного изображения
in_src_image = Вход (shape = image_shape)
# ввод целевого изображения
in_target_image = Вход (shape = image_shape)
# объединить изображения по каналам
merged = Concatenate () ([in_src_image, in_target_image])
# C64
d = Conv2D (64, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (объединено)
d = LeakyReLU (альфа = 0.2) (г)
# C128
d = Conv2D (128, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)
d = BatchNormalization () (d)
d = LeakyReLU (альфа = 0,2) (d)
# C256
d = Conv2D (256, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)
d = BatchNormalization () (d)
d = LeakyReLU (альфа = 0,2) (d)
# C512
d = Conv2D (512, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d)
d = BatchNormalization () (d)
d = LeakyReLU (альфа = 0.2) (г)
# второй последний выходной слой
d = Conv2D (512, (4,4), padding = ‘same’, kernel_initializer = init) (d)
d = BatchNormalization () (d)
d = LeakyReLU (альфа = 0,2) (d)
# вывод патча
d = Conv2D (1, (4,4), padding = ‘same’, kernel_initializer = init) (d)
patch_out = Активация (‘сигмоид’) (d)
# определить модель
model = Модель ([in_src_image, in_target_image], patch_out)
# скомпилировать модель
opt = Адам (lr = 0,0002, beta_1 = 0,5)
model.compile (loss = ‘binary_crossentropy’, optimizer = opt, loss_weights = [0.5])
модель возврата

# определить блок кодировщика
def define_encoder_block (layer_in, n_filters, batchnorm = True):
# инициализация веса
init = RandomNormal (стандартное отклонение = 0,02)
# добавить слой понижающей дискретизации
g = Conv2D (n_filters, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (layer_in)
# условно добавить пакетную нормализацию
если батчнорм:
g = BatchNormalization () (g, обучение = True)
# дырявая активация relu
g = LeakyReLU (альфа = 0.2) (г)
вернуть г

# определяем блок декодера
def decoder_block (layer_in, skip_in, n_filters, dropout = True):
# инициализация веса
init = RandomNormal (стандартное отклонение = 0,02)
# добавить слой с повышающей дискретизацией
g = Conv2DTranspose (n_filters, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (layer_in)
# добавить пакетную нормализацию
g = BatchNormalization () (g, обучение = True)
# условно добавить отсев
если бросил:
g = выпадение (0,5) (g, обучение = верно)
# объединить с пропустить соединение
g = Concatenate () ([g, skip_in])
# активация relu
g = Активация (‘relu’) (g)
вернуть г

# определить модель автономного генератора
def define_generator (image_shape = (256,256,3)):
# инициализация веса
init = RandomNormal (stddev = 0.02)
# ввод изображения
in_image = Вход (shape = image_shape)
# модель кодировщика
e1 = define_encoder_block (in_image, 64, batchnorm = False)
e2 = define_encoder_block (e1, 128)
e3 = define_encoder_block (e2, 256)
e4 = define_encoder_block (e3, 512)
e5 = define_encoder_block (e4, 512)
e6 = define_encoder_block (e5, 512)
e7 = define_encoder_block (e6, 512)
# бутылочное горлышко, без партии norm и relu
b = Conv2D (512, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (e7)
b = Активация (‘relu’) (b)
# модель декодера
d1 = decoder_block (b, e7, 512)
d2 = decoder_block (d1, e6, 512)
d3 = decoder_block (d2, e5, 512)
d4 = decoder_block (d3, e4, 512, dropout = False)
d5 = decoder_block (d4, e3, 256, dropout = False)
d6 = decoder_block (d5, e2, 128, dropout = False)
d7 = decoder_block (d6, e1, 64, dropout = False)
# выход
g = Conv2DTranspose (3, (4,4), strides = (2,2), padding = ‘same’, kernel_initializer = init) (d7)
out_image = Активация (‘tanh’) (г)
# определить модель
model = Модель (in_image, out_image)
модель возврата

# определить комбинированную модель генератора и дискриминатора для обновления генератора
def define_gan (g_model, d_model, image_shape):
# сделать веса в дискриминаторе необучаемыми
для слоя в d_model.слои:
если не isinstance (слой, BatchNormalization):
layer.trainable = Ложь
# определяем исходное изображение
in_src = Вход (shape = image_shape)
# подключаем исходное изображение ко входу генератора
gen_out = g_model (in_src)
# подключить вход источника и выход генератора к входу дискриминатора
dis_out = d_model ([in_src, gen_out])
# src image как вход, сгенерированное изображение и вывод классификации
model = Модель (in_src, [dis_out, gen_out])
# скомпилировать модель
opt = Адам (lr = 0.0002, beta_1 = 0,5)
model.compile (loss = [‘binary_crossentropy’, ‘mae’], optimizer = opt, loss_weights = [1,100])
модель возврата

# загрузить и подготовить обучающие изображения
def load_real_samples (имя файла):
# загружаем сжатые массивы
данные = загрузка (имя файла)
# распаковать массивы
X1, X2 = данные [‘arr_0’], данные [‘arr_1’]
# масштаб от [0,255] до [-1,1]
X1 = (X1 — 127,5) / 127,5
Х2 = (Х2 — 127,5) / 127,5
return [X1, X2]

# выбираем партию случайных выборок, возвращаем изображения и выбираем
def generate_real_samples (набор данных, n_samples, patch_shape):
# распаковать набор данных
trainA, trainB = набор данных
# выбираем случайные экземпляры
ix = randint (0, trainA.форма [0], n_samples)
# получить выбранные изображения
X1, X2 = поезд A [ix], поезд B [ix]
# генерировать «настоящие» метки классов (1)
y = единицы ((n_samples, patch_shape, patch_shape, 1))
return [X1, X2], y

# генерировать пакет изображений, возвращает изображения и цели
def generate_fake_samples (g_model, samples, patch_shape):
# создать поддельный экземпляр
X = g_model.predict (образцы)
# создать фальшивые метки классов (0)
y = нули ((len (X), patch_shape, patch_shape, 1))
вернуть X, y

# сгенерировать образцы и сохранить как график и сохранить модель
def summarize_performance (шаг, g_model, набор данных, n_samples = 3):
# выбираем образец входных изображений
[X_realA, X_realB], _ = generate_real_samples (набор данных, n_samples, 1)
# создать партию поддельных образцов
X_fakeB, _ = generate_fake_samples (g_model, X_realA, 1)
# масштабировать все пиксели от [-1,1] до [0,1]
X_realA = (X_realA + 1) / 2.0
X_realB = (X_realB + 1) / 2.0
X_fakeB = (X_fakeB + 1) / 2.0
# построить реальные исходные изображения
для i в диапазоне (n_samples):
pyplot.subplot (3, n_samples, 1 + i)
pyplot.axis (‘выключено’)
pyplot.imshow (X_realA [i])
# построить сгенерированное целевое изображение
для i в диапазоне (n_samples):
pyplot.subplot (3, n_samples, 1 + n_samples + i)
pyplot.axis (‘выключено’)
pyplot.imshow (X_fakeB [i])
# построить реальное целевое изображение
для i в диапазоне (n_samples):
пиплот.подзаговор (3, n_samples, 1 + n_samples * 2 + i)
pyplot.axis (‘выключено’)
pyplot.imshow (X_realB [i])
# сохранить график в файл
filename1 = ‘plot_% 06d.png’% (шаг + 1)
pyplot.savefig (имя_файла1)
pyplot.close ()
# сохраняем модель генератора
filename2 = ‘model_% 06d.h5’% (шаг + 1)
g_model.save (имя_файла2)
print (‘> Сохранено:% s и% s’% (имя_файла1, имя_файла2))

# поезд модели pix2pix
def train (d_model, g_model, gan_model, набор данных, n_epochs = 100, n_batch = 1):
# определить выходную квадратную форму дискриминатора
n_patch = d_model.output_shape [1]
# распаковать набор данных
trainA, trainB = набор данных
# подсчитываем количество пакетов за период обучения
bat_per_epo = интервал (len (trainA) / n_batch)
# рассчитываем количество итераций обучения
n_steps = bat_per_epo * n_epochs
# вручную перечислить эпохи
для i в диапазоне (n_steps):
# выбрать партию реальных образцов
[X_realA, X_realB], y_real = generate_real_samples (набор данных, n_batch, n_patch)
# создать партию поддельных образцов
X_fakeB, y_fake = generate_fake_samples (g_model, X_realA, n_patch)
# обновить дискриминатор для реальных образцов
d_loss1 = d_model.train_on_batch ([X_realA, X_realB], y_real)
# обновить дискриминатор для сгенерированных образцов
d_loss2 = d_model.train_on_batch ([X_realA, X_fakeB], y_fake)
# обновить генератор
g_loss, _, _ = gan_model.train_on_batch (X_realA, [y_real, X_realB])
# подвести итоги
print (‘>% d, d1 [%. 3f] d2 [%. 3f] g [%. 3f]’% (i + 1, d_loss1, d_loss2, g_loss))
# подвести итоги работы модели
если (i + 1)% (bat_per_epo * 10) == 0:
summarize_performance (я, g_model, набор данных)

# загрузить данные изображения
набор данных = load_real_samples (‘maps_256.нпз ‘)
print (‘Загружено’, набор данных [0] .shape, набор данных [1] .shape)
# определить форму ввода на основе загруженного набора данных
image_shape = набор данных [0] .shape [1:]
# определить модели
d_model = define_discriminator (image_shape)
g_model = define_generator (image_shape)
# определить составную модель
gan_model = define_gan (g_model, d_model, image_shape)
# модель поезда
поезд (d_model, g_model, gan_model, набор данных)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

34

35

36

37

38

39

40

41

42

43

44

45

46

48

51

52

53

54

55

56

57

58

59

60

61

62

63

9 0006 64

65

66

67

68

69

70

71

72

73

74

75

76

78 9000

81

82

83

84

85

86

87

88

89

90

91

92

94

94

97

98

99

100

101

102

103

104

105

106

107

108

109

1106 112

109

1106 112

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

139

138

137

138

140

142

143

144

145

146

147

148

149

150

151

152

153

153

0005

0005 158

159

160

161

162

163

164

165

166

167

168

169

170006 179

169

170006 170

169

170

0005

175

176

177

178

179

180

181

182

183 9000 5

184

185

186

187

188

189

190

191

192

193

194

195

1

195

1980005

1

200

201

202

203

204

205

206

207

208

209

210

211

212

211

212

212

217

218

219

220

221

222

223

224

225

226

227

228

0005

228

0005

234

235

236

237

238

239

240

241

242 9 0005

243

244

# пример pix2pix gan для спутника для преобразования изображения в изображение

из numpy import load

from numpy import zeros

from numpy import ones

from numpy.random import randint

from keras.optimizers import Adam

from keras.initializers import RandomNormal

from keras.models import Model

from keras.models import Input

from keras.layers import Conv2D

import from keras.layers Conv2DTranspose

из keras.layers import LeakyReLU

from keras.layers import Activation

from keras.layers import Concatenate

from keras.layers import Dropout

from keras.Layers import BatchNormalization

from keras.layers import LeakyReLU

from matplotlib import pyplot

# определить модель дискриминатора

def define_discriminator (image_shape):

000 = инициализация

# исходное изображение input

in_src_image = Input (shape = image_shape)

# целевое изображение input

in_target_image = Input (shape = image_shape)

# объединять изображения по каналам

merged = Concatenate, () in_target_image])

# C64

d = Conv2D (64, (4,4), strides = (2,2), padding = 'same', kernel_initializer = init) (объединено)

d = LeakyReLU (alpha = 0.2) (d)

# C128

d = Conv2D (128, (4,4), strides = (2,2), padding = 'same', kernel_initializer = init) (d)

d = BatchNormalization ( ) (d)

d = LeakyReLU (alpha = 0.2) (d)

# C256

d = Conv2D (256, (4,4), strides = (2,2), padding = 'same', kernel_initializer = init) (d)

d = BatchNormalization () (d)

d = LeakyReLU (alpha = 0.2) (d)

# C512

d = Conv2D (512, (4,4), шаги = ( 2,2), padding = 'same', kernel_initializer = init) (d)

d = BatchNormalization () (d)

d = LeakyReLU (alpha = 0.2) (d)

# второй последний выходной слой

d = Conv2D (512, (4,4), padding = 'same', kernel_initializer = init) (d)

d = BatchNormalization () (d)

d = LeakyReLU (alpha = 0.2) (d)

# вывод патча

d = Conv2D (1, (4,4), padding = 'same', kernel_initializer = init) (d)

patch_out = Activation ( 'sigmoid') (d)

# определить модель

model = Model ([in_src_image, in_target_image], patch_out)

# скомпилировать модель

opt = Adam (lr = 0.0002, beta_1 = 0,5)

model.compile (loss = 'binary_crossentropy', optimizer = opt, loss_weights = [0,5])

return model

# определить блок кодировщика

def define_encoder_block (layer_in, n_filters, batchnorm = True):

# инициализация веса

init = RandomNormal (stddev = 0,02)

# добавить слой понижающей дискретизации

g = Conv2D (n_filters, (4,4), strides = (2,2), padding = 'same', kernel_initializer = init) (layer_in)

# условно добавить пакетную нормализацию

, если batchnorm:

g = BatchNormalization () (g, training = True)

# активация утечки relu

g = LeakyReLU (alpha = 0.2) (g)

return g

# определение блока декодера

def decoder_block (layer_in, skip_in, n_filters, dropout = True):

# инициализация веса

init = RandomNormal (std0005 = 0,02)

# добавить слой с повышающей дискретизацией

g = Conv2DTranspose (n_filters, (4,4), strides = (2,2), padding = 'same', kernel_initializer = init) (layer_in)

# добавить пакетную нормализацию

g = BatchNormalization () (g, training = True)

# условно добавить выпадение

если выпадение:

g = выпадение (0.5) (g, training = True)

# слияние с пропуском соединения

g = Concatenate () ([g, skip_in])

# повторная активация

g = Activation ('relu') (g)

return g

# определение модели автономного генератора

def define_generator (image_shape = (256,256,3)):

# инициализация веса

init = RandomNormal (stddev = 0.02)

# image input

in_image Вход (shape = image_shape)

# модель кодировщика

e1 = define_encoder_block (in_image, 64, batchnorm = False)

e2 = define_encoder_block (e1, 128)

e3 = define_encoder_block6 =

(e3, 512)

e5 = define_encoder_block (e4, 512)

e6 = define_encoder_block (e5, 512)

e7 = define_encoder_block (e6, 512)

# узкое место, no batch norm2d и relu

(512, (4,4), шаги = (2,2), паддин g = 'same', kernel_initializer = init) (e7)

b = Активация ('relu') (b)

# модель декодера

d1 = decoder_block (b, e7, 512)

d2 = decoder_block (d1 , e6, 512)

d3 = decoder_block (d2, e5, 512)

d4 = decoder_block (d3, e4, 512, dropout = False)

d5 = decoder_block (d4, e3, 256, dropout = False)

d6 = decoder_block (d5, e2, 128, dropout = False)

d7 = decoder_block (d6, e1, 64, dropout = False)

# output

g = Conv2DTranspose (3, (4,4), шаги = (2,2), padding = 'same', kernel_initializer = init) (d7)

out_image = Activation ('tanh') (g)

# определить модель

model = Model (in_image, out_image)

return model

# определить комбинированную модель генератора и дискриминатора, для обновления генератора

def define_gan (g_model, d_model, image_shape):

# сделать веса в дискриминаторе не обучать в состоянии

для слоя в d_model.Layers:

if not isinstance (layer, BatchNormalization):

layer.trainable = False

# определить исходное изображение

in_src = Input (shape = image_shape)

# подключить исходное изображение ко входу генератора

gen_out = g_model (in_src)

# подключить вход источника и выход генератора к входу дискриминатора

dis_out = d_model ([in_src, gen_out])

# src изображение в качестве входа, сгенерированное изображение и выход классификации

model = Model (in_src, [dis_out, gen_out])

# скомпилировать модель

opt = Adam (lr = 0.0002, beta_1 = 0,5)

model.compile (loss = ['binary_crossentropy', 'mae'], optimizer = opt, loss_weights = [1,100])

return model

# загрузить и подготовить обучающие изображения

def load_real_samples (filename):

# загрузить сжатые массивы

data = load (filename)

# распаковать массивы

X1, X2 = data ['arr_0'], data ['arr_1']

# масштаб от [ 0,255] до [-1,1]

X1 = (X1 - 127,5) / 127,5

X2 = (X2 - 127.5) / 127,5

return [X1, X2]

# выбор пакета случайных выборок, возврат изображений и цель

def generate_real_samples (dataset, n_samples, patch_shape):

# unpack dataset

trainA = набор данных

# выбрать случайные экземпляры

ix = randint (0, trainA.shape [0], n_samples)

# получить выбранные изображения

X1, X2 = trainA [ix], trainB [ix]

# сгенерировать 'реальные' метки класса (1)

y = единицы ((n_samples, patch_shape, patch_shape, 1))

return [X1, X2], y

# генерировать пакет изображений, возвращает изображения и цели

def generate_fake_samples (g_model, samples, patch_shape):

# генерировать поддельный экземпляр

X = g_model.предсказать (образцы)

# создать 'поддельные' метки классов (0)

y = нули ((len (X), patch_shape, patch_shape, 1))

return X, y

# создать образцы и сохранить как график и сохраните модель

def summarize_performance (step, g_model, dataset, n_samples = 3):

# выберите образец входных изображений

[X_realA, X_realB], _ = generate_real_samples (dataset, n_samples, 1)

# создать пакет поддельных образцов

X_fakeB, _ = generate_fake_samples (g_model, X_realA, 1)

# масштабировать все пиксели от [-1,1] до [0,1]

X_realA = (X_realA + 1 ) / 2.0

X_realB = (X_realB + 1) / 2.0

X_fakeB = (X_fakeB + 1) / 2.0

# построить реальные исходные изображения

для i в диапазоне (n_samples):

pyplot.subplot (3, n_samples, 1 + i)

pyplot.axis ('off')

pyplot.imshow (X_realA [i])

# plot сгенерированное целевое изображение

для i в диапазоне (n_samples):

pyplot.subplot (3, n_samples, 1 + n_samples + i)

pyplot.axis ('off')

pyplot.imshow (X_fakeB [i])

# построить реальное целевое изображение

для i в диапазоне (n_samples):

pyplot.subplot (3, n_samples, 1 + n_samples * 2 + i)

pyplot.axis ('off ')

pyplot.imshow (X_realB [i])

# сохранить график в файл

filename1 =' plot_% 06d.png '% (step + 1)

pyplot.savefig (filename1)

pyplot.close ()

# сохранить модель генератора

filename2 = 'model_% 06d.h5'% (step + 1)

g_model.save (filename2)

print ('> Сохранено:% s и% s'% (filename1, filename2))

# train pix2pix models

def train (d_model, g_model, gan_model, dataset, n_epochs = 100, n_batch = 1):

# определить выходную квадратную форму дискриминатора

n_patch = d_model.output_shape [1]

# распаковать набор данных

trainA, trainB = dataset

# вычислить количество пакетов на обучающую эпоху

bat_per_epo = int (len (trainA) / n_batch)

# вычислить количество итераций обучения

n_steps = bat_per_epo * n_epochs

# вручную перечислить эпохи

для i in range (n_steps

): реальных образцов

[X_realA, X_realB], y_real = generate_real_samples (dataset, n_batch, n_patch)

# создать пакет поддельных образцов

X_fakeB, y_fake = generate_fake_samples (g_model_ 9_real) 0006 # обновить дискриминатор для реальных отсчетов

d_loss1 = d_model.train_on_batch ([X_realA, X_realB], y_real)

# обновить дискриминатор для сгенерированных сэмплов

d_loss2 = d_model.train_on_batch ([X_realA, X_fakeB], y_fake)

# обновить генератор 9_delssan, _glossan,

train_on_batch (X_realA, [y_real, X_realB])

# суммируем производительность

print ('>% d, d1 [%. 3f] d2 [%. 3f] g [%. 3f]'% (i + 1, d_loss1 , d_loss2, g_loss))

# суммировать производительность модели

if (i + 1)% (bat_per_epo * 10) == 0:

summarize_performance (i, g_model, dataset)

# загрузить данные изображения

набор данных = load_real_samples ('maps_256.npz ')

print (' Loaded ', dataset [0] .shape, dataset [1] .shape)

# определить входную форму на основе загруженного набора данных

image_shape = dataset [0] .shape [1:]

# определить модели

d_model = define_discriminator (image_shape)

g_model = define_generator (image_shape)

# определить составную модель

gan_model = define_gan (g_model 9000, train_model 9000, train_model 9000, train_model 9000, train_model 9000, train_model) d_model, g_model, gan_model, набор данных)

Пример можно запустить на аппаратном обеспечении ЦП, хотя рекомендуется аппаратное обеспечение ГП.

Пример может занять около двух часов на современном оборудовании с графическим процессором.

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

Потеря сообщается на каждой итерации обучения, включая потерю дискриминатора на реальных примерах (d1), потерю дискриминатора на сгенерированных или поддельных примерах (d2) и потерю генератора, которая представляет собой средневзвешенное значение состязательных и L1 потерь (g).

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

> 1, d1 [0,566] d2 [0,520] г [82,266]
> 2, d1 [0,469] d2 [0,484] г [66,813]
> 3, d1 [0,428] d2 [0,477] г [79,520]
> 4, d1 [0,362] d2 [0,405] г [78,143]
> 5, d1 [0,416] d2 [0,406] г [72,452]
...
> 109596, d1 [0,303] d2 [0,006] г [5,792]
> 109597, d1 [0,001] d2 [1,127] g [14.343]
> 109598, d1 [0,000] d2 [0,381] г [11,851]
> 109599, d1 [1,289] d2 [0,547] г [6,901]
> 109600, d1 [0,437] d2 [0,005] г [10,460]
> Сохранены: plot_109600.png и model_109600.h5

> 1, d1 [0,566] d2 [0,520] г [82,266]

> 2, d1 [0,469] d2 [0,484] г [66,813]

> 3, d1 [0,428] d2 [0,477] г [79,520 ]

> 4, d1 [0,362] d2 [0,405] г [78,143]

> 5, d1 [0,416] d2 [0,406] г [72.452]

...

> 109596, d1 [0,303] d2 [0,006] г [5,792]

> 109597, d1 [0,001] d2 [1,127] г [14,343]

> 109598, d1 [0,000] d2 [0,381] г [11,851]

> 109599, d1 [1,289] d2 [0,547] г [6,901]

> 109600, d1 [0,437] d2 [0,005] г [10.460]

> Сохранено: plot_109600.png и модель_109600.h5

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

В конце прогона у вас будет 10 сохраненных файлов модели и 10 графиков сгенерированных изображений.

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

График спутника на карту Google, переведенные изображения с помощью Pix2Pix после 10 эпох обучения

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

Обратите внимание на первый пример сгенерированного изображения ниже (правый столбец, средняя строка), который содержит больше полезных деталей, чем реальное изображение карты Google.

График спутника на карту Google, переведенные изображения с помощью Pix2Pix после 100 эпох обучения

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

Как переводить изображения с помощью модели Pix2Pix

Обучение модели Pix2Pix приводит к созданию множества сохраненных моделей и образцов сгенерированных изображений для каждой из них.

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

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

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

Сначала мы можем загрузить набор обучающих данных. Мы можем использовать ту же функцию с именем load_real_samples () для загрузки набора данных, которая использовалась при обучении модели.

# загрузить и подготовить обучающие изображения
def load_real_samples (имя файла):
# загрузить сжатые файлы
данные = загрузка (имя файла)
# распаковать массивы
X1, X2 = данные ['arr_0'], данные ['arr_1']
# масштаб от [0,255] до [-1,1]
Х1 = (Х1 - 127.5) / 127,5
Х2 = (Х2 - 127,5) / 127,5
возврат [X1, X2]

# загрузить и подготовить обучающие изображения

def load_real_samples (filename):

# загрузить сжатые файлы

data = load (filename)

# распаковать массивы

X1, X2 = data ['arr_0'], data [ 'arr_1']

# масштаб от [0,255] до [-1,1]

X1 = (X1 - 127,5) / 127,5

X2 = (X2 - 127,5) / 127.5

возврат [X1, X2]

Эту функцию можно вызвать следующим образом:

...
# загрузить набор данных
[X1, X2] = load_real_samples ('maps_256.npz')
print ('Загружено', X1.shape, X2.shape)

...

# загрузить набор данных

[X1, X2] = load_real_samples ('maps_256.npz')

print ('Loaded', X1.shape, X2.shape)

Затем мы можем загрузить сохраненную модель Keras.

...
# модель нагрузки
модель = load_model ('модель_109600.h5')

...

# загрузить модель

model = load_model ('model_109600.h5')

Затем мы можем выбрать случайную пару изображений из набора обучающих данных для использования в качестве примера.

...
# выбрать случайный пример
ix = randint (0, len (X1), 1)
src_image, tar_image = X1 [ix], X2 [ix]

...

# выбрать случайный пример

ix = randint (0, len (X1), 1)

src_image, tar_image = X1 [ix], X2 [ix]

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

...
# генерировать изображение из источника
gen_image = model.predict (src_image)

...

# генерировать изображение из источника

gen_image = model.предсказать (src_image)

Наконец, мы можем построить исходное, сгенерированное изображение и ожидаемое целевое изображение.

Функция plot_images () ниже реализует это, обеспечивая красивый заголовок над каждым изображением.

# сюжет исходного, сгенерированного и целевого изображений
def plot_images (src_img, gen_img, tar_img):
images = vstack ((src_img, gen_img, tar_img))
# масштаб от [-1,1] до [0,1]
изображения = (изображения + 1) / 2.0
title = ['Источник', 'Создано', 'Ожидается']
# строить изображения построчно
для i в диапазоне (len (изображения)):
# определить подзаговор
pyplot.subplot (1, 3, 1 + я)
# выключить ось
pyplot.axis ('выключено')
# построить необработанные пиксельные данные
pyplot.imshow (изображения [i])
# показать заголовок
pyplot.title (заголовки [i])
pyplot.show ()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

# источник графика, сгенерированные и целевые изображения

def plot_images (src_img, gen_img, tar_img):

images = vstack ((src_img, gen_img, tar_img))

# масштаб от [-1,1] до [0 , 1]

изображений = (images + 1) / 2.0

title = ['Source', 'Generated', 'Expected']

# построчно строить изображения

для i в диапазоне (len (images)):

# define subplot

pyplot.subplot ( 1, 3, 1 + i)

# выключить ось

pyplot.axis ('off')

# построить необработанные данные пикселей

pyplot.imshow (images [i])

# показать заголовок

pyplot .title (заголовки [i])

pyplot.show ()

Эту функцию можно вызывать с каждым из наших исходных, сгенерированных и целевых изображений.

...
# построить все три изображения
plot_images (src_image, gen_image, tar_image)

...

# построить все три изображения

plot_images (src_image, gen_image, tar_image)

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

# пример загрузки модели pix2pix и ее использования для преобразования изображения в изображение
из кераса.модели импортировать load_model
из numpy import load
из numpy import vstack
из matplotlib import pyplot
из numpy.random import randint

# загрузить и подготовить обучающие изображения
def load_real_samples (имя файла):
# загружаем сжатые массивы
данные = загрузка (имя файла)
# распаковать массивы
X1, X2 = данные ['arr_0'], данные ['arr_1']
# масштаб от [0,255] до [-1,1]
X1 = (X1 - 127,5) / 127,5
Х2 = (Х2 - 127,5) / 127,5
return [X1, X2]

# сюжет исходного, сгенерированного и целевого изображений
def plot_images (src_img, gen_img, tar_img):
images = vstack ((src_img, gen_img, tar_img))
# масштаб от [-1,1] до [0,1]
изображения = (изображения + 1) / 2.0
title = ['Источник', 'Создано', 'Ожидается']
# строить изображения построчно
для i в диапазоне (len (изображения)):
# определить подзаговор
pyplot.subplot (1, 3, 1 + я)
# выключить ось
pyplot.axis ('выключено')
# построить необработанные пиксельные данные
pyplot.imshow (изображения [i])
# показать заголовок
pyplot.title (заголовки [i])
pyplot.show ()

# загрузить набор данных
[X1, X2] = load_real_samples ('maps_256.npz')
print ('Загружено', X1.shape, X2.shape)
# модель нагрузки
model = load_model ('модель_109600.h5 ')
# выбрать случайный пример
ix = randint (0, len (X1), 1)
src_image, tar_image = X1 [ix], X2 [ix]
# генерировать изображение из источника
gen_image = model.predict (src_image)
# построить все три изображения
plot_images (src_image, gen_image, tar_image)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

34

35

36

37

38

39

40

41

42

43

44

45

46

48

# пример загрузки модели pix2pix и ее использования для преобразования изображения в изображение

из keras.models import load_model

from numpy import load

from numpy import vstack

from matplotlib import pyplot

from numpy.random import randint

# загрузить и подготовить обучающие изображения

def load_real_samples (# имя_файла загрузить сжатые массивы

data = load (filename)

# распаковать массивы

X1, X2 = data ['arr_0'], data ['arr_1']

# масштабировать от [0,255] до [-1,1]

X1 = (X1 - 127.5) / 127,5

X2 = (X2 - 127,5) / 127,5

return [X1, X2]

# источник графика, сгенерированные и целевые изображения

def plot_images (src_img, gen_img, tar_img):

изображений = vstack ((src_img, gen_img, tar_img))

# масштаб от [-1,1] до [0,1]

изображений = (images + 1) / 2.0

title = ['Source', 'Generated ',' Expected ']

# построчно строить изображения

для i in range (len (images)):

# определять подзаголовок

pyplot.subplot (1, 3, 1 + i)

# выключить ось

pyplot.axis ('off')

# построить необработанные пиксельные данные

pyplot.imshow (images [i])

# показать заголовок

pyplot.title (title [i])

pyplot.show ()

# загрузить набор данных

[X1, X2] = load_real_samples ('maps_256.npz')

print ('Loaded', X1. shape, X2.shape)

# загрузить модель

model = load_model ('model_109600.h5')

# выбрать случайный пример

ix = randint (0, len (X1), 1)

src_image, tar_image = X1 [ix], X2 [ix]

# генерировать изображение из источника

gen_image = model.pred (src_image)

# построить все три изображения

plot_images (src_image, gen_image, tar_image)

При выполнении примера будет выбрано случайное изображение из набора обучающих данных, оно переведено на карту Google и построено сравнение результата с ожидаемым изображением.

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

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

График спутника для преобразования изображения карты Google с помощью окончательной модели Pix2Pix GAN

Мы также можем использовать модель для перевода данного автономного изображения.

Мы можем выбрать изображение из набора данных проверки в разделе maps / val и обрезать спутниковый элемент изображения.Затем его можно сохранить и использовать в качестве входных данных для модели.

В этом случае мы будем использовать « maps / val / 1.jpg ».

Пример изображения из части проверки набора данных Maps

Мы можем использовать программу обработки изображений, чтобы создать грубую обрезку спутникового элемента этого изображения для использования в качестве входных данных и сохранить файл как satellite.jpg в текущем рабочем каталоге.

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

Мы должны загрузить изображение как массив пикселей NumPy размером 256 × 256, изменить масштаб значений пикселей до диапазона [-1,1], а затем расширить размеры одного изображения, чтобы представить один входной образец.

Функция load_image () ниже реализует это, возвращая пиксели изображения, которые могут быть предоставлены непосредственно загруженной модели Pix2Pix.

# загрузить изображение
def load_image (имя файла, размер = (256,256)):
# загрузить изображение желаемого размера
пикселей = load_img (имя файла, target_size = размер)
# преобразовать в массив numpy
пикселей = img_to_array (пиксели)
# масштаб от [0,255] до [-1,1]
пикселей = (пикселей - 127,5) / 127,5
# изменить форму до 1 образца
пикселей = expand_dims (пикселей, 0)
возврат пикселей

# загрузить изображение

def load_image (filename, size = (256,256)):

# загрузить изображение с предпочтительным размером

пикселей = load_img (filename, target_size = size)

# преобразовать в массив numpy

пикселей = img_to_array (пикселей)

# масштаб от [0,255] до [-1,1]

пикселей = (пикселей - 127.5) / 127,5

# изменить форму до 1 образца

пикселей = expand_dims (пикселей, 0)

пикселей возврата

Затем мы можем загрузить наш обрезанный спутниковый снимок.

...
# загрузить исходное изображение
src_image = load_image ('satellite.jpg')
print ('Загружено', src_image.shape)

...

# загрузить исходное изображение

src_image = load_image ('satellite.jpg ')

print (' Загружено ', src_image.shape)

Как и раньше, мы можем загрузить нашу сохраненную модель генератора Pix2Pix и сгенерировать перевод загруженного изображения.

...
# модель нагрузки
модель = load_model ('модель_109600.h5')
# генерировать изображение из источника
gen_image = model.predict (src_image)

...

# загрузить модель

model = load_model ('model_109600.h5 ')

# генерировать изображение из источника

gen_image = model.predict (src_image)

Наконец, мы можем снова масштабировать значения пикселей до диапазона [0,1] и построить график результата.

...
# масштаб от [-1,1] до [0,1]
gen_image = (gen_image + 1) / 2.0
# построить изображение
pyplot.imshow (gen_image [0])
pyplot.axis ('выключено')
pyplot.show ()

...

# масштаб от [-1,1] до [0,1]

gen_image = (gen_image + 1) / 2.0

# построить изображение

pyplot.imshow (gen_image [0])

pyplot .axis ('выкл.')

pyplot.show ()

Если объединить все это вместе, ниже приведен полный пример выполнения специального перевода изображения с одним файлом изображения.

# пример загрузки модели pix2pix и использования ее для одноразового перевода изображений
из кераса.модели импортировать load_model
из keras.preprocessing.image import img_to_array
из keras.preprocessing.image import load_img
из numpy import load
из numpy import expand_dims
из matplotlib import pyplot

# загрузить изображение
def load_image (имя файла, размер = (256,256)):
# загрузить изображение желаемого размера
пикселей = load_img (имя файла, target_size = размер)
# преобразовать в массив numpy
пикселей = img_to_array (пиксели)
# масштаб от [0,255] до [-1,1]
пикселей = (пикселей - 127.5) / 127,5
# изменить форму до 1 образца
пикселей = expand_dims (пикселей, 0)
вернуть пиксели

# загрузить исходное изображение
src_image = load_image ('satellite.jpg')
print ('Загружен', src_image.shape)
# модель нагрузки
модель = load_model ('модель_109600.h5')
# генерировать изображение из источника
gen_image = model.predict (src_image)
# масштаб от [-1,1] до [0,1]
gen_image = (gen_image + 1) / 2.0
# построить изображение
pyplot.imshow (gen_image [0])
pyplot.axis ('выключено')
пиплот.показать ()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

23

24

25

26

27

28

29

30

# пример загрузки модели pix2pix и ее использования для одноразовой трансляции изображений

из keras.модели import load_model

from keras.preprocessing.image import img_to_array

from keras.preprocessing.image import load_img

from numpy import load

from numpy import expand_dims

from matplot

import image

0005

def load_image (filename, size = (256,256)):

# загрузить изображение с предпочтительным размером

пикселей = load_img (filename, target_size = size)

# преобразовать в массив numpy

пикселей = img_to_array (пикселей)

# масштаб от [0,255] до [-1,1]

пикселей = (пикселей - 127.5) / 127,5

# изменить форму до 1 образца

пикселей = expand_dims (пикселей, 0)

вернуть пикселей

# загрузить исходное изображение

src_image = load_image ('satellite.jpg')

print (' Loaded ', src_image.shape)

# загрузить модель

model = load_model (' model_109600.h5 ')

# создать изображение из источника

gen_image = model.predict (src_image)

# масштаб от [-1, 1] до [0,1]

gen_image = (gen_image + 1) / 2.0

# построить изображение

pyplot.imshow (gen_image [0])

pyplot.axis ('off')

pyplot.show ()

При выполнении примера загружается изображение из файла, создается его перевод и отображается результат.

Созданное изображение является разумным переводом исходного изображения.

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

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

Как перевести карты Google на спутниковые изображения

Теперь, когда мы знакомы с тем, как разработать и использовать модель Pix2Pix для перевода спутниковых изображений на карты Google, мы можем также изучить обратное.

То есть мы можем разработать модель Pix2Pix для преобразования изображений карты Google в правдоподобные спутниковые изображения. Для этого требуется, чтобы модель изобрела или представила себе правдоподобные здания, дороги, парки и многое другое.

Мы можем использовать один и тот же код для обучения модели с одной небольшой разницей. Мы можем изменить порядок наборов данных, возвращаемых функцией load_real_samples () ; например:

# загрузить и подготовить обучающие изображения
def load_real_samples (имя файла):
# загружаем сжатые массивы
данные = загрузка (имя файла)
# распаковать массивы
X1, X2 = данные ['arr_0'], данные ['arr_1']
# масштаб от [0,255] до [-1,1]
X1 = (X1 - 127,5) / 127,5
Х2 = (Х2 - 127.5) / 127,5
# возврат в обратном порядке
возврат [X2, X1]

# загрузить и подготовить обучающие образы

def load_real_samples (filename):

# загрузить сжатые массивы

data = load (filename)

# распаковать массивы

X1, X2 = data ['arr_0'], data [ 'arr_1']

# масштаб от [0,255] до [-1,1]

X1 = (X1 - 127,5) / 127,5

X2 = (X2 - 127,5) / 127.5

# возврат в обратном порядке

возврат [X2, X1]

Примечание : порядок X1 и X2 обратный.

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

Выполните пример, как прежде.

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

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

> 1, d1 [0,442] d2 [0,650] г [49,790]
> 2, d1 [0,317] d2 [0,478] г [56,476]
> 3, d1 [0,376] d2 [0,450] г [48,114]
> 4, d1 [0,396] d2 [0,406] г [62,903]
> 5, d1 [0,496] d2 [0,460] г [40,650]
...
> 109596, d1 [0.311] d2 [0,057] г [25,376]
> 109597, d1 [0,028] d2 [0,070] г [16,618]
> 109598, d1 [0,007] d2 [0,208] г [18,139]
> 109599, d1 [0,358] d2 [0,076] г [22,494]
> 109600, d1 [0,279] d2 [0,049] г [9,941]
> Сохранены: plot_109600.png и model_109600.h5

> 1, d1 [0,442] d2 [0,650] г [49,790]

> 2, d1 [0,317] d2 [0,478] г [56,476]

> 3, d1 [0,376] d2 [0,450] г [48,114 ]

> 4, d1 [0.396] d2 [0,406] г [62,903]

> 5, d1 [0,496] d2 [0,460] г [40,650]

...

> 109596, d1 [0,311] d2 [0,057] г [25,376]

> 109597, d1 [0,028] d2 [0,070] г [16,618]

> 109598, d1 [0,007] d2 [0,208] г [18,139]

> 109599, d1 [0,358] d2 [0,076] г [22,494]

> 109600, d1 [0,279] d2 [0,049] g [9,941]

> Сохранено: plot_109600.png и model_109600.h5

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

График карты Google Map со спутниковым переводом изображений с помощью Pix2Pix после 10 эпох обучения

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

Модель не представляет особых трудностей в создании разумных водных ресурсов, парков, дорог и т. Д.

График карты Google Map со спутниковым переводом изображений с помощью Pix2Pix после 90 эпох обучения

Расширения

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

  • Автономный спутник . Разработайте пример перевода автономных изображений карт Google в спутниковые изображения, как мы сделали для спутниковых изображений в карты Google.
  • Новый образ . Найдите спутниковый снимок совершенно нового места, переведите его на карту Google и сравните результат с фактическим изображением на картах Google.
  • Дополнительная подготовка . Продолжите обучение модели еще 100 эпох и оцените, приведет ли дополнительное обучение к дальнейшему улучшению качества изображения.
  • Увеличение изображения . Используйте небольшое увеличение изображения во время обучения, как описано в статье Pix2Pix, и оцените, приводит ли это к лучшему качеству сгенерированных изображений.

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

Дополнительная литература

В этом разделе представлены дополнительные ресурсы по теме, если вы хотите углубиться.

Официальный

API

Сводка

В этом руководстве вы узнали, как разработать генерирующую состязательную сеть Pix2Pix для преобразования изображения в изображение.

В частности, вы выучили:

  • Как загрузить и подготовить спутниковое изображение в набор данных преобразования изображений в изображения Google Maps.
  • Как разработать модель Pix2Pix для перевода спутниковых фотографий в изображения карты Google.
  • Как использовать окончательную модель генератора Pix2Pix для перевода специальных спутниковых изображений.

Есть вопросы?
Задайте свои вопросы в комментариях ниже, и я постараюсь ответить.

Развивайте генеративные состязательные сети уже сегодня!

Разрабатывайте модели GAN за считанные минуты

...с всего несколькими строками кода Python

Узнайте, как это сделать в моей новой электронной книге:
Генеративные состязательные сети с Python

Он предоставляет руководств для самообучения и сквозные проекты на:
DCGAN , условных GAN , перевод изображений , Pix2Pix , CycleGAN
и многое другое ...

Наконец-то добавьте модели GAN в свои проекты Vision

Пропустите академики. Только результаты.Посмотрите, что внутри

Как перевести изображения на вашем сайте WordPress

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

С помощью правильного плагина перевода WordPress вы можете переводить изображения, чтобы вы могли отображать различные изображения, переведенный текст и метаданные изображений в зависимости от языка посетителя в режиме реального времени.

Это поможет вам улучшить и локализовать пользовательский интерфейс, сделать ваш веб-сайт более доступным на всех языках и улучшить многоязычное SEO, особенно когда речь идет о ранжировании изображений в поиске изображений Google.

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

Как выбрать плагин перевода WordPress для изображений

Когда вы ищете плагин перевода WordPress для перевода изображений, важно помнить, что есть несколько соображений для полного перевода изображения:

  • Исходный файл изображения Сам .Например, используя разные URL-адреса изображения для каждого языка на вашем сайте. Вы также можете локализовать имя файла изображения для улучшения SEO изображений в Google.
  • Текст на изображении. Если вы отображаете текст на изображении, вы также захотите иметь возможность переводить этот текст.
  • Альтернативный текст изображения . Важно перевести эти закулисные метаданные изображения для многоязычного SEO и доступности изображений.
  • Ссылка на изображение . Если вы связываете изображение с другой страницей, вы захотите изменить эту ссылку в зависимости от языка пользователя.

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

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

Как переводить изображения в WordPress с помощью Weglot

Чтобы сделать этот пример как можно более полным, предположим, что у вас есть что-то вроде простой страницы ниже, и вы хотите перевести ее на французский и локализовать для французской аудитории:

Там Вот несколько вещей, которые необходимы для локализации этой установки:

  • Изменение изображения Статуи Свободы на французский ориентир (например, Эйфелеву башню).
  • Перевод текста, который появляется поверх изображения, без технологии OCR.
  • Перевод альтернативного текста изображения. Опять же, даже если вы не видите этого в интерфейсе своего сайта, это важно для SEO и доступности сайта.

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

Базовая настройка: настройка Weglot и включение перевода мультимедиа

Чтобы использовать плагин перевода Weglot WordPress для перевода изображений в WordPress, вам сначала нужно выполнить несколько быстрых действий по настройке основных параметров Weglot.

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

  1. Установите плагин Weglot с WordPress.org
  2. Зарегистрируйте учетную запись Weglot
  3. Перейдите на новую вкладку Weglot на панели инструментов WordPress
  4. Вставьте ключ API из своей учетной записи Weglot в поле API Key
  5. Выберите исходный язык и языки назначения

Оттуда Weglot будет использовать автоматический перевод (или машинный перевод) для перевода всего содержимого вашего сайта с вашего исходного языка на язык (языки) назначения .Например, вам может потребоваться перевести контент с английского на испанский, хинди, румынский, чешский, финский или корейский.

Затем, чтобы включить возможность перевода изображений в WordPress, откройте панель управления Weglot и перейдите в «Настройки» и «Общие». Затем с помощью переключателя включите Включить перевод мультимедиа , как показано на снимке экрана ниже:

Теперь вы готовы переводить изображения в WordPress.

Как переводить изображения в WordPress

Давайте начнем с того, как перевести сам файл изображения, чтобы вы могли использовать разные изображения для разных языковых версий вашего сайта.Благодаря переводу изображений Weglot вам не нужно полагаться на оптическое распознавание символов (OCR).

Чтобы получить доступ к функциям перевода изображений Weglot, перейдите в интерфейс Translations , а затем выберите Media из раскрывающегося списка filter :

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

Затем вы увидите список файлов изображений.Вы можете навести указатель мыши на URL-адрес, чтобы увидеть фактическое изображение, которое поможет вам понять, что вы переводите.

Чтобы перевести изображение, вы можете отредактировать URL-адрес справа, чтобы использовать другой файл изображения для этого языка:

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

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

Как перевести текст на изображениях в WordPress

Теперь давайте посмотрим, как перевести текст поверх изображения.

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

  1. HTML-текст, наложенный на изображение. То есть текст , а не часть самого файла изображения - он просто появляется поверх изображения.
  2. Текст, являющийся частью изображения. Вы не можете редактировать этот текст на своем веб-сайте - единственный способ изменить текст - это загрузить новый файл изображения.

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

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

Вы можете редактировать текст в бэкэнде. Translations interface:

Или вы можете использовать визуальный редактор Weglot, который позволяет вам щелкнуть текст в режиме предварительного просмотра вашего веб-сайта:

Как перевести изображение Альтернативный текст в WordPress

Хотя большинство ваших посетителей-людей не увидят замещающий текст изображения, замещающий текст изображения играет важную роль для поисковых систем, таких как Google, и посетителей, которые полагаются на программы чтения с экрана. Таким образом, важно по-прежнему переводить замещающий текст изображения, чтобы обеспечить удобный для SEO и доступный многоязычный веб-сайт.

В Weglot замещающий текст изображения отображается как обычный текст, что означает, что вы можете редактировать его из интерфейса Translations :

Как переводить URL-адреса изображений в WordPress

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

Например, если исходная ссылка - yoursite.com/famous-landmarks , Weglot обновит ее до yoursite.com / fr / known-landmarks для посетителей, просматривающих на французском языке. Вы также можете переводить свои URL-адреса с помощью мета-поля Weglot URL Translate в редакторе WordPress.

Как переводить слайдеры изображений в WordPress

Если вы используете несколько изображений в слайдере (с текстовыми наложениями или без них), вы можете использовать тот же базовый подход для перевода изображений.

Вот быстрый пример слайдера изображения и текстовой подписи, которые мы создали с помощью MetaSlider:

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

Как переводить видео в WordPress

Хотя в этой статье мы сосредоточили внимание на том, как переводить изображения в WordPress, вы можете использовать те же методы и для перевода другого визуального контента. А именно видео.

Вот пример встроенного видео YouTube:

Если вы откроете эту страницу на панели управления Weglot, вы сможете предоставить другое видео YouTube для встраивания - все, что вам нужно сделать, это изменить URL-адрес для ссылки на новое видео:

Weglot упрощает перевод изображений в WordPress

Если вы хотите создать полностью локализованный многоязычный сайт WordPress, важно переводить изображения и другой мультимедийный контент (например, файлы PDF) вместе с текстовым контентом вашего сайта WordPress. .Такие сервисы, как Google Translate, не могут вам в этом помочь.

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

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

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

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

15 сайтов со свободным фото

Детали
По сценарию Карен Ходжсон

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

Ниже перечислены 15 сайтов с фотографиями, на которых хранятся бесплатные фотографии. Используя эти сайты, вы получаете доступ к огромному выбору высококачественных фотографий с высоким разрешением. Большинство сайтов имеют категории или эффективную возможность поиска по ключевым словам, что позволяет легко найти нужную фотографию. Эта возможность значительно экономит время.

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

Вот список бесплатных или недорогих услуг:

1. Thestocks.im - замечательный сайт. Здесь вы найдете ссылки на 15 различных сайтов с фотографиями в одном месте.На сайте размещены шикарные картинки, которые можно бесплатно скачать. Обязательно посетите Unsplash.com. это совершенно выдающийся сайт. Здесь вы найдете ссылки на 15 различных сайтов с фотографиями в одном месте. На сайте размещены шикарные картинки, которые можно бесплатно скачать. Обязательно посетите Unsplash.com.

2. Unsplash.com - содержит коллекцию бесплатных фотографий в высоком разрешении и получает все больше похвал как один из лучших источников стоковых изображений. Подпишитесь на их подписку по электронной почте, чтобы получать десять новых стоковых изображений каждые десять дней прямо на ваш почтовый ящик.Эти фотографии легко просматривать и сохранять на свой компьютер.

3 . Deathtothestockphoto.com - Подобно Unsplash, каждый месяц получайте высококачественные изображения на свой почтовый ящик. Фотографии можно использовать в коммерческих целях, например на вашем веб-сайте и в рекламных материалах, а также в социальных сетях.

4. Morguefile.com - предлагает широкий выбор бесплатных изображений в различных нишах. Вы можете быстро искать фотографии по наиболее популярным, недавним или наиболее загруженным.

5. Freestockphotos.com - предлагает широкий выбор стоковых изображений, которые можно использовать где угодно. Вы можете искать на сайте похожие ключевые слова, чтобы вам было проще найти то, что вы ищете. Устные и письменные переводчики: обратите внимание на стоковые фотографии таких мест, как Афины, Египет, Израиль и Рим. Обязательно обратите внимание на условия использования, так как пользователи должны указывать или ссылаться на веб-сайт.

6. Pixaby.com - Этот сайт содержит потрясающие фотографии, являющиеся общественным достоянием: более 370 тысяч бесплатных фотографий, векторных изображений или иллюстраций, которые можно использовать для размещения на бизнес-сайтах, листовках и других материалах.Посетите раздел «Выбор редактора» или «Последние изображения», чтобы увидеть фотографии, похожие на динамит.

7. Stokpic.com - еще один сайт с потрясающими фотографиями и подпиской на электронную почту, чтобы получать десять фотографий каждые две недели. Сайт организован по 100 последним, избранным и категориям. Помимо разнообразия, вы также получите художественные, современные и яркие изображения.

8. Freedigigitalphotos.net - Этот веб-сайт предлагает современный обновленный веб-сайт, по которому легко и весело перемещаться.Вы можете зарегистрироваться на сайте и загружать или скачивать изображения. Самое замечательное в нем то, что он предлагает широкий спектр предметов и различных фотографий, потому что большинство фотографий загружаются пользователями.

9. Freeimages.com - в базе данных более 410 тыс. Стоковых фотографий, еще сотни ожидают загрузки. Сайт прост и удобен в использовании. Он зарегистрировал пользователей, которые загружают стоковые изображения. Если вас интересует конкретный пользователь, который загружает стоковые фотографии, его легко найти и подписаться на него.Также вы можете искать фотографии по стране или городу.

10. Lifeofpix.com - Life of Pix - отличный сайт, если вы ищете изображения, которые выглядят современно. Сайт предоставляет захватывающие изображения природы, людей, бизнеса и других предметов, которые можно легко скачать. Картинки высокого разрешения, и все они являются общественным достоянием. Сайт обновляется еженедельно.

11. Picjumbo.com - Pic Jumbo - отличный сайт для стоковых фотографий. Изображения можно использовать в коммерческих и личных целях, они оптимизированы и готовы к работе с Photoshop.Теги упрощают пользователям поиск фотографий. Кроме того, пользователи могут загружать свои собственные фотографии, предлагая еще более личные и интимные изображения.

12. Imcreator.com/free - IM Creator предоставляет отличные стоковые фотографии для коммерческого использования. Все фотографии расположены на сайте организованно. Это позволяет вам найти то, что вы ищете, по категориям. Также доступны для загрузки кнопки со стандартными изображениями.

13. №twnsnd.co - Если вы ищете старые винтажные фотографии, это ваш сайт стоковых фотографий. Старинные фотографии на сайте взяты из старых публичных архивов и являются подлинными. Они гарантируют, что все их изображения свободны от известных ограничений авторского права. Найдите фотографии прошлых президентов США, космонавтов, войны, фотографии городских улиц и людей, а также других важных мировых событий. Некоторые из них являются необычными фотографиями, и их приятно видеть.

14. Lockandstockphotos.com - В фотографиях Lock и Stock есть все, от причудливых до классических. Вы почувствуете, что их фотографии более интимные и персонализированные, в отличие от большинства веб-сайтов, посвященных стоковым фотографиям, которые предлагают множество обычных фотографий. Здесь вы найдете уникальные изображения на самые разные темы.

15. Jaymantri.com - Джей Мантри каждый четверг выпускает семь новых изображений: уникальные, вычурные фотографии. Здесь вы найдете самые разные предметы. Он выпускает их под лицензией Creative Commons, и они могут свободно использоваться в личных или коммерческих целях.

Подпишитесь на бесплатную рассылку, чтобы получать подобные советы прямо на ваш почтовый ящик.

Перевод изображений с помощью мультимедийного перевода

Обновлено
25 сентября 2020

WPML Media Translation позволяет выбирать изображения и другие носители для переведенного контента.Вы сможете предоставить заменяющие изображения для контента на разных языках и перевести метатексты этих изображений.

Вам следует использовать WPML Media Translation , когда вы используете WPML Translation Management и вам нужно отображать разные изображения для переведенного контента.

Речь идет о выборе других файлов изображений для переведенного содержимого. Если вы ищете, как перевести текстовый контент в изображениях, ознакомьтесь с такими проектами, как Google Image Translation и ImageTranslate.

В этом руководстве:

Когда использовать WPML Media Translation

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

Ручной перевод изображений при использовании редактора блоков

Ручной перевод изображений при использовании классического редактора

Ручной перевод изображений с помощью классического редактора переводов

Вы можете использовать редактор WordPress для редактирования переводов.Там вы можете загружать разные изображения для разных переводов.

Однако, когда вы используете Управление переводами WPML, вы не редактируете каждый перевод в редакторе WordPress. Вы редактируете переводы в специальном редакторе для перевода (внутри WPML или с помощью службы переводов). В этом случае вам понадобится отдельный инструмент для перевода изображений. Это WPML Media Translation .

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

Например, вот приветственная страница для WordPress.

Страница на английском языке включает снимок экрана администратора WordPress на английском языке Испанский текст включает снимок экрана администратора WordPress на испанском языке

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

Плагин Media Translation позволяет загружать «заменяющие» изображения для различных переводов. Таким образом, вы можете переводить тексты на странице с помощью WPML Translation Management и предоставлять заменяющие изображения для изображений, которые содержат текст, требующий перевода.

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

Перевод вложенных изображений и других медиафайлов

  1. Перейдите на страницу WPML -> Управление переводами , чтобы отправить контент на перевод. Там, когда вы выбираете любой контент, который имеет медиафайлы, вы увидите список прикрепленных медиафайлов. Выберите все изображения, для которых вы хотите использовать «заменяющие» изображения на других языках.
  2. После отправки содержимого на перевод перейдите к WPML -> Media Translation .Там вы можете отфильтровать по « Требуется перевод медиафайлов, ». Вы увидите только изображения, которые ранее были выбраны как требующие перевода. Нажмите, чтобы отредактировать любое изображение и загрузить его замену.

Вот короткое видео, которое показывает весь этот процесс:

Перевод страницы, содержащей изображения

По мере перевода страницы вы увидите содержимое, которое включает изображения, требующие перевода.

Перевод страницы с изображениями

Не забудьте включить изображения в перевод и перевести их метатексты.Вам не нужно загружать сюда заменяющие изображения или редактировать шорткоды изображений. Вам нужно только перевести тексты. WPML Media Translation позже заменит фактические изображения их переводами.

Перевод подписей к изображениям и заголовков

WordPress делает копию подписей к изображениям и текстов заголовков, когда вы вставляете изображения в контент. Вы должны перевести эти тексты в Редакторе переводов.

Тексты, которые вы переводите в WPML -> Media Translation , относятся к приложениям.Вы увидите эти переведенные тексты, когда создадите галереи изображений или загрузите изображения другими способами.

Настройки перевода мультимедиа

Параметры перевода мультимедиа можно найти внизу страницы WPML -> Настройки .

Настройки перевода мультимедиа

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

Вы можете установить опции как переводить:

  1. Существующий медиа-контент
    • Установить языки мультимедиа - устанавливает язык для существующего мультимедиа. Это то, что вам следует сделать, если вы хотите использовать WPML Media Translation.
    • Перевести существующие медиа на все языки - дублирует существующие медиа на все языки.
    • Дублировать существующие медиафайлы для переведенного контента - проходит через весь существующий контент. Если есть перевод и в содержимом есть мультимедиа, он обновит переведенный контент с помощью соответствующего переведенного мультимедиа.
    • Дублировать избранные изображения для переведенного содержания. - проходит по всему существующему содержанию. Если есть перевод и в контенте есть избранные изображения, он обновит переведенный контент соответствующими избранными изображениями.
  1. Новый медиа-контент
    • При загрузке медиафайлов в библиотеку медиафайлов сделайте их доступными на всех языках - дублирует недавно загруженные медиафайлы, чтобы они были доступны на всех языках.
    • Дубликаты вложений мультимедиа для переводов - дублирует недавно загруженные мультимедиа, чтобы их можно было перевести.
    • Дубликаты избранных изображений для переводов - дублируют недавно загруженные избранные изображения, чтобы их можно было перевести

Преобразование изображения в изображение: магия машинного обучения

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

Решения для компьютерного зрения

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

Секрет нашей магии - нейронная сеть CGAN.

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

  • Синтез четких и реалистичных изображений
  • Полу-контролируемое обучение
  • Отличный тест нашей способности использовать сложные многомерные данные
  • Новейшая технология машинного обучения

Условная GAN - это подмножество GAN - генерирующих состязательных сетей. GAN - это тип генеративных нейронных сетей, состоящий из двух сетей: дискриминатора - D и генератора - G.Мы можем легко понять ключевую концепцию, стоящую за ними, представив команду фальшивомонетчиков как G, а полицию как D. Фальшивомонетчики (G) постоянно пытаются произвести фальшивую валюту (изображения), в то время как полиция (D) пытается оценить, настоящая ли она. или подделка. Со временем они оба становятся лучше в своей работе. Условный GAN работает по тому же принципу, но у нас есть дополнительная информация - условие. Итак, теперь, вместо того, чтобы просить фальшивомонетчиков просто произвести фальшивую валюту, мы просим их произвести, скажем, фальшивые 100 долларов.Точно так же, вместо того, чтобы просто просить полицию судить, фальшивка это или настоящая, мы просим их решить, стоит ли это 100 долларов. Это позволяет нам научить G генерировать еще более реалистичную валюту (в нашем случае изображения). Рис. 1. Структура cGAN

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

  • агрегация и подготовка набора данных;
  • длинных итераций
  • стоимость экспериментов;
  • сложность CGAN, конфигурация множества регуляторов

Они продолжили свои исследования по преобразованию изображения в изображение с огромным и всеобъемлющим набором данных коллекции изображений.Сначала наша команда разработчиков работала с Transient Attribute Dataset. Однако из-за отсутствия изображений и для достижения лучших результатов и точности потребовался дополнительный набор данных изображений. Для этого были отобраны видеоматериалы поезда Nordland Line. Детали и образцы обоих наборов данных представлены ниже.

Набор данных №1. Аннотированные фотографии со 101 веб-камеры с уличными сценами.

  • Аннотировано людьми во время краудсорсинговой кампании (скачано).
  • Отфильтровано: отобранные, у которых есть пары «больше всего лета» и «больше зимы» (панды)

3000 пар изображений 2 сезона / 640 × 480 с масштабированием до 256 x 256.

Набор данных №2 . Четыре 10-часовых видео в формате Full HD, снятых с поезда во время рейса «Нордланд Лайн» в Норвегии за все четыре сезона.

  • Time-sync (загружено)
  • Разрезать на кадры (FFmpeg)
  • Автоматическое выравнивание лучших соседних кадров (Python + Hugin)

9000 пар изображений 2 сезона / 1000 × 1000 с масштабированием до 256 × 256.

Результаты преобразования изображения в изображение

Наши инженеры адаптировали модель для удовлетворения своих требований и делятся с вами своими лучшими результатами.

Обучающий набор: 11,500 пар изображений, набор для тестирования: ~ 600 пар изображений. Вот лучшие детали настройки:

  • 286 × 286 -> дрожание 256 × 256, горизонтальное зеркальное отображение
  • Условная модель D
  • PatchGAN.

Варианты

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

  • Манипуляции с наборами данных и смешивание
  • Дрожание, случайное зеркальное отображение, количество эпох
  • Безусловная / условная модель D
  • PatchGAN / PixelGAN / ImageGAN

Техническая информация

Техническая информация

Оборудование:

  • AWS p2.
Добавить комментарий

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