Сравнение сжатия WebP без потерь с различными кодерами PNG, источник: Smashing Magazine
Инженеры Google начали экспериментировать с новым форматом сжатия изображений WebP2, следующим поколением формата файлов WebP.
Общепризнанная поддержка WebP пока продвигается очень медленно. Например, браузер Firefox добавил поддержку WebP только в 2019 году в версии Firefox 65, а некоторые CMS (и Habrastorage) до сих пор полностью его не поддерживают. В результате многие сайты по-прежнему публикуют изображения в старых и/или проприетарных форматах GIF, JPEG и PNG, генерируя лишний трафик.
Пока переход всего интернета на WebP ещё не закончен, Google приступила к работе над новой версией WebP2.
Две недели назад на сервере Google Git создан репозиторий libwebp2. Там лежат первые результаты работы над «экспериментальным преемником формата WebP».
Документацию только начали писать и её почти нет. Там сказано следующее: «WebP 2 является преемником формата изображений WebP, и в настоящее время он находится в разработке. Формат не готов к общему использованию и не доработан, поэтому изменения в библиотеке могут нарушить совместимость с изображениями в предыдущих версиях. Используйте на свой страх и риск!»
Таким образом, обратная совместимость с WebP пока отсутствует.
Инструмент визуальной инспекции и дебаггинга vwp2 для просмотра изображений WebP2
В WebP2 разработчики намерены реализовать поддержку 10-битного HDR (HDR10), но в основном он сосредоточен на повышении эффективности сжатия. Цель в том, чтобы увеличить степень компрессии на 30% по сравнению с оригинальным WebP, и это будет всего лишь на 20% хуже, чем у самого эффективного формата AVIF (AV1 Image File Format), который использует Netflix.
Сравнение сжатия JPEG 444 и AVIF 444
Оригинальное изображение из набора данных Kodak
JPEG 444 на 20 429 байт
AVIF 444 на 19 788 байт
Сравнение размера файлов WebP с популярными кодерами JPEG, источник: Smashing Magazine
Сжатие без потерь в WebP2 также будет улучшено, как и сжатие канала прозрачности. WebP2 будет должным образом поддерживать анимацию и быстрое послойное декодирование (своеобразный аналог чересстрочного кодирования в JPEG, которое позволяет постепенно загружать изображение по частям). Также планируется реализовать эффективную поддержку многопоточности, минимизировать визуальную деградацию на низких битрейтах и улучшить сжатие без потерь.
WebP2 находится на ранних стадиях, поэтому производительность кодера и декодера пока слабая. В настоящее время он только частично оптимизирован и примерно в пять раз медленнее, чем WebP при сжатии с потерями. Кодер сжимает вдвое быстрее, чем libavif (библиотека AVIF), но для декомпрессии требуется в три раза больше времени. Цель состоит в достижении паритета по скорости декомпрессии, пишут разработчики.
Оценить эффективность кодера WebP можно в результатах бенчмарков OpenBenchmarking.org. Точно так же опубликованы и бенчмарки кодера avifenc от AVIF.
Компания Google больше всех заинтересована в разработке WebP и WebP2, чтобы сжать свой петабайтный трафик, но по итогу этот свободный формат могут использовать все желающие. Сегодня форматы первого поколения WebP и WebM (видео) нашли применение на тысячах сайтах, в том числе используется в Википедии, что экономит некоммерческой организации Wikimedia Foundation значительную сумму на хостинге.
P.S. На правах рекламы хотим предложить специально для читателей Хабра честную скидку в 10% на любые тарифы нашего хостинга intesect.host. Скидка действует во всех дата-центрах. Предложение действительно с 16 по 22 ноября включительно.
Промокод при покупке: habr
KvanTTT
Возможно кодеки будущего будут использовать нейросети и базу данных о мире на устройствах пользователя.
Antervis
нейросети не применимы для детерминированных алгоритмов, а разжимать хотелось бы всё-таки детерминированно, чтобы у разных пользователей одни и те же картинки не «ехали». А вот подбирать оптимальные параметры сжатия нейронки бы могли.
serg_meus
Почему не применимы? Нейросеть — это, как правило, огромная нелинейная формула с постоянными коэффициентами. Уже применяются, например для сжатия текста: https://habr.com/ru/company/itsumma/news/t/510258/
Antervis
Как я и сказал — для подбора параметров сжатия
serg_meus
Наверное, под словом "нейросеть" Вы имели в виду отдельный вид нейросетей, называемых классификаторами изображений. Их ответ также вполне детерминирован в том смысле, что N раз подав на вход одно и то же изображение, не обязательно подряд, на выходе будем иметь в этих случаях N одинаковых индексов класса и одинаковые достоверности.
Для сжатия изображений классификаторы не подойдут, нужно использовать другие структуры нейросетей. Мой поисковик на запрос "image compression neural network" выдал море статей.
KvanTTT
Во-первых, если начальные условия одинаковые (база данных, число инициализации для генератора случайных чисел), то вполне можно достичь детерменированности. Во-вторых, если они будут ехать незначительно — никто и не заметит, а если значительно — значит что-то не то с алгоритмом. К тому же "исходник" картинки все равно у всех одинаковый, поэтому и хеш для него будет одинаковый.
Oplkill
таких объёмов на устройствах пользователя 40 лет точно не будет, учитывая, что база для подобной нейросетки будет гигантской, не говоря о требуемых ресурсах
KvanTTT
Не обязательно же все все хранить, а более менее важное, что покрывает 80% например. Размер такой базы не будет таким уж огромным.
Biga
Нейросети и сейчас могли бы неплохо применяться при кодировании, но пока что в известных мне кодеках используется либо перебор параметров, либо эвристики. Нейросеть будет однозначно в разы медленнее эвристик, но это терпимо, если даёт улучшение качества или сжатия. Наверняка сейчас что-то такое разрабатывается.
Для декодирования нейросети применяться не могут, т.к. это будет очень медленно. Приемлемая скорость декодирования подразумевает очень маленькое количество операций на пиксель, меньше чем число узлов любой нетривиальной нейросети.
Касательно "использовать базу данных о мире", вспоминается brotli с его словарём. Для кодеков изображений такая база будет очень большой, но почему бы и нет?