TGViewer
The Layer The Layer @layercv · 852 subscribers
Post #21 519
Начинаю серию постов по следам давнего тизера из LinkedIn.
Поговорим об инженерной части нашей работы, о производительности.

В оригинальном посте я я сравнивал нас с библиотекой для процессинга данных Nvidia DALI (используется в Triton Server), но на самом деле функционал пересекается лишь частично. Однако, как я писал, где он всё-таки пересекается, там производительность у нас намного выше.

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

Начнём мы с PNG и GIF.

Секундный ликбез (почему-то для многих это проблема на собеседовании О_о): это второй по популярности в известной нам части Вселенной формат хранения изображений и хранит он их сжимая без потерь. В большинстве случаев, для сжатия под капотом будет использоваться zlib, т.е. алгоритм общего назначения DEFLATE, точно такой же, который, зачастую, применяется и когда вы используете ZIP утилиту.

Гонять PNG на карту для декомпрессии там, как в случае с JPG, совершенно бессмысленно: вес большой, а сам алгоритм прекрасно оптимизирован для CPU. Кроме того, в нашей области крайне велика вероятность, что CPU у вас намного свободнее карты :)

Но, общем и целом, производительность PNG всё равно намного хуже, чем у JPEG. Поэтому, кажется, что разработчики Nvidia DALI должны были уделить вопросу особое внимание. Однако на деле библиотека, не мудрствуя лукаво, просто вызывает OpenCV. Который, в свою очередь, дёргает libpng, который дёргает zlib в доме, который построил Джек. Вообще говоря, можно подоткнуть в OpenCV и другие реализации: libspng, lodepng, и т.д., а так же использовать другие вариации zlib. Но по итогу, можно закончить результатами ещё хуже, чем было до.

Из-за чего может показаться, что лучше ничего не трогать и оставить всё, как в DALI. Но нет.

Серебряная пуля существует и имя ей Wuffs от Google. Эта библиотека не только в 1.5 - 2.75 раза быстрее libpng, но ещё и безопаснее с точки зрения эксплойтов! Вместо zlib там своя реализация. По ссылке есть все необходимые числа, эксперименты и обоснования.

И, совершенно потрясающим образом, насколько эта библиотека невероятно крута, настолько же мало используема!

Google и PR... you know.

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

Лично я реализовал его так, что на выходе Wuffs сразу пишет в буфер OpenCV изображения: его затем легко и прокинуть назад в Python и провести с ним любые манипуляции. Разница в скорости - колоссальная, и это если сравнивать с OpenCV \ libpng, не говоря о других библиотеках, как PIL.

Ну, а GIF тут идёт бонусом :) В его случае разница может быть даже больше.

Тут дубликат поста в LinkedIn, если вы там есть и пост вам понравился, пожалуйста, клацните лайк. Это поможет мне понять, какие темы стоит развивать дальше.
  • 🔥 8
More from @layercv
  1. Aug 21, 2025✨Big Tech Night: не пропусти первую «Ночь музеев» в мире IT 12 сентября в Москве пройдёт B…
  2. Jul 22, 2025Ещё раз напомню, что доступно бесплатное демо нашего файнтюна Bagel-NHR-Edit на HuggingFac…
  3. Jul 22, 2025Абсолютно всё в этих примерах создано без участия человека, мы просто задали направление.…
  4. Jul 22, 2025NoHumansRequired: Autonomous High-Quality Image Editing Triplet Mining Вышел наш первый пр…
  5. Jul 8, 2025⚡Полная версия MiVOLO на HuggingFace! Наша молниеносная модель в 29 млн. параметров для оп…
  6. Jul 8, 2025Вакансия: Deep Learning Engineer, ASR 🎧 Ищем инженера-исследователя в ML команду распозна…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →