Заметки про CS
113 subscribers
69 links
Заметки на компьютерно-научную тематику, в основном CV и ML
Download Telegram
Оптимизация квантизации в JPEG кодеке для классификационных сетей

arXiv:2003.02874v1

Практически все задачи компьютерного зрения сейчас решаются при помощи свёрточных нейронных сетей. С одной стороны это крайне позитивно сказывается на качестве решения этих задач, с другой появилась необходимость собирать большие датасеты из картинок. Картинки в датасетах в основном хранятся в jpeg формате, а поскольку этот формат сжимает в том числе за счёт потери части данных, логично задаться вопросом, как достичь баланса между размером картинок и качеством работы нейронных сетей.

Основная "потеря" данных при jpeg кодировании происходит на этапе квантизации коэффициентов DCT преобразования. За квантизацию, отвечают Q-таблицы, которые могут меняться в зависимости от реализации кодировщика. В основном эти таблицы подбираются таким образом, чтобы потеря качества картинки не была заметна человеческому глазу. Авторы статьи задались вопросом, нельзя ли подобрать такие Q-таблицы, которые помогут нейронным сетям, возможно даже в ущерб тому, как пережатая картинка будет выглядить для человека. Ну или хотя бы не понижая качества работы сетей, попытаться увеличить коэффициент сжатия алгоритма.

Читать дальше...
Детектирование по нескольким камерам, с проектированием особенностей

arXiv:2007.07247

Допустим, у нас есть некая местность (например, площадь), которая снимается синхронно несколькими камерами с разных точек. И мы хотим по набору фотографий получить карту (вид сверху) с расположенными на площади объектами (в данной статье речь идёт о прохожих).

Пример из датасета

Читать дальше...
Нейронная сеть с вейвлет преобразованием для удаления дождя.

arXiv:2007.09163

Недавно смотрел на статью про детектирование объектов в дождь и вывод был такой, что надо не убирать дождь с фотографий на которых планируем детектировать, а собирать и размечать датасет с фотографиями в дождь (или как-то еще работать на этапе тренировки). Но тут наткнулся на статью про то как убирать дождь с фотографий с использованием нейронных сетей и вейвлет преобразований, и понятно не смог устоять ибо вейвлет преобразования - это прекрасно и к тому же ностальгия.

Результаты работы алгоритма, картинка из статьи

Читать дальше...
Перенос геометрического стиля

arXiv:2007.05471

Перенос стиля с одной картинки на другую - тема известная, обычно постановка задачи выглядит так: у нас есть две картинки, нам надо взять содержимое с одной, а "стиль" с другой и сгенерировать третью картинку. Началом этой занимательной истории послужила статья L. A. Gatys et al. "A neural algorithm of artistic style." в ней честно брались две картинки, и решалась задача оптимизации, чтобы стиль одной картинки перегнать на другую, очень дорого по ресурсам, кстати. Потом появились всевозможные улучшения и дополнения. Кому интересно могу порекомендовать обзор, который мне понравился: Haochen Li. "A Literature Review of Neural Style Transfer" коротенько и по делу. Понятно, что за два года что-то поменялось, но общее представлении вполне можно получить.

Однако, в той статье, что я планирую поразбирать, авторы пишут о неудовлетворительности текущего подхода, который переносит в качестве стиля в основном текстуры с одного изображения на другое, с большим или меньшим успехом (учитывая, что в последних вариантах, про которые читал, уже прикручивается семантическая сегментация, для переноса стиля, качество получаемых картинок там очень впечатляет). И предлагают свой вариант, который кроме текстур перенесет и "геометрический стиль" изображения.

Пример переноса обычного и геометрического стилей, картинка из статьи

Читать дальше...
Быстрое детектирование объектов на сжатых jpeg изображениях

arXiv:1904.08408

Авторы статьи (не они первые, на самом деле) задались вопросом, нельзя ли построить такой детектор объектов, который получал бы на вход изображения кодированные jpeg-кодеком и не распаковывая (или почти не распаковыя - не делая обратное DCT преобразование) искал бы на этом изображении объекты.

Читать дальше...
Быстрые нейронные сети на сжатых jpeg изображениях

jpeg2dct on GitHub

Еще раз обращаясь к вопросу о нейронных сетях непосредственно на DCT коэффициентах из jpeg. Вчера разбирал статью про детектирование объектов на сжатых jpeg изображениях, хотя начать надо было по идеи не с неё, а с той, про которую сегодня. Т.е. всё таки задача классификации некоторым образом первична по отношению к детектированию, и статья, на которую посмотрим сегодня (от 2018 года) как раз про классификацию объектов сразу на DCT коэффициентах без декодирования до RGB картинки.

Читать дальше...
YOLO, SSD и другие.

Мы уже рассматривали два современных подхода к детектированию объектов на изображении при помощи свёрточных нейронных сетей: R-CNN, FastRCNN, FasterRCNN и Overfeat. Самое время разобраться с еще одним классом детекторов в который входят: YOLO, SSD и т.п.

Читать дальше...
Заметки про CS pinned «YOLO, SSD и другие. Мы уже рассматривали два современных подхода к детектированию объектов на изображении при помощи свёрточных нейронных сетей: R-CNN, FastRCNN, FasterRCNN и Overfeat. Самое время разобраться с еще одним классом детекторов в который входят:…»
Фокусировка функции потерь при детектировании объектов (RetinaNet)

arXiv:1708.02002

Авторы статьи решают проблему разбалансировки классов в задаче детектирования объектов (обычно, у нас переизбыток негативов), предлагая заменить поиск сложных негативов и подсчет ошибки только на них, на специфичную штрафную функцию.

Читать дальше...
Свёрточный координатный слой

arXiv:1807.03247

Одно из свойств свёрточных сетей, которое позволяет им хорошо решать массу разнобразных задач компьютерного зрения, например, задачи классификации, это инвариантность относительно сдвига картинки. Однако, это же свойство мешает в других задачах. В данной работе авторы рассматривают несколько простых модельных задач, с которыми обычные свёрточные сети не справляются. А именно, получив на вход черную картинку с одним белым пикселем вернуть координаты этого пикселя, или, обратная задача, сгенерировать изображение, где на черном фоне будет отрисована белая точка в заданных координатах (или белый квадрат с центром в этих координатах).

В качестве решения авторы предлагают добавить в сеть CoordConv слои. Но прежде чем начать разговор про CoordConv разберемся с задачами и датасетом.

Читать дальше...
👍1
node2vec Масштабируемое обучение выделения особенностей для графов

arXiv:1607.00653

Графы дело известное и часто используется в компьютерных науках для представления данных. Одной из задач на графах является задача предсказания свойств вершин графа (например, если рассматривать социальные сети, то полезно уметь предсказывать интересы пользователей, опираясь на их свзяи с другими пользователями). Другая задача находить не учтённые связи между вершинами (в тех же социальных сетях определять, например, знакомы ли люди в реальной жизни). Один из подходов к решению задач такого рода это "вкладывание" вершин графа в некоторое многомерное векторное пространство и затем определение близости вершин исходного графа как близость соответствующих им векторов.

Авторы статьи как раз рассказывают о том, как такое вложение осуществить

Читать дальше...
Пример использования node2vec для датской дорожной сети

arXiv:1911.06217

Прошлый раз разбирались с алгоритмом node2vec и тренировкой функции, чтобы вкладывать вершины графа в векторное пространство, для переноса свойств вершин или поиска скрытых связей. В статье, которую хочется разобрать сегодня, авторы используют node2vec для работы с графом представляющим из себя дорожную сеть, а если более точно дорожную сеть Дании. Авторы вкладывают ее в векторное пространство особенностей алгоритмом node2vec и пытаются провесить скоростные ограничения и типы дорог с известных участков на неизвестные.

Сразу отметим, что если до этого мы говорили о вершинах графа, то теперь речь идёт о ребрах, т.е. нам надо будет найти представление для ребер графа.

Читать дальше...
Поиск особых точек и их дескрипторов - обучение без учителя.

arXiv:1712.07629

В задачах SfM и не только, крайне полезно уметь выделять на изображении особые точки и приписывать им некий вектор-дескриптор. Тогда, сопоставив такие точки на двух изображениях, можно определить параметры преобразования гомографии одного изображения в другое, потом найти фундаментальную матрицу и т.п.

Раньше для поиска таких точек использовались разнообразные алгоритмы типа SIFT, SURF, FAST, ORB, а теперь, как и для многих других задач компьютерного зрения, предлагается применить нейронную сеть. Т.е. авторы хотят натренировать такую сеть, чтобы подав ей на вход изображение, на выходе мы бы получили набор особых точек этого изображения с приписанными этим точкам дескрипторами.

Как и обычно, проблема с нейронными сетями ровно одна - где взять соответствующий задаче датасет. И в данном случае разметка такого рода датасета, во-первых, сложноформализуемая задача, т.е. не всегда понятно какие именно точки на изображении следует размечать как особые. Во-вторых, требует огромное количество ресурсов. Поэтому статья, в первую очередь, интересна подходом, при помощи которого авторы умудряются натренировать сеть (и получить датасет), используя только синтетические данные.

Читать дальше...
D2-Net. Свёрточная нейронная сеть, для одновременного поиска и описания особых точек.

arXiv:1905.03561

Продолжаем тему поиска особых точек и их дескрипторов при помощи нейронных сетей. В прошлый раз разбирали статью, где использовалась сетка с "двумя головами", которая в каком-то смысле повторяла классический подход, одна голова искала особые точки, а вторая потом для этих особых точек выдавала дескрипторы (на самом деле дексрипторы были для всех точек изображения, но нас интересовали только те которые нашлись как особые).

Сегодня разберем еще одну статью, про поиск особых точек на картинке нейронными сетями.

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

Читать дальше...
S2DNet. Sparse-to-dense матчинг особых точек.

arXiv:2004.01673

И еще про особые точки. Однако, здесь концепция несколько отличается от двух предыдущих статей (SuprePoint, D2-Net). Если раньше мы брали две картинки, на каждой находили особые точки с дескриптором в каком-то векторном пространстве, а потом тем или иным способом "матчили" особые точки опираясь на их близость в пространстве дескрипторов и это называлось sparse-to-sparse методика. То в данной статье предлагается использовать несимметричный *sparse-to-dense" подход, а именно, вначале найти особые точки на одном изображении, а потом для каждой найденной точки искать соответствие на втором.

Читать дальше...
D2D. Выделение ключевых точек Сначала описать потом детектировать.

arXiv:2005.13605

Снова про особые точки на изображении. Мы разобрали две статьи sparse-to-sparse подхода: detect-then-describe (SuperPoint ) и detect-and-describe (D2-Net). Также рассмотрели sparse-to-dense подход S2DNet. Сегодня еще одна вариация из разряда sparse-to-sparse - на этот раз с подзаголовком describe-to-detect.

Как очевидно из подзаголовка, авторы предлагают вначале взять сеть, которая хорошо умеет описывать точки изображения, т.е. генерировать для них дескрипторы (в качестве, такой сети в статье предлагаются HardNet или SOSNet), а затем, используя эти дескрипторы, выбрать особые точки.

таксономия подходов к особым точкам, картинка из статьи

Читать дальше...
MegaDepth: Обучение предсказателя глубины по одной фотографии, на картинках из интернета

arXiv:1804.00607

В одной из предыдущих статей, в которой рассказывали про D2-Net фигурировал датасет, на котором собственно происходило обучение. Датасет называется MegaDepth и хотелось бы остановится на нем по-подробнее. В основном на том как его собрали и для чего использовали авторы исходной статьи.

Читать дальше...
Про инвариантность к сдвигам свёрточных сетей.

arXiv:2003.07064v2

То что свёрточные сети инвариантны к сдвигам картинки давно уже стало "общим местом" в работах по этому предмету. На самом деле, это крайне полезное свойство при классификации объекта на фотографии, где бы не был "котик" в левом или правом верхнем углу это не должно влиять на ответ классификатора. Если объект сдвигается на фотографии, то соответствующим образом сдвигаются и "ответы" свёрточных слоёв, а после всех свёрточных слоёв сейчас обычно принято ставить какой-то глобальный пулинг (либо усреднение, либо максимум), который тоже инвариантен к сдвигам.

Однако, есть одна тонкость, с которой авторы статьи решили разобраться, а именно поведение свёрточных слоёв на краях картинки.

Читать дальше...
Self-attention (cамовнимание?) в моделях компьютерного зрения

arXiv:1906.05909

Статья сильно не новая, но полезная. В ней attention подход переносится из сетей, применяемых для работы с текстами (перевода), на сети, которые призваны решать задачи компьютерного зрения.

Читать дальше...
Изображения как набор слов 16 х 16.

arXiv:2010.11929

Если здесь attention модель применялась "локально" и фактически self-attention преобразование служило заменой стандартной свёртки, то сегодня посмотрим на статью, в которой авторы попытались максимально перенести подход, предложенный для решения задачи перевода в компьютерное зрение.

Читать дальше...