Картинки как коробки — что внутри? Доклад в Яндексе
Полина Гуртовая из компании «Злые марсиане» выступила на нашей конференции
— Всем привет. Меня зовут Полина, я фронт в компании «Злые марсиане».

Работаем с фото и видео


Привет, Хабр! Продолжаем публиковать рецензии на научные статьи от членов сообщества Open Data Science из канала #article_essense. Хотите получать их раньше всех — вступайте в сообщество!
Представлены обзоры 11 статей по Computer Vision, Natural Language Processing, Reinforcement learning и другим темам.

Как известно, мы в Smart Engines занимаемся системами компьютерного зрения и распознавания документов, а также научными исследованиями в этой области. В течение нескольких лет в фокусе нашего внимания находились системы распознавания документов, удостоверяющих личность. Одной из критичных проблем, возникающих при подготовке научных статей, является отсутствие открытых датасетов, на которых можно демонстрировать сообществу разработанные нами алгоритмы и подходы. В связи с этим два года назад мы начали работу над серией открытых пакетов изображений и видеоклипов ID-документов, предназначенных, главным образом, для исследователей, и о результатах этой работы хотели бы рассказать вам под катом.


Это обзор функциональности, появившейся в Pillow 5.2: применение трехмерных таблиц поиска (3D lookup tables, 3D LUT) для трансформации цвета. Эта техника широко распространена в обработке видео и 3D-играх, однако мало графических библиотек могли похвастаться 3D LUT трансформациями до этого.
Трехмерные таблицы поиска дают большую гибкость в описании цветовых трансформаций, но самое главное трансформации выполняются за одинаковое время, какими бы сложными они не были.
from PIL import Image, ImageFilter
def washout(r, g, b):
h, s, v = _rgb_to_hsv(r, g, b)
if 0.3 < h < 0.7:
s = 0
return _hsv_to_rgb(h, s, v)
im = Image.open('./Puffins.jpg')
im = im.filter(ImageFilter.Color3DLUT.generate(17, washout))Функция, полностью написанная на Пайтоне, применяется к 16,6-мегапиксельной картинке за 75ms.

Работа с изображениями и так ресурсоемка, поэтому я обожаю алгоритмы, которые позволяют убрать сложность от входных параметров. Пять лет назад я реализовал в Pillow гауссово размытие, работающее за одинаковое время для любого радиуса. Не так давно я рассказал как можно уменьшить изображение за константное время с минимальной потерей качества. Сегодня я покажу для каких задач можно применять 3D LUT, какие у нее ограничения и похвастаюсь достигнутой производительностью в Pillow-SIMD.


В связи с все более широким распространением доступных лазерных сканеров (лидаров), способных получать 3D облака точек (3dОТ) и все более широким применением этой технологии в различных областях (от машиностроения до безопасности, от нефтяной промышленности до архитектуры), оживился интерес к алгоритмам обработки облаков точек.
Одно из востребованных применений 3dОТ в промышленности — это создание конструкторской документации на только возводимое, старое или переделанное оборудование, которое обычно представляет из себя трубопроводы и другие конструкции цилиндрической геометрии.
Для детектирования геометрических примитивов в 3dОТ обычно применяются специализированные 3D библиотеки, например Microsoft PCL. У подхода с использованием готовых библиотек наряду с достоинствами есть и недостатки. Например, трудно включить их в уже существующие кадовские схемы обработки, которые обычно имеют 2D размерность.
Рассмотрим, как можно было бы обрабатывать 3dОТ, например насосной станции, начав с 2D сечений и используя весь арсенал 2D обработки, который есть в надежных и оптимизированных библиотеках обработки изображений, например OpenCV.

Рисунок 1. 3D ОТ модель насосной станции










Расскажу о сабже на примере одного из проектов, которым занимался в 2019-м году, когда я ещё работал в одной известной онлайн-школе английского языка.
Вы узнаете, как мы научились по изображениям с камеры во время урока в реальном времени распознавать эмоции учителей и учеников, как использовали это в продукте, чтобы повысить удовлетворенность клиентов, сколько денег на этом потратили и заработали.
Заодно покажу, как устроен цикл разработки и внедрения моделей машинного обучения.
