Задача о "многоруком бандите" (часть 2)
Продолжим разбираться с многоруким бандитом. Разберем способ оценки математического ожидания в случае когда распределение случайной величины меняется со временем, а также посмотрим как влияет на жадную стратегию выбор начальной оценки математического ожидания награды.
Читать дальше...
Продолжим разбираться с многоруким бандитом. Разберем способ оценки математического ожидания в случае когда распределение случайной величины меняется со временем, а также посмотрим как влияет на жадную стратегию выбор начальной оценки математического ожидания награды.
Читать дальше...
Сверточная нейронная сеть OverFeat
OverFeat - модель сверточной нейронной сети, описанная в [1], которая предназначена для того, чтобы одновременно (т.е. одной сетью) решать три задачи: детектировать объект, классифицировать его и уточнять положение на снимке (detection, recognition, and localization).
Читать дальше...
OverFeat - модель сверточной нейронной сети, описанная в [1], которая предназначена для того, чтобы одновременно (т.е. одной сетью) решать три задачи: детектировать объект, классифицировать его и уточнять положение на снимке (detection, recognition, and localization).
Читать дальше...
👍1
Задача о "многоруком бандите" (часть 3)
Разберем еще одну стратегию решения задачи о "многоруком бандите".
Читать дальше...
Разберем еще одну стратегию решения задачи о "многоруком бандите".
Читать дальше...
Spatial Pyramid Pooling структура в свёрточной нейронной сети
Любая свёрточная нейронная сеть, применяемая для классификации объектов, структурно легко разделяется на две части. Первая состоит из свёрточных (convolution) и объединяющих (pooling) слоёв (сюда же все нелинейности, LRN, batch normalization и т.п.) и по исходной картинке формирует трёхмерную матрицу особенностей (features). Вторая часть сети является классификатором, который, взяв набор особенностей, выдаёт класс объекта на изображении (вернее вектор sofmax с вероятностями для каждого класса).
Статья [1] предлагает использовать spatial pyramid pooling слой между свёрточной частью и классификатором, чтобы иметь возможность классифицировать изображения произвольных размеров (в разумных пределах).
Читать дальше...
Любая свёрточная нейронная сеть, применяемая для классификации объектов, структурно легко разделяется на две части. Первая состоит из свёрточных (convolution) и объединяющих (pooling) слоёв (сюда же все нелинейности, LRN, batch normalization и т.п.) и по исходной картинке формирует трёхмерную матрицу особенностей (features). Вторая часть сети является классификатором, который, взяв набор особенностей, выдаёт класс объекта на изображении (вернее вектор sofmax с вероятностями для каждого класса).
Статья [1] предлагает использовать spatial pyramid pooling слой между свёрточной частью и классификатором, чтобы иметь возможность классифицировать изображения произвольных размеров (в разумных пределах).
Читать дальше...
Выделения объектов для семантической сегментации при помощи "состязательного стирания".
Задача семантической сегментации изображения заключается в том, чтобы назначить каждому пикселю этого изображения некоторый класс из заранее заданных. Например, определить какие пиксели на изображении относятся к человеку, какие к сидящему у этого человека на коленях коту, а какие к некоему заднику (background) и не могут быть классифицированы. Современный подход к решению этой задачи, как собственно и многих других, заключается в применении свёрточных нейронных сетей. Этот подход показывает прекрасные результаты. Проблема, однако, как и всегда в случае применения нейронных сетей заключается в необходимости получить значительные объемы, размеченных для тренировки, данных. При этом в случае семантической сегментации, трудоёмкость задачи разметки крайне высока. Потому что для каждого изображения надо сформировать попиксельную маску классов.
Читать дальше...
Задача семантической сегментации изображения заключается в том, чтобы назначить каждому пикселю этого изображения некоторый класс из заранее заданных. Например, определить какие пиксели на изображении относятся к человеку, какие к сидящему у этого человека на коленях коту, а какие к некоему заднику (background) и не могут быть классифицированы. Современный подход к решению этой задачи, как собственно и многих других, заключается в применении свёрточных нейронных сетей. Этот подход показывает прекрасные результаты. Проблема, однако, как и всегда в случае применения нейронных сетей заключается в необходимости получить значительные объемы, размеченных для тренировки, данных. При этом в случае семантической сегментации, трудоёмкость задачи разметки крайне высока. Потому что для каждого изображения надо сформировать попиксельную маску классов.
Читать дальше...
"Мягкое" подавление немаксимумов
При детектировании, классически используется связка из двух подходов сдвигающегося окна (sliding window) и подавления немаксимумов ( non-maximum suppression). Последнее время, большое распространения для решения задачи детектирования получили свёрточные нейронные сети, в которых сдвигающееся окно не применяется, но и при использовании CNN на определенном этапе работы алгоритма возникает необходимость в подавление немаксимумов, поскольку обычно генерируется достаточно большое количество дублей для каждого объекта на снимке. В рассматриваемой статье [1] как раз и предлагается усовершенствование алгоритма подавления немаксимумов.
Читать дальше...
При детектировании, классически используется связка из двух подходов сдвигающегося окна (sliding window) и подавления немаксимумов ( non-maximum suppression). Последнее время, большое распространения для решения задачи детектирования получили свёрточные нейронные сети, в которых сдвигающееся окно не применяется, но и при использовании CNN на определенном этапе работы алгоритма возникает необходимость в подавление немаксимумов, поскольку обычно генерируется достаточно большое количество дублей для каждого объекта на снимке. В рассматриваемой статье [1] как раз и предлагается усовершенствование алгоритма подавления немаксимумов.
Читать дальше...
R-CNN, Fast R-CNN, Faster R-CNN etc.
Возвращаемся к задаче детектирования объектов на изображении. Один из подходов к решению данной задачи был рассмотрен, когда разбирали сеть OverFeat. В данном тексте разберем конструкцию, которая впервые была предъявлена в статьях [1] и [2], а затем усовершенствована в статьях [3] и [4].
Читать дальше...
Возвращаемся к задаче детектирования объектов на изображении. Один из подходов к решению данной задачи был рассмотрен, когда разбирали сеть OverFeat. В данном тексте разберем конструкцию, которая впервые была предъявлена в статьях [1] и [2], а затем усовершенствована в статьях [3] и [4].
Читать дальше...
Генеративно-состязательная сеть
Генеративно-состязательная сеть (Generative adversarial network) это методика обучения пары моделей:
генеративной $G$, которая по случайному шуму генерирует данные, подчинённые некоторому вероятностному распределению, и
дискриминативной $D$, которая приписывает, поступающим на её вход данным, вероятность того, что они получены из тренировочного датасета или сгенерированы моделью $G$.
Т.е. модель $G$ обучается таким образом, чтобы максимизировать вероятность того, что $D$ ошибётся. А модель $D$ тренируется отличать подмену реальных данных от тех, которые сгенерировала сеть $G$. Таким образом мы получаем как бы игру для двух игроков.
Читать дальше...
Генеративно-состязательная сеть (Generative adversarial network) это методика обучения пары моделей:
генеративной $G$, которая по случайному шуму генерирует данные, подчинённые некоторому вероятностному распределению, и
дискриминативной $D$, которая приписывает, поступающим на её вход данным, вероятность того, что они получены из тренировочного датасета или сгенерированы моделью $G$.
Т.е. модель $G$ обучается таким образом, чтобы максимизировать вероятность того, что $D$ ошибётся. А модель $D$ тренируется отличать подмену реальных данных от тех, которые сгенерировала сеть $G$. Таким образом мы получаем как бы игру для двух игроков.
Читать дальше...
MNIST, нейронные сети и свёрточные нейронные сети
Про обычные и свёрточные нейронные сети. Почему свёрточные нейронные сети хороши для работы с изображениями. И немного о датасете MNIST.
Читать дальше...
Про обычные и свёрточные нейронные сети. Почему свёрточные нейронные сети хороши для работы с изображениями. И немного о датасете MNIST.
Читать дальше...
Алгоритмы оптимизации типа градиентного спуска
При тренировки нейронной сети применяются различные алгоритмы оптимизации, большинство из них являются усовершенствованием стохастического градиентного спуска, хочется иметь их все (про которые я знаю) на одной странице.
Читать дальше...
При тренировки нейронной сети применяются различные алгоритмы оптимизации, большинство из них являются усовершенствованием стохастического градиентного спуска, хочется иметь их все (про которые я знаю) на одной странице.
Читать дальше...
Mask R-CNN
Разберём статью [1], в которой описана сеть, решающая задачу сегментации экземпляра объекта (object instance segmentation). Авторы предлагают сеть, которую они назвали Mask R-CNN. Mask R-CNN берёт за основу Faster R-CNN и добавляет к ней дополнительную ветвь. Эта ветвь на выходе должна выдать маску объекта в дополнение к ограничивающему прямоугольнику и классу.
Читать дальше...
Разберём статью [1], в которой описана сеть, решающая задачу сегментации экземпляра объекта (object instance segmentation). Авторы предлагают сеть, которую они назвали Mask R-CNN. Mask R-CNN берёт за основу Faster R-CNN и добавляет к ней дополнительную ветвь. Эта ветвь на выходе должна выдать маску объекта в дополнение к ограничивающему прямоугольнику и классу.
Читать дальше...
Tensorflow
Tensorflow - это набор инструментов машинного обучения с открытым исходным кодом.
Читать дальше...
Tensorflow - это набор инструментов машинного обучения с открытым исходным кодом.
Читать дальше...
TensorFlow
An end-to-end open source machine learning platform for everyone. Discover TensorFlow's flexible ecosystem of tools, libraries and community resources.
Tensorflow (часть вторая)
Продолжаем разбираться с Tensorflow. Будем смотреть на вспомогательные операции, которые позволяют усложнить граф вычислений таким образом, чтобы поток данных мог идти по разным путям, в зависимости от содержимого этих данных. Но начнем мы с операции, которая позволит нам логировать сам процесс выполнения вычислений в графе.
Читать дальше...
Продолжаем разбираться с Tensorflow. Будем смотреть на вспомогательные операции, которые позволяют усложнить граф вычислений таким образом, чтобы поток данных мог идти по разным путям, в зависимости от содержимого этих данных. Но начнем мы с операции, которая позволит нам логировать сам процесс выполнения вычислений в графе.
Читать дальше...
Batch Normalization. Основы.
Batch Normalization - одна из тех методик (или даже Tips&Tricks), которая существенно упростила тренировку, а следовательно и использование нейронных сетей в различных задачах. Понятно, что взлет ракетой нейронных сетей, за последние 5+ лет, обязан в основном серьёзному увеличению возможностей железок. Но удалось бы добиться такого рапространия нейронных сетей, и особенно глубоких нейронных сетей без batch normalization?
Главные наблюдаемые достоинства batch normalization это ускорение тренировки (в смысле уменьшения количества итераций для получения нужного качества) и некая допускаемая вольность в подборе параметров: и инициализации весов сети, и learning rate и других метапараметров обучения. Таким образом ценность batch Normalization для нейронных сетей сложно преувеличить, а значит есть смысл разобраться: что это такое и откуда проистекает польза при применении.
Читать дальше...
Batch Normalization - одна из тех методик (или даже Tips&Tricks), которая существенно упростила тренировку, а следовательно и использование нейронных сетей в различных задачах. Понятно, что взлет ракетой нейронных сетей, за последние 5+ лет, обязан в основном серьёзному увеличению возможностей железок. Но удалось бы добиться такого рапространия нейронных сетей, и особенно глубоких нейронных сетей без batch normalization?
Главные наблюдаемые достоинства batch normalization это ускорение тренировки (в смысле уменьшения количества итераций для получения нужного качества) и некая допускаемая вольность в подборе параметров: и инициализации весов сети, и learning rate и других метапараметров обучения. Таким образом ценность batch Normalization для нейронных сетей сложно преувеличить, а значит есть смысл разобраться: что это такое и откуда проистекает польза при применении.
Читать дальше...
CIFAR10 и много графиков.
Это будет такая в некотором роде техническая запись, где почти совсем не будет теоретических умствований, зато будет много графиков (я очень люблю графики, почти так же как формулы).
Базовым датасетом мы выберем CIFAR10, с одной стороны он уже не такой тривиальный как MNIST и значит на нем можно смотреть на достаточно тонкие вещи, с другой он не такой большой как ImageNet, например, а значит можно провести серию экспериментов даже на лаптопе с крайне слабой видеокартой и не умереть от старости ожидая когда они закончатся.
Читать дальше...
Это будет такая в некотором роде техническая запись, где почти совсем не будет теоретических умствований, зато будет много графиков (я очень люблю графики, почти так же как формулы).
Базовым датасетом мы выберем CIFAR10, с одной стороны он уже не такой тривиальный как MNIST и значит на нем можно смотреть на достаточно тонкие вещи, с другой он не такой большой как ImageNet, например, а значит можно провести серию экспериментов даже на лаптопе с крайне слабой видеокартой и не умереть от старости ожидая когда они закончатся.
Читать дальше...
👍1
Детектирование объектов под дождем для автомобильных автопилотов.
arXiv:2006.16471v2
Авторы разбираются с детектированием объектов в различных погодных условиях, а точнее они хотят определить насколько сильно падает качество детектирования, когда на улице дождь (туман и снег их тоже интересует, но меньше). Они концентрировались на использовании детектора в автомобильном автопилоте, поэтому разбирались с детектированием четырех типов объектов: машины, пешеходы, знаки дорожного движения, светофоры.
Читать дальше...
arXiv:2006.16471v2
Авторы разбираются с детектированием объектов в различных погодных условиях, а точнее они хотят определить насколько сильно падает качество детектирования, когда на улице дождь (туман и снег их тоже интересует, но меньше). Они концентрировались на использовании детектора в автомобильном автопилоте, поэтому разбирались с детектированием четырех типов объектов: машины, пешеходы, знаки дорожного движения, светофоры.
Читать дальше...
Серия фотографий для улучшения очень темных изображений
arXiv:2006.09845
Результат работы трёх сетей, картинка из статьи
На самом деле проблема со съёмкой в темноте комплексная, с одной стороны самое очевидное это низкий уровень полезного сигнала, но из этого с необходимостью вытекает не особо высокое соотношение сигнал шум, а значит просто увеличение аплитуды хоть и поможет, но смотреть на фотографию таким образом осветленную можно будет только по необходимости. Можно бороться с темнотой на этапе съёмки - использовать выдержку побольше, или прикрутить к камере вспышку. Но первое возможно, только если снимаем статическую картинку и желательно со штатива. А второе поможет только для достаточно близких к камере объектов. Резюмируя, есть насущная необходимость осветлять темные фотографии и aвторы статьи рассказывают как это делают они.
Читать дальше...
arXiv:2006.09845
Результат работы трёх сетей, картинка из статьи
На самом деле проблема со съёмкой в темноте комплексная, с одной стороны самое очевидное это низкий уровень полезного сигнала, но из этого с необходимостью вытекает не особо высокое соотношение сигнал шум, а значит просто увеличение аплитуды хоть и поможет, но смотреть на фотографию таким образом осветленную можно будет только по необходимости. Можно бороться с темнотой на этапе съёмки - использовать выдержку побольше, или прикрутить к камере вспышку. Но первое возможно, только если снимаем статическую картинку и желательно со штатива. А второе поможет только для достаточно близких к камере объектов. Резюмируя, есть насущная необходимость осветлять темные фотографии и aвторы статьи рассказывают как это делают они.
Читать дальше...
Оптимизация квантизации в JPEG кодеке для классификационных сетей
arXiv:2003.02874v1
Практически все задачи компьютерного зрения сейчас решаются при помощи свёрточных нейронных сетей. С одной стороны это крайне позитивно сказывается на качестве решения этих задач, с другой появилась необходимость собирать большие датасеты из картинок. Картинки в датасетах в основном хранятся в jpeg формате, а поскольку этот формат сжимает в том числе за счёт потери части данных, логично задаться вопросом, как достичь баланса между размером картинок и качеством работы нейронных сетей.
Основная "потеря" данных при jpeg кодировании происходит на этапе квантизации коэффициентов DCT преобразования. За квантизацию, отвечают Q-таблицы, которые могут меняться в зависимости от реализации кодировщика. В основном эти таблицы подбираются таким образом, чтобы потеря качества картинки не была заметна человеческому глазу. Авторы статьи задались вопросом, нельзя ли подобрать такие Q-таблицы, которые помогут нейронным сетям, возможно даже в ущерб тому, как пережатая картинка будет выглядить для человека. Ну или хотя бы не понижая качества работы сетей, попытаться увеличить коэффициент сжатия алгоритма.
Читать дальше...
arXiv:2003.02874v1
Практически все задачи компьютерного зрения сейчас решаются при помощи свёрточных нейронных сетей. С одной стороны это крайне позитивно сказывается на качестве решения этих задач, с другой появилась необходимость собирать большие датасеты из картинок. Картинки в датасетах в основном хранятся в jpeg формате, а поскольку этот формат сжимает в том числе за счёт потери части данных, логично задаться вопросом, как достичь баланса между размером картинок и качеством работы нейронных сетей.
Основная "потеря" данных при jpeg кодировании происходит на этапе квантизации коэффициентов DCT преобразования. За квантизацию, отвечают Q-таблицы, которые могут меняться в зависимости от реализации кодировщика. В основном эти таблицы подбираются таким образом, чтобы потеря качества картинки не была заметна человеческому глазу. Авторы статьи задались вопросом, нельзя ли подобрать такие Q-таблицы, которые помогут нейронным сетям, возможно даже в ущерб тому, как пережатая картинка будет выглядить для человека. Ну или хотя бы не понижая качества работы сетей, попытаться увеличить коэффициент сжатия алгоритма.
Читать дальше...
arXiv.org
Optimizing JPEG Quantization for Classification Networks
Deep learning for computer vision depends on lossy image compression: it reduces the storage required for training and test data and lowers transfer costs in deployment. Mainstream datasets and...
Детектирование по нескольким камерам, с проектированием особенностей
arXiv:2007.07247
Допустим, у нас есть некая местность (например, площадь), которая снимается синхронно несколькими камерами с разных точек. И мы хотим по набору фотографий получить карту (вид сверху) с расположенными на площади объектами (в данной статье речь идёт о прохожих).
Пример из датасета
Читать дальше...
arXiv:2007.07247
Допустим, у нас есть некая местность (например, площадь), которая снимается синхронно несколькими камерами с разных точек. И мы хотим по набору фотографий получить карту (вид сверху) с расположенными на площади объектами (в данной статье речь идёт о прохожих).
Пример из датасета
Читать дальше...
arXiv.org
Multiview Detection with Feature Perspective Transformation
Incorporating multiple camera views for detection alleviates the impact of occlusions in crowded scenes. In a multiview system, we need to answer two important questions when dealing with...
Нейронная сеть с вейвлет преобразованием для удаления дождя.
arXiv:2007.09163
Недавно смотрел на статью про детектирование объектов в дождь и вывод был такой, что надо не убирать дождь с фотографий на которых планируем детектировать, а собирать и размечать датасет с фотографиями в дождь (или как-то еще работать на этапе тренировки). Но тут наткнулся на статью про то как убирать дождь с фотографий с использованием нейронных сетей и вейвлет преобразований, и понятно не смог устоять ибо вейвлет преобразования - это прекрасно и к тому же ностальгия.
Результаты работы алгоритма, картинка из статьи
Читать дальше...
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" коротенько и по делу. Понятно, что за два года что-то поменялось, но общее представлении вполне можно получить.
Однако, в той статье, что я планирую поразбирать, авторы пишут о неудовлетворительности текущего подхода, который переносит в качестве стиля в основном текстуры с одного изображения на другое, с большим или меньшим успехом (учитывая, что в последних вариантах, про которые читал, уже прикручивается семантическая сегментация, для переноса стиля, качество получаемых картинок там очень впечатляет). И предлагают свой вариант, который кроме текстур перенесет и "геометрический стиль" изображения.
Пример переноса обычного и геометрического стилей, картинка из статьи
Читать дальше...
arXiv:2007.05471
Перенос стиля с одной картинки на другую - тема известная, обычно постановка задачи выглядит так: у нас есть две картинки, нам надо взять содержимое с одной, а "стиль" с другой и сгенерировать третью картинку. Началом этой занимательной истории послужила статья L. A. Gatys et al. "A neural algorithm of artistic style." в ней честно брались две картинки, и решалась задача оптимизации, чтобы стиль одной картинки перегнать на другую, очень дорого по ресурсам, кстати. Потом появились всевозможные улучшения и дополнения. Кому интересно могу порекомендовать обзор, который мне понравился: Haochen Li. "A Literature Review of Neural Style Transfer" коротенько и по делу. Понятно, что за два года что-то поменялось, но общее представлении вполне можно получить.
Однако, в той статье, что я планирую поразбирать, авторы пишут о неудовлетворительности текущего подхода, который переносит в качестве стиля в основном текстуры с одного изображения на другое, с большим или меньшим успехом (учитывая, что в последних вариантах, про которые читал, уже прикручивается семантическая сегментация, для переноса стиля, качество получаемых картинок там очень впечатляет). И предлагают свой вариант, который кроме текстур перенесет и "геометрический стиль" изображения.
Пример переноса обычного и геометрического стилей, картинка из статьи
Читать дальше...