Здравствуйте. Сообщаем, что 16.03.2019 в 20-00 МСК будут проводится технические работы на сетевом дисковом хранилище VPS кластеров. В период проведения работ возможны проседания скорости работы дисковых подсистем. Приносим извинения за неудобства. cloud4box.com/vps/
Совет директоров ICANN принял решение разрешить проведение аукциона за право обладания односимвольным доменом O.com.
В тексте заключения сказано, что данное решение ICANN относится только к домену O.com, и не должно восприниматься как прецедент. То есть разрешение на продажу O.com не означает, что в будущем таким образом будут проданы и другие односимвольные домены. Если VeriSign захочет продать еще один такой домен, организация должна снова пройти длительную процедуру получения разрешения у ICANN.
Всю прибыль от аукциона VeriSign отдаст на благотворительность.
Главным участником аукциона, который добивался его проведения, является компания Overstock. Около десяти лет назад сообщалось, что Overstock согласна заплатить более миллиона долларов за домен O.com. Cейчас стоимость O.com, вероятно, измеряется уже несколькими миллионами. Пока неизвестно, кто еще захочет получить такой уникальный домен. Возможно, производитель спортивной одежды Oakley и кандидат в президенты США Опра Уинфри, у которых есть зарегистрированные товарные знаки из одной буквы — «О».
«Мы собрали Dell и AMD вместе в одном доме»
Теперь в дата-центре HETZNER можно заказать DELL сервера на базе AMD EPYC 7551P (32 ядра/64 потока)
Базовая конфигурация:
* 4 x 32 GB RAM (128 GB DDR4 ECC RAM)
* 240 GB SATA SSD Datacenter Edition
Кроме того, вы можете добавить до 10 дисков в соответствии с вашими конкретными требованиями к хранилищу. Вы можете установить NVM, которые начинаются с 28 евро в месяц, или твердотельные накопители, которые начинаются всего с 8 евро в месяц. Или вы можете смонтировать смесь обоих!
Вы можете обновить сервер с шагом 32 ГБ до 512 ГБ оперативной памяти DDR4 ECC (16 x 32 ГБ) (€ 24,00 в месяц за единицу).
€ 189.00
в месяц + € 189.00 разовая плата за установку
Почему выгодно купить данный сервер именно у нас?
— Душевная техническая поддержка
— Ненужно платить VAT (20% для России) €189 вместо €227
Для свободной регистрации стала доступна доменная зона .DEV
Зона совсем недавно стала общедоступной для регистрации и в ней еще много свободных имен. Подобрать красивый домен можно на нашем сайте
Хостинг-провайдер RUVDS при поддержке Huawei в России в рамках развития своей стратегии ввел в эксплуатацию две собственных гермозоны в дата-центрах Санкт-Петербурга и Казани.
«Казань и Санкт-Петербург стали пятыми и шестыми по счету площадками компании, в которых доступна облачная инфраструктура», — пояснил управляющий партнер RUVDS Никита Цаплин. «Развитие облачных ЦОД в региональных центрах позволит удовлетворить растущий спрос со стороны наших клиентов на размещение данных и сервисов в непосредственной близости от их местонахождения, а также обеспечит возможность построения географически-распределенной инфраструктуры. Теперь клиенты компании могут воспользоваться виртуальными серверами на территории всей Европейской части России с минимальной задержкой до нескольких миллисекунд. Мы также остаемся верны своей ценовой политике, поэтому стоимость аренды инфраструктуры будет одинаковой во всех точках присутствия RUVDS в мире».
Новые дата-центры Linxdatacenter в Санкт-Петербурге и в Казанском IT Парке обладают сертификатами качества TIER III от Uptime Institute (Uptime Institute Management & Operations). Таким образом ЦОДы полностью соответствуют международным требованиям по операционной устойчивости дата-центров и имеют SLA 99.982%.
Компания Huawei предоставит новейшее телекоммуникационное и серверное оборудование для новых гермозон хостинг-провайдера, а также последнюю версию программного обеспечения виртуализации и облачного управления FusionSphere. «Облачные технологии – одно из основных направлений развития Huawei в мире и в России, а партнеры – движущая сила нашего бизнеса, – говорит Тони Янь, директор департамента по работе с коммерческими заказчиками Huawei Enterprise в России. – Мы рады, что благодаря нашим надежным партнерам, таким как RUVDS, обладающим большим опытом, знаниями и технологической экспертизой по оборудованию Huawei, мы стремительно расширяем нашу деятельность не только по географии оказания услуг, но и в рамках системной интеграции решений Huawei в России».
RUVDS российский хостинг-провайдер VPS серверов, специализирующийся на оказании услуг IAAS корпоративного класса. Партнерами компании являются АО «ФИНАМ», финансовая группа «БКС», Национальный расчетный депозитарий (Московская биржа), АО «ВЦИОМ», компания «Гарс-Телеком», оператор такси Gett, оператор доставки Delivery Club и многие другие.
Компания RUVDS обладает собственным дата-центром уровня TIER III в г. Королеве, Московская область, а также гермозонами в дата-центрах в Цюрихе Interxion ZUR1 (Швейцария), Лондоне Equinix LD8 (Великобритания), Москве ММТС-9 (Россия), Санкт-Петербурге Linxdatacenter (Россия) и Казани IT Park (Россия).
Компания Huawei – ведущий мировой поставщик инфокоммуникационных и инфраструктурных решений, а также умных устройств. Основные направления ее работы – телекоммуникационные сети, информационные технологии, умные устройства и облачные сервисы, при этом Huawei стремится сделать цифровые технологии доступными как для бизнеса, так и для конечных потребителей, тем самым приближая создание интеллектуального, совершенного мира связи.
Продукты, решения и сервисы из комплексного портфолио Huawei обладают высокой надежностью и конкурентоспособностью. Открыто сотрудничая с партнерами по экосистеме, Huawei создает коммерческий потенциал для своих клиентов, расширяя спектр их возможностей.
Huawei направляет значительную часть инвестиций на проведение фундаментальных исследований, способствующих мировому прогрессу. В компании работает более 180 тыс. сотрудников в 170 с лишним странах мира. Huawei – частная компания, основанная в 1987 году. Она полностью находится в собственности сотрудников.
Малый и средний бизнес использует VPS также часто, как и выделенные физические серверы. Для крупных компаний это соотношение 20/80 соответственно.
Осенью 2017 года Яндекс запустил сервис онлайн-опросов под названием “Взгляд”. Интересно, что в условиях подбора аудитории среди прочих есть пункт “Интересуются темой создания и продвижения сайтов”. Среди таких людей наверняка много тех, кто пользуется тем или иным хостингом. Среди них мы провели опрос, результатами которого которого делимся с читателями.
Вопрос №1: Каким хостингом вы пользуетесь?
Варианты ответа: выделенным физическим сервером, виртуальным сервером (VPS), облачным хостингом или “я не знаю”.
Последним ответом мы хотели отсеять тех, кто не разбирается в нюансах хостинга. Таких оказалось 40% опрошенных. Причем осведомленность сильно зависит от размеров компании:
Больше половины тех, кто использует хостинг для собственных нужд, не знают, каким типом хостинга они пользуются.
Среди тех, кто “в теме”, были выбраны группы проектов с разной нагруженностью: менее 100 пользователей в сутки, от 100 до 1000 пользователей в сутки и более 1000 пользователей в сутки:
Как видим, чем нагруженнее проекты, тем реже они используют облачный хостинг.
Другой очевидный тренд: с увеличением размеров компании растет доля тех, кто предпочитает выделенный сервер — этот факт можно объяснить увеличением требований к безопасности и контроля за своими IT-ресурсами.
Вопрос №2: что повлияло на ваш выбор хостинга?
Отвечающим предлагалось расставить причины по приоритетам:
Как видим, ценник для VPS — не главный критерий выбора. Функциональность, безопасность и надежность — в числе основных приоритетов. В случае с облачным хостингом ситуация обратная — стоимость входит в тройку главных критериев.
Масштабируемость — наименее значимый параметр выбора у VPS и выделенных физических серверов, и это ожидаемый результат — данные типы хостинга наименее гибкие с этой точки зрения.
Техподдержка почти вошла в тройку важнейших параметров выбора у VPS, но оказалась в аутсайдерах у облачного хостинга.
Для специалистов мы подготовили ряд дополнительных вопросов.
Вопрос №3: какая система виртуализации использована на вашем виртуальном сервере?
VMware — безусловный лидер. Второе и третье место делят между собой Hyper-V и Xen. В аутсайдерах — KVM.
Вопрос №4: какие дополнительные услуги вы используете при работе с виртуальными серверами?
Список услуг (от более популярных к менее популярным):
Два из трех ответов-лидеров относятся к безопасности (как мы уже сказали выше, безопасность — один из основных критериев выбора хостинг-провайдера).
Вопрос №5: Какие программы и приложения вы используете на виртуальном сервере?
Список программ и приложений (от более популярных к менее популярным):
Результаты опроса помогут тем, кто выбирает хостинг. Те, кто уже определился, могут пройти опрос — он доступен по этой ссылке. yandex.ru/poll/9LFPhaW7NQjkVSZPh4Ar9i
Создание бизнеса — это не только разработка идеи и стратегии, но также подготовка документов и визиты в различные учреждения. В этом случае поиск надёжного банка может затянуться, а для предпринимателя потеря времени зачастую означает потерю прибыли.
При выборе банка стоит обращать внимание на такие факторы, как размер организации по активам, срок работы на рынке, включение в список системообразующих банков, клиентская база, а также позиции в международных рейтинговых системах. Все эти данные можно найти в открытых источниках.
Мы упростили поиск такого решения и представляем проверенные инструменты от «Альфа-Банка», с которыми вы сможете максимально просто и быстро открыть расчётный счёт и проводить финансовые операции. Для этого достаточно заполнить небольшую анкету, и в течение 24 часов с вами свяжется менеджер банка и назначит встречу. alfabank.ru/sme/quick/invitation/
Моментальные платежи и управление с любого устройства
После открытия счёта вам открываются новые возможности. Например, вы сможете использовать карту «Альфа-Cash Ультра», позволяющую снимать наличные в любом банкомате, а вносить наличные — в банкоматах «Альфа-Банка» и банков-партнёров с мгновенным зачислением на счёт.
«Альфа-Бизнес Онлайн» — целый банк в вашем компьютере или смартфоне!
Управлять счётом и совершать операции можно с любого компьютера через интернет-банк «Альфа-Бизнес Онлайн» или через мобильное приложение «Альфа-Бизнес Мобайл». Оба продукта включают много полезных опций для бизнеса, а также, согласно отзывам пользователей в App Store и Google Play, очень удобны.
В интернет-банке доступны все самые необходимые операции:
получение сведений об остатках по счетам в реальном времени;
выписки глубиной до пяти лет;
платежи в рублях и иностранной валюте;
обмен документами с банком.
Выписки по счёту автоматически подгружаются в онлайн-бухгалтерию, а при оплате счёта банк сам уведомляет ваших партнеров по e-mail и SMS об исполнении платежа.
Мобильное приложение «Альфа-Бизнес Мобайл», в свою очередь, — настоящий помощник руководителя. Управлять бизнесом можно в одно касание:
в любой момент можно получить выписку по счёту;
для проведения платежей в рублях даже платёжное поручение набивать не нужно — достаточно сфотографировать счёт или загрузить файл с ним;
специалисты банка проконсультируют вас в чате в любое время дня и ночи;
финансовая аналитика предприятия на основе оборотов по счетам поможет принимать верные управленческие решения;
выставлять счета и контролировать дебиторскую задолженность можно прямо в приложении.
Платежи через интернет-банк и мобильный банк проходят с зачислением день в день до 20:30 часов по местному времени (на Урале — до 22:30, в Сибири и на Дальнем Востоке — до 23:30), а внутри банка — до 23:30.
Всё работает в автоматическом режиме
Одно из основных преимуществ услуги интернет-банкинга состоит в интеграции с другими полезными для бизнеса инструментами. «Альфа-Бизнес Онлайн» автоматически обменивается данными с такими системами, как «Моё дело», «МойСклад», «Битрикс24» и многими другими. Также сервис выгружает банковские выписки и самостоятельно разносит данные по статьям «Доходы» и «Расходы» и позволяет передавать платёжные поручения в банк в один клик.
Используйте телефон как платёжный терминал
Услуги «Альфа-Банка» позволяют не только эффективно управлять счётом, но и принимать платежи клиентов. С мобильным терминалом компании вы сможете принимать оплату товаров или услуг картой в любом месте. Для использования такого мобильного терминала достаточно обладать расчётным счётом в «Альфа-Банке», телефоном или планшетом, подключённым к Интернету, и мобильным терминалом PIN-Pad. При этом вам не придётся платить абонентскую плату за терминалы и быть привязанными к проводному Интернету, что делает процесс ещё более удобным и мобильным.
Торговый эквайринг с простой интеграцией
В случае, если для вашего бизнеса мобильного терминала недостаточно, вам доступен сервис торгового эквайринга.
Он позволит:
установить отдельный терминал для каждой точки продажи (установкой оборудования занимаются сотрудники компании UCS);
подключать терминалы посредством IP, 3G, GSM, GPRS, DIAL UP и Bluetooth;
быстро возвращать деньги, если клиент вернул товар;
принимать популярные карты: VISA, MasterCard, JCB, UnionPay и «Золотая корона».
В командировке или дома — «Альфа-Банк» будет вместе с вами
Если вы уже успешно развиваете бизнес и вышли на межрегиональный или даже международный рынок, то, скорее всего, вашим сотрудникам приходится часто ездить в деловые поездки. В этом случае корпоративная карта «Альфа-Банка» будет для вас незаменима. Благодаря ей вы сможете без труда оплачивать командировочные и представительские расходы, расходы по основной деятельности, а также совершать хозяйственные и накладные платежи.
У вас также есть возможность получить любое количество карт, необходимое для компании, и выставить для каждой из них ограничение на оплату и снятие наличных. Это особенно полезно, если вы отправляете сотрудников в длительные командировки и хотите иметь полный контроль над их корпоративными расходами.
Зарплатные карты «Альфа-Банка» — быстро, удобно и всегда вовремя
Карты от «Альфа-Банка» также упрощают выплату зарплаты сотрудникам: на оформление карты для нового сотрудника уйдёт всего 5 дней, а начисление зарплаты всегда происходит без задержек.
Достоинства таких зарплатных карт:
доставка карт на рабочее место;
зачисление зарплаты одним реестром;
веб-сервис для зачисления зарплаты.
Если вы ещё не зарегистрированы в качестве ИП
В случае, если у вас ещё нет статуса ИП, вы легко можете зарегистрироваться в качестве индивидуального предпринимателя на сайте «Альфа-Банка». Специально для этого предусмотрена удобная форма подачи заявки. После этого вы сможете открыть расчётный счёт и пользоваться всеми его преимуществами!
Мы только что выпустили 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 функционировала:
Вы можете загрузить свой собственный тренировочный набор на свой экземпляр 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)
14 марта 2019 года на сайте REG.RU, крупнейшего доменного регистратора и хостинг-провайдера России, стартует предзаказ адресов в доменной зоне .MONSTER. Домен подойдёт для развлекательных ресурсов, специализированных литературных журналов, сайтов киностудии, личных блогов и ярких коммерческих проектов. Участие в этапе предзаказа повышает шансы на получение лучших имён во время открытой регистрации.
Изначально доменная зона .MONSTER принадлежала владельцам сайта по поиску работы MONSTER.COM и была доменом-брендом. Но компания не смогла найти для него применение. Однако .MONSTER оказался уж слишком интересен и привлекателен, чтобы просто быть удалённым и забытым. Поэтому его приобрел администратор зоны .XYZ XYZ Registry и сделал домен доступным для всех желающих.
Доменная зона .MONSTER прежде всего заинтересует владельцев развлекательных ресурсов: видеохостингов, сайтов с мемами и другим контентом. Зона .MONSTER также станет хорошим выбором для специализированных сайтов и интернет-журналов с хоррор-историями и рассказами. Домен подойдёт и крупным киностудиям, которые захотят сделать необычный промосайт для своего фильма о каком-либо монстре, или производителям тематических детских игрушек. Кроме того, .MONSTER может стать более ярким и дерзким аналогом доменов .GURU и .PRO. Владельцы сайтов в такой зоне смогут показать всем, что они настоящие «монстры» в своём деле и справятся с любой задачей.
Для участия в предзаказе достаточно подать заявку с указанием желаемого домена на сайте REG.RU и оплатить годовую стоимость регистрации — 709 рублей. Если доменное имя не будет зарегистрировано, то регистратор вернёт средства в полном объёме. Открытая регистрация в .MONSTER стартует 1 апреля 2019 года. Подробности о предзаказе на сайте REG.RU: www.reg.ru/domain/new-gtlds#preorder
«Возможность самореализоваться и выделиться — одно из преимуществ Интернета. И так было практически с самого начала. На рынке доменов действуют множество зон, главная цель которых не показать специализацию бизнеса или сайта, а подчеркнуть его индивидуальность, необычность и привлечь дополнительное внимание. Зоны .WTF, .LOL, .SEXY — этот список можно продолжать долго. Сейчас к нему присоединяется .MONSTER. Домен для самых смелых, ярких, заметных. Для настоящих монстров рынка», — комментирует генеральный директор REG.RU Алексей Королюк.
Каждый сервер защищен отдельно (Смартфусе), может быть выключен вручную, и мы mesure энергопотребление в режиме реального времени. Нет дополнительных кабелей: Ethernet над питанием (BPL/CPL) с шифрованием.