Эдср энциклопедия: Энциклопедия декоративных садовых растений

Интернет-издания

Розничная торговля новыми и букинистическими книгами, новыми и старыми журналами, фотоатласами, видеофильмами и компакт-дисками по цветоводству, аранжировке, ландшафтному дизайну; продажа книг и журналов по индивидуальным заказам из Англии, Германии, Голландии, Италии, США, Франции.

Получить ответы на все интересующие Вас вопросы Вы можете по электронной почте [email protected] или, оставив сообщение в гостевой книге

  

  • Интернет-журнал “Палисад” Выпуск 7 от 23.05.08
  • Интернет-журнал “Палисад” Выпуск 6 от 23.05.08
  • Интернет-журнал “Палисад” Выпуск 5 от 30.11.07
  • Интернет-журнал “Палисад” Выпуск 4 от 30.11.07
  • Интернет-журнал “Палисад” Выпуск 3 от 17.
    11.07
  • Интернет-журнал “Палисад” Выпуск 2 от 21.10.07
  • Интернет-журнал “Палисад” Выпуск 1 от 21.10.07
  • Интернет-журнал “Природа и ландшафт” №6
    компании “БРУНС ПФЛАНЦЕН” от 31.12.03
  • Интернет-журнал “Природа и ландшафт” №5
  • Интернет-журнал “Природа и ландшафт” №4
  • Интернет-журнал “Природа и ландшафт” №3
  • Интернет-журнал “Природа и ландшафт” №2
  • Интернет-журнал “Природа и ландшафт” №1
  • Культивар – электронный журнал любителей кактусной экзотики.
    Фотографии, статьи по содержанию и биологии растений, реклама
    коллекций. Издается на русском и английском языках. Приглашаем
    любителей всех стран Мира. от 04.04.04

  • Энциклопедия декоративных садовых растений (ЭДСР)
    «Энциклопедия декоративных садовых растений» (ЭДСР) создана с
    целью объединения информации о растениях, которые используются в
    декоративном садоводстве, и распространия ее среди всех
    заинтересованных пользователей Интернета. Это – некоммерческий
    проект. Его создатели не имеют никакой экономической выгоды от
    существования сайта. Данные о растениях собраны из книг, журналов,
    газет и CD-ROMов, названия которых приведены в «Источниках».
    Большая благодарность всем постоянным посетителям сайта, которые
    помогали и помогают советами, знаниями и энтузиазмом. Любое
    коммерческое распространение информации с ЭДСР в электронном и
    другом виде является несанкционированным и не входит в сферу
    ответственности создателей сайта. от 14.03.07

  • Фотогалерея суккулентов Петра Лапшина
    Фотографии около 300 видов различных листовых суккулентов, уход
    за ними; материалы по лофофорам, литопсам. от 04.04.04

  • “Эписция” – проект, посвященный новому модному комнатному
    растению из семейства Gesneriaceae – эписции. На сайте
    иллюстрированные описания более сотни видов и сортов, уход в
    домашних условиях, продажа посадочного материала. от 22.07.04

Энциклопедия комнатных и садовых растений

 

В древнеримской мифологии  Флора – богиня цветов, весны, юности (от лат.  flos -«цветок»). В наше время флорой называют все множество видов цветов и растений, которые произрастают на какой-либо определенной территории.

 

Богатейшее царство флоры поражает своим разнообразием. Во флоре нашей планеты насчитывается 250—300 тысяч видов ныне живущих сосудистых растений, в т.ч. 15 тыс. папоротникообразных, 25 тыс. мохообразных. Наиболее богата флора тропических стран, радующая глаз буйством красок и форм, а по направлению к полюсам она беднеет, ее красота строже и неприметней. Чем разнообразнее географические условия страны, тем богаче ее флора.

 

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

Декоративные деревья и кустарники

Лиственные деревья и кустарники
Лиственные породы составляют основной материал для озеленения любой территории. Благодаря различной окраске ствола, листьев, цветков и плодов, с их помощью можно создать живописные древесно-кустарниковые группы. Раздел содержит описание 240 видов деревьев и кустарников.
Хвойные растения
За исключением лиственницы, все хвойные породы вечнозеленые. Круглый год они создают основные цветовые пятна и фон для других растений. Они геометричны, в отличие от свободных форм лиственных пород. Наша энциклопедия содержит около 50 видов хвойных растений.

Комнатные растения

Бромелиевые
Семейство Бромелиевые включает более 3000 видов. Травянистые растения, ведущие наземный и эпифитный образ жизни. Произрастают в условиях тропиков и субтропиков в Северной и Южной Америке.
Декоративно-лиственные растения
Обширная группа растений, позволяющая создавать разнообразные композиции на ограниченной территории. Составляют основу ассортимента комнатных растений.
Кактусы
Обширное семейство, включающее около 3000 видов. Жители тропиков, сухих лесов, горных районов, пустынь. Их можно назвать самыми неприхотливыми в уходе.
Комнатные плодовые растения
В этой группе наиболее популярны цитрусовые культуры и кофейное дерево. Эти растения больше подходят для зимнего сада и оранжереи, чем для комнатного содержания.
Красивоцветущие растения
К этой группе относятся растения разных жизненных форм и условий содержания. По длительности цветения подразделяются на одноразовые, повторно- и долгоцветущие.
Орхидеи
Семейсто Орхидные (Orchidaceae) насчитывает более 20 000 видов. Это, пожалуй, самые экзотические растения для комнатного содержания. Среди них есть капризные и легкие в уходе.
Пальмы
Семейство Арековые (Arecaceae) насчитывает около 240 родов и 3400 видов. Пальмы стали неизменным элементом растительного декора самых разных помещений.
Папоротники
Это древнейшие обитатели Земли. Их насчитывается около 12 000 видов. Выращивать папоротники в комнатной культуре стало модно в XVIII веке. Для комнатных условий пригодны более 2 000 видов.
Суккуленты
Группа многолетних растений, способных запасать воду в мясистых листьях или стеблях. Суккуленты встречаются во многих семействах. Уход за этими растениями специфичен, но не сложен.

Лианы

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

Овощные культуры

Бобовые культуры
Группа овощных растений, объединяющая горох, три вида фасоли, бобы. Бобовые ценятся прежде всего за раннюю, питательную продукцию. Так, фасоль и соя по питательности вполне способны заменить мясо. К тому же растения обогащают почву азотом, используются в качестве зеленого удобрения (сидератов), идут на корм скоту.
Зеленные культуры
Значительная группа растений, включающая 6 ботанических семейств – Сельдерейные, Астровые, Лебедовые, Капустные, Луковые, Яснотковые. Подразделяется на 2 подгруппы: посевные и выгоночные. Ценны содержанием витаминов, минеральных солей, ароматических веществ.
Капустные культуры
Большое разнообразие видов и хозяйственное значение растений этой группы, а также их вкусовые качества, объясняют популярность капустных культур. В России капуста занимает первое место по валовому сбору среди овощных культур.
Корнеплодные и клубнеплодные растения
В данную группу входят растения из 7 семейств – Астровые, Вьюнковые, Крестоцветные, Маревые, Пасленовые, Сельдерейные, Яснотковые. Хозяйственное значение одного из представителей этой группы – картофеля – отражено в русской пословице: “Картофель – второй хлеб”.
Луковичные культуры
К этой группе относятся около 400 представителей рода Лук (Allium) семейства Луковые (Alliaceae). Все растения по своей природе являются многолетними, однако в пищевых целях выращиваются в течение 1-3 лет. Целебные свойства обусловлены высоким содержанием эфирных масел.
Пасленовые культуры
Наиболее распространенными растениями семейства Пасленовые являются картофель, томат, перец, баклажан, физалис. Томат считается самой популярной культурой в мире, его удельный вес в общем объеме переработки плодоовощного сырья достигает 80%. Баклажан и перец производятся в гораздо меньших объемах, а физалис встречается преимущественно на приусадебных участках.
Малораспространенные культуры
Группа растений, не являющихся для России новыми, однако не получивших большого распространения или попросту надолго забытых. Эти культуры обладают ценными хозяйственными качествами и заслуживают более широкого признания.
Пряно-вкусовые культуры
В эту группу входит большое количество растений из различных семейств. Главное отличие этих овощных культур – высокое содержание ароматических масел. Кроме своих пищевых достоинств они обладают целебными свойствами, служат прекрасными медоносами, привлекают полезных насекомых.
Тыквенные культуры
Семейство Тыквенные довольно велико и разнообразно. В нем более 100 родов и около 400 видов однолетних и многолетних травянистых растений, лиан, кустарников. Культурных растений насчитывается почти два десятка видов. Наибольшую популярность в России получил огурец.

Плодовые и ягодные культуры

Виноград
Возраст винограда оценивается примерно в сто миллионов лет. Культивировать его начали в медном веке. В России первый виноградник был заложен в 1613 году.
Косточковые
Относятся к семейству Розовые (Розоцветные), подсемейству Сливовые (Prunoideae). Широко распространены в умеренной зоне всего земного шара.
Орехоплодные
Древесные культуры, дающие плоды, известные под хозяйственным названием «орехи». В странах СНГ орехоплодные культуры распространены слабо, занимают около 4% площади всех садов.
Семечковые
Семечковые культуры относят к семейству Roseceae (розовые), подсемейству Pomoideae (семечковые). Семейство Розовые насчитывает около 6-10 подсемейств, 90 родов и 1500 видов.
Ягодные
Большая группа многолетних кустарников, полукустарников и травянистывх растений, образующих сочные плоды. Наиболее распространенной ягодной культурой во всем мире является земляника садовая.
Экзотические
Редкие теплолюбивые растения, которые, благодаря селекции, могут выращиваться в некоторых регионах России. Информация о пищевых, лекарственных и других ценных свойствах этих экзотических плодов.

Растения для водоемов

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

Травянистые растения для открытого грунта

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

Информация по условиям выращивания и размножению наиболее популярных однолетних и многолетних садовых растений (более 650 описаний). Поиск по прайс-листам садовых центров и питомников.

Дикорастущие растения

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

Уникальный раздел, где собрано более 120 фотографий и описаний дикорастущих растений средней полосы России.

Где купить?

АГРОТЕХ

(499) 906-4650 опт,розн,услуги
(495) 485-8642 розн

agrotehcom.ru

Нейронная сеть сверхвысокого разрешения с одним изображением | Энциклопедия MDPI

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

1. Введение

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

Многие традиционные методы [2,3,4] [1][2][3] были предложены для получения изображений с высоким разрешением (HR) из их версий с низким разрешением (LR) путем установления отношения отображения между изображениями LR и изображения ЧСС. Эти методы быстрые, легкие и эффективные, что делает их предпочтительными в качестве базовых инструментов в задачах SISR [5] [4] . Однако при их применении существует общая и неотъемлемая проблема: утомительная настройка параметров. Получение желаемых результатов зависит от постоянной настройки параметров с учетом различных входных данных. Это неудобство отрицательно сказывается как на эффективности, так и на пользовательском опыте.

2. Глубокий SISR на основе CNN

Как и в других задачах компьютерного зрения, SISR добился значительного прогресса благодаря глубоким свёрточным нейронным сетям. Донг и др. впервые предложил SRCNN [15] [5] на основе неглубоких CNN. Этот метод включает в себя увеличение количества изображений с помощью бикубической интерполяции. Благодаря трем сверточным слоям, а также извлечению и представлению фрагментов, а также нелинейному отображению и реконструкции изображений сеть была создана. Позже эта команда предложила FSRCNN [16] [6] , а Shi et al. предложенный ESPCN [25] [7] . Между тем, Лай и др. предложил лапласовскую пирамидальную сеть со сверхвысоким разрешением [8] , которая принимает изображения с низким разрешением в качестве входных данных и постепенно реконструирует остаточные поддиапазоны изображений с высоким разрешением. Тай и др. использовал сеть с постоянной памятью (MemNet) [9] , используя очень глубокую сеть. Тиан и др. предложил метод CNN от грубого к точному [26] [10] , который с точки зрения низкочастотных признаков и высокочастотных признаков добавляет гетерогенные свертки и блоки уточнения для извлечения и обработки высокочастотных и низкочастотных особенности отдельно. Вэй и др. [27] [11] использовал каскадные плотные соединения для извлечения признаков разной тонкости из сверточных слоев разной глубины. Джин и др. принят фреймворк [28] [12] для гибкой настройки архитектуры сети, адаптации различных видов изображений. В DRCN [29] [13] использовалась глубоко рекурсивная сверточная сеть для повышения производительности без введения новых параметров для дополнительных сверток. DRRN [7] [14] улучшил DRCN за счет использования остаточных сетей. Лим и др. предложил расширенную глубокую остаточную сеть (EDSR) [6] [15] . Лю и др. [30] [16] предложил улучшенную версию U-Net на основе многоуровневого вейвлета. Ли и др. [31] [17] предложил использовать внутреннее внимание и семантику лица для получения изображения лица сверхвысокого разрешения. В большинстве исследований SISR была достигнута лучшая производительность за счет углубления сети или добавления остаточного соединения. Однако большая глубина затрудняет обучение этих методов, а большее количество параметров не только вызывает чрезмерное потребление памяти при выводе, но и замедляет скорость выполнения. Поэтому исследователи вводят облегченную и эффективную модель SISR.

Что касается легких моделей, Hui et al. предложенный IDN [11] [18] путем дистилляции знаний для дистилляции и извлечения признаков каждого уровня сети и изучения дополнительных отношений между ними для уменьшения параметров. CARN [10] [19] использовал облегченную каскадную остаточную сеть; локальный и глобальный уровни используют каскадные механизмы для интеграции функций из разных слоев масштаба, чтобы получить больше информации. Однако этот метод по-прежнему использует 1,5 млн параметров и потребляет слишком много памяти. Ан и др. [32] [20] предложил облегченную остаточную сеть, в которой используется групповая свертка для уменьшения количества параметров, а также весовая классификация для усиления эффекта сверхразрешения. Яо и др. предложил GLADSR [33] [21] с плотными связями. Тиан и др. предложил LESRCNN [34] [22] , используя плотные межуровневые соединения и расширенную свертку субпикселей для восстановления изображений. Лан и др. предложил MADNet [12] [23] , который содержит множество видов сетей. Он и др. [13] [24] представил многомасштабную остаточную сеть.

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

3. Облегченные нейронные сети

Многие современные методы сверхвысокого разрешения сосредоточены на легковесности нейронных сетей. исследователи также обращают внимание на эти особенности. Было предложено множество облегченных сетевых структур, включая плотные сети [10, 9]. 0009 [19][22] ,34], которые используют плотные соединения или остаточные соединения для полного повторного использования функций. Эти методы являются эффективным улучшением для глубоких нейронных сетей, но не подходят для облегченных сетей. Поэтому исследователям необходимо уделять больше внимания эффективным облегченным скелетам сетей. В последующих работах исследователи предложили несколько производных версий, с введением межуровневых соединений внутри сети, повторным использованием функций для достижения лучшей производительности. Яндола и др. предложенный SqueezeNet [35] [25] , используя слой сжатия и слой свертки с размером ядра 1 × 1 для свертки карты объектов предыдущего слоя, тем самым уменьшая размерность карты объектов. В Shufflenet V1 [36] [26] и V2 [37] [27] гибко использовалась точечная групповая свертка и перетасовка каналов для достижения эффективных эффектов классификации в ImageNet [38] [28] . MobileNet [39] [29] построил эффективную сеть, применив — в последующей версии — глубокую сепарабельную свертку, введенную Sifre et al. Мобильная сеть-V2 [40] [30] также использовал такие методы, как групповая свертка и точечная свертка, и ввел механизм внимания. В проекте сети MobileNet-V3 [41] [31] использовался алгоритм NAS (поиск архитектуры сети [42] [32] ) для поиска очень эффективной сетевой структуры. Напротив, EFblock, который предлагают исследователи, использует глобальные и локальные остаточные соединения, глубокую разделимую свертку, групповую свертку и точечную свертку. Наш метод всесторонне учитывает потребности в легком весе и сверхвысоком разрешении и эффективно извлекает функции с небольшим количеством параметров.

4. Извлечение многомасштабных признаков

Многомасштабное извлечение признаков широко используется в задачах компьютерного зрения, таких как семантическая сегментация, восстановление изображений и сверхвысокое разрешение изображений. Самая основная особенность заключается в том, что фильтры с разными размерами ядра свертки могут извлекать признаки разной тонкости. Сегеди и др. предложил многомасштабный модуль [19] [33] , названный начальным модулем. Он использует фильтры свертки с различными размерами ядра свертки для параллельного извлечения признаков, что позволяет сети получать разные размеры рецептивных полей, а затем извлекать различные характеристики тонкости. В последующей версии авторы обработали пакетную нормализацию в Inception-V2 [43] [34], что ускоряет обучение сети. В Inception-V3 [44] [35] авторы добавили новый оптимизатор и асимметричную свертку. Применение многомасштабных сверточных слоев было широко продемонстрировано в таких задачах, как удаление размытия и шумоподавления. Он и др. [13] [24] представил многомасштабную остаточную сеть с функциями изображения, чтобы значительно улучшить производительность сверхвысокого разрешения изображения. Однако эти методы фокусируются только на локальных многомасштабных функциях, игнорируя концепцию глобального масштаба. Есть возможности для дальнейшего совершенствования для реализации многомасштабной сетевой структуры. Как обсуждалось выше, исследователи предлагают гибридную мультимасштабность, которую в широком смысле можно определить как локальную мультимасштабность и глобальную мультимасштабность: «локальная мультимасштабность» относится к характеристике текстуры, а «глобальная мультимасштабность» относится к конструктивным особенностям. исследователи экспериментировали с этой идеей; конкретные экспериментальные детали вводятся позже.

Enhanced Deep Residual Networks для одиночного изображения со сверхвысоким разрешением

» Примеры кода / Компьютерное зрение / Enhanced Deep Residual Networks для одиночного изображения со сверхвысоким разрешением в наборе данных DIV2K.

Посмотреть в Colab Исходный код GitHub


Введение

В этом примере мы реализуем Расширенные глубокие остаточные сети для одиночного изображения с высоким разрешением (EDSR) Би Лим, Санхён Сон, Хивон Ким, Сынджун На и Кён Му Ли.

Архитектура EDSR основана на архитектуре SRResNet и состоит из нескольких остаточные блоки. Он использует слои постоянного масштабирования вместо слоев пакетной нормализации для дают согласованные результаты (ввод и вывод имеют одинаковое распределение, поэтому нормализация промежуточных признаков может быть нежелательной). Вместо использования потерь L2 (среднеквадратичная ошибка), авторы использовали потерю L1 (средняя абсолютная ошибка), которая лучше работает эмпирически.

Наша реализация включает только 16 остаточных блоков с 64 каналами.

В качестве альтернативы, как показано в примере Keras Изображение сверхвысокого разрешения с использованием эффективного субпиксельного CNN, вы можете сделать супер-разрешение, используя модель ESPCN. Согласно опросному листу, EDSR входит в пятерку лучших наиболее эффективные методы сверхвысокого разрешения, основанные на показателях PSNR. Однако в нем больше параметров и требует большей вычислительной мощности, чем другие подходы. Его значение PSNR (≈34 дБ) немного выше, чем у ESPCN (≈32 дБ). Согласно обзорному документу, EDSR работает лучше, чем ESPCN.

Бумага: Всесторонний обзор одного изображения со сверхвысоким разрешением на основе глубокого обучения

Сравнительный график:


Импорт

 импорт numpy как np
импортировать тензорный поток как tf
импортировать наборы данных tensorflow_datasets как tfds
импортировать matplotlib.pyplot как plt
из тензорного потока импортировать керас
из слоев импорта tensorflow.keras
АВТОНАСТРОЙКА = tf.data.АВТОНАСТРОЙКА
 

Загрузите набор обучающих данных

Мы используем набор данных DIV2K, известный набор данных с одним изображением в суперразрешении с 1000 изображения сцен с разного рода деградациями, разделен на 800 изображений для обучения, 100 изображений для проверки и 100 изображений. изображения для тестирования. Мы используем 4-кратные бикубические изображения с пониженной дискретизацией в качестве эталона «низкого качества».

 # Скачать DIV2K из наборов данных TF
# Использование бикубического типа деградации 4x
div2k_data = tfds.image.Div2k(config="bicubic_x4")
div2k_data.download_and_prepare()
# Берем данные поезда из объекта div2k_data
поезд = div2k_data.as_dataset(split="train", as_supervised=True)
train_cache = поезд.кэш()
# Данные проверки
val = div2k_data.as_dataset(split="validation", as_supervised=True)
val_cache = val.кэш()
 

Переворачивание, обрезка и изменение размера изображений

 def flip_left_right(lowres_img, highres_img):
    """Переворачивает изображения влево и вправо."""
    # Выводит случайные значения из равномерного распределения от 0 до 1
    rn = tf.random.uniform (форма = (), maxval = 1)
    # Если rn меньше 0,5, возвращаются исходные lowres_img и highres_img
    # Если rn больше 0,5, возвращается перевернутое изображение
    вернуть tf.cond (
        рН < 0,5,
        лямбда: (lowres_img, highres_img),
        лямбда: (
            tf.image.flip_left_right (lowres_img),
            tf. image.flip_left_right (highres_img),
        ),
    )
def random_rotate (lowres_img, highres_img):
    """Поворачивает изображения на 90 градусов."""
    # Выводит случайные значения из равномерного распределения от 0 до 4
    rn = tf.random.uniform (форма = (), maxval = 4, dtype = tf.int32)
    # Здесь rn означает, сколько раз изображения поворачиваются на 90 градусов.
    вернуть tf.image.rot90 (lowres_img, rn), tf.image.rot90 (highres_img, rn)
def random_crop (lowres_img, highres_img, hr_crop_size = 96, масштаб = 4):
    """Обрезать изображения.
    изображения низкого разрешения: 24x24
    изображения с высоким разрешением: 96x96
    """
    lowres_crop_size = hr_crop_size // масштаб # 96//4=24
    lowres_img_shape = tf.shape(lowres_img)[:2] # (высота,ширина)
    lowres_width = tf.random.uniform(
        shape=(), maxval=lowres_img_shape[1] - lowres_crop_size + 1, dtype=tf.int32
    )
    lowres_height = tf.random.uniform(
        shape=(), maxval=lowres_img_shape[0] - lowres_crop_size + 1, dtype=tf. int32
    )
    highres_width = lowres_width * масштаб
    highres_height = lowres_height * масштаб
    lowres_img_cropped = lowres_img[
        lowres_height : lowres_height + lowres_crop_size,
        lowres_width : lowres_width + lowres_crop_size,
    ] # 24x24
    highres_img_cropped = highres_img[
        highres_height : highres_height + hr_crop_size,
        highres_width : highres_width + hr_crop_size,
    ] # 96x96
    вернуть lowres_img_cropped, highres_img_cropped
 

Мы дополняем тренировочные данные случайными горизонтальными сальто и 90 вращениями.

В качестве изображений с низким разрешением мы используем входные патчи RGB 24×24.

 def dataset_object (dataset_cache, training = True):
    ds = dataset_cache
    ds = ds.map(
        лямбда с низким разрешением, высоким разрешением: random_crop (низкое разрешение, высокое разрешение, масштаб = 4),
        num_parallel_calls = АВТОНАСТРОЙКА,
    )
    если обучение:
        ds = ds.map(random_rotate, num_parallel_calls=AUTOTUNE)
        ds = ds. map (flip_left_right, num_parallel_calls = AUTOTUNE)
    # Пакетирование данных
    дс = дс.пакет (16)
    если обучение:
        # Повторение данных, так что количество элементов, если набор данных становится бесконечным
        ds = ds.repeat()
    # предварительная выборка позволяет подготовить более поздние изображения во время обработки текущего изображения
    ds = ds.prefetch (buffer_size = AUTOTUNE)
    вернуть дс
train_ds = dataset_object (train_cache, training = True)
val_ds = dataset_object (val_cache, training = False)
 

Визуализируйте данные

Давайте визуализируем несколько примеров изображений:

 низкое разрешение, высокое разрешение = next(iter(train_ds))
# Изображения с высоким разрешением
plt.figure(figsize=(10, 10))
для я в диапазоне (9):
    топор = plt.subplot (3, 3, я + 1)
    plt.imshow(высокое разрешение[i].numpy().astype("uint8"))
    plt.title(высокое разрешение[i].shape)
    плт.ось("выкл")
# Изображения с низким разрешением
plt. figure(figsize=(10, 10))
для я в диапазоне (9):
    топор = plt.subplot (3, 3, я + 1)
    plt.imshow(lowres[i].numpy().astype("uint8"))
    plt.title(низкое разрешение[i].shape)
    плт.ось("выкл")
def PSNR (супер_разрешение, высокое_разрешение):
    """Вычисление пикового отношения сигнал-шум, измерение качества изображения."""
    # Максимальное значение пикселя 255
    psnr_value = tf.image.psnr (высокое_разрешение, сверхвысокое_разрешение, max_val=255)[0]
    вернуть psnr_value
 


Построить модель

В статье авторы обучают три модели: EDSR, MDSR и базовую модель. В этом примере кода мы обучаем только базовую модель.

Сравнение с моделью с тремя остаточными блоками

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

 класс EDSModel(tf.keras.Model):
    def train_step (я, данные):
        # Распаковать данные. Его структура зависит от вашей модели и
        # на то, что вы передаете в `fit()`.
        х, у = данные
        с tf.GradientTape() в качестве ленты:
            y_pred = self(x, training=True) # Прямой проход
            # Вычислить значение потерь
            # (функция потерь настраивается в `compile()`)
            потеря = self.compiled_loss (y, y_pred, регуляризация_потери = self.losses)
        # Вычислить градиенты
        trainable_vars = self.trainable_variables
        градиенты = лента.градиент (потери, обучаемые_вары)
        # Обновить веса
        self.optimizer.apply_gradients (zip (градиенты, trainable_vars))
        # Обновление метрик (включая метрику, которая отслеживает потери)
        self. compiled_metrics.update_state(y, y_pred)
        # Вернуть словарь, отображающий имена метрик в текущее значение
        вернуть {m.name: m.result() для m в self.metrics}
    определение предсказать_шаг (я, х):
        # Добавление фиктивного измерения с помощью tf.expand_dims и преобразование в float32 с помощью tf.cast
        х = tf.cast (tf.expand_dims (x, ось = 0), tf.float32)
        # Передача изображения низкого разрешения в модель
        super_resolution_img = self(x, training=False)
        # Обрезает тензор от min(0) до max(255)
        super_resolution_img = tf.clip_by_value (super_resolution_img, 0, 255)
        # Округляет значения тензора до ближайшего целого числа
        super_resolution_img = tf.round(super_resolution_img)
        # Удаляет размеры размера 1 из формы тензора и конвертирует в uint8
        super_resolution_img = tf.squeeze(
            tf.cast(super_resolution_img, tf.uint8), ось=0
        )
        вернуть super_resolution_img
# Остаточный блок
деф ResBlock (входы):
    x = слои. Conv2D(64, 3, padding="тот же", активация="relu")(входы)
    x = слои.Conv2D(64, 3, padding="same")(x)
    х = слои.Добавить()([входы, х])
    вернуть х
# Блок повышения частоты дискретизации
def Upsampling (входы, фактор = 2, ** kwargs):
    x = слои.Conv2D(64 * (множитель ** 2), 3, padding="same", **kwargs)(входные данные)
    x = tf.nn.depth_to_space(x, block_size=коэффициент)
    x = слои.Conv2D(64 * (множитель ** 2), 3, padding="same", **kwargs)(x)
    x = tf.nn.depth_to_space(x, block_size=коэффициент)
    вернуть х
def make_model (количество_фильтров, число_остаточных_блоков):
    # Гибкие входные данные для input_layer
    input_layer = слои. Ввод (форма = (Нет, Нет, 3))
    # Масштабирование значений пикселей
    x = слои. Масштабирование (масштаб = 1,0/255) (входной_слой)
    x = x_new = слои.Conv2D (число_фильтров, 3, заполнение = "то же самое") (x)
    # 16 остаточных блоков
    для _ в диапазоне (количество_остаточных_блоков):
        x_new = ResBlock(x_new)
    x_new = слои. Conv2D(num_filters, 3, padding="same")(x_new)
    x = слои.Добавить()([x, x_new])
    х = повышающая дискретизация (х)
    х = слои.Conv2D (3, 3, отступ = «то же самое») (х)
    output_layer = слои. Масштабирование (масштаб = 255) (x)
    вернуть EDSRMdel (входной_слой, выходной_слой)
модель = make_model (num_filters = 64, num_of_residual_blocks = 16)
 

Обучение модели

 # Использование оптимизатора Adam с начальной скоростью обучения 1e-4, изменение скорости обучения после 5000 шагов до 5e-5
optim_edsr = keras.optimizers.Adam(
    Learning_rate=keras.optimizers.schedules.PiecewiseConstantDecay(
        границы=[5000], значения=[1e-4, 5e-5]
    )
)
# Компиляция модели с потерями как средней абсолютной ошибкой (потери L1) и метрикой как psnr
model.compile(optimizer=optim_edsr, loss="mae", metrics=[PSNR])
# Обучение большему количеству эпох улучшит результаты
model.fit (train_ds, эпохи = 100, steps_per_epoch = 200, validation_data = val_ds)
 
 Эпоха 1/100
200/200 [==============================] - 78 с 322 мс/шаг - потери: 27,7075 - PSNR: 19,4656 - val_loss : 14. 7192 - значение_PSNR: 22.5129
Эпоха 2/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 12,6842 - PSNR: 24,7269 - val_loss : 12.4348 - знач_PSNR: 22.8793
Эпоха 3/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 10,7646 - PSNR: 27,3775 - val_loss : 10.6830 - значение_PSNR: 24.9075
Эпоха 4/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 9.8356 - PSNR: 27,4924 - val_loss: 9,2714 - val_PSNR: 27,7680
Эпоха 5/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 9,1752 - PSNR: 29,4013 - val_loss : 8,7747 - значение_PSNR: 27,6017
Эпоха 6/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 8,8630 - PSNR: 27,8686 - val_loss : 8,7710 - значение_PSNR: 30,2381
Эпоха 7/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 8,7107 - PSNR: 28,4887 - val_loss : 8,3186 - значение_PSNR: 29,4744
Эпоха 8/100
200/200 [==============================] - 6 с 32 мс/шаг - потери: 8,5374 - PSNR: 28,9546 - значение_потери: 8,4716 - значение_PSNR: 28,8873
Эпоха 9/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 8,4111 - PSNR: 30,2234 - val_loss : 8. 1969 - val_PSNR: 28.9538
Эпоха 10/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 8,3835 - PSNR: 29,7066 - val_loss : 8,9434 - значение_PSNR: 31,9213
Эпоха 11/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 8,1713 - PSNR: 30,7191 - val_loss : 8,2816 - значение_PSNR: 30,7049
Эпоха 12/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,9129 - PSNR: 30,3964 - val_loss: 8,9365 - val_PSNR: 26,2667
Эпоха 13/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 8,2504 - PSNR: 30,1612 - val_loss : 7,8384 - значение_PSNR: 28,4159
Эпоха 14/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 8,0114 - PSNR: 30,2370 - val_loss : 7,2658 - значение_PSNR: 29,4454
Эпоха 15/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 8,0059 - PSNR: 30,7665 - val_loss : 7,6692 - значение_PSNR: 31,8294
Эпоха 16/100
200/200 [===============================] - 6 с 28 мс/шаг - потери: 7,9388 - PSNR: 30,5297 - val_loss: 7,7625 - val_PSNR: 28,6685
Эпоха 17/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 7,8627 - PSNR: 30,8213 - val_loss : 8. 1984 - val_PSNR: 30.9864
Эпоха 18/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,8956 - PSNR: 30,4661 - val_loss : 8,2664 - значение_PSNR: 34,1168
Эпоха 19/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 7,7800 - PSNR: 30,3071 - val_loss : 7,9547 - значение_PSNR: 30,9254
Эпоха 20/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 7,7402 - PSNR: 30,7251 - val_loss : 7,9632 – значение_PSNR: 31,7438
Эпоха 21/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 7,7372 - PSNR: 31,3348 - val_loss : 8.0512 - значение_PSNR: 29.4988
Эпоха 22/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,7207 - PSNR: 31,1984 - val_loss : 7,6072 - значение_PSNR: 32,6720
Эпоха 23/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,5955 - PSNR: 31,3128 - val_loss : 6,8593 - значение_PSNR: 28,1123
Эпоха 24/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,6341 - PSNR: 31,6670 - val_loss : 7,4485 - значение_PSNR: 30,0567
Эпоха 25/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,5404 - PSNR: 31,5332 - val_loss : 6. 8795 - значение_PSNR: 33,6179
Эпоха 26/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 7,4429 - PSNR: 32,3681 - val_loss : 7,5937 - значение_PSNR: 32,5076
Эпоха 27/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,4243 - PSNR: 31,2899 - val_loss : 7,0982 - значение_PSNR: 37,4561
Эпоха 28/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 7,3542 - PSNR: 31,3620 - val_loss : 7,5735 - значение_PSNR: 29,3892
Эпоха 29/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 7,2648 - PSNR: 32,0806 - val_loss : 7,7589- val_PSNR: 28,5829
Эпоха 30/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 7,2954 - PSNR: 32,3495 - val_loss : 7.1625 - значение_PSNR: 32.0560
Эпоха 31/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 7,4815 - PSNR: 32,3662 - val_loss : 7,8601 - значение_PSNR: 35,0962
Эпоха 32/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,3957 - PSNR: 30,4455 - val_loss : 7,4800 - значение_PSNR: 31,9397
Эпоха 33/100
200/200 [===============================] - 6 с 29 мс/шаг - потери: 7,3849- PSNR: 32,0058 - val_loss: 7,2225 - val_PSNR: 35,5276
Эпоха 34/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,4285 - PSNR: 31,6806 - val_loss : 7,3937 - значение_PSNR: 30,4433
Эпоха 35/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,3841 - PSNR: 32,1425 - val_loss : 7,6458 - значение_PSNR: 30,7912
Эпоха 36/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 7,3049 - PSNR: 31,7272 - val_loss : 7,5190 - значение_PSNR: 33,2980
Эпоха 37/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 7,3098 - PSNR: 31,7727 - val_loss: 8,0041 - val_PSNR: 26,8507
Эпоха 38/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,4027 - PSNR: 31,1814 - val_loss : 7,7334 - значение_PSNR: 29,2905
Эпоха 39/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,2470 - PSNR: 31,3636 - val_loss : 7,1275 - значение_PSNR: 33,1772
Эпоха 40/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,1907 - PSNR: 32,7381 - val_loss : 7,3437 - значение_PSNR: 33,7216
Эпоха 41/100
200/200 [==============================] - 6 с 29мс/шаг - потери: 7,3383 - PSNR: 31,6409 - val_loss: 6,8769 - val_PSNR: 29,9654
Эпоха 42/100
200/200 [==============================] - 5 с 27 мс/шаг - потери: 7,3393 - PSNR: 31,4941 - val_loss : 6,1088 - значение_PSNR: 35,7083
Эпоха 43/100
200/200 [==============================] - 6 с 32 мс/шаг - потери: 7,2272 - PSNR: 32,2356 - val_loss : 7,4534 - значение_PSNR: 29,5734
Эпоха 44/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,1773 - PSNR: 32,0016 - val_loss : 7,4676 - значение_PSNR: 33,0795
Эпоха 45/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,4677 - PSNR: 32,3508 - val_loss : 7. 2459- val_PSNR: 31,6806
Эпоха 46/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,2347 - PSNR: 33,3392 - val_loss : 7,0098 - значение_PSNR: 27,1658
Эпоха 47/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,4494 - PSNR: 32,1602 - val_loss : 8.0211 - значение_PSNR: 29.9740
Эпоха 48/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,1128 - PSNR: 32,1696 - val_loss : 7,0101 - значение_PSNR: 32,8874
Эпоха 49/100
200/200 [===============================] - 6 с 31 мс/шаг - потери: 7,1698 - PSNR: 32.0733 - val_loss: 7.5813 - val_PSNR: 26.1697
Эпоха 50/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,1904 - PSNR: 31,9198 - val_loss : 6,3655 - значение_PSNR: 33,4935
Эпоха 51/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0957 - PSNR: 32,3727 - val_loss : 7,2626 - значение_PSNR: 28,8388
Эпоха 52/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,1436 - PSNR: 32,2141 - val_loss : 7,6012 - значение_PSNR: 31,2261
Эпоха 53/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,2270 - PSNR: 32,2675 - val_loss : 6,9826 – значение_PSNR: 27,6408
Эпоха 54/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0638 - PSNR: 32,5191 - val_loss : 6,6046 - значение_PSNR: 32,3862
Эпоха 55/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 7,1609 - PSNR: 31,6787 - val_loss : 7,3563 - значение_PSNR: 28,3834
Эпоха 56/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,1953 - PSNR: 31,9948 - val_loss : 6. 5111 - значение_PSNR: 34.0409
Эпоха 57/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,1168 - PSNR: 32,3288 - val_loss : 6,7979 – значение_PSNR: 31,8126
Эпоха 58/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,0578 - PSNR: 33,1605 - val_loss : 6,8349 - значение_PSNR: 32,0840
Эпоха 59/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0890 - PSNR: 32,7020 - val_loss : 7,4109 - значение_PSNR: 31,8377
Эпоха 60/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,1357 - PSNR: 32,9600 - val_loss : 7,7647 - значение_PSNR: 30,2965
Эпоха 61/100
200/200 [==============================] - 6 с 32 мс/шаг - потери: 7.2003 - PSNR: 32.0152 - val_loss : 7,8508 - значение_PSNR: 27,8501
Эпоха 62/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,0474 - PSNR: 32,4485 - val_loss : 7,3319- val_PSNR: 28.4571
Эпоха 63/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,1315 - PSNR: 32,6996 - val_loss : 7,0695 - значение_PSNR: 34,9915
Эпоха 64/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,1181 - PSNR: 32,9488 - val_loss : 6,2144 - значение_PSNR: 33,9663
Эпоха 65/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,1262 - PSNR: 32,0699 - val_loss : 7. 1910 - val_PSNR: 34.1321
Эпоха 66/100
200/200 [===============================] - 6 с 28 мс/шаг - потери: 7,2891 - PSNR: 32,5745 - val_loss: 6,9004 - val_PSNR: 34,5732
Эпоха 67/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 6,8185 - PSNR: 32,2085 - val_loss : 6,8353 - значение_PSNR: 27,2619
Эпоха 68/100
200/200 [==============================] - 7 с 33 мс/шаг - потери: 6,9238 - PSNR: 33,3510 - val_loss : 7,3350 - значение_PSNR: 28,2281
Эпоха 69/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0037 - PSNR: 31,6955 - val_loss : 6,5887 - значение_PSNR: 30,3138
Эпоха 70/100
200/200 [===============================] - 5 с 27 мс/шаг - потери: 7,0239- PSNR: 32,6923 - val_loss: 6,6467 - val_PSNR: 36,0194
Эпоха 71/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0828 - PSNR: 32,0297 - val_loss : 6,5626 - значение_PSNR: 34,4241
Эпоха 72/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0717 - PSNR: 32,5201 - val_loss : 7,5056 - значение_PSNR: 31,4176
Эпоха 73/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,0943 - PSNR: 32,4469 - val_loss : 7. 0981 - значение_PSNR: 33.2052
Эпоха 74/100
200/200 [==============================] - 8 с 38 мс/шаг - потери: 7,0288 - PSNR: 32,2301 - val_loss : 6,9661 – значение_PSNR: 34.0108
Эпоха 75/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,1122 - PSNR: 32,1658 - val_loss : 6,9569 - значение_PSNR: 30,8972
Эпоха 76/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0108 - PSNR: 31,5408 - val_loss : 7,1185 - значение_PSNR: 26,8445
Эпоха 77/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 6,7812 - PSNR: 32,4927 - val_loss : 7.0030 - значение_PSNR: 31.6901
Эпоха 78/100
200/200 [==============================] - 6 с 29мс/шаг - потери: 6,9885 - PSNR: 31,9727 - val_loss: 7,1126 - val_PSNR: 29,0163
Эпоха 79/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 7,0738 - PSNR: 32,4997 - val_loss : 6,7849 - значение_PSNR: 31,0740
Эпоха 80/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,0899 - PSNR: 31,7940 - val_loss : 6,9975 - значение_PSNR: 33,6309
Эпоха 81/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0215 - PSNR: 32,6563 - val_loss : 6,5724 - значение_PSNR: 35,1765
Эпоха 82/100
200/200 [===============================] - 6 с 28 мс/шаг - потери: 6,9076 - PSNR: 32,9912 - val_loss: 6,8611 - val_PSNR: 31,8409
Эпоха 83/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 6,9978 - PSNR: 32,7159 - val_loss : 6,4787 - значение_PSNR: 31,5799
Эпоха 84/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,1276 - PSNR: 32,8232 - val_loss : 7,9006 - значение_PSNR: 27,5171
Эпоха 85/100
200/200 [==============================] - 7 с 33 мс/шаг - потери: 7,0276 - PSNR: 32,3290 - val_loss : 8,5374 - значение_PSNR: 25,2824
Эпоха 86/100
200/200 [==============================] - 7 с 33 мс/шаг - потери: 7,0434 - PSNR: 31,4983 - val_loss: 6,9392 - val_PSNR: 35,9229
Эпоха 87/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0703 - PSNR: 32,2641 - val_loss : 7,8662 - значение_PSNR: 28,1676
Эпоха 88/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,1311 - PSNR: 32,2141 - val_loss : 7. 2089 - знач_PSNR: 27.3218
Эпоха 89/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0730 - PSNR: 33,3360 - val_loss : 6,7915 - значение_PSNR: 29,1367
Эпоха 90/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0177 - PSNR: 32,6117 - val_loss : 8,3779- val_PSNR: 31,9831
Эпоха 91/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 6,9638 - PSNR: 32,2765 - val_loss : 6,6582 - значение_PSNR: 37,5391
Эпоха 92/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 6,9623 - PSNR: 32,8864 - val_loss : 7,7435 - значение_PSNR: 29,8939
Эпоха 93/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 6,8474 - PSNR: 32,5345 - val_loss : 6,8181 - значение_PSNR: 28,1166
Эпоха 94/100
200/200 [===============================] - 6 с 28 мс/шаг - потери: 6,9059 - PSNR: 32.0613 - val_loss: 7.0014 - val_PSNR: 33.2055
Эпоха 95/100
200/200 [==============================] - 6 с 29 мс/шаг - потери: 7,0418 - PSNR: 32,2906 - val_loss : 6,9686 - значение_PSNR: 28,8045
Эпоха 96/100
200/200 [==============================] - 6 с 30 мс/шаг - потери: 6,8624 - PSNR: 32,5043 - val_loss : 7. 2015 - val_PSNR: 33.2103
Эпоха 97/100
200/200 [==============================] - 7 с 33 мс/шаг - потери: 6,9632 - PSNR: 33,0834 - val_loss : 7.0972 - значение_PSNR: 30.3407
Эпоха 98/100
200/200 [==============================] - 6 с 31 мс/шаг - потери: 6,9307 - PSNR: 31,9062 - val_loss: 7,3421 - val_PSNR: 31,5380
Эпоха 99/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 7,0685 - PSNR: 31,9839 - val_loss : 7,9828 - значение_PSNR: 33,0619
Эпоха 100/100
200/200 [==============================] - 6 с 28 мс/шаг - потери: 6,9233 - PSNR: 31,8346 - val_loss : 6.3802 - знач_PSNR: 38.4415

 

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

 def plot_results(lowres, pres):
 """
 Отображает изображение с низким разрешением и изображение с высоким разрешением
 """
 plt.figure(figsize=(24, 14))
 plt.subplot(132), plt.imshow(lowres), plt.title("Низкое разрешение")
 plt.

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

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