Я уже перестал вздрагивать и удивляться, когда звонит телефон и в трубке раздается жесткий уверенный голос: «Вас беспокоит капитан такой-то (майор такой-то), вы можете ответить на пару вопросов?» Почему бы не поговорить с родной полицией…
Вопросы всегда одни и те же. «У нас есть видео с подозреваемым, пожалуйста, помогите восстановить лицо»… «Помогите увеличить номер с видеорегистратора»… «Здесь не видно рук человека, пожалуйста, помогите увеличить»… И так далее в том же духе.
Чтобы было понятно о чем речь — вот реальный пример присланного сильно сжатого видео, где просят восстановить размытое лицо (размер которого эквивалентен примерно 8 пикселям):
И ладно бы только русские дяди Степы беспокоили, пишут и западные Пинкертоны.
Вот, например, письмо из полиции Англии <*****@*****.fsnet.co.uk>:
I have used your filters privately for some time to rescue my poor videos of family holidays but I would like to use the commercial filters for my work. I am currently a Police Officer in a small police force and we are getting a lot of CCTV video, which sometime is very poor quality and I can see how your filters would make a real difference. Can you tell me the cost and if I could use them.Или вот полицейский из Австралии пишет:
Thank you
ПереводЯ уже пользовался вашими фильтрами для личных целей, чтобы спасти свои плохие видео с семейных праздников. Но мне бы хотелось использовать коммерческие фильтры в своей работе. В данный момент я офицер полиции в небольшом подразделении. Мы получаем большое количество видео с камер видеонаблюдения, иногда очень плохого качества, и ваши фильтры действительно помогут. Не могли бы вы сказать мне их стоимость, и могу ли я их использовать?
Спасибо
Hi,Заметим, что письмо очень продуманное, человек беспокоится о том, чтобы алгоритм был опубликован и об ответственности за неверное восстановление.
I work for the Victoria Police in Australia, in the Video and Audio forensics unit. We occasionally receive video from either hand-held or vehicle-mounted cameras. Often these capture interlaced footage of fast-moving events. In particular, the footage which usually has the most «promise», is footage of vehicle number plates. We often find that the subject vehicle will have moved significantly between the first and last field being captured. As a result, we try and reconstruct the whole frame from the two fields, with the second being translated, sometimes rotated, and occasionally the size will be different too (as the vehicle is travelling away or towards the camera.) Marrying these two fields, preferably to sub-pixel accuracy, and reconstructing the frame containing the number plate, can be difficult.
From what I've see of you deinterlacing footage, it may be that your filter can do some, if not all, of what we need. To be honest, as our budget is rather small, it is unlikely that we can afford a commercial license. We do not sell the product, of course, we use it for evidence in police cases. In any case, I thought I would write an email and ask anyway. How much would it cost for a license? Is it possible to test the product on footage, to see if it is appropriate? Does it do some of what we need? Lastly, has the algorithm been published? Working with unknown algorithms is dangerous practice for a court of law. If the evidence results in a man going to gaol for 20 years, it is good practice to know why!
Any information you can offer would be appreciated.
Regards,
Caseworker
Audio Visual Unit
Victoria Police Forensic Services Department
ПереводПривет,
Я работаю в полиции Виктории в Австралии в отделе видео и аудио криминалистики. Время от времени мы получаем видео с ручных камер и видеорегистраторов. Часто эти видео — чересстрочная съемка быстродвижущихся объектов. В частности, наиболее важный материал — номерные знаки транспортных средств. Мы часто обнаруживаем, что рассматриваемое транспортное средство сильно перемещается между первым и последним отснятым полем. В результате мы пытаемся восстановить целый кадр из двух полей, причем второе — сдвинутое, иногда повернутое и время от времени отличающееся размером (когда автомобиль едет к или от камеры). Объединение этих двух полей, желательно в полупиксельной точности, и восстановление целого кадра, содержащего номерной знак, может быть затруднительным.
Я вижу, как вы применяете деинтерлейсинг к кадрам, и может быть ваши фильтры могут сделать что-то, если не все, что нам нужно. Честно говоря, возможно, мы не сможем позволить себе коммерческую лицензию, потому что наш бюджет достаточно мал. Мы не продаем продукт, конечно, мы используем его для доказательств в полицейских делах. В любом случае, я думал, что напишу письмо и все равно спрошу. Сколько будет стоить лицензия? Можно ли протестировать продукт на материале, чтобы узнать, подходит ли он? Делает ли он часть того, что нам нужно? Наконец, был ли опубликован алгоритм?.. Работа с неизвестными алгоритмами — опасная практика в суде. Если доказательства приводят к тому, что человек садится в тюрьму на 20 лет, полезно знать, почему.
Будем благодарны за любую информацию, которую вы можете предоставить нам.
С уважением,
Следователь
Отдела аудио и видео
Департамента судебно-медицинской экспертизы полиции Виктории
Иногда они только в процессе переписки признаются, что они из полиции. Вот, например, карабинеры Италии хотели бы получить помощь:
Dr. VatolinИ, конечно, много обращений обычных людей…
Thanks for the answer.
The answer is worth also for the police forces (Carabinieri investigation
scientific for PARMA ITALY)?
To which software they have been associates your algorithms to you.
We would be a lot.
ПереводДр. Ватолин
Спасибо за ответ.
Подходит ли это для полиции (Подразделение расследований Карабинеров для PARMA ITALY)?
Они интересуются, в каком программном обеспечении используются ваши алгоритмы?
Будем признательны.
Увеличь это! Что, вам жалко правильную кнопку нажать?
Понятно, что весь этот поток обращений появляется не на пустом месте.
«Виноваты» в первую очередь фильмы и сериалы.
Например, тут за 3 секунды кадр сжатого видео увеличивают в 50 раз и из отражения в очках видят улику:
И таких моментов в современных фильмах и сериалах много. Например, в этом ролике совершенно эпично собрали подобные эпизоды из пачки сериалов, не пожалейте двух минут на просмотр:
И когда вы подобное видите в каждом фильме, то последнему ежу становится понятно, что все, что вам нужно — это иметь грамотного компьютерного гения, комбинацию современных алгоритмов, и остается только вовремя скомандовать «STOP!» and «Enhance it!». И вуаля! Чудо произойдет!
Впрочем, на этом уже избитом приеме сценаристы не останавливаются, и их безудержная фантазия идет дальше. Вот совсем чудовищный пример. Бравые детективы по отражению в ЗРАЧКЕ жертвы получили фото преступника. Действительно, отражение в очках уже было. Это банально. Давайте пойдем дальше! Просто у камеры видеонаблюдения в подъезде разрешение совершенно случайно оказалось как у телескопа Хаббл:
В «Пророке» (00:38:07):
В «Аватаре» (1:41:04–1:41:05) алгоритм увеличения резкости, кстати, какой-то необычный по сравнению с другими фильмами: он сначала повышает резкость в отдельных местах, а через долю секунды подтягивает остальное изображение, т.е. сначала левая половина рта, а потом правая:
В общем, в очень популярных фильмах, которые смотрят сотни миллионов, увеличение резкости картинки делается в один клик. Все люди (в фильмах) делают это! Так почему вы, такие умные специалисты, не можете это сделать???
— Я же знаю, это делается легко! И мне точно сказали, что вы этим занимаетесь! Вам что, лень нажать эту кнопку?
// О боже… Проклятые сценаристы с их буйной фантазией…
— Я понимаю, что вы загружены, но речь идет о вашей помощи государству в раскрытии важного преступления!
// Мы понимаем.
— Может дело в деньгах? Сколько вам нужно заплатить?
// Ну как кратко объяснить, что дело не в том, что нам не нужны деньги… А потом еще раз, а потом еще...
Любые совпадения цитат выше с реальными диалогами являются абсолютно случайными, но, в частности, этот текст пишется для того, чтобы отправлять человека сначала внимательно прочитать его, и только потом перезвонить.
Вывод: Из-за того, что сцена с увеличением изображений с камер видеонаблюдения в один клик стала штампом современного кино, огромное количество людей искренне убеждены, что увеличить фрагмент кадра дешевой камеры или дешевого видеорегистратора — это очень просто. Главное — как следует попросить (ну или скомандовать, это как повезет).
Откуда растут ноги
Понятно, что весь этот поток обращений берется не на пустом месте. Мы действительно занимаемся улучшением видео уже около 20 лет, в том числе разными видами восстановления видео (а их несколько видов, к слову) и ниже в этом разделе будут наши примеры.
«Умное» увеличение разрешения в научных статьях обычно называют Super Resolution (сокращенно SR). Google Scholar на запрос Super Resolution находит 2,9 миллиона статей, т.е. тема как бы достаточно хорошо прокопана, и ей занималось огромное количество людей. Если пойти по ссылке, то там какое-то море результатов, один краше другого. Впрочем, стоит копнуть глубже, картина, как водится, становится не столь пасторальна. В теме SR выделяют два направления:
- Video Super Resolution (0,4 миллиона статей) — собственно восстановление с использованием предыдущих (а иногда и последующих) кадров,
- Image Super Resolution (2,2 миллиона статей) — «умное» увеличение разрешения с использованием только одного кадра. Так как в случае одной картинки взять информацию о том, что было в этом месте на самом деле неоткуда, алгоритмы тем или иным способом достраивают (или, условно говоря, «додумывают») картинку — что там могло бы быть. Основной критерий при этом — результат должен смотреться максимально естественно, либо быть как можно ближе к оригиналу. И понятно, что для восстановления того, что было «на самом деле», подобные методы не годятся, хотя увеличить картинку для того, чтобы она получше выглядела, например, при печати (когда у вас есть уникальное фото, но нет версии в большем разрешении) подобными методами очень даже можно.
Как видно, 0,4 миллиона против 2,2 — то есть в 5 раз меньшее число людей занимается собственно восстановлением. Благо, тема «сделай побольше, просто красиво» весьма востребована, в том числе в индустрии (пресловутый цифровой зум смартфонов и цифровых мыльниц). Причем, если погрузиться еще глубже, быстро выяснится, что заметное количество статей по Video Super Resolution — это тоже повышение разрешения видео без восстановления, ибо восстановление — это сложно. В итоге можно говорить о том, что тех, кто «делает красиво», примерно в 10 раз больше тех, кто действительно пытается восстановить. Довольно частая ситуация в жизни, кстати.
Идем еще глубже. Очень часто результаты алгоритма очень хороши, но ему нужно, например, 20 кадров вперед и 20 кадров назад, а скорость обработки одного кадра — около 15 минут при использовании самого продвинутого GPU. Т.е. на 1 минуту видео нужно 450 часов (почти 19 суток). Упс-с-с… Согласитесь, это совсем не похоже на мгновенный «Zoom it!» из фильмов. Регулярно встречаются алгоритмы, работающие несколько дней на один кадр. Для статей более качественный результат обычно важнее времени работы, ибо ускорение — отдельная сложная задача, а большого слона проще кушать по частям. Так выглядит разница жизни и кино…
Запрос на алгоритмы, работающие на видео с разумной скоростью породил отдельное направление Fast Video Super Resolution — 0,18 миллиона статей, включая «медленные» статьи, которые сравниваются с «быстрыми», т.е. реальное число статей о таких методах завышено. Заметим, что среди «быстрых» подходов процент спекулятивных, т.е. без реального восстановления, выше. Соответственно, процент честно восстанавливающих — ниже.
Картина, согласитесь, проясняется. Но и это, конечно, далеко не все.
Какие еще моменты существенно сказываются на получении хорошего результата?
Во-первых, очень сильно влияют шумы. Ниже пример двукратного восстановления разрешения на очень зашумленном видео:
Источник: материалы автора
Основная проблема на этом фрагменте даже не с обычными шумами, а с цветным муаром на рубашке, который сложно обрабатывать. Кто-то может сказать, что сегодня большие шумы не проблема. Это не так. Посмотрите на данные с автомобильных видеорегистраторов и камер видеонаблюдения в темное время суток (как раз тогда, когда они оказываются чаще востребованы).
Впрочем, муар может возникать и на относительно «чистых» с точки зрения шума видео, типа приведенного ниже города (примеры ниже идут на основе этой нашей работы):
Источник: материалы автора
Во-вторых, для оптимального восстановления нужно близкое к идеалу предсказание движения между кадрами. Почему это сложно — отдельная большая тема, но это объясняет, почему сцены с панорамным движением камеры часто восстанавливаются очень хорошо, а сцены с относительно хаотичным движением крайне сложно восстановить, однако и с ними можно в некоторых ситуациях получить вполне неплохой результат:
Источник: материалы автора
И, наконец, приведем пример восстановления текста:
Источник: материалы автора
Здесь фон движется достаточно плавно, и у алгоритма есть возможность «разгуляться»:
В частности, если сравнивать совсем мелкую надпись справа от руки, в том числе на увеличении с классической бикубической интерполяцией, то предельно хорошо видна разница:
Видно, что у бикубической интерполяции прочитать год практически нереально, у Lanczos4, который любят за большую резкость те, кто полупрофессионально изменяет разрешение видео, края четче, конечно, однако прочитать год по-прежнему невозможно. Коммерческий Topaz не комментируем, а у нас четко читается надпись и можно увидеть, что это с большой вероятностью 1809 год.
Выводы:
- Увеличением разрешения занимаются тысячи исследователей в мире, и на эту тему опубликованы миллионы статей. Благодаря этому в каждом смартфоне есть «цифровой зум», который обычно объективно лучше, чем алгоритмы увеличения обычных программ, а каждый FullHD телевизор умеет показывать SD видео, часто даже без характерных артефактов изменения разрешения.
- Восстановлением реального изображения из видео занимается сильно меньше 10% из занимающихся Super Resolution, более того, большинство алгоритмов восстановления крайне медленные (вплоть до нескольких дней вычислений на один кадр).
- В большинстве случаев восстановление рассчитано на то, что высокие частоты в видео более-менее сохранены, и поэтому не работают на видео с существенными артефактами сжатия. А поскольку в настройках камер видеонаблюдения степень сжатия нередко выбирают исходя из желания сохранить побольше часов (т.е. видео сжимается сильнее, и высокие частоты «убиваются»), восстановить такое видео становится практически невозможно.
Как SR выглядит в индустрии
Справедливости ради заметим, что свои (или как минимум купленные) алгоритмы увеличения разрешения сегодня есть у всех производителей телевизоров (нужно из SD картинки на лету делать HD), у всех производителей смартфонов (то, что в рекламе называют «цифровой зум») и т.д. Мы поговорим о результатах Google (и не только). Во-первых, потому что Google очень неплохо и без особого пафоса и маркетинга описывает результаты в своем блоге — и это крайне приятно. Во-вторых, потому что производители смартфонов (например, одна очень известная корейская компания) не чураются использовать, скажем так, Photoshop в рекламе своих технологий (какая разница — пипл все равно проглотит) — и это неприятно. В общем, поговорим про тех, кто описывает свои технологии достаточно честно.
Еще в 2016 году Google опубликовал довольно интересные результаты алгоритма RAISR (Rapid and Accurate Image Super Resolution), использованного в смартфоне Pixel 2. На наиболее удачных картинках результат выглядел просто великолепно:
Источник: AI блог Google
Алгоритм представлял из себя набор фильтров, применяемых после ML классификации, и по сравнению с бикубической интерполяцией (традиционным мальчиком для битья) результат радовал:
По порядку: оригинал, бикубическая интерполяция, RAISR
Но это был Single Frame Interpolation, и на «неудачных» примерах, как листва ниже, картинка становилась весьма неприятно искажена — после увеличения фотография становилась заметно «синтетической». Проявлялся ровно тот эффект, за который не любят цифровой зум современных смартфонов:
Чуда, по сути, не произошло, и Google честно и сразу опубликовали контр-пример, т.е. сразу обозначили границы применимости их подхода и избавили людей от избыточных ожиданий (характерных для обычного маркетинга).
Впрочем, не прошло и двух лет, как было опубликовано продолжение работы, использованное в Google Pixel 3 и кардинально улучшающее качество его съемки, являющееся уже честным многокадровым Super Resolution, т.е. алгоритмом восстановления разрешения по нескольким кадрам:
Источник: AI блог Google
На картинке выше приведено сравнение результатов Pixel 2 и Pixel 3, и результаты выглядят очень хорошо — картинка действительно стала намного четче и хорошо видно, что это не «додумывание», а действительно восстановление деталей. Причем у внимательного профессионального читателя возникнут вопросы по поводу двух вертикальных сдвоенных труб слева. Разрешение явно выросло, при этом шаг алиайсинга (признак реального разрешения) выглядит странно близким. Что это было?
В двух словах разберем алгоритм. Коллеги пошли от изменения интерполяции байеровского шаблона:
Дело в том, что 2/3 информации в реальном изображении на самом деле информация интерполированная. Т.е. ваша картинка УЖЕ размыта и «замылена», но при реальном уровне шумов это не столь существенно. К слову, возможность использовать более сложные алгоритмы интерполяции сделала популярными программы максимально качественного преобразования RAW для фотографий (разница между простым алгоритмом, встроенным в каждый фотоаппарат, и сложным алгоритмом специализированной программы, как правило, хорошо заметна на глаз при увеличении картинки).
Коллеги из Google используют тот факт, что подавляющее большинство фотографий смартфона делают с рук, т.е. камера будет слегка дрожать:
Источник: AI блог Google (изображение нескольких кадров выровнено на пиксельном уровне, чтобы показать субпиксельный сдвиг)
В результате, если снять несколько кадров и оценить сдвиг (а железо, которое в состоянии строить карту motion estimation с четвертьпиксельной точностью есть в любом смартфоне с поддержкой H.264), получаем карту сдвигов. Правда по анимации выше хорошо видно, что с реальным уровнем шумов построение карты сдвигов с субпиксельной точностью — весьма нетривиальная задача, но за последние 20 лет в этой области появились очень хорошие алгоритмы. Конечно, временами и им приходится несладко. Например, в примере выше что-то бликует на одном кадре наверху поручня лестницы. И это еще статическая сцена, нет движущихся объектов, которые иногда не просто движутся, а вращаются, меняют форму, движутся быстро, оставляя большие области открытия (шлейф которых не должно быть видно после обработки). На примере ниже хорошо видно, что происходит с быстро движущимися объектами, если отключить специальную обработку таких случаев (слева отключена, справа включена, если кликнуть — хорошо видны блоки обработки):
Источник: AI блог Google (рекомендуется нажать и посмотреть в большом разрешении)
Жесткие примеры — это пламя, рябь, блики солнца на воде и т.д. В общем, даже в «простой» задаче определения сдвига есть много нетривиальных моментов, заметно осложняющих жизнь алгоритму. Впрочем, сейчас речь не об этом.
Интересно, что даже если камера совершенно неподвижна (например, закреплена на штативе), то можно заставить сенсор двигаться через управление модулем оптической стабилизации (OIS — Optical Image Stabilization). В итоге мы получим искомые субпиксельные сдвиги. В Pixel 3 поддержка OIS реализована, и можно прижать телефон к стеклу и с интересом наблюдать, как OIS начнет по эллипсу перемещать картинку (примерно, как по этой ссылке), то есть даже в этом сложном для него случае закрепления на штативе Super Resolution сможет отработать и поднять качество. Впрочем, львиная доля съемки со смартфонов — это съемка с рук.
В итоге у нас появляется дополнительная информация для построения фотографии большего разрешения:
Как уже говорилось выше, прямым следствием SR является сильное понижение уровня шумов, в некоторых случаях — очень ощутимое:
Источник: AI блог Google
Заметим, что восстановление означает также и восстановление по числу бит на компоненту. Т.е. формально решая задачу увеличения разрешения, тот же самый engine при определенных условиях может не только подавлять шумы, но и превращать кадр в HDR. Понятно, что сегодня HDR используется пока редко, но это, согласитесь, неплохой бонус.
На примере ниже приведено сравнение изображений, полученных при съемке на Pixel 2 и на Pixel 3 после SR при сравнимом качестве сенсора. Хорошо видна разница по шумам и разница по четкости:
Для любителей разглядывать детали выложен альбом, в котором Super Resolution от Google (маркетинговое название Super Res Zoom) можно оценить во всей красе в спектре шкалы приближения изображения на смартфоне (изменение FoV):
Как они скромно пишут — они еще на шаг приблизили качество съемки смартфонов к качеству профессиональных фотоаппаратов.
Справедливости ради заметим, что профессиональные фотоаппараты тоже на месте не стоят. Другое дело, что при меньших масштабах продаж те же технологии для пользователя обойдутся дороже. Тем не менее, SR в профессиональных фотоаппаратах уже появляются.
UPD:
В качестве примера (последняя ссылка — сравнение):
- Testing Sony’s New Pixel Shift Feature in the a7R III, про увеличение разрешения в 2 раза по обоим измерениям (и рекламное видео в котором красиво рисуется, как мы волшебным образом сдвигаемся ровно на пиксел в каждом направлении при накоплении байеровского паттерна),
- Повышение разрешения в Olympus E-M5 Mark II с 16 до 40 мегапикселов,
- Статья с описанием Super Resolution в фотоаппарате Pentax K-1,
- Великолепная статья: Pixel-Shift Shootout: Olympus vs. Pentax vs. Sony vs. Panasonic — сравнение повышения разрешения Pentax K-1, Sony a7R III, Olympus OM-D E-M1 Mark II и Panasonic Lumix DC-G9. Характерно, что обработка движущихся объектов, про которую речь шла выше и которая весьма нетривиальна, есть только у Pentax K-1.
Выводы:
- Алгоритмами Super Resolution сегодня обзаводятся все компании, чьи продукты профессионально работают с видео и фото, особенно хорошо это видно по производителям телевизоров и смартфонов.
- Простой SR: Image Super Resolution — порождает заметные артефакты (неестественная картинка), поскольку не является алгоритмом восстановления.
- Основные бонусы алгоритмов восстановления — уменьшение шума, уточнение деталей, «более честный» HDR, хорошо видимое более высокое качество картинки на телевизорах с большой диагональю.
- Все это великолепие стало возможно благодаря кардинальному (примерно на 3 порядка в числе операций) увеличению сложности алгоритмов обработки фотографии, или точнее — одного кадра видео.
Результаты Яндекс
Поскольку все равно в комментариях спросят, пару слов скажу про Яндекс, который в прошлом году опубликовал свой вариант Super Resolution:
Источник: https://yandex.ru/blog/company/oldfilms
А тут несколько примеров на мультфильмах:
Источник: https://yandex.ru/blog/company/soyuzmultfilm
Что это было? Яндекс повторил технологию Google 2016 года?
На странице описания технологии от Яндекс (маркетинговое название DeepHD) ссылки только на Image Super Resolution. Это означает, что заведомо существуют контрпримеры, на которых алгоритм портит картинку и они встречаются чаще, чем для алгоритмов «честного» восстановления. Зато теме посвящено примерно 80% статей и алгоритм проще реализовать.
На хабре эта технология тоже описывалась (интересно, что автор статьи — выпускник нашей лаборатории), но, как можно заметить по комментариям, авторы не ответили ни на один мой вопрос, при том на другие отвечали. И это, скорее, не авторы злодеи, а политика компании (в других постах, если присмотреться, тоже часто нет ответов на вопросы специалистов). Ибо в блогах технологических компаний нежелание идти глубже в обсуждение деталей реализаций или технологий является нормальным явлением. Особенно, если при этом создается лучшее впечатление о технологии/продукте. Или конкуренты могут запилить то же самое быстрее. Опять же, за посты отвечает маркетинг, и это их непосредственная работа — создание благоприятного впечатления о продуктах компании вне зависимости от качества самих продуктов. Отсюда частое недоверие к информации, исходящей от маркетинга.
Вообще, стоит весьма скептично относиться к картинкам компаний из серии «как мы сделали всем всё хорошо» по следующим причинам:
- Авторы алгоритмов обработки хорошо знают, что практически не бывает алгоритмов, которые в некоторых случаях не порождали бы артефакты. И, собственно, одна из ключевых задач разработчика — уменьшить процент таких случаев (или заметность артефактов в таких случаях) при сохранении качества в остальных случаях. И очень часто это НЕ удается:
- Либо артефакты столь сильны и сложно исправляемы, что весь подход бракуется. Собственно это случай, пожалуй (сюрприз-сюрприз!), большинства статей. Божественные картинки в некоторых случаях (на которые точились) и «it does not work at all» в остальных.
- Либо (и это частая ситуация для практических технологий компаний) приходится несколько пожертвовать качеством в среднем ради того, чтобы артефакты в худших случаях можно было терпеть.
- Либо артефакты столь сильны и сложно исправляемы, что весь подход бракуется. Собственно это случай, пожалуй (сюрприз-сюрприз!), большинства статей. Божественные картинки в некоторых случаях (на которые точились) и «it does not work at all» в остальных.
- Другой частый пример введения в заблуждение относительно алгоритмов обработки — это использование параметров (в т.ч. внутренних параметров) алгоритма. У алгоритмов, так сложилось, есть параметры, а пользователи — и это тоже норма — любят, чтобы была максимум одна кнопка «включить». И даже если настройки есть, то массовый пользователь их не использует. Именно поэтому компании при покупке технологии «стопятьсот» раз переспрашивают «Это точно полный автомат?» и просят много примеров.
- Соответственно, частая история — публикация результата, который был получен при определенных параметрах. Благо разработчик хорошо их знает, и даже когда их под полсотни (реальная ситуация!), очень быстро подбирает их так, чтобы картинка была волшебна. Ровно эти картинки зачастую и идут в рекламу.
- Причем разработчик может даже быть против. Маркетинг видит новые присланные примеры и говорит «на них ничего не видно, в прошлой презентации у вас же были нормальные примеры!». И дальше им можно пытаться объяснить, что новые примеры — это то, что люди реально увидят, а в прошлой презентации показывались потенциальные результаты, которых можно достичь по предварительным исследованиям начала проекта. Это никого не волнует. Пипл получит картинку «где видно». В некоторых случаях даже крупные компании используют «photoshop». Хавать подано, господа пипл! )
- Соответственно, частая история — публикация результата, который был получен при определенных параметрах. Благо разработчик хорошо их знает, и даже когда их под полсотни (реальная ситуация!), очень быстро подбирает их так, чтобы картинка была волшебна. Ровно эти картинки зачастую и идут в рекламу.
- Кроме того, если речь идет про видео — открывается просто огромные просторы для
махин…хорошего маркетинга! Ибо, как правило, выкладываются кадры, а качество сжатого видео всегда осциллирует и зависит от массы параметров. Опять же — можно несколько технологий грамотно применять, время обработки, опять же, может быть разным. И это не все, простор велик.
- В рекламе Яндекса указано, что технология DeepHD работает в реальном времени, поэтому уже сегодня с ее использованием можно смотреть телевизионные каналы. Выше объяснялось, что скорость работы — ахиллесова пята Super Resolution. Достоинство нейросетей, безусловно, в том, что обучаясь долго, работать они в некоторых случаях могут очень быстро, но все равно я бы посмотрел (с огромным профессиональным интересом), в каком разрешении и с каким качеством алгоритм работает в реальном времени. Обычно создается несколько модификаций алгоритма и на больших разрешениях при real-time многие «фишки» (критичные для качества) приходится отключать. Очень многие.
- В черно-белых примерах при внимательном рассмотрении видно, что меняется локальная яркость. Поскольку правильный SR яркость не меняет, то это, похоже, работал еще какой-то алгоритм, возможно не один (по результатам видно, что это не Single Frame Processing, точнее похоже не только). Если посмотреть кусок большего размера (хотя бы 100 кадров), картина будет понятна. Впрочем, измерение качества видео — это отдельная очень большая тема.
- В рекламе Яндекса указано, что технология DeepHD работает в реальном времени, поэтому уже сегодня с ее использованием можно смотреть телевизионные каналы. Выше объяснялось, что скорость работы — ахиллесова пята Super Resolution. Достоинство нейросетей, безусловно, в том, что обучаясь долго, работать они в некоторых случаях могут очень быстро, но все равно я бы посмотрел (с огромным профессиональным интересом), в каком разрешении и с каким качеством алгоритм работает в реальном времени. Обычно создается несколько модификаций алгоритма и на больших разрешениях при real-time многие «фишки» (критичные для качества) приходится отключать. Очень многие.
Выводы:
- Надо понимать, что маркетологи часто используют свои приемы ровно потому, что это работает (и еще как!). Подавляющее большинство людей
не читают хабрне желают глубоко разбираться в теме и даже не ищут мнения эксперта, им достаточно рекламы (иногда — голимой рекламы). Что регулярно приводит к разного рода перекосам. Желаю всем поменьше вестись на рекламу, особенно когда storytelling на высоте и будет очень хотеться поверить в чудо!
- И, безусловно, очень хорошо, что в Яндексе тоже работают над темой и делают свой SR (точнее, свое семейство SR).
Перспективы
Вернемся к тому, с чего начинали. Что же делать тем, кто хочет увеличить сжатое видео? С этим совсем все плохо?
Как было описано выше, алгоритмам «честного» восстановления критично даже слабое изменение изображения в области, буквально на уровне шумов. То есть, критичны высокие частоты в изображении и их изменение между кадрами.
При этом главное, за счет чего производится сжатие видео — это удаление межкадровых шумов. На примере ниже межкадровая разница шумного видео до компенсации движения, после компенсации (при слабом сжатии) и после ощутимого сжатия — почувствуйте разницу (контраст поднят примерно в 6 раз, чтобы было видно детали):
Источник: лекции автора по алгоритмам сжатия
Хорошо видно, что с точки зрения кодека идеальная область — это область, движение в которой было полностью скомпенсировано и на которую более не надо тратить ни бита. Ну чуть-чуть бит можно потратить, что-то минимально подправить. И таких областей может быть довольно много. Поэтому Super Resolution лишается своего «основного хлеба» — информации о том, что в этом месте находится в других кадрах с учетом субпиксельного сдвига.
Если посмотреть по статьям, то даже для относительно простого JPEG на jpeg restoration находится 26 тысяч результатов, а для jpeg recovery — 52 тысячи, причем это вместе с восстановлением битых файлов и т.д. Для видео ситуация похуже mpeg restoration — 22 тысячи, т.е. работы, конечно, ведутся, но масштабы с масштабами работ по Super Resolution не сравнимы. Работ примерно на порядок меньше, чем по восстановлению разрешения видео и на два порядка меньше, чем Image Super Resolution. Два порядка — это много. Мы подход к снаряду тоже делали (поскольку и сжатием, и обработкой занимаемся давно), там есть с чем работать, особенно если качество осциллирует или используется что-то типа M-JPEG (еще недавно — частая картина в видеонаблюдении). Но это все будут частные случаи.
По результатам статей по ссылками выше также видно, что результаты иногда очень красивые, но получены для очень частных случаев. Т.е. завтра в каждом смартфоне эта функция, увы, не появится. Это плохая новость. Хорошая — послезавтра и на компьютере с хорошим GPU — появится точно.
Причины:
- Постепенно дешевеют устройства накопления (SD-карты для регистраторов, диски для камер видеонаблюдения и т.д.) и повышается средний битрейт сохранения видео.
- Также при сжатии постепенно переходят на стандарты следующих поколений (например, на HEVC), что означает заметное повышение качества при том же битрейте. Последние 2 пункта означают, что постепенно качество видео будет все выше, и начиная с какого-то момента начнут работать хорошо проработанные алгоритмы Video Super Resolution.
- Наконец, совершенствуются алгоритмы. Особенно хороши достижения алгоритмов на основе машинного обучения за последние 4 года. В этом плане с большой вероятностью можно ожидать что-то типа такого:
Т.е. в алгоритме будет явным образом использоваться информация о движении, полученная от кодека, и далее эти данные будут скармливаться нейросети, обученной на восстановлении артефактов, характерных для конкретных кодеков. Такая схема выглядит на данный момент вполне достижимой.
Но в любом случае нужно четко понимать, что текущее восстановление — это, как правило, увеличение разрешения в 2 раза. Реже в некоторых случаях, когда исходных материал не сжимался или почти не сжимался, речь может идти о 3-4 разах. Как видите, это даже близко не 100-1000 раз увеличения из фильмов, когда 1,5 пиксела убитой шумами ночной записи превращаются в превосходного качества номер машины. Жанр «научная фантастика» следовало бы присваивать по факту большему проценту фильмов и сериалов.
И, конечно, будут попытки сделать что-то универсальное, в рамках модного тренда «главное запилить слоев побольше». И тут стоит предостеречь от «ура-ура» реакции на рекламные материалы на эту тему. Ибо нейросети — это самый удобный framework для демонстрации чудес и разного рода спекуляций. Главное — грамотно подобрать обучающую выборку и финальные примеры. И вуаля! Зрите чудо! Очень удобно в плане окучивания инвесторов, кстати. То есть крайне важно, чтобы работоспособность технологий подтверждалась кем-то независимым на большом количестве разнородных примеров, что демонстрируется крайне редко. Для компаний даже привести один-два примера, когда технология не работает, приравнивается сегодня к гражданскому подвигу.
Ну и чтобы жизнь медом не казалась — напомню, что сегодня популярен так называемый транскодинг, когда на деле приходится работать с видео, которое изначально было пожато каким-то одним алгоритмом, а потом пережато другим, при этом используются другие вектора движения, снова уничтожаются высокие частоты и т.д. И то, что человек там все видит хорошо, не означает, что обрабатывающему такое видео алгоритму будет реально совершать чудеса. Восстанавливать сильно пережатые видео получится не скоро, хотя в целом Super Resolution будет бурно развиваться в следующие 10 лет.
Выводы:В конце прошлого года нами была сделана лекция «Нейросети в обработке видео — мифы и реальность». Возможно, доберемся ее сюда положить.
- Помните, что то, что вы видите в фильмах и то, как оно в реальной жизни — сильно отличается. И не только в плане восстановления сильно сжатого видео!
- Обычно современные алгоритмы повышают разрешения в 2 раза, реже — чуть больше, т.е. никаких 50 раз, привычных по фильмам, скоро ждать не приходится.
- Область Super Resolution бурно развивается и можно ожидать активного развития Video Restoration в ближайшие годы, в том числе восстановление после сжатия.
- Но первое, что мы увидим — это разного рода спекуляции на тему, когда демонстрируемые результаты будут сильно преувеличивать реальные возможности алгоритмов. Be careful!
Stay tuned!
Благодарности
Хотелось бы сердечно поблагодарить:
- Лабораторию Компьютерной Графики ВМК МГУ им. М.В.Ломоносова за вычислительные мощности и не только,
- наших коллег из видеогруппы, благодаря которым представленные выше алгоритмы были созданы, и, особенно, Карена Симоняна, автора статьи, результаты которой демонстрировались выше и который сейчас работает в Google DeepMind,
- персонально Константина Кожемякова, который сделал очень много для того, чтобы эта статья стала лучше и нагляднее,
- компанию Google за великолепный блог и относительно корректные описания созданных технологий и компанию Яндекс за то, что они на широком фронте очень неплохо составляют конкуренцию Google — практически единственный успешный пример в стране, где сервисы Google не запрещены,
- хабровчан denisshabr, JamboJet и iMADik за наводку и ссылки на многокадровый SR профессиональных фотоаппаратов,
- и, наконец, огромное спасибо Вячеславу Нападовскому, Евгению Купцову, Станиславу Грохольскому, Ивану Молодецких, Алексею Соловьеву, Евгению Ляпустину, Егору Склярову, Денису Кондранину, Александре Анзиной, Роману Казанцеву и Глебу Ишелеву за большое количество дельных замечаний и правок, сделавших этот текст намного лучше!