Синтетические наборы данных — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м
м
Строка 64: Строка 64:
  
 
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}
 
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}
 +
 +
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]
  
 
=== FlyingChairs ===
 
=== FlyingChairs ===
  
Набор данных FlyingChairs<ref name="FlyingChairs">Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021</ref> и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.
+
Набор данных FlyingChairs<ref name="FlyingChairs">Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021</ref> и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.
 +
 
 +
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья<ref name="fc-chairs">Aubry M., Maturana D., Efros A., Russell B., Sivic J. Seeing 3d chairs:  exemplar part-based 2d-3d alignment using a large dataset of cad models — InCVPR, 2014</ref>, для каждого стула были представлены 62 различных угла обзора.
 +
 
 +
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel<ref name="sintel">Butler D. J., Wulff J., Stanley G. B., Black M.J. Anaturalistic open source movie for optical flow evaluation // ECCV, Part IV — Springer-Verlag, 2012 — с. 611–625</ref>, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.
  
 
=== VC-Clothes ===
 
=== VC-Clothes ===
Строка 73: Строка 79:
 
Набор данных VC-Clothes<ref name="VC-Clothes">VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020</ref> создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.
 
Набор данных VC-Clothes<ref name="VC-Clothes">VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020</ref> создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.
  
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]
+
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild]]
  
 
=== SynthText in the Wild ===
 
=== SynthText in the Wild ===
  
Набор данных SynthText in the Wild<ref name="SynthText">Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020</ref> разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 3). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.
+
Набор данных SynthText in the Wild<ref name="SynthText">Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020</ref> разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.
  
Чтобы полученный набор выглядел натурально, применяется следующий подход<ref name="SynthText-paper">Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016</ref>. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.
+
Чтобы полученный набор выглядел натурально, применяется следующий подход<ref name="SynthText-paper">Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016</ref>. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона (рис. 7). Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.
  
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 4. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}
+
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}
  
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 5. Примеры миров, сгенерированных NVIDIA DRIVE.]]
+
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 8. Примеры миров, сгенерированных NVIDIA DRIVE.]]
  
 
== Другие применения ==
 
== Другие применения ==
Строка 91: Строка 97:
 
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation<ref>[https://www.nvidia.com/content/dam/en-zz/Solutions/deep-learning/resources/accelerating-ai-with-synthetic-data-ebook/accelerating-ai-with-synthetic-data-nvidia_web.pdf El Emam, K. Accelerating AI with Synthetic Data] — Beijing, Boston, Farnham, Sebastopol, Tokyo: O'Reilly Media, Inc., 2020.</ref>, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.
 
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation<ref>[https://www.nvidia.com/content/dam/en-zz/Solutions/deep-learning/resources/accelerating-ai-with-synthetic-data-ebook/accelerating-ai-with-synthetic-data-nvidia_web.pdf El Emam, K. Accelerating AI with Synthetic Data] — Beijing, Boston, Farnham, Sebastopol, Tokyo: O'Reilly Media, Inc., 2020.</ref>, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.
  
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 5) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.
+
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 8) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.
  
  

Версия 01:43, 21 января 2021

Определение:
Синтетические данные — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).


Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.

Применение

Сгенерированные объекты можно использовать в задаче обучения с учителем для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.

Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по определённому алгоритму[1].

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

Виды генерации

Существует два основных подхода к генерации синтетических наборов данных.

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

Также применяется аугментация (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.

Достоинства

  • Возможность генерации наборов данных практически любого размера.
  • Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.
  • Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.
  • Повышение доступности больших объёмов данных.

Недостатки

  • Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.
  • Отсутствие универсальных метрик качества и применимости генерируемых данных.
  • Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных[2].

Примеры

Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.

TextSharpener

Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.

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

Один из известных алгоритмов такого рода — TextSharpener[3]. Этот алгоритм, разработанный в Университете Исландии и основанный на свёрточной нейронной сети, позволяет убирать размытие текста на изображениях (см. изображение 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило тривиального скрипта на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.

Рис. 2. Фотография, сделанная широкоугольной камерой

OmniSCV

Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2). Генератор изображений комнат OmniSCV[4] используется при разработке роботов для обучения алгоритмов компьютерного зрения для устранения искажений широкоугольных объективов и неидеальных условий освещённости.

Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.

Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4[5] и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: [math] (\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)[/math], где [math](x, y)[/math] — координаты пикселя, а [math](x_{max}, y_{max})[/math] — разрешение изображения.

Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция
Рис 4. Пример из набора FlyingChairs.

FlyingChairs

Набор данных FlyingChairs[6] и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как семантическая сегментация, поиск и локализация объекта, а также более сложных, например, для поиска движения.

FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга Flickr из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья[7], для каждого стула были представлены 62 различных угла обзора.

С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel[8], для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.

VC-Clothes

Набор данных VC-Clothes[9] создан для разработки алгоритмов реидентификации — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической сегментации, для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.

Рис. 6. Пример изображения из набора SynthText in the Wild

SynthText in the Wild

Набор данных SynthText in the Wild[10] разработан для обучения алгоритмов распознавания текста на изображении. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.

Чтобы полученный набор выглядел натурально, применяется следующий подход[11]. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью CNN строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона (рис. 7). Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.

Рис 7. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет
Рис 8. Примеры миров, сгенерированных NVIDIA DRIVE.

Другие применения

Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов[12]. Алгоритму управления транспортным средством нужно решить две задачи: сначала выявить окружающие объекты — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.

Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation[13], которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.

В обучении компания использует два режима — симуляция после восприятия (англ. postperception simulation) и сквозная симуляция (англ. end-to-end simulation). В режиме симуляции объектов из сгенерированных миров (рис. 8) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.


См. также

Примечания

  1. Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021
  2. Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.
  3. Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021
  4. OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021
  5. EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020
  6. Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021
  7. Aubry M., Maturana D., Efros A., Russell B., Sivic J. Seeing 3d chairs: exemplar part-based 2d-3d alignment using a large dataset of cad models — InCVPR, 2014
  8. Butler D. J., Wulff J., Stanley G. B., Black M.J. Anaturalistic open source movie for optical flow evaluation // ECCV, Part IV — Springer-Verlag, 2012 — с. 611–625
  9. VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020
  10. Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020
  11. Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016
  12. Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021
  13. El Emam, K. Accelerating AI with Synthetic Data — Beijing, Boston, Farnham, Sebastopol, Tokyo: O'Reilly Media, Inc., 2020.

Источники

  • Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021
  • McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984