Обновить
256K+

Обработка изображений *

Работаем с фото и видео

67,27
Рейтинг
Сначала показывать
Порог рейтинга

Как улучшить режим ночной съемки с помощью нейросети на примере MEFNet

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

MEFNet — это подход к слиянию изображений с разной экспозицией. Он создан для работы со статическими последовательностями кадров произвольного разрешения и в произвольном количестве. Название MEFNet происходит от термина Multi-Exposure Fusion, то есть «многоэкспозиционное смешивание». Отсюда и сокращение MEF.

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

Схема работы алгоритма MEFNet. Источник: Ma, K., Duanmu, Z., Zhu, H., Fang, Y., & Wang, Z. (2019). Deep guided learning for fast multi-exposure image fusion. IEEE Transactions on Image Processing, 29, 2808-2819
Схема работы алгоритма MEFNet. Источник: Ma, K., Duanmu, Z., Zhu, H., Fang, Y., & Wang, Z. (2019). Deep guided learning for fast multi-exposure image fusion. IEEE Transactions on Image Processing, 29, 2808-2819

Схема работы алгоритма MEFNet. Источник: Ma, K., Duanmu, Z., Zhu, H., Fang, Y., & Wang, Z. (2019). Deep guided learning for fast multi-exposure image fusion. IEEE Transactions on Image Processing, 29, 2808-2819

Алгоритм MEFNet работает следующим образом. На вход подается серия изображений с разной экспозицией — они сначала переводятся в YUV-формат. Далее основная обработка выполняется только по Y-каналу, который отвечает за яркость. Дело в том, что именно яркостный компонент в наибольшей степени определяет структуру и детализацию сцены.

Затем нужно уменьшить разрешение всех изображений — так сокращаются вычислительные затраты. Полученные кадры поступают в нейросеть, которая генерирует весовые карты для каждого изображения, также в пониженном разрешении. Она обрабатывает серии произвольного пространственного размера и числа экспозиций, а также генерирует карты соответствующего размера и количества. Сеть состоит из семи сверточных слоев с расширенными свертками, которые увеличивают поле восприятия (receptive field) без потери разрешения: 

  • Слои 1–6 используют ядра размером 3×3 с разными коэффициентами расширения (dilation rates): 1, 2, 4, 8, 16, 1. Это позволяет захватывать контекст на разных масштабах.

  • Слой 7 — финальный слой с ядром 1×1, который преобразует фичи в весовые карты.

  • Нормализация — после каждого сверточного слоя (кроме последнего) применяется адаптивная нормализация (AN), сочетающая нормализацию по экземпляру (instance normalization) с обучаемыми параметрами.

  • Активация — используется Leaky ReLU (LReLU) для сохранения структурной информации.

Подробнее о MEFNet и других алгоритмах улучшения режима ночной съемки в мобильных устройствах на примере планшета KVADRA_T читайте в статье Полины Лукичевой из команды AI ML Kit в YADRO.

Теги:
Рейтинг0
Комментарии0

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

"Что тут происходит? 😑"
"Что тут происходит? 😑"



Почему это большая проблема?

Распознать что-либо по такому "размытому квадратику" – серьезный вызов для алгоритмов. Стандартные модели, обученные на четких изображениях, часто теряют эффективность, когда объект занимает по высоте всего 32 пикселя (а то и 10!). Это напрямую влияет на точность работы систем в реальных условиях – будь то поиск автомобиля, предмета или распознавание лиц.

В чем сложность?

Главная трудность – "пропасть" между миром четких картинок (на которых обычно учатся модели) и миром размытых кадров. Алгоритмы плохо переносят знания из одного "мира" в другой.

Как с этим бороться?

В нашей новой (и первой) статье мы подробно разобрали ключевые подходы к решению такой проблемы в контексте распознавания лиц:

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

2. Адаптация модели: как "подружить" алгоритм с плохим качеством?

  • Трюки с данными: искусственно ухудшаем хорошие изображения при обучении (сжатие, шум), чтобы модель привыкла к помехам.

  • Дообучение: учим модель на реальных размытых данных. Важно делать это аккуратно, чтобы она не забыла, как работать с четкими изображениями. Помогают методы вроде LoRA (дообучение только маленькой части сети).

  • "Учитель" для "ученика": мощная модель, видящая четкие картинки, учит компактную модель работать с размытыми, передавая свои "знания".

3. PETALface: новый подход, который динамически комбинирует разные "настройки" (LoRA-адаптеры) в модели в зависимости от качества конкретного входящего кадра. Перспективно, но требует дальнейшего изучения.

Хотите разобраться глубже?

В статье мы подробно разбираем плюсы и минусы каждого подхода, рассматриваем специализированные датасеты (TinyFace, BRIAR) и анализируем нюансы свежего метода PETALface.

Сталкивались ли вы с проблемой низкого разрешения в своих проектах? Какие методы оказались эффективными? Делитесь опытом в комментариях!

Теги:
Всего голосов 4: ↑3 и ↓1+4
Комментарии0

Осваиваем азы компьютерного зрения с библиотекой Pillow на одноплатном компьютере Lichee Pi 4A

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

from PIL import Image
from PIL import ImageFilter
img = Image.open(“flower.jpg”)
print(img.size, img.format, img.mode)

Эта базовая информация пригодится для дальнейшей работы с изображением.

Меняем цвет пикселя

К отдельным пикселям можно обращаться с помощью метода load() из библиотеки Pillow. Так мы сможем изменять цветовые значения точечно, а это основа для различных операций по обработке изображений.

Открываем white.jpg с помощью Pillow:

from PIL import Image
img = Image.open("white.jpg")
obj = img.load()

Выбираем пиксель с координатами (25, 45) и меняем его цвет:

obj[25, 45] = (0, 0, 0)  # Новый цвет: черный (RGB: 0, 0, 0)

Сохраняем отредактированное изображение:

img.save("image3.jpg")

Визуально проверяем, что цвет пикселя изменился. 

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

Почему был выбран Lichee Pi 4A, как создать виртуальное окружение Python, установить подходящую среду разработки и научиться базовым приемам работы с изображениями — читайте в подробном туториале.

Теги:
Всего голосов 6: ↑6 и ↓0+7
Комментарии1

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

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии1

Представлен проект сканирования в разрешении 108B (108 Gigapixel) одной из наиболее известных картин нидерландского художника Яна Вермеера — «Девушка с жемчужной серёжкой» (нидерл. Het meisje met de parel). На скане картины можо рассмотреть каждый небольшой мазок и саму мелкую трещинку.

Теги:
Всего голосов 6: ↑5 и ↓1+4
Комментарии0

Как автоматизировать распознавание текста с изображений?

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

Раньше в моём арсенале был только pytesseract (Python-библиотека для распознавания текста). Она работала, но с серьёзными ограничениями:
➖Плохо справлялась с разными шрифтами
➖Теряла точность на низкокачественных изображениях
➖Путала языки, если текст был мультиязычным

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

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

Обзор моделей для OCR
Прошерстив не один десяток источников, я выделил две наиболее популярные на текущий момент модели:
1️⃣ GPT-4 mini — высокая точность, но платная.
2️⃣ Google Gemini 2.0 Flash — высокая точность + бесплатный лимит.

Выбор без раздумий пал на Gemini. На момент публикации бесплатные лимиты от Google следующие:
✔️ 15 запросов в минуту
✔️ 1 млн токенов в минуту (ввод + вывод)
✔️ 1 500 запросов в сутки

Как взаимодействовать с Gemini?
1️⃣ Получаем API-ключ в Google AI Studio
2️⃣ Через API отправляем изображение в base64 + промпт
3️⃣ Получаем распознанный текст в ответе

Но есть важный нюанс: сервис не работает с российскими IP

Что делать, если Gemini недоступна?
Если у вас по какой-то причине нет возможности получить доступ к серверам Google AI Studio, то можно воспользоваться сервисами, которые предоставляют доступ к различным open-source моделям. Например, DeepInfra.
Плюсы:
✔️ Нет блокировок по геолокации
✔️ Гибкая тарификация
Минусы:
✖️ Нет бесплатного тарифа

Примеры скриптов выложил на github (https://github.com/vmtest439/britalb_ocr)

Если вам понравился пост и вы хотите читать больше подобного контента, то можете подписаться на мой авторский Telegram-канал BritLab!

Теги:
Всего голосов 3: ↑2 и ↓1+1
Комментарии3

Верните мой 2007-й: превращаем старые фотки в снимки с зеркалок с помощью ИИ

Однажды группе ИИ-энтузиастов пришла идея: а что если обучить искусственный интеллект улучшать смартфонные снимки до профессиональных с помощью парных фотографий? Задумка понравилась. Для сбора датасета выбрали актуальные в то время Sony Xperia Z, iPhone 3GS, BlackBerry Passport и цифровую зеркалку Canon EOS 70D в качестве эталона. Модель обучили улучшать фотографии, сделанные на смартфонах, в соответствии с такими же изображениями, полученными с камеры. Проект реализовали, исходный код опубликовали на GitHub, а подробное описание — на arXiv.org. Но что же в нем интересного сейчас, почти десять лет спустя?

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

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

В своей статье команда регионального научно-образовательного центра «Искусственный интеллект и анализ больших данных» при НГТУ им. Р. Е. Алексеева запустила DPED на свежих версиях софта, преодолев все проблемы совместимости, и попробовала через него улучшить фото с современного планшета.

Теги:
Всего голосов 6: ↑6 и ↓0+7
Комментарии0

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

Недавнее обсуждение «тыкательного принтера», естественно, не может не будить в пытливых умах вопрос, как бы повысить его скорость печати? Не избежал этой участи и я. Физически всё просто — надо поменьше отрывать тяжёлую ручку от бумаги и рисовать как можно более длинными штрихами. Но как разбить произвольное изображение на штрихи?

Разумеется, решение для искусственно самоограниченной задачи, когда ручка движется строго по горизонтали и бумага после каждого прохода подаётся на один диаметр шарика ручки — элементарное. Берём RLE и Флойда-Стейнберга, за 15 минут пишем этот код:

#define	SQUARE(x) ((x)*(x))
#define	MAXERROR 256	//for RLE

static unsigned char Grayscale8Bit[HEIGHT][WIDTH], Dithered8Bit[HEIGHT][WIDTH];
static signed short AdditionalError[2][WIDTH];

тут мы читаем из файла Grayscale8Bit, этот код я приводить не буду

	memset (AdditionalError, 0, 2*WIDTH*sizeof(short));	//Even/odd lines buffer
	for (int y=0; y<HEIGHT; y++)
	{
		int RLEError=0;
		int PenColor = 255*(Grayscale8Bit[y][0]>127);	//Pen color can be either 0 or 255
		for (int x=0; x<WIDTH; x++)
		{
			int PixelValue = (int)Grayscale8Bit[y][x] + AdditionalError[y&1][x];	//Exact pixel value plus Floyd-Steinberg error from the prev. line
			RLEError += SQUARE (PixelValue - PenColor);	//To avoid missing contrast details such as thin vertical lines, RLE error counted as square.
			if (RLEError > SQUARE (MAXERROR))
			{
				PenColor = 255-PenColor;		//Inverse pen position (up/down)
				RLEError = SQUARE (PixelValue - PenColor);	//Begin counting new RLE error immediately
			}
			Dithered8Bit[y][x]=PenColor;		//Put proper color into the output array
			AdditionalError[!(y&1)][x] = (PixelValue - PenColor)/2;		//Put remaining error into next line buffer, not exactly Floyd-Steinberg but sort of.
			if (x) AdditionalError[!(y&1)][x-1] = (PixelValue - PenColor)/4;
			if (x<WIDTH-1) AdditionalError[!(y&1)][x+1] = (PixelValue - PenColor)/4;
		}
	}

тут мы пишем в файл Dithered8Bit, этот код тоже у каждого свой получится

Код без каких-либо капризов, отладки и подбора параметров сразу выдаёт результат:

Сверху, как нетрудно догадаться, оригинал.
Сверху, как нетрудно догадаться, оригинал.

Ну то есть задача в её куцем виде — совсем детская. Там не то что думать не пришлось, даже ошибиться негде было. Но и результат тоже, мягко говоря, так себе.

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

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

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии3

Сервис ITOA: Image to ASCII Converter превращает любое изображение в ASCII-картинку — в цвете или монохроме. Результат можно сохранить в символах или в PNG.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии1

Трудно найти в темной комнате документ, особенно если его там нет

Представим, что нам нужно сделать нормальное фото документа, но положить листик как в сканере — более-менее ровно, в фокусе, под достаточным и равномерным светом — мы не можем. Поможет ли здесь ИИ? Конечно, если мы научим его решать некоторые вопросы, например:

  • Есть ли вообще документ на фото?

  • А это лист А4 или микроволновка?

  • Если есть, где его границы?

  • Если границы кривые, как их выпрямить?

  • А это документ или тень от документа?

Команда YADRO прошла этот квест, начав с простых CV-алгоритмов. По пути собрали свою нейросеть, а также инструмент для создания подходящих датасетов на основе модификации ControlNet для Stable Diffusion. В результате планшет Kvadra_T научился определять документы в реальном времени — прямо в приложении камеры.

Все подробности развития проекта, включая схемы реализации и подробные параметры обучения, — в статье Владислава, CV Engineer YADRO. 

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии0

Мини-гайд: что делать, если не загружается изображение в статью на Хабре.

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

Как решить проблему?

Способ 1. Отправьте изображение себе в Telegram в виде файла (без сжатия). Далее скачайте изображение из телеги. Предварительно удалите исходное изображение с компьютера.

Способ 2. Прогоните изображение через любую онлайн-ужималку.

После изображение можно будет загружать в статью.

Теги:
Всего голосов 3: ↑1 и ↓2+1
Комментарии4

Вышла новая версия AiPainter:

  • поддержка Flux (наверное, лучшая на данный момент модель для генерации изображений);

  • встроенный импорт моделей с civitai.com;

  • теперь под капотом используется, фактически, официальный бекенд для StableDiffusion моделей - ComfyUI.

Если хотите использовать Flux - готовьте 32 Гб оперативки (и ещё 32 Гб свопа) и 12 Гб видеопамяти. Видеокарта, как обычно, должна быть от NVIDIA.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Оптимизация изображений с помощью Image Stack

Loading… ⏰

Падают охваты из-за долгой загрузки страниц?

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

Image Stack — функция CDN — помогает решить проблему и уменьшить объем передаваемых данных. Инструмент автоматически оптимизирует изображения, улучшает SEO-результаты и повышает уровень конверсии.

В новом материале рассказываем, как работает Image Stack, кому он подходит и какие задачи решает. Также оставили инструкцию по подключению функции.

Читать статью в Академии Selectel→

Теги:
Всего голосов 7: ↑7 и ↓0+12
Комментарии0

Ближайшие события

На Олимпиаде-2024 пять тысячных секунды решили исход финала забега на 100 м.

Согласно фотофинишу, мужскую 100-метровку в нереально плотной развязке выиграл американец Ноа Лайлс, опередил ямайца Кишана Томпсона. У чемпиона 9,784 с.

У серебряного призёра – 9,789 с.

Согласно правилам, выигрывает забег первый бегун, чей торс пересёк финишную линию.

Теги:
Всего голосов 2: ↑2 и ↓0+4
Комментарии0

Омар Шехата поделился одним из своих самых популярных проектов. Это крошечное веб-приложение JPEG Viewer для демонстрации алгоритмов, которые работают в формате сжатия JPEG.

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

Также Омар рекомендует свою статью про алгоритмы сжатия JPEG, в которой он применил схожие инструменты.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии1

Представлен бесплатный нейроапскейлер AuraSR-v2 с бустом разрешения любых изображений в восемь раз. Заливаете шакал — получаете качество профессионального фотоаппарата.

Проект работает из браузера, в нём нет рекламы, нет водяных знаков и не требуется кредитов на апскейл.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии3

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

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

Всего шести цветов было достаточно, чтобы передать всю красочность оригинальной картинки
Всего шести цветов было достаточно, чтобы передать всю красочность оригинальной картинки

Впрочем, сжимать файл это никак не помогло. Файловый размер изображения сверху составил 2,11 МиБ, нижнего — вырос до 2,21 МиБ. Китаока не указывает формат данных и размер в пикселях оригинальных фотографий.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

На GitHub представлен открытый проект Album AI для управления с помощью ИИ фотографиями на домашнем ПК.

Бесплатный инструмент организует все фото, альбомы и добавляет необходимую метаинформацию. Под капотом у проекта нейросеть ChatGPT-4o-mini.

Для сортировки изображений Album AI использует распознавание лиц. Из всех фотографий на ПК создаётся локальная база данных PgSQL без доступа извне.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии2

«Крёстная мать искусственного интеллекта» Фей-Фей Ли основала новый стартап-«единорог» World Labs. Его стоимость превысила $1 млрд.

В World Labs намерены использовать человеческую обработку визуальных данных, чтобы сделать ИИ способным к продвинутым рассуждениям.

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

«World Labs разрабатывает модель, которая понимает трёхмерный физический мир; по сути, она видит размеры объектов, где находятся вещи и что они делают», — рассказал анонимный венчурный капиталист, знакомый с работой Ли. 

В апрельском выступлении на Ted Ли объяснила, что её стартап работает над алгоритмами, способными реалистично экстраполировать изображения и текст в трёхмерную среду и действовать на основе этих прогнозов. Она назвала это «пространственным интеллектом». Подобные алгоритмы могут применяться в робототехнике, приложениях AR и VR, а также компьютерного зрения. 

У стартапа прошло два раунда финансирования, а в ходе последнего привлекли около $100 млн. World Labs поддерживают фонды Andreessen Horowitz и Radical Ventures.

Теги:
Всего голосов 3: ↑3 и ↓0+5
Комментарии0

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

Чтобы использовать Photo Selector, нужно сделать селфи в Tinder и предоставить приложению доступ к фото на устройстве. Опция будет локально использовать распознавание лиц для формирования подборок.

Цель Photo Selector — помочь пользователям сосредоточиться на «установлении значимых связей», экономя время при составлении профилей знакомств. По данным Tinder, в ходе исследования среди 7000 молодых людей выяснилось, что они тратят в среднем 33 минуты на выбор подходящей фотографии профиля. 

Photo Selector доступна для устройств под управлением iOS и Android, а внедрение в США планируется начать в июле. В других странах опция заработает позднее летом.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии1