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

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

Читать дальше...
Mask R-CNN

Разберём статью [1], в которой описана сеть, решающая задачу сегментации экземпляра объекта (object instance segmentation). Авторы предлагают сеть, которую они назвали Mask R-CNN. Mask R-CNN берёт за основу Faster R-CNN и добавляет к ней дополнительную ветвь. Эта ветвь на выходе должна выдать маску объекта в дополнение к ограничивающему прямоугольнику и классу.

Читать дальше...
Tensorflow (часть вторая)

Продолжаем разбираться с Tensorflow. Будем смотреть на вспомогательные операции, которые позволяют усложнить граф вычислений таким образом, чтобы поток данных мог идти по разным путям, в зависимости от содержимого этих данных. Но начнем мы с операции, которая позволит нам логировать сам процесс выполнения вычислений в графе.

Читать дальше...
Batch Normalization. Основы.

Batch Normalization - одна из тех методик (или даже Tips&Tricks), которая существенно упростила тренировку, а следовательно и использование нейронных сетей в различных задачах. Понятно, что взлет ракетой нейронных сетей, за последние 5+ лет, обязан в основном серьёзному увеличению возможностей железок. Но удалось бы добиться такого рапространия нейронных сетей, и особенно глубоких нейронных сетей без batch normalization?

Главные наблюдаемые достоинства batch normalization это ускорение тренировки (в смысле уменьшения количества итераций для получения нужного качества) и некая допускаемая вольность в подборе параметров: и инициализации весов сети, и learning rate и других метапараметров обучения. Таким образом ценность batch Normalization для нейронных сетей сложно преувеличить, а значит есть смысл разобраться: что это такое и откуда проистекает польза при применении.

Читать дальше...
CIFAR10 и много графиков.

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

Базовым датасетом мы выберем CIFAR10, с одной стороны он уже не такой тривиальный как MNIST и значит на нем можно смотреть на достаточно тонкие вещи, с другой он не такой большой как ImageNet, например, а значит можно провести серию экспериментов даже на лаптопе с крайне слабой видеокартой и не умереть от старости ожидая когда они закончатся.

Читать дальше...
👍1
Детектирование объектов под дождем для автомобильных автопилотов.

arXiv:2006.16471v2

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

Читать дальше...
Серия фотографий для улучшения очень темных изображений

arXiv:2006.09845

Результат работы трёх сетей, картинка из статьи

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

Читать дальше...
Оптимизация квантизации в 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 и пытаются провесить скоростные ограничения и типы дорог с известных участков на неизвестные.

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

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