Зеркалка — хорошая штука, но смартфон однозначно компактнее и удобнее. Да, мобильная оптика все еще далека до уровня зеркалок, однако получить красивые фотографии человек хочет здесь и сейчас. Как быть? Взамен харда, подключается софт, алгоритмы!
Именно софт смартфона помогает снять фото в HDR или сделать видео менее смазанным. Он состоит из «классических» вычислительных алгоритмов и нейросетей. Вычислительные алгоритмы требуют много ручной работы и глубокого понимания решаемой задачи, зато хорошо работают при ограниченных вычислительных ресурсах. Нейросети прожорливы, но сильно упрощают жизнь разработчику и потенциально позволяют достичь большего. Объединение двух этих подходов даёт замечательные результаты!
Вычислительные алгоритмы и нейросети: в чём отличия?
Все вы знаете, что современные парадигмы обработки цифровых, визуальных, звуковых данных — это методы машинного, либо глубокого обучения. Разница между ними не очень большая, но тем не менее, есть.
Машинное обучение (Machine Learning, ML) — это некий процесс, в котором человек участвует на этапе формирования правил по извлечению признаков. То есть человек, используя свою интуицию, эвристику, экспертное представление об объектах анализа предполагает, какие из признаков (для изображения: контуры, цвет, размер связанных объектов, частотные характеристики и так далее) могут быть использованы для задач, выполняемых машиной, к примеру, для классификации (разбиения данных на группы, например, для e-mail — на спам и нормальные письма). Таким образом, человек берёт на себя функцию, связанную с тем, что стоит считать важным для данной задачи, какие признаки данных следует далее передавать алгоритму для принятия решения. В этом случае значительную роль играет личный опыт и понимание специфики задачи. Такой подход оправдан до сих пор для случаев, когда отсутствуют тренировочные данные достаточного качества и количества для обучения нейронных сетей.
Глубокое обучение (Deep Learning, DL) — в этом случае человек делегирует ответственность по извлечению признаков самой нейронной сети. Нейронная сеть формирует внутреннее представление признаков в соответствии с тем, какая целевая задача перед ней стоит, и таким образом сама определяет, что считать важным в тренировочных данных. Обычно, целевая задача формулируется в виде математических критериев, численным образом формализующих разницу между предсказанными и истинными значениями. Эту разницу называют функцией потерь. Нейронная сеть пытается решить поставленную задачу наиболее оптимальным образом за счёт минимизации разницы между прогнозируемыми и истинными результатами в ходе тренировки, сводя эту разницу, «потери», к минимуму. Роль человека в данном случае касается выбора предпочтительной архитектуры нейронной сети (модели), и что не менее важно, формулировки критериев обучения с помощью функции потерь.
Кроме выбора характеристик нейронной сети и способа тренировки, ещё одним немаловажным аспектом в глубоком обучении является представительность и качество тренировочных данных, поскольку именно из этих данных нейронная сеть далее черпает представление о том, как должен выглядеть результат. Соответственно, если в тренировочных данных отсутствуют примеры, которые потом будут встречаться на практике, то такая несбалансированность может привести к неверному «поведению» нейронной сети: она будет иметь склонность сводить результаты только к тому, что «видела» в тренировочных данных.
Сейчас большинство инженеров, когда приступают к новой задаче, решают её методами машинного или глубокого обучения. Глубокое обучение в некотором смысле даже более простой вариант, поскольку система устроена как черный ящик, которому мы даем входные данные, определяем задачу с помощью математических критериев и контролируем результат. Поэтому часто забывается, что предшествовало эпохе машинного и глубокого обучения.
Можно сказать, это была ранняя эра разработки алгоритмов, так называемых handcrafted («крафтовых») алгоритмов. Немногие сейчас углубляются в эту область, ведь современный инженер — это, прежде всего, специалист в машинном/глубоком обучении. Handcrafted — это немного пренебрежительное название алгоритмов, в которых человек сам определяет все шаги обработки данных (далее мы будем называть их вычислительными алгоритмами). Например, для задачи классификации человек самостоятельно устанавливает последовательность процесса обработки, способы вычисления признаков и принятия решения, при этом опирается на свое понимание проблемы и наблюдения. В итоге, исследователь создаёт модель этой проблемы и реализует её решение в виде алгоритма действий.
Такой подход обладает рядом недостатков (но есть и ряд преимуществ, о которых я расскажу далее): он очень сильно зависит от того, насколько человек погружен в проблематику, насколько он может достоверно сделать модель, учесть все нюансы. В задаче улучшения качества изображения инженер составляет математическую модель, описывающую деградацию (ухудшение качества) изображения: то, как оно изменяется под воздействием некоторых мешающих факторов (добавление шума, геометрических искажений или размытия), потом решает обратную задачу и реализует её. Такой подход существовал 10-15 лет назад и в ряде задач им пользуются до сих пор.
До 2012 года, когда появилась всем известная сеть для классификации AlexNet, доминировали традиционные методы — машинное обучение и вычислительные алгоритмы. После того, как был опубликован AlexNet, внимание разработчиков сконцентрировалось на нейросетевых подходах. Если мы правильно представляем данные и правильно формируем критерии обучения, то потенциал нейросетевых подходов гораздо выше, чем разработка алгоритмов, которые человек создаёт, пользуясь своей интуицией и инженерной эвристикой.
Нейросети: бочка мёда
Оптимальное решение вырабатывается самостоятельно системой в процессе тренировки. Оно будет оптимально в рамках установленных критериев и данных, на которых обучалась сеть.
Параллельно с эволюцией нейросетевых решений и развитием методов оптимизации появляется множество фреймворков, сред разработки, которые позволяют разработчику достаточно быстро погрузиться в предмет и использовать сложные математические функции, вызывая их буквально парой строк кода на Python.
Более того, идет очень плотная интеграция этих фреймворков с «железом», поскольку нейросетевые решения очень требовательны к вычислительным ресурсам. Разработчик получает прослойку в виде фреймворков, которая его отодвигает от необходимости понимания того, как вычисления будут распараллеливаться на графических картах, какие операции наиболее эффективно поддерживают нейросетевые вычисления и так далее. Это очень удобно. Фреймворки часто публикуются по модели Open Source, участники сообщества делают свой вклад и это способствует более стремительному развитию всей этой области. Я уже упоминал, что разработчики мобильных устройств сейчас серьёзно озадачены тем, чтобы обеспечить аппаратную поддержку для нейросетевых решений, поскольку понимают их преимущество. Таким образом, помимо графических ускорителей в смартфонах появляются дополнительные вычислительные модули — нейропроцессоры, которые нацелены именно на особенности вычислений нейронных сетей. Появляются инфраструктурные решения — коммерческие продукты, которые упрощают разработчику жизнь и уменьшают время, необходимое для получения первого результата.
Какие же есть сложности в глубоком обучении? Кратко пробежимся по ним.
Нейросети: ложки дёгтя
1. Хорошие датасеты на вес золота
Поскольку разработчики постепенно отдаляются от старых приёмов разработки, то роль моделирования изменения данных перекладывается на обучающий датасет. С его помощью мы представляем нейронной сети примеры входных данных и того, как должен выглядеть результат, эталоны. При этом качество датасета играет большую роль: он должен быть достаточно сбалансирован, иметь представительность по всем возможным вариантам результатов.
Для задач улучшения качества изображений обучающие датасеты обычно представляют собой пары фото, например, исходное изображение с камеры смартфона, а другое, эталонное — с цифровой DSLR-камеры (цифровая зеркальная камера). В этом случае нейросеть имеет эталон (ground truth), к которому пытается приблизиться, изменяя входное изображение.
Сбор хороших данных — это сложный и дорогостоящий процесс. Существуют крупные компании, специализирующиеся на подготовке тренировочных данных, такие как Яндекс.Толока, Amazon Mechanical Turk, Dbrain, но такие сервисы в основном сконцентрированы на задачах, которые хорошо описываются и масштабируются, например, разметка изображений для сегментации изображений или распознавания текста. Привлекать их для создания эффективных и узкоспециализированных датасетов, как, например, для задачи повышения разрешения изображений (super resolution), — сложно, потому что здесь необходимо использовать оборудование и иметь понимание процесса, происходящего в камере.
Любопытно, но даже в таких отлаженных процессах как разметка изображений, можно неожиданно натолкнуться на сложности, например, для Amazon Mechanical Turk существовал такой термин как «мексиканский след» в данных. Просто так получалось, что на такую низкооплачиваемую и рутинную работу с готовностью вовлекались краудсорсинговые работники из Мексики, для которых она выглядела как привлекательная подработка. И, в итоге для задачи разметки изображений на две категории: привлекательные или менее привлекательные, мы получаем набор изображений, которые жители Мексики в среднем считают красивыми и интересными. Но, большой вопрос, насколько это может быть справедливо для жителей остальных стран, представители которых не заинтересовались заработком около 2$ в час для участия в разметке данных.
2. Ограничения обобщающей способности нейросетей
Каждая нейросеть имеет свой предел, называемый «обобщающей способностью». Нейросеть пока не может, подобно человеческому мозгу, работать со всей вариативностью реального мира.
В задачах классификации или распознавания образов есть очень известные проблемы. Например, сеть не может сфокусироваться на отдельном предмете, когда у нее множество мелких объектов. Она не может понять, какой из этих объектов наиболее важен, или принять решение о том, к чему он относится. Для такой сети нужны подсказки, по крайней мере, выделение областей интереса.
Вот другой пример, на полу лежит бесформенный носок. Как роботу-пылесосу понять, что это именно носок и с ним нужно выполнить определенную последовательность действий? Для робота сложно воспринимать его как конкретный предмет, потому что форма слишком неопределенна и изменчива. Даже если мы зададимся целью обучить систему компьютерного зрения робота разным возможным вариантам того, как носок может выглядеть, у робота будет недостаточно визуальных признаков, чтобы классифицировать такой предмет правильно, или наоборот он начнёт множество других предметов считать носками.
Также проблемы возникают с протяженными предметами, такими как кабели, удлинители. Это тоже очень сильно сбивает с толку искусственный интеллект, поскольку ему сложно восстановить общую связность предмета из набора наблюдаемых изменчивых фрагментов
Вот еще одна широко известная иллюстрация узкой специализации нейронных сетей, связанной с их ограниченной обобщающей способностью. Нейронная сеть учится видеть мир только в тех обучающих картинках, которые она видела. Если мы ее обучали на собачках, то она на фотографиях кексиков будет постоянно встречать собак, которые очень похожи в рамках её накопленных признаков, и даже говорить, что она с высокой достоверностью видит чихуахуа в фото кекса. Таким образом, сеть даже не сможет подсказать пользователю, что в её решении что-то не так.
В мультфильме «Митчеллы против машин» (2021) есть эпизод, где семья побеждает восстание машин, показывая взбунтовавшимся роботам мопса, и роботы выходят из строя, не в силах понять, что перед ними — буханка хлеба или мопс.
Можно добавить еще более современный пример. В последние пару лет большой импульс в области искусственного интеллекта получили диффузионные генеративные сети, которые удивительным образом генерируют фотореалистичные фотографии по текстовому описанию того, что хочется увидеть на изображении. Но если попробовать эксперимент и попросить нейросеть нарисовать, например, что она считает эталоном настоящей красоты, то обнаружим, что интерпретация такого широкого термина у генеративных сетей находится в некоторой локальной области внутреннего представления, из которого сеть не может выбраться, и каждый раз генерирует очень похожие примеры.
3. Эффект «черного ящика»
Следующая сложность: нейросеть представляет собой «черный ящик». Мы подаем на вход данные, управляем её поведением с помощью критериев оптимизации, смотрим на результаты, валидируем их, но, тем не менее, мы не защищены от множества неприятностей. Эффект «черного ящика» очень усложняет разработчику понимание того, что же пошло не так, почему результаты отличаются от ожидаемых.
Алгоритмы, которые мы называем вычислительными, позволяют разработчику следить за каждым этапом обработки. Это гораздо ближе к тому, чтобы получить контролируемые результаты.
В случае нейронных сетей контролируемость результата и влияние на него превращается в проблему. Самый банальный пример, это ошибки в обучающих данных. Когда разработчик замечает неверное поведение нейронной сети, и тренировочных данных относительно немного, гипотетически их можно просмотреть и постараться найти ошибки, хотя даже для небольшого количества данных это нетривиальная задача. Самое элементарные ошибки: перепутали эталон с входом, допустили ошибки в наименованиях файлов или в процессе подготовки данных. Но, если датасет увеличивается до миллионов примеров и мы имеем дело с терабайтами изображений, то уже физически невозможно вручную проверить эти данные. Поэтому приходится вводить критерии и метрики для датасетов и результатов работы нейронной сети, которые могли бы сигнализировать, что что-то пошло не так, и помочь определить источник ошибки.
Для задач классификации метрики относительно просты и легче интерпретируются, изучая результаты, можно понять где ошиблись. Но, в задачах улучшения изображений, когда мы работаем с изменением очень мелких деталей, сложно подобрать объективные метрики. Обычно используются усреднённые генерализованные метрики, которые вычисляются по всему изображению, и если такой правильно подобранной метрикой можно поймать момент, например, что трава вместо зеленой стала синей, то если вдруг нейронная сеть стала производить ступенчатый эффект на границах объектов, такой эффект можно обнаружить только «глазами», внимательно изучая результаты обработки, при этом может остаться неясным источник проблемы в обучающих данных. Для контроля результата сети иногда даже создаются специальные нейросети, которые пытаются повторять работу когнитивного аппарата человека и в соответствии с ним возвращать оценку того, как бы изображение воспринималось человеком, не появился ли в результате обработки какой-нибудь неприятный для человеческого глаза элемент (артефакт).
Кроме контроля ошибок в датасетах, другой немаловажный аспект это сложность интерпретации поведения, решений нейронной сети. Существуют исследования, направленные на то, каким образом можно описать внутреннее представление сети, чтобы облегчить понимание происходящих процессов внутри сети в ходе обучения и их корректировку.
Есть подход с визуализацией признаков, которые выработала нейронная сеть, чтобы понять, какие из них она посчитала наиболее важными. Другой подход состоит в том, чтобы избегать сложные глубокие сети и заменять их на комбинацию простых, легко интерпретируемых моделей, по крайней мере на начальном этапе работы с задачей. Это важно для разработчиков нейронных сетей чтобы понять, как сеть видит мир и если что-то идет не так — как поменять архитектуру сети, усложнить функцию потерь.
И здесь мы возвращаемся к той самой интуиции инженера, которая была актуальна во времена вычислительных алгоритмов — традиционных методов, от которой нам нейронные сети вроде как позволяли уйти, чтобы более объективно выполнять нахождение оптимального решения.
4. Аппаратная зависимость
Большинство разработчиков этот момент не очень волнует, поскольку есть фреймворки на Python, но если мы хотим, чтобы нейросеть выполнялась на конкретном устройстве, например на смартфоне, то мы получаем такую неприятную особенность, как аппаратная зависимость.
Первое. Нейронный сопроцессор на смартфоне или компилятор может не поддерживать какие-либо операции, слои или поддержать недостаточно оптимально. Обычно, когда говорят про вычислительное железо, то различают устройства общего назначения, такие как центральный, графический процессор (CPU, GPU), так и специализированные, например нейронный процессор (NPU).
CPU хорошо подходят для большинства задач, но малоэффективны для выполнения нейронных сетей.
GPU выше по эффективности, поскольку поддерживают многопоточность, матричные вычисления, но уже имеют ограничения в том, что на них можно считать.
NPU самые быстрые для нейронных сетей, поскольку базовые операции «зашиты» в железо, и вычисления требуют минимальные энергозатраты, но обеспечивают наиболее высокое быстродействие. Но, пользоваться NPU сложнее всего, поскольку требуется учитывать то, что он умеет, а что нет. Соответственно, разработчику приходится перекраивать модель нейронной сети под вид, поддерживаемый NPU, проводить соответствующую оптимизацию, обеспечивать нужную битность, некоторые критически важные вычисления, которые нельзя выполнить на NPU, – отдельно реализовывать на GPU.
Разработчику приходится тратить свое время и силы на подбор архитектуры, дружественной к вычислительным ресурсам конкретного устройства. А потом выходит новая модель смартфона с обновленным железом, и приходится проходить путь заново. Справедливости ради стоит сказать, что индустрия стремительно развивается и приходится всё меньше сил тратить на поддержку или обновление модели нейронной сети для эффективного выполнения, но тем не менее проблема остаётся актуальной.
Второе. Фреймворки отстают от железа. Разработчики графических процессоров и нейропроцессоров обычно делают дополнения к существующим крупным фреймворкам, но это процесс небыстрый. Появление нового железа и его полная поддержка занимают некоторое время, и в этот период могут возникать ошибки, требующие отладки.
Третье. Тренировочные данные также часто бывают аппаратнозависимыми. Нейронная сеть обеспечит более корректный результат, если будет обучаться на данных с «целевого» устройства. Например, если снова обращаться к теме улучшения изображения, то характеристики камеры, архитектура сенсора, особенности оптики, количество и размер пикселей имеют существенное значение. Датасеты со старых камер не годятся, нужно снимать данные заново. При этом есть жесткие временные ограничения по срокам выхода очередной модели смартфона на рынок. Конечно, можно пробовать использовать данные с других устройств, за счёт моделирования оптических эффектов, интерполяции стараться приблизиться к специфике целевой камеры, но от точности такого моделирования зависит эффективность обработки и зачастую по трудоёмкости такой подход не уступает самому сбору тренировочных данных. В статьях иногда встречаются упрощенные варианты моделирования датасетов, например, для задачи повышения разрешения используют хорошие фотографии высокого разрешения (эталон), уменьшают размер (входные данные) и на этих данных тренируют нейронную сеть. Но здесь есть риск, что нейронная сеть просто выучит обратную функцию для операции понижения разрешения, и результат на реальных данных не будет соответствовать ожиданиям.
Теперь посмотрим пример: как нейросети и вычислительные алгоритмы используются в задачах обработки фото и видео на смартфоне.
Особенности задач улучшения изображений и видео
Фотография проходит длинный путь, начиная c накопленных зарядов на фотоматрице сенсора камеры и заканчивая изображением, которое пользователь видит на экране смартфона. Преобразованием сырых данных с сенсора камеры, основными этапами обработки изображения и его улучшением занимается сигнальный процессор (image signal processor — ISP), который является неотъемлемой частью любой цифровой камеры. Этот процессор — «железное» воплощение вычислительных алгоритмов. Сигнальные процессоры строятся на тех самых вычислительных hand-crafted алгоритмах, куда заложена модель изменения изображения: контраст, яркость, баланс белого, четкость границ, шумоподавление и так далее. С одной стороны, это обеспечивает максимальное быстродействие и саму возможность реализации алгоритмов в чипе. С другой стороны, алгоритмы в ISP достаточно консервативные, использование памяти для хранения промежуточных вычислений, рекурсивные приёмы обходятся слишком дорого для таких устройств, поэтому туда закладываются не совсем новые подходы, да и сам процесс разработки ISP занимает несколько лет.
Наиболее типичная задача для камеры смартфона - это задача шумоподавления. Мобильные камеры обычно имеют маленькие сенсоры, что делает их очень подверженными воздействию шумов, грубо говоря, маленький пиксель сенсора собирает меньше фотонов при низкой освещённости фотографируемой сцены, и шумы сенсора становятся сопоставимы с энергией собранного света. Гонка за размером сенсора как раз и связана с тем, чтобы захватывать больше света и обеспечить меньший уровень шума. При недостаточном размере сенсора задача шумоподавления решается алгоритмически, но в некоторых пределах.
Другая задача связана с ограниченностью динамического диапазона камеры. Например, при съемке заката у моря камера не способна передать весь динамический диапазон, который мы видим своими глазами. Обычно это ограничение также решается алгоритмически: накапливается некоторое количество кадров, полученных с разной экспозицией, и далее они объединяются в одну фотографию с более насыщенными яркими цветами, становятся видны детали в тенях и ярких областях сцены. Возможно, вам известна аббревиатура HDR — она как раз и означает расширенный динамический диапазон (high dynamic range).
Следующая картинка — это уже пример более высокоуровневой задачи. Например, когда человек фотографирует через стекло, то отражения и блики на фотографии потом сильно бросаются в глаза. Фотографу или дизайнеру хочется их отретушировать, но для этого нужно обладать соответствующими навыками и программами, поэтому обычные пользователи рассчитывают на автоматические алгоритмы.
Итак, подведем небольшой итог. Улучшение изображения включает в себя разнообразные задачи, как низкоуровневые (шумоподавление, HDR), так и высокоуровневые (ретуширование, коррекция артефактов — например, открыть глаза у человека или добавить улыбку, убрать мешающий объект и т. д.).
Вычислительная сложность и вызовы мобильной фотографии
Какая же главная проблема при работе над улучшением изображений? Увеличивается вычислительная сложность задачи, особенно по сравнению с задачами классификации, распознавания изображений.
Например, при классификации изображений нейросеть архитектуры VGG-16 получала на вход изображение, а на выход давала класс (размерность слоёв нейронной сети постепенно уменьшается и требуется сравнительно немного вычислительных ресурсов). В случае же сегментации изображений требуется модель нейронной сети формата image-to-image, когда размерность выхода сети сопоставима с размерностью входа (например, широко известные нейросети архитектуры U-Net), в этом случае на порядки возрастает вычислительная сложность задачи.
Размер изображений напрямую влияет на вычислительную сложность. Для сохранения деталей нужно работать попиксельно, с полным разрешением, в то время как производители, стремясь улучшить качество изображения, постоянно увеличивают количество мегапикселей мобильных камер.
Удобство для пользователя: пользователи не готовы ждать обработку фото больше 3-4 секунд с момента съемки. Сложную обработку можно производить в фоновом режиме, но к моменту, когда пользователь перейдёт в галерею, его должно ждать готовое фото полного разрешения, т.е. применение облачных вычислителей для подготовки фотографии ограничено.
Видео обычно обрабатывается в реальном времени: предполагается, что пользователь снимает видео, и алгоритм тут же пытается уменьшить уровень шума или добавить HDR-эффект. Поэтому требования к обработке видео растут, особенно с внедрением HD, Full HD и даже 4K разрешений на мобильных устройствах. Важно обеспечить высокую скорость обработки видео, в рамках 30-60 кадров в секунду, что требует всего десятки миллисекунд на один кадр.
Как уже упоминалось выше, объективные численные критерии качества для обработки изображений существуют, но они не охватывают все нюансы, поэтому наряду с метриками по-прежнему используется трудоёмкая экспертная оценка результатов человеком на отсутствие видимых артефактов, поскольку человеческий глаз очень чувствителен к тому, что происходит не так на изображении, даже если удельный вес искажений (артефактов) очень мал (например, если замылились границы или появились цветовые искажения).
Специфика работы со смартфоном требует осторожного распределения нагрузки на вычислительных ресурсах (например, учета работы приложений в фоновом режиме) и энергопотребления, выражающегося, прежде всего, в нагреве устройства. Все компании, производящие смартфоны, стараются оптимизировать и контролировать вычисления, чтобы ограничить расход батареи и неприятный нагрев смартфона.
Дополнительно, алгоритмам необходимо конкурировать с хардварными сигнальными процессорами ISP, в том смысле, что это устройство уже присутствует в смартфоне, оно выполняет свою работу, пусть даже и не всегда наилучшим образом. Таким образом, разрабатываемое решение (например, нейросеть) должно либо превосходить по качеству, либо предоставлять преимущества пользователю там, где обычный ISP не справляется, например, давая возможность качественной ночной съемки.
Важно учитывать изменчивость аппаратного обеспечения (не только количества мегапикселей в камерах, но и того, как устроены сенсоры), так как каждое новое поколение устройств вносит свои особенности, что также требует адаптации алгоритмов.
Кто побеждает в итоге: машинное обучение или handcrafted алгоритмы?
Можно сказать, что машинное обучение перевешивает, так как этот подход обладает огромным потенциалом, тем более, появляются мощные процессоры с поддержкой ИИ. Машинное обучение избавляет разработчика от необходимости вдаваться в детали и позволяет собирать данные и задавать критерии, в то время как ручная настройка требует от человека разработки собственных алгоритмов на основе его понимания задачи.
Но в ряде случаев вычислительные алгоритмы оказываются вне конкуренции:
Когда у нас нет тренировочных данных, например, когда по каким-то причинам нет камеры, которая будет снимать фото для датасета (а мы помним, что алгоритмы машинного обучения очень зависимы от оборудования). Потребуется использовать вычислительные алгоритмы, чтобы поддерживать будущие особенности «железа»
Человек, конструируя алгоритм вручную, получает контроль за вычислительной сложностью и промежуточными вычислениями. Инженер, понимая, какие подпроцессы работают медленнее всего (например, умножение и деление вычислительно гораздо «дороже», чем сложение) может это проецировать на то, как он видит будущий алгоритм. Соответственно, такой алгоритм получится более оптимальным.
В ряде случаев (например, для аппроксимации эллипса или круга) использование нейронных сетей — это как забивание гвоздей микроскопом. Нейросеть будет использовать миллионы параметров и большой объём ресурсов. Человек, обладающий инженерной интуицией, может для этого использовать всего несколько параметров и легко это решить.
Побеждают гибридные алгоритмы!
Сочетание вычислительных и нейросетевых алгоритмов — один из способов решения проблем, о которых я написал выше. В задачах обработки видео стараются отдать нейросетевым алгоритмам небольшую часть, когда они работают с данными, которые уже агрегируют какую-то визуальную информацию.
Рассмотрим несколько примеров.
Пример: увеличение количества кадров
Ниже пример алгоритма для увеличения количества кадров (frame rate conversion, FRC), он используется как дополнение для высокоскоростных сенсоров камеры, обеспечивающих съёмку до 960 кадров в секунду.
В этом алгоритме нейросети отвечают только за маленький блок, детектирующий эффект окклюзии, когда из-за движения в кадре один из объектов заслоняет другой, и вычислительный алгоритм с высокой вероятностью запутается и сгенерирует промежуточные кадры с ошибками. Здесь нейронная сеть справляется гораздо лучше мозга инженера. Для неё проще определить признаки окклюзии. Поскольку в данном случае нейросеть оперирует не с пикселями, а с векторами движения, ей проще уложиться в требуемые временные рамки и выделенные вычислительные ресурсы. Анализируя сложность движения на видео, алгоритм предсказывает момент появления артефактов и включает меры для предотвращения этого.
Пример: как получить датасет с данными глубины
Ниже пример end-to-end задачи (вычисляемой полностью на нейросетевых алгоритмах), чтобы рассказать о способе получения данных для датасета без затраты больших ресурсов. Хорошие датасеты — это нефть IT-индустрии. Если команда имеет хорошие представительные тренировочные датасеты или инструменты для их сбора, она может «торговать» ими не хуже, чем алгоритмическими решениями.
Существует задача предсказания глубины по всего одному изображению: камера видит одну картинку и пытается понять, на каком расстоянии находятся объекты. У сети нет вспомогательной информации, и поэтому она по аналогии с человеческим восприятием учится понимать относительные пропорции «знакомых» объектов, и за счёт понимания их взаиморасположения строить карту глубины. Карта глубины может использоваться как для навигации роботов, так и для фотоэффектов, например имитации эффекта размытия объектов вне фокуса, который возникает для профессиональных камер с хорошей оптикой.
Идея подхода вроде простая, как раз для нейронной сети, но возникает проблема, где искать тренировочные данные и в каком представлении? Самый простой вариант: используем оборудование для измерения глубины (например, с помощью ToF камеры или лидара) и совмещаем с карту глубины с фотографией от обычной камеры. Это трудоемко и затратно, требуется специальное оборудование, выравнивание фотографии и карты глубины и время для съёмки.
Но можно использовать более простой и интересный способ, который уже себя оправдал: показывать нейронной сети коммерческие стереофильмы высокого качества. Этого будет достаточно, чтобы нейросеть за счёт наблюдения непохожестей в изображениях стереопары сформировала внутреннее представление, используемое далее для оценки глубины изображений. Такие фильмы доступны, и за редким исключением, когда резко меняется сцена или появляются субтитры, применимы без проблем.
Но даже несмотря на доступность данных, возникали сложности: в части датасетов были перепутаны левое и правое изображения, и нужно было искать ошибки в данных вручную. Таким образом, даже при использовании нейросетей, инженерный подход иногда остается необходимым для анализа и фильтрации входных данных.
Пример: как получить датасет со смазанными изображениями
Ещё один пример того, как можно достаточно «дешево» получить обучающие данные. Да, всё равно приходится собирать датасет, но значительно с меньшими затратами времени и сил.
Инженеры Samsung решали задачу компенсации смаза и для сбора данных использовали высокочастотную камеру, которая снимала со скоростью 400 кадров в секунду. Таким образом, получали 400 четких изображений сцены — эталон (ground truth). Затем имитировали смазанное изображение с помощью специального алгоритма, который использовал несколько последовательных кадров и объединял их, моделируя дрожание рук у пользователя и длительное открытие апертуры камеры. Это позволило создать пары из смазанных и четких изображений, что сильно упростило обучение и позволило быстро достичь первых результатов.
Заключение
Главное: при решении задачи вам следует иметь в виду разные способы получения обучающих данных, иметь широкий кругозор и понимать, что не всегда нейросетевые решения исключительно удобны и эффективны. Если ваше решение ориентировано на реальный мир, эти датасеты должны быть очень высокого качества.
На данный момент, нейросетевые решения доминируют в задачах классификации, сегментации, например, распознавания лиц, отслеживания взгляда и других задачах. Но для задач улучшения качества изображений и видео более эффективно себя пока показывают гибридные алгоритмы, которые используют нейросетевые подходы только на той стадии, где они наиболее эффективны. Но, с ростом производительности и по мере развития специализированных нейропроцессоров, нейронные сети постепенно будут теснить алгоритмические подходы.
Важно подходить к задаче гибко и искать оптимальное сочетание методов для ее решения, учитывая специфику и требования конкретной задачи.
Илья Курилин
канд. техн. наук, эксперт Samsung
Статья основана на лекции, прочитанной в рамках финала конкурса IT Школы Samsung.
А если вас заинтересовало, как освоить методы глубокого обучения и применять их в своей практике, то приглашаем вас пройти бесплатный онлайн-курс «Нейронные сети и компьютерное зрение» от Samsung! Курс включает 20 часов видеолекций, тесты и упражнения, а итоговое задание — самостоятельная задача на Kaggle.
Комментарии (30)
Jury_78
27.12.2023 15:31Не всё ещё, а априори. Законы физики не обманешь.
Не то чтоб я был за смартфон (у меня есть зеркалка :)), но про какие законы тут речь? Что есть такого запретного, чтоб не сделать в смартфоне качество как в зеркалке?
Fox_exe
27.12.2023 15:31+4Размер сенсора и, соответственно, размер самих линз (оптики).
Меньше сенсор = меньше пиксель = меньше света он воспринимает = больше шума = меньше точность цветопередачи.
Частично это пытаются контрить объединением пикселей в кластеры (В результате 200+ мегапикселей смартфона превращаются в 8-12мп).Опять-же без большого блока линз невозможно реализовать нормальное увеличение (почти) без потери качества снимка. Аналогично с макро. Поэтому в смартфоны пихают несколько одинаковых модулей, но с разной оптикой, под разные задачи. Фотоаппарат-же обходится одним сенсором. Да и один блок линз может использоваться для гораздо большего спектра задач, чем 3-5 линз/сенсоров смартфона.
Про удобство хвата и прочую эргономику промолчу.
Jury_78
27.12.2023 15:31Так это технологические проблемы, а не физические.
Fox_exe
27.12.2023 15:31+1Физическое ограничение - размер фотона (И длинна волны, если не ошибаюсь) - дальше уменьшать пиксели уже некуда. А не уменьшая пиксели - не уменьшить и оптику.
А без уменьшения пикселей - не получится встроить компактную оптику с нужными характеристиками (светочувствительность, фокусное расстояние и прочие умные термины)А если идти в обратку - увеличивать пиксели и оптику, то получаем громоздкий и неудобный "Камерофон".
Jury_78
27.12.2023 15:31Особого смысла гнаться за миниатюрностью нет, пока вы не захотите... условно вживлять смартфон в мозг или что то подобное.
Fox_exe
27.12.2023 15:31+1А дальше уже и некуда, по сути.
Но главное отличие смартфона от фотоаппарата - миниатюрность (и универсальность).
Отсюда и все ограничения:Хочешь сравняться с фотиком - увеличивай сенсор и оптику, добавляй стабилизатор, переменный фокус, диафрагму и прочие полезные штуки, которые и позволяют фотику делать снимки лучше, чем на смартфоне.
Jury_78
27.12.2023 15:31Миниатюрным современный смартфон не назовешь. Диафрагма, стабилизатор и авто/переменный фокус это уже есть в смартфонах. Для хороших фотографий нужен фотограф. :)
Fox_exe
27.12.2023 15:31+1Ну если верить интернету - Переменная диафрагма появилась в смартфонах буквально "Только что" - Первый такой смарт - Xiaomi 14 Pro.
До этого ставили несколько отдельных модулей с фиксированной диафрагмой и апертурой.Стаб, если и есть, то, как правило, программный, а не механический/оптический.
Автофокус тоже оставляет желать лучшего.
А про съёмку вечером или вообще ночью я лучше промолчу. Без штатива и длительной выдержки - подавляющее кол-во смартфонов не сможет выдать туже картинку, что и Full-frame зеркалка/беззеркалка.
Чтобы смартфон ВСЕГДА выдавал сопоставимые по качеству с фотиком фотографии - надо много шаманить (Штатив, выдержка, доп. освещение, длительный выбор сцены, постобработка и т.д.). В то время, как качественный фотик даже в авторежиме в большинстве случаев выдаёт заметно более лучшее качество, чем смарты.
Только Xiaomi 13-14, да последний iPhone смогли реально приблизиться к проф. фотоаппаратам. Но всё равно в некоторых сценариях будут проигрывать чисто из-за ограничений, связанных с размером сенсоров и оптики (Да и дотягивают они, в основном, за счёт всяких ИИ-улучшайзеров, а не потому, что там сенсор такой вот крутой)
Spaceoddity
27.12.2023 15:31Оптику вам туда нужно вкорячить! Которая будет крыть довольно большую матрицу (с этим ок - поставить её не самая большая проблема). Дальше ещё веселее - для длиннофокусной оптики нужны соответствующие габариты. Никогда не задумывались - почему в смартфонах стоят исключительно "ширики", а "телевики" добавляют крайне опционально и с заниженными ТТХ?
Ну а для хороших фотографий нужен, как минимум, подходящий инструмент.
Jury_78
27.12.2023 15:31Все что вы приводите это не физические законы, а технические проблемы. Для маленькой матрицы и объектив нужен меньше, и никто вас не заставляет ограничиваться линейной оптикой. Глаз не идеальное оптическое устройство, но никто не жалуется.
Spaceoddity
27.12.2023 15:31+2Я вам дал ссылку на самый что ни на есть физический закон, а вы всё твердите "технические проблемы"...
Нелинейная оптика? Хм... Интересно. Осталось дождаться только)) Я думаю прежде всего производители зеркалок будут крайне довольны появлению такой технологии - а то приходится годами(!) варить, остужать и шлифовать крон))
Jury_78
27.12.2023 15:31Я вам дал ссылку на самый что ни на есть физический закон, а вы всё твердите "технические проблемы"...
Так почитайте чуть шире... Нет там тех проблем, что вы придумали.
Нелинейная оптика? Хм... Интересно. Осталось дождаться только))
Формально вся оптика нелинейная, "линейная" - это приближение.
sterr
27.12.2023 15:31Фотоаппарат-же обходится одним сенсором.
Но не обходится одним объективом. Не будут же делать в смартфонах сменные объективы.
И именно поэтому сейчас господствует вычислительная фотография, потому-что это проще, чем пилить кремний. И самое хреновое в этом, что она выигрывает.
Spaceoddity
27.12.2023 15:31+1Но не обходится одним объективом.
Вполне обходится. Более того, есть фотоаппараты без сменной оптики. Есть в конце-концов, довольно годные зумы.
И я не знаю где там и в чём сейчас выигрывает вычислительная фотография... Вот та, что Луну на небе дорисовывает?))
Но частично вы правы - возможность поменять оптику и делает эти девайсы настолько востребованными. Сенсор ничто - оптика наше всё))
А что до сменных объективов на смартфонах - по-моему уже были попытки это реализовать. Всякие там гибриды со сменными модулями и т.п. Не взлетает))
Это уже исторически пройденный этап. Мыльницы vs. зеркалки. Народу, в массе своей, такое качество избыточно. Им лучше как можно проще.
Spaceoddity
27.12.2023 15:31https://ru.wikipedia.org/wiki/Дифракционный_предел
И это при условии, что научатся производить оптику соответствующего размера с запредельным разрешением.
Jury_78
27.12.2023 15:31Во-первых, кто заставляет делать пиксели маленькими? Это же не физический закон?
Во-вторых, там входит показатель преломления, нет физ. запретов на его изменение. По вашей же ссылке можно почитать как можно преодолеть этот предел.
И это при условии, что научатся производить оптику соответствующего размера с запредельным разрешением.
Опять же это тех. проблемы.
Spaceoddity
27.12.2023 15:31Во-первых, кто заставляет делать пиксели маленькими? Это же не физический закон?
Боюсь, тогда выходное разрешение будет несколько меньше того, к которому все привыкли по дефолту))
Ставить матрицу фулфрейм размера? Тогда вы просто получите БЗК с функциями смартфона))
Во-вторых, там входит показатель преломления, нет физ. запретов на его изменение.
*Показатель преломления среды. Атмосферу планеты будете откачивать для каждого кадра?))
Если резюмируя - для нормального качества фотоизображения нужны большие линзы и большой сенсор. Уже лет 20 пыжатся и пытаются что-то придумать - и не фига! Всё что сейчас имеем, это всё то же "не зажимайте диафрагму до минимальных значений, иначе будет мыло".
Jury_78
27.12.2023 15:31Боюсь, тогда выходное разрешение будет несколько меньше того, к которому все привыкли по дефолту))
Оно и так меньше того что пишут.
Ставить матрицу фулфрейм размера? Тогда вы просто получите БЗК с функциями смартфона))
Размер матрицы и условное качество связаны только техническими проблемами.
*Показатель преломления среды. Атмосферу планеты будете откачивать?))
Зачем, если по-простому, то достаточно поменять среду для фоторегистратора.
Если резюмируя - для нормального качества фотоизображения нужны большие
линзы и большой сенсор. Уже лет 20 пыжатся и пытаются что-то придумать -
и не фига! Всё что сейчас имеем, это всё то же "не зажимайте диафрагму
до минимальных значений, иначе будет мыло".Это ж не значит, что по другому невозможно. Раньше алюминий был дороже золота, но все меняется.
Spaceoddity
27.12.2023 15:31Это ж не значит, что по другому невозможно. Раньше алюминий был дороже золота, но все меняется.
Есть отрасли (оптика, как раз одна из них) где уже давно упёрлись именно в физические ограничения и так и топчутся на месте.
Так что боюсь если мы когда-то и получим качество изображения с "маленьких гаджетов" сопоставимое с "большими" - само понятие "смартфона" уже канет в Лету))
Зачем, если по-простому, то достаточно поменять среду для фоторегистратора.
Давно бы уже тогда лепили фотокамеры с вакуумными коробками. Все эти технологии в первую очередь будут (или были) обкатаны именно производителями фототехники, поскольку это в их же интересах.
А вы представляете это так, как будто "большая пятёрка" клепает фототехнику на морально устаревших технологиях, пока не придут "высокотехнологичные производители смартфонов".
Там настолько объёмная матчасть... Даже Сони не рискнула соваться в эту отрасль с нуля, а просто купила Минолту и уже на её наработках продолжила изыскания дальше. А тот же Самсунг нечто подобное попытался проделать с Пентаксом...
akakoychenko
27.12.2023 15:31А вы представляете это так, как будто "большая пятёрка" клепает фототехнику на морально устаревших технологиях, пока не придут "высокотехнологичные производители смартфонов"
Вот именно так все и происходит. Быстрый гуглеж показывает, что за год продается где-то (в зависимости от источника) совокупно на $2-5 млрд беззеркалок по всему миру. Это на всех вендоров вместе взятых.
Сравним это с продажами одних только айфонов в $200 млрд в год. С учетом того, что стоимость разработки софта, который запустится на миллионе и на миллиарде устройств одинакова, то и бюджет, который готов выделить эпл на софт несравним с тем, что могут Canon/Nikon/Sony. Сюда еще добавить, что, вцелом, производители смартфонов куда больше дружат с разработкой софта, чем производители камер. Для первых это ядро бизнеса, для вторых что-то где-то на периферии, примерно, как отдел по администрированию офисов (должно быть, но функция для топ-менеджмента не сильно понятная и приоритетная), то бишь, даже эффективность каждого потраченного на выпуск ПО $ будет у производителя смартфона буда выше.
Логично, что Давид против Голиафа выходит. Еще и публика сильно разная на этих рынках. К примеру, у айфона из коробки очень мощный HDR выходит, - практически нереально поймать такой кадр, чтобы вышел пере- или недосвет в части кадра. Да, это уродство с точки зрения творчества, и лично я чувствую искреннюю ненависть к создателям (и особенно к тем, кто не сделал кнопку выключения этого чуда, что надо сторонние аппки покупать), но нельзя не признать, что поставленная продактами задача решена на отлично, - создана связка объектив-сенсор-программа, которая практически не дает испортить фото даже при желании. Всегда все будет четко, прорисованы все детали, цвета яркие и насыщенные, фото готово радовать френдов с соцсетях здесь и сейчас. Такой подход явно заходит массовому потребителю. Хотя, к примеру, покупателей полнокадровых камер явно не устроит.
Теперь сравним с лучшей камерой от Canon на данный момент (то бишь, R5, ибо R3 и R5c слишком уж специфические инструменты). Это ж просто позорище в плане мозгов и электроники. Перегрев от съемки сжатого видео в 4K60p (с дропом линий, ибо с даунсемплингом выше 4К30p уже не прыгнешь), отвратительно работающие умные режимы - HDR, и super resolution за счет шатания сенсора стабилизатором, достаточно тупой следящий фокус, теряющий объекты (спасибо, что хоть лицо и глаз неплохо ловит). Фактически, кроме умения находить глаз и лицо, чтобы сфокусироваться, никакого, принимающего решения, или что-то, нетривиальным алгоритмом рассчитывающего софта нет в камере вообще.
Тут, конечно, можно утверждать, что и спасибо за то, что не говнят фото обработкой и не заставляют за тензорные ядра в корпусе камеры доплачивать, но, лично мое мнение, что при таких же бюджетах на R&D, как есть у разработчиков смартфонов, современные камеры могли бы делать сильно больше, намного больше. Просто, бизнес нищебродский, и софт нужного качества не пишется на данном уровне бюджетов, а тот, на который бюджетов хватит, не устроит покупателей. Вот и выходит, что проще вообще забить.Spaceoddity
27.12.2023 15:31Сравним это с продажами одних только айфонов в $200 млрд в год. С учетом того, что стоимость разработки софта, который запустится на миллионе и на миллиарде устройств одинакова, то и бюджет, который готов выделить эпл на софт несравним с тем, что могут Canon/Nikon/Sony.
А зачем сравнивать продажи? Ну я же привёл пример с Сони (кстати, а чего это вы её так приопустили? Затраты на НИОКР: 4,41 млрд $, 2019) - вы в эту индустрию просто так не войдёт без многолетних наработок, сколько бы денег у вас ни было. Вам просто никто не даст эти технологии))
Сюда еще добавить, что, вцелом, производители смартфонов куда больше дружат с разработкой софта, чем производители камер.
Извините, но чушь! Одни специализируются конкретно на софте для обработке изображений, другие на мобильных ОС в целом...
Перегрев от съемки сжатого видео в 4K60p
Ну пусть Эппл вкорячит фулфрейм матрицу в айфоны - и посмотрим как они проблемы с охлаждением решать будут))
А стабилизатор вообще-то рекомендуется отключать в некоторых режимах (при съёмке со штатива, например) ;)
И прекратите "опускать" фотопроизводителей! Нищеброды))
Их технологии более чем 30-летней давности никак повторить что-то не могут. Вон, кэновская "eye-control" даже сейчас у многих изумление вызывает))
Фактически, кроме умения находить глаз и лицо, чтобы сфокусироваться, никакого, принимающего решения, или что-то, нетривиальным алгоритмом рассчитывающего софта нет в камере вообще.
Ну и что в этом плохого? Камера за меня будет решать в какой момент нажать спуск?
Это совсем другая индустрия! Со своими правилами.
Это как сравнивать конюшню Ф1 и какого-нибудь глобального производителя игрушечных машинок (Hasbro?).
Софтом для постобработки фотовендорам вообще без нужды заниматься - на десктопах обработают!
Кстати, а что такого высокотехнологичного и революционного в смартфонах за всё это время было реализовано? Толщину уменьшили? Сканеры отпечатков поставили? Луну в кадры впечатывать стали? Где все эти миллиарды? На что пошли? Что-то как-то кроме голой капитализации, аргументов "за" я и найти не могу...
UPD: Чуть не забыл))
Пусть производители смартфонов для начала научатся матрицы собственного производства делать, а не покупать их до сих пор у той же Сони! Шах и мат!
akakoychenko
27.12.2023 15:31Ну, давайте и разберём по пунктам)
Затраты на НИОКР: 4,41 млрд $
Тут непонятно, сколько на что тратят. Все же, много направлений есть. Игровые приставки те же.
вы в эту индустрию просто так не войдёт без многолетних наработок, сколько бы денег у вас ни было
Есть отличный контрпример, - DJI вошёл с ноги, и уже успел сделать фокусировку по лидару, как доп опцию для любой камеры (кстати, а чего ее до сих пор не сделал изнутри индустрии никто?). Лидар же идеально подходит для фокусировки в пределах 5 метров. С ним можно фокусироваться плавно, и точно в цель, без рысканья (как это делают фокус-пуллеры в серьёзных продакшенах). Почему его не встроить в устройство, которое и так стоит $3к+? Почему DJI смог внешним моторчиком крутить объективы, а мастодонты с великой историей не смогли установить лидары и управлять фокусом через встроенный мотор в объектив?
Софтом для постобработки фотовендорам вообще без нужды заниматься
Есть то, что можно на десктопе сделать и есть то, чего нельзя, если минимум работы не сделано во время съёмки. К примеру, даже лог значений гироскопа, так нужный для стабилизации (и, подозреваю, компенсации Rolling shutter тоже лишним не будет), пишут камеры не всех вендоров. Съемку видео с двойным iso, разное iso через кадр, вообще любители, пишущие кастомные прошивки (magic lantern) вынуждены добавлять. А без этой фичи, увы, даже до айфона не прыгнешь по ДД на постообработке. Ибо, если, скажем, небо ушло в пересвет, все. А айфон таки кадры чередует и на лету клеит.
Банальную компенсацию focus breathing только вот-вот начали завозить и только для определенных линз. А там же, в плане софта, почти ничего делать не надо. Все по простым формулам считается. Просто надо в одном месте свести фокусное расстояние, значение зума, табличные данные по модели объектива. Или, хотя-бы, все эти данные вывести в итоговый файл, чтобы десктоп пересчитал сам
Ну пусть Эппл вкорячит фулфрейм матрицу в айфоны - и посмотрим как они проблемы с охлаждением решать будут
Так перегрев не с матрицы идёт. С внешним рекордером даже на 8К перегрева нет. Перегрев идёт именно от обработки сигнала и его записи. А корпус там намного больше, чем айфон.
Кстати, а что такого высокотехнологичного и революционного в смартфонах за всё это время было реализовано
Ну, если, вас не впечатляет чёткость, детализация и динамический диапазон картинки, выданной с сенсора, размером с спичечную головку, то не знаю, что ещё они должны сделать.
не покупать их до сих пор у той же Сони
Тут, наоборот, ещё одно доказательство, что нет магии именно в фотохардваре. Вся сила в софте.
Spaceoddity
27.12.2023 15:31Ну, если, вас не впечатляет чёткость, детализация и динамический диапазон картинки, выданной с сенсора, размером с спичечную головку, то не знаю, что ещё они должны сделать.
Вы издеваетесь? Вот это аляповатое "мыло" меня должно впечатлять? У меня достаточно "насмотренности".
akakoychenko
27.12.2023 15:31Знаете системы, способные выдать больше с половины квадратного сантиметра сенсора?
Jury_78
27.12.2023 15:31Все упирается в материальные затраты. Кому интересны высокотехнологичные оптические устройства? Единицам, а миллионам владельцев смартфонов это не надо.
YuriySeverinov
27.12.2023 15:31Интересно, есть ли некий аналог дистилляции LLM, но для CV моделей? Такой трюк можно было бы использовать для облегчения и ускорения работы на мобильных платформах.
courser
27.12.2023 15:31Я предпочту видеть реальное неидеальное фото, а не нейрофальсификат.
Jury_78
27.12.2023 15:31Если верить физиологам, вы всегда видите нейрофальсификат (собственного розлива). :)
courser
27.12.2023 15:31Физиологам до нормального понимания процессов восприятия, пока что - как до Луны, не говоря уже о том, что если бы мы видели "фальсификат" то не могли бы нормально ориентироваться в этом мире.
Spaceoddity
Я "адепт true photo", поэтому пройдусь только по знакомой теме...
В первом же абзаце сразу ряд сомнительных тезисов:
Компактнее да, удобнее - вообще не факт. Эргономика зеркалок как раз и разрабатывалась под функцию фотосъёмки (в отличие от смартфонов). Эргономика зеркалок - это вообще отдельная тема...
Не всё ещё, а априори. Законы физики не обманешь.
Дальше:
В смысле "более разнообразна"? Там же то же самое лицо встречается))
Оно не работает. Краевой контраст тут же всё "спалит"))