Стилизация изображений с помощью нейронных сетей: никакой мистики, просто матан
Приветствую тебя, Хабр! Наверняка вы заметили, что тема стилизации фотографий под различные художественные стили активно обсуждается в этих ваших интернетах. Читая все эти популярные статьи, вы можете подумать, что под капотом этих приложений творится магия, и нейронная сеть действительно фантазирует и перерисовывает изображение с нуля. Так уж получилось, что наша команда столкнулась с подобной задачей: в рамках внутрикорпоративного хакатона мы сделали стилизацию видео, т.к. приложение для фоточек уже было. В этом посте мы с вами разберемся, как это сеть "перерисовывает" изображения, и разберем статьи, благодаря которым это стало возможно. Рекомендую ознакомиться с прошлым постом перед прочтением этого материала и вообще с основами сверточных нейронных сетей. Вас ждет немного формул, немного кода (примеры я буду приводить на Theano и Lasagne), а также много картинок. Этот пост построен в хронологическом порядке появления статей и, соответственно, самих идей. Иногда я буду его разбавлять нашим недавним опытом. Вот вам мальчик из ада для привлечения внимания.
Обзор топологий глубоких сверточных нейронных сетей

Отжиг и вымораживание: две свежие идеи, как ускорить обучение глубоких сетей

В этом посте изложены две недавно опубликованные идеи, как ускорить процесс обучения глубоких нейронных сетей при увеличении точности предсказания. Предложенные (разными авторами) способы ортогональны друг другу, и могут использоваться совместно и по отдельности. Предложенные здесь способы просты для понимания и реализации. Собственно, ссылки на оригиналы публикаций:
Применение сверточных нейронных сетей для задач NLP
Сверточные нейронные сети
Для начала немного теории. Что такое свертка? Мы не будем на этом останавливаться подробно, так как про это написана уже тонна материалов, но все-таки кратко пробежаться стоит. Есть красивая визуализация от Стэнфорда, которая позволяет ухватить суть:

Источник
Битва титанов наших дней: спор В. Вапника и Л. Джейкела о будущем SVM и нейронных сетей
Воспоминания о том, как спорили Нильс Бор с Альбертом Эйнштейном, а Джордж Вестингауз и Никола Тесла с Томасом Эдисоном, давно превратились в легенды. Эти научные дискуссии не забыты до сих, потому что, с одной стороны, разрешить их смогло только время. С другой стороны, их исход определил развитие технологий на десятилетия вперед. Существуют ли подобные дискуссии в наши дни? Существуют. И они столь же горячи и интересны, как и сто лет назад.
Пожалуй, самым интересным спором современности является спор Владимира Вапника (изобретателя метода опорных векторов или SVM — support vector machine), с Ларри Джейкелом, его боссом в компании “Bell Labs” и сторонником сверточных нейронных сетей.
Распознавание эмоций с помощью сверточной нейронной сети

Распознавание эмоций всегда было захватывающей задачей для ученых. В последнее время я работаю над экспериментальным SER-проектом (Speech Emotion Recognition), чтобы понять потенциал этой технологии – для этого я отобрал наиболее популярные репозитории на Github и сделал их основой моего проекта.
Прежде чем мы начнем разбираться в проекте, неплохо будет вспомнить, какие узкие места есть у SER.
Джедайская техника уменьшения сверточных сетей — pruning
Перед тобой снова задача детектирования объектов. Приоритет — скорость работы при приемлемой точности. Берешь архитектуру YOLOv3 и дообучаешь. Точность(mAp75) больше 0.95. Но скорость прогона всё еще низкая. Черт.
Сегодня обойдём стороной квантизацию. А под катом рассмотрим Model Pruning — обрезание избыточных частей сети для ускорения Inference без потери точности. Наглядно — откуда, сколько и как можно вырезать. Разберем, как сделать это вручную и где можно автоматизировать. В конце — репозиторий на keras.
Машинное обучение. Нейронные сети (часть 3) — Convolutional Network под микроскопом. Изучение АПИ Tensorflow.js
В предыдущих статьях, использовался только один из видов слоев нейронной сети – полносвязанные (dense, fully-connected), когда каждый нейрон исходного слоя имеет связь со всеми нейронами из предыдущих слоев.
Чтобы обработать, например, черно-белое изображение размером 24x24, мы должны были бы превратить матричное представление изображения в вектор, который содержит 24x24 элементов. Как можно вдуматься, с таким преобразованием мы теряем важный атрибут – взаимное расположение пикселей в вертикальном и горизонтальном направлении осей, а также, наверное, в большинстве случаев пиксел, находящийся в верхнем левом углу изображения вряд ли имеет какое-то логически объяснимое влияние друг на друга в большинстве случаев.
Для исключения этих недостатков – для обработки изображений используют сверточные слои (convolutional layer, CNN).
Основным назначением CNN является выделение из исходного изображения малых частей, содержащих опорные (характерные) признаки, такие как ребра, контуры, дуги или грани. На следующих уровнях обработки из этих ребер можно распознать более сложные повторяемые фрагменты текстур (окружности, квадратные фигуры и др.), которые дальше могут сложиться в еще более сложные текстуры (часть лица, колесо машины и др.).
Например, рассмотрим классическую задачу – распознавание изображения цифр. Каждая цифра имеет свой набор характерных для них фигур (окружности, линии). В тоже самое время каждую окружность или линию можно составить из более мелких ребер (рисунок 1)
Поиск изображений с помощью AffNet
Обзор статьи — AdderNet: Действительно ли нам нужно умножение в глубоком обучении? (Классификация изображений)

Вашему вниманию представлен обзор статьи AdderNet: действительно ли нам нужно умножение в глубоком обучении?,
Ключевые моменты статьи:
AdderNet, использующая сложение, в качестве выходного результата берет l1-меру стандартного отклонения между фильтрами и входным признаком.
По сравнению с умножением сложение намного дешевле и снижает затраты на вычисления.
Это статья CVPR 2020 года с более чем 20 упоминаниями в других источниках. (Sik-Ho Tsang @ Medium)
SIRR, не соизволите ли удалить отражение?

Источник: SIRR Using Deep Encoder-Decoder Network
Как я использовал нейросеть для категоризации трехмерных тел

Значимость темы машинного обучения (machine learning) сегодня очевидна. Это огромный домен знаний в Computer Science, которому в России, в частности, посвящают конференции уровня недавней AI Journey. Существует множество способов применения ML в различных областях, среди самых исследованных: распознавание изображений/видео/голоса, процессинг текста. Однако есть и более любопытные задачи, с которыми справляется ML. Например, обучение с подкреплением, что позволяет ИИ играть в игры типа Го, идентификация людей по фотографии, распознавание жестов, движений и поз человека.
Одной из не совсем обычных областей применения машинного обучения можно назвать работу с трехмерными телами. Такая технология активно исследуется за рубежом, а вариантов использования у нее может быть масса. Простой пример: дрон сканирует помещение, в котором находится множество тел. С помощью ML дрон может классифицировать объекты окружения, найти ошибки в пространственном размещении этих тел или же построить 3D-интерьер комнаты со ссылками на онлайн-магазин, где эти предметы можно купить.
Под катом — рассказ о том, как наш сотрудник задействовал машинное обучение для распознавания и классификации трехмерных тел. При этом весь информационный контекст был ограничен геометрией этих тел, то есть исключительно набором вершин и полигонов.
Traffic sign recognition using CNN

During the last years, one of the modern directions of technology development is computer vision. The main task of this direction is the classification of objects from a photo or video camera. In usual problems, it is solved using case-based machine learning methods. This work presents the application of computer vision for traffic sign recognition using machine learning algorithm. A road sign is a flat artificial object with a fixed appearance. There are two applied problems in which road sign recognition algorithms are used. The first task is to control an autonomous vehicle. Self-driving cars are cars that can drive on roads without a driver. A key component of an unmanned vehicle control system is object recognition. Objects of interest are primarily pedestrians, other vehicles, traffic lights and road signs.
Traffic signs are a fundamental portion of our day to day lives. They contain critical information that ensures the safety of all the people around us. A road sign is a flat artificial object with a fixed appearance. There are two applied problems in which road sign recognition algorithms are used. The first task is to control an autonomous vehicle. Self-driving cars are cars that can drive on roads without a driver. A key component of an unmanned vehicle control system is object recognition. Objects of interest are primarily pedestrians, other vehicles, traffic lights and road signs. The second task that uses traffic sign recognition is automatic mapping based on data from DVRs installed on cars. The task is relevant, because currently, compiling and maintaining detailed roadmaps requires either significant financial costs or a large amount of human time.