Summer Deals 2019 starts today


Мы рады сообщить наше лето продажи: Летние предложения доступны с сегодняшнего дня! 7 различных конфигураций серверов доступны от € 15,99 в месяц и до -60% на срок до 6 месяцев. Обратите внимание, что количество ограничено, поэтому первым пришел, первым обслужен!
www.online.net/en/dedicated-server


Попробуйте Scaleway бесплатно
Начиная с июля 1 — го, Scaleway новички получат € 500 кредит на знак до тестирования наших услуг. Этот кредит не действует на все виды продукции до августа 1 — го, 00:00 UTC. Не стесняйтесь, чтобы пригласить друзей, чтобы попробовать наши продукты!
console.scaleway.com/

ScaleDay: Спасибо Вам все

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

Читать дальше →

New Cloud Instances in AMS1 at Scaleway



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

Начиная с € 2,99 в месяц, случаи развития хорошо подходят для небольших сайтов, приложений и сред разработки, в то время как общие назначение Экземпляры производственно-класс и были разработаны для поддержки высоких рабочих нагрузок вычислительных от € 39 в месяц.

Эти новые экземпляры заменить Start и Pro (X64) диапазоны повышения общей производительности и надежности наших экземпляров виртуальных облаков с до 48 мощного AMD EPYC и репликации виртуальных ЦП локального хранилища NVMe. Кроме того, как всегда, эти примеры доступны с резервным копированием, сетями и параметрами безопасности.

console.scaleway.com/compute/servers/create?region=ams1


New Annoucements during the ScaleDay



Только 6 дней до празднования 20-летия Online в течение ScaleDay. Это событие будет прекрасная возможность восстановить связь с неординарным ДНК наших начинаний.

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

Ознакомьтесь с планированием, чтобы найти сессии лучше всего подходит для ваших потребностей!
www.scaleway.com/fr/evenements/scaleday/agenda/

Scaleway сообщаяет об угрозе пожара и взрыва на DC5

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

Власти предупредили нас о хранении химических продуктов в этом соседнем здании. На данный момент существует угроза взрыва.








Польза удерживания пруда


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

Load Balancer in General Availability and many more - Online by Scaleway



Новичок в облачной экосистеме Scaleway, Load Balancer, как только что был выпущен в общей доступности! За 8,99 евро в месяц или 0,018 евро в час вы можете теперь распределить нагрузку между несколькими экземплярами Scaleway или выделенными серверами Dedibox и повысить доступность своей платформы с мощной избыточной архитектурой.
www.scaleway.com/en/load-balancer/



ScaleDay: 17 дней до нашего ежегодного мероприятия!
Осталось всего две недели до ScaleDay. Адрес теперь публично рекламируется! Давайте встретимся на бульваре Лефевр, 75, Париж, 13 июня 13 июня в 13:30. ScaleDay — это наше ежегодное мероприятие, посвященное (повторному) открытию наших текущих и будущих продуктов, а также прямому обмену с нашими командами. Мы также будем отмечать 20-летие Online, нашего исторического бренда, который стал онлайн Scaleway в январе 2019 года!
www.eventbrite.com/e/billets-scaleday-59762583496

Ваше приглашение на 20-й годовщины Online



Мы особенно рады пригласить Вас на наш первый ScaleDay'n ночь, событие, общие для онлайн по Scaleway, Scaleway и Scaleway центров обработки данных брендов, на 13 июня 2019 года, начиная с 1:30.
Это уникальное событие является поводом, чтобы отметить 20 лет существования нашей компании и ее трансформацию в Scaleway: бренд Облако Илиады

Даже если меняется название бренда, ДНК остается тем же самым. Мы прошли долгий путь с 1999 года, благодаря вам и вашей поддержке. Мы покажем Вам в тот же день, что это только начало.
ScaleDay будет посвящен (ре) открытие наших текущих и будущих продуктов, но также и прежде всего, искренние обмены между вами и нашими командами. Возможность задать свои вопросы и понять, куда мы идем.

В дополнении к тоникам и ключевым объявлениям, где вы найдете Arnaud de Bermingham, наш генеральный директор, вы также сможете посетить многочисленные семинары и конференцию с реальными потребительными случаями, такими как:
  • Эволюция выделенных серверов для BareMetal и Cloud Экземпляры: Как подготовить и распространить свои обычаи
  • Как перенести серверы моей компании, чтобы Kubernetes в облаке: различные шаги, чтобы следовать
  • Как развернуть большую частную архитектуру в Scaleway и сделать его превратиться в гибридное облако

Наши специалисты готовы ответить на ваши вопросы и помочь вам получить ваши руки на наших последних решения.

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

В этот день будет продолжаться с празднованием 20-й годовщины Online, 20 лет работы, сотрудничества, достижения и трансформации. Верная ДНК компании, вечер обещает удивить вас. И уникальные и подлинный, становятся неосторожными пилотами нашего Scaleway корабля.

www.eventbrite.com/e/billets-scaleday-59762583496

Присоединяйтесь к нам на Интернет с ScaleDay Scaleway



Мы рады пригласить Вас в наш ScaleDay, первое издание нашего крупнейшего ежегодного мероприятия клиента, существенный перекресток объединение Scaleway, Интернет по Scaleway и Scaleway Datacenter сообщества!

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

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

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

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

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

www.eventbrite.com/e/billets-scaleday-59762583496

Новое облако экземпляров, объект хранения в Париже и Вынося ScaleDay




Даже больше экземпляров Нового облака
В прошлом месяце, Scaleway завершил свой профессиональный выбор экземпляров, чтобы предоставить нашим клиентам всего уровень мощности и услуг для масштабирования и расти быстрее с нами. Все началось с GPU Instances с посвященный NVIDIA Tesla P100 на лучшее соотношение цена-качество на рынке. Тогда мы объявили о наших общих Purpose экземпляров с до 48 высокого класса AMD EPYC питания и выше виртуальных ЦП ИХ. Новые общего назначения Инстансы начинаются с € 39 / месяц. Наконец, мы добавили на прошлой неделе наш новый модельный ряд экземпляров разработчиков, чтобы начать свое путешествие с нами. Заменяя экземпляры Пуска с экземплярами разработчиков, мы обеспечиваем стабильность и Reliablity по лучшей конкурентоспособной производительности в своей категории.
www.scaleway.com/development-instances/

Пригласите своих друзей, чтобы попробовать Scaleway бесплатно
С апреля 1 — го, Scaleway новички получают € 100 кредит на знак до тестирования наших услуг. Этот кредит действует на все виды продукции до мая 1 — го, 00:00 UTC. Не стесняйтесь, чтобы пригласить друзей, чтобы попробовать наши продукты!

Объект хранения в Париже
Хранение объекта теперь доступна в зоне Paris FR-PAR. Это позволяет хранить данные поблизости экземпляров и Dedibox выделенных серверов легко и при низкой стоимости с использованием консоли Scaleway или любой S3-совместимым инструмента.
console.scaleway.com/object-storage/


www.eventbrite.com/e/billets-scaleday-59762583496

Поделитесь своим мнением!
У вас есть возможность предоставить нам свои отзывы о онлайн по Scaleway и ее продукции. Ваше мнение драгоценно и поможет нам значительно улучшить наши предложения и качество обслуживания. Это не займет у Вас более 4 минут, чтобы ответить.
scaleway.typeform.com/to/OYcZjM

Учебники и статьи

AWS-CLI является открытым кодом построен на вершине AWS SDK для Python (Бото), который предоставляет команды для взаимодействия с сервисами AWS. В этом уроке вы узнаете, как использовать для хранения объектов с AWS-CLI и как вы можете управлять своими ведрами и объекты с помощью АМС.
www.scaleway.com/docs/object-storage-with-aws-cli/


Давайте Encrypt является органом сертификации (CA), который предоставляет бесплатные TLS / SSL сертификаты, чтобы включить HTTPS на веб-серверах. Они обеспечивают программный клиент под названием Certbot автоматизировать большинство этапов, необходимых для получения сертификата и настроить его в веб-сервер Nginx.
www.scaleway.com/docs/how-to-configure-nginx-with-lets-encrypt/

Это статья время!
В первой статье мы рассмотрели основные особенности хранения объектов. В этой статье мы представим внутреннюю архитектуру Scaleway хранения объектов. Следите за последним из серии, которая будет опубликована в ближайшее время.
blog.scaleway.com/2019/object-storage-how-it-works/
blog.scaleway.com/2019/object-storage-scaleway-what-is-it/

Представление экземпляров GPU: использование глубокого обучения для получения фронтальной визуализации изображений лица

Мы только что выпустили GPU Instances, наши первые серверы, оснащенные графическими процессорами (GPU). Оснащенные высокопроизводительными 16-ГБ картами NVIDIA Tesla P100 и высокоэффективными процессорами Intel Xeon Gold 6148, они идеально подходят для обработки данных, искусственного интеллекта, рендеринга и кодирования видео. В дополнение к выделенному графическому процессору и 10 ядрам Intel Xeon Gold каждый экземпляр поставляется с 45 ГБ памяти, 400 ГБ локального хранилища NVMe SSD и оплачивается 1 евро в час или 500 евро в месяц.

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

Обзор графического процессора
Графический процессор (GPU) стал условным обозначением специализированной электронной схемы, предназначенной для питания графики на машине, в конце 1990-х годов, когда она была популяризирована производителем чипов NVIDIA.

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

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

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

Например, программное обеспечение Enhance от CSI: NY (или Les Experts: Manhattan для наших франкоязычных читателей) уже вышло за пределы современных нейронных сетей Super Resolution. На более экстремальной стороне воображения находится враг государства:
«Поворот [кадры видеонаблюдения] на 75 градусов вокруг вертикали», должно быть, казался совершенно бессмысленным задолго до 1998 года, когда вышел фильм, о чем свидетельствуют комментарии YouTube под этим конкретным отрывком:


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

Вступление
Забудьте MNIST, забудьте о классификаторах скучных кошек и собак, сегодня мы узнаем, как сделать что-то гораздо более захватывающее! Эта статья вдохновлена впечатляющей работой R. Huang et al. («За гранью вращения лица: глобальное и локальное восприятие GAN для фотореалистичного синтеза идентичности с сохранением идентичности»), в котором авторы синтезируют фронтальные виды лиц людей с учетом их изображений под разными углами. Ниже приведен рисунок 3 из этой статьи, в котором они сравнивают свои результаты [1] с предыдущей работой [2-6]:


Мы не будем пытаться воспроизвести современную модель R. Huang et al. Вместо этого вы сможете построить и обучить модель лобной фронтализации, дающую разумные результаты за один день:


Дополнительно вы узнаете:
  • Как использовать библиотеку NVIDIA DALI для высоко оптимизированной предварительной обработки изображений на GPU и подачи их в модель глубокого обучения.
  • Как зашифровать генерирующую состязательную сеть, которую в PyTorch назвал «самой интересной идеей за последние десять лет в машинном обучении» Янн ЛеКун, директор Facebook AI.
  • У вас также будет своя собственная Генеративная сеть состязаний, настроенная на обучение по выбранному вами набору данных. Без дальнейших церемоний, давайте копаться!

Шаг 1: Запуск и настройка экземпляра Gpu на Scaleway
Если вы еще не получили себе экземпляр GPU, размещенный в Scaleway, вы можете сделать это:
  • Войдите в консоль Scaleway.
  • Выберите вкладку Compute на левой боковой панели и нажмите зеленую кнопку + Создать сервер.
  • Выберите вкладку «GPU OS» в «Выберите образ» и «GPU» в «Выберите сервер».

Для этого проекта вы можете выбрать любой из двух доступных в настоящее время образов ОС GPU (10.1 и 9.2 относятся к соответствующим версиям CUDA) и выбрать RENDER-S в качестве сервера.


Нажмите на зеленую кнопку «Создать новый сервер» внизу страницы, и через несколько секунд ваш собственный экземпляр GPU будет запущен!


Теперь вы можете подключиться к нему по ssh, используя IP-адрес, который вы прочитали в своем списке экземпляров на вкладке Compute:
ssh root@[YOUR GPU INSTANCE IP ADDRESS]


Докерский путь:
Если вы знакомы с Docker, удобной платформой контейнерирования, которая позволяет упаковывать приложения вместе со всеми их зависимостями, продолжайте и извлекайте наш образ Docker, содержащий все пакеты и код, необходимый для проекта Frontalization, а также небольшой примерный набор данных:
nvidia-docker run -it rg.fr-par.scw.cloud/opetrova/frontalization:tutorial
root@b272693df1ca:/Frontalization# ls
Dockerfile  data.py  main.py  network.py  test.py  training_set

(Обратите внимание, что вам нужно использовать nvidia-docker, а не обычную команду docker из-за наличия графического процессора.) Теперь вы находитесь в каталоге Frontalization, содержащем четыре файла Python, содержимое которых мы рассмотрим ниже, и каталог training_set содержащий образец учебного набора данных. Отличное начало, теперь вы можете перейти к шагу 2!

Родной путь:
Если вы не знакомы с Docker, нет проблем, вы можете легко настроить среду вручную. Экземпляры Scaleway GPU поставляются с уже установленными CUDA, Python и conda, но на момент написания этой статьи вам необходимо понизить версию Python до Python 3.6, чтобы библиотека DALI от Nvidia функционировала:
conda install -y python==3.6.7
conda install -y pytorch torchvision

pip install --extra-index-url https://developer.download.nvidia.com/compute/redist nvidia-dali==0.6.1


Вы можете загрузить свой собственный тренировочный набор на свой экземпляр GPU через:
scp -r path/to/local/training_set root@[YOUR GPU INSTANCE IP ADDRESS]:/root/Frontalization

и сохраните код Python, который вы увидите ниже, в каталоге Frontalization, используя выбранный вами текстовый редактор терминала (например, nano или vim, оба из которых уже установлены). В качестве альтернативы вы можете клонировать репозиторий Scaleway GitHub для этого проекта.

Шаг 2: Настройка ваших данных
В основе любого проекта машинного обучения лежат данные. К сожалению, Scaleway не может предоставить базу данных CMU Multi-PIE Face, которую мы использовали для обучения из-за авторских прав, поэтому мы продолжим, если у вас уже есть набор данных, на котором вы хотели бы обучить свою модель. Чтобы использовать библиотеку загрузки данных NVIDIA (DALI), изображения должны быть в формате JPEG. Размеры изображений не имеют значения, поскольку у нас есть DALI для изменения размера всех входов до размера, требуемого нашей сетью (128 × 128 пикселей), но для получения наиболее реалистичных синтезированных изображений желательно соотношение 1: 1.,
Преимущество использования DALI перед, например, стандартным набором данных PyTorch, заключается в том, что любая предварительная обработка (изменение размера, обрезка и т. Д.) Выполняется на графическом процессоре, а не на процессоре, после чего предварительно обрабатываются изображения на графическом процессоре. питаются прямо в нейронную сеть.

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

Как видите, подпапка 001 /, соответствующая теме 001, содержит изображения человека, изображенные в 001.jpg — это близко обрезанные изображения лица в разных позах, условиях освещения и различных выражениях лица. Для целей фронтализации лица крайне важно, чтобы фронтальные изображения были выровнены как можно ближе друг к другу, тогда как другие (профильные) изображения имеют немного больше свободы.

Например, все наши целевые фронтальные изображения имеют квадратную форму и обрезаются таким образом, что нижняя часть подбородка человека расположена в нижней части изображения, а центрированная точка между внутренними углами глаз расположена на 0,8 ч выше и 0,5 часа справа от нижнего левого угла (h — высота изображения). Таким образом, после изменения размера изображений до 128 × 128 все элементы лица появляются в более или менее одинаковых местах на изображениях в обучающем наборе, и сеть может научиться генерировать упомянутые элементы и объединять их вместе в реалистичный синтез. лица.


Строительство трубопровода DALI:
Теперь мы собираемся построить конвейер для нашего набора данных, который будет наследоваться от nvidia.dali.pipeline.Pipeline. На момент написания DALI не поддерживает непосредственное чтение пар (изображение, изображение) из каталога, поэтому мы будем использовать nvidia.dali.ops.ExternalSource () для передачи входных данных и целей в конвейер.
data.py
import collections
from random import shuffle
import os
from os import listdir
from os.path import join

import numpy as np
from nvidia.dali.pipeline import Pipeline
import nvidia.dali.ops as ops            
import nvidia.dali.types as types


def is_jpeg(filename):
    return any(filename.endswith(extension) for extension in [".jpg", ".jpeg"])


def get_subdirs(directory):
    subdirs = sorted([join(directory,name) for name in sorted(os.listdir(directory)) if os.path.isdir(os.path.join(directory, name))])
    return subdirs


flatten = lambda l: [item for sublist in l for item in sublist]


class ExternalInputIterator(object):

    def __init__(self, imageset_dir, batch_size, random_shuffle=False):
        self.images_dir = imageset_dir
        self.batch_size = batch_size

        # First, figure out what are the inputs and what are the targets in your directory structure:
        # Get a list of filenames for the target (frontal) images
        self.frontals = np.array([join(imageset_dir, frontal_file) for frontal_file in sorted(os.listdir(imageset_dir)) if is_jpeg(frontal_file)])

        # Get a list of lists of filenames for the input (profile) images for each person
        profile_files = [[join(person_dir, profile_file) for profile_file in sorted(os.listdir(person_dir)) if is_jpeg(profile_file)] for person_dir in get_subdirs(imageset_dir)]

        # Build a flat list of frontal indices, corresponding to the *flattened* profile_files
        # The reason we are doing it this way is that we need to keep track of the multiple inputs corresponding to each target
        frontal_ind = []
        for ind, profiles in enumerate(profile_files):
            frontal_ind += [ind]*len(profiles)
        self.frontal_indices = np.array(frontal_ind)

        # Now that we have built frontal_indices, we can flatten profile_files
        self.profiles = np.array(flatten(profile_files))

        # Shuffle the (input, target) pairs if necessary: in practice, it is profiles and frontal_indices that get shuffled
        if random_shuffle:
            ind = np.array(range(len(self.frontal_indices)))
            shuffle(ind)
            self.profiles = self.profiles[ind]
            self.frontal_indices = self.frontal_indices[ind]


    def __iter__(self):
        self.i = 0
        self.n = len(self.frontal_indices)
        return self


    # Return a batch of (input, target) pairs
    def __next__(self):
        profiles = []
        frontals = []

        for _ in range(self.batch_size):
            profile_filename = self.profiles[self.i]
            frontal_filename = self.frontals[self.frontal_indices[self.i]]

            profile = open(profile_filename, 'rb')
            frontal = open(frontal_filename, 'rb')

            profiles.append(np.frombuffer(profile.read(), dtype = np.uint8))
            frontals.append(np.frombuffer(frontal.read(), dtype = np.uint8))

            profile.close()
            frontal.close()

            self.i = (self.i + 1) % self.n
        return (profiles, frontals)

    next = __next__


class ImagePipeline(Pipeline):
    '''
    Constructor arguments:  
    - imageset_dir: directory containing the dataset
    - image_size = 128: length of the square that the images will be resized to
    - random_shuffle = False
    - batch_size = 64
    - num_threads = 2
    - device_id = 0
    '''

    def __init__(self, imageset_dir, image_size=128, random_shuffle=False, batch_size=64, num_threads=2, device_id=0):
        super(ImagePipeline, self).__init__(batch_size, num_threads, device_id, seed=12)  
        eii = ExternalInputIterator(imageset_dir, batch_size, random_shuffle)
        self.iterator = iter(eii)
        self.num_inputs = len(eii.frontal_indices)

        # The source for the inputs and targets
        self.input = ops.ExternalSource()
        self.target = ops.ExternalSource()

        # nvJPEGDecoder below accepts  CPU inputs, but returns GPU outputs (hence device = "mixed")
        self.decode = ops.nvJPEGDecoder(device = "mixed", output_type = types.RGB)

        # The rest of pre-processing is done on the GPU
        self.res = ops.Resize(device="gpu", resize_x=image_size, resize_y=image_size)
        self.norm = ops.NormalizePermute(device="gpu", output_dtype=types.FLOAT,
                                         mean=[128., 128., 128.], std=[128., 128., 128.],
                                         height=image_size, width=image_size)


    # epoch_size = number of (profile, frontal) image pairs in the dataset
    def epoch_size(self, name = None):
        return self.num_inputs


    # Define the flow of the data loading and pre-processing
    def define_graph(self):    
        self.profiles = self.input(name="inputs")
        self.frontals = self.target(name="targets")
        profile_images = self.decode(self.profiles)
        profile_images = self.res(profile_images)
        profile_output = self.norm(profile_images)
        frontal_images = self.decode(self.frontals)
        frontal_images = self.res(frontal_images)
        frontal_output = self.norm(frontal_images)
        return (profile_output, frontal_output)


    def iter_setup(self):
        (images, targets) = self.iterator.next()
        self.feed_input(self.profiles, images)
        self.feed_input(self.frontals, targets)


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

Если вы используете код из этого учебника в блокноте Jupyter, вот как вы можете использовать ImagePipeline для отображения изображений:
from __future__ import division
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
%matplotlib inline


def show_images(image_batch, batch_size):
    columns = 4
    rows = (batch_size + 1) // (columns)
    fig = plt.figure(figsize = (32,(32 // columns) * rows))
    gs = gridspec.GridSpec(rows, columns)

    for j in range(rows*columns):
        plt.subplot(gs[j])
        plt.axis("off")
        plt.imshow(np.transpose(image_batch.at(j), (1,2,0)))


batch_size = 8
pipe = ImagePipeline('my_dataset_directory', image_size=128, batch_size=batch_size)
pipe.build()
profiles, frontals = pipe.run()


# The images returned by ImagePipeline are currently on the GPU
# We need to copy them to the CPU via the asCPU() method in order to display them
show_images(profiles.asCPU(), batch_size=batch_size)
show_images(frontals.asCPU(), batch_size=batch_size)


blog.scaleway.com/2019/gpu-instances-using-deep-learning-to-obtain-frontal-rendering-of-facial-images/