Комментарии 11
Для автоматической тренировки надо сделать сборку из камеры и поляризационного фильтра на поворотной раме. Съемка в автоматическом режиме сначала ищет наименее забликованное изображение (подбором поворота фильтра), затем наиболее забликованное. У вас оказываются в наличии пары фото для обучения. При наличии нескольких разноориентированных стеклянных плоскостей каждая обрабатывается независимо.
После обучения ваша сеть сможет корректировать не только блики от стекол, но и уменьшать блики от металлических и водных поверхностей (посмотрите на результат съемки с поляриком через поверхность воды). Возможно научите ее полностью эмулировать наличие поляризационного фильтра.
Действительно сильно упрощает сборку реального датасета.
Судя по примерам с водой пары должны получиться качественными.
Правда, надо будет определить, по какому критерию считать «забликованность» изображения.
И проверить, что пары получаются получаются без сильных дефектов из-за использования такого метода с поляризацией.
Скорее всего сбор и подготовка такого датасета все еще займет довольно большое время, но даже маленький реальный датасет может сильно помочь — им можно разбавить синтетику и улучшить качество модели.
Если не заморачиваться с механикой, то установка на раму двух камер, на одной камере поляризатор в плоскости максимального устранения бликов от вертикальных стекол. Тренируете на витринах. и окнах.
Далее поворот на 90 градусов и тренируете на горизонтальных стеклах (например, прилавки).
С автомобильными стеклами и водой на фиксированном угле увы не получится.
Информации об электронно управляемой плоскости поляризации у меня нет. Знаю о наличии нейтрального поляризатора с электронным управлением.
Управление поворотом фильтра делать или шаговым двигателем (контроллер обучения получает команду на поворот на нужный угол) или вращением фильтра с постоянной скоростью и считыванием его ориентации для съемки в нужный момент.
Идея подсказанная тут с видео достойна применения. Поставить перед камерой вращающийся полярик и снимать видео. В постобработке выбирать близкие по времени кадры максимально похожие по геометрии, но сильно различающиеся по отражениям. Детектор наличия отражений у вас уже есть на той же сети, а этим процессом вы повышаете качество обучения (сеть самообучающаяся получается).
Задача несколько сложнее, ИМХО. Блик = пересвет. Потеря части информации, причем не только непосредственно на отражающей поверхности, но и вокруг нее на некотором расстоянии из-за засветки. Т.е. большинство изображений восстановить не получится в принципе, потому что там только #ffffff и больше нету ничего.
Ну, или это будет тупо додумывание нейросетью до какого-то среднестатистического результата ничего не имеющего с реальностью.
Мне кажется, что тут, скорее, с видео прокатит, чем с фотографией. Потому что некорректность с логической точки зрения (вдруг там нейросеть крокодила нарисует), одного кадра практически не заметна будет.
Иногда детали под ними невозможно восстановить (полный пересвет на большом участке).
Но иногда с виду кажется, что нельзя, а на деле немного можно (когда не полный пересвет).
Наконец, если поверхность на самом однородная на участке с бликом, то модель может такой блик научится «затушёвывать» благодаря большому receptive field. Конечно, никакие детали таким затушёвыванием восстановить невозможно.
Про идею удалять отражения переводя с видео на видео (если я правильно понял):
С одной стороны это проще — больше данных для восстановления каждого кадра, и вроде бы промахи в одиночных кадрах не так заметны.
С другой сложнее — надо будет согласовывать между собой кадры, чтобы получалось действительно видео, а не последовательность изображений (думаю в статьях video2video много про такое уже написано, правда).
На ячейке:

код крашится и выдает:

Какое значение learning rate вы использовали, думаю перескочить эту ошибку?
По поводу learning_rate:
мы для обучения UNet'a использовали дефолтный в ноутбуке, то есть
LEARNING_RATE = 1e-4
(в гиперпараметрах есть коммент по поводу того, какой learning_rate нормально работает для UNet'a)
SIRR, не соизволите ли удалить отражение?