http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&user=176.59.23.48&feedformat=atomВикиконспекты - Вклад участника [ru]2024-03-28T11:00:34ZВклад участникаMediaWiki 1.30.0http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%B8%D0%BD%D1%82%D0%B5%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5_%D0%BD%D0%B0%D0%B1%D0%BE%D1%80%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85&diff=79406Синтетические наборы данных2021-01-20T20:15:52Z<p>176.59.23.48: </p>
<hr />
<div>{{Определение<br />
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).<br />
}}<br />
<br />
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].<br />
<br />
== Применение ==<br />
<br />
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.<br />
<br />
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]<ref name="wiki:oversampling">Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021</ref>. <br />
<br />
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует. Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.<br />
<br />
== Виды генерации ==<br />
<br />
Существует два основных подхода к генерации синтетических наборов данных.<br />
<br />
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.<br />
<br />
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.<br />
<br />
== Достоинства ==<br />
<br />
* Возможность генерации наборов данных практически любого размера.<br />
<br />
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.<br />
<br />
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.<br />
<br />
* Повышение доступности больших объёмов данных.<br />
<br />
== Недостатки ==<br />
<br />
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.<br />
<br />
* Отсутствие универсальных метрик качества и применимости генерируемых данных.<br />
<br />
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных<ref>Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.</ref>.<br />
<br />
== Примеры ==<br />
<br />
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]<br />
<br />
=== TextSharpener ===<br />
<br />
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.<br />
<br />
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.<br />
<br />
Один из известных алгоритмов такого рода — TextSharpener<ref name="TextSharpener">Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021</ref>. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).<br />
<br />
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]<br />
<br />
=== OmniSCV ===<br />
<br />
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).<br />
Генератор изображений комнат OmniSCV<ref name="OmniSCV">OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021</ref> используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.<br />
<br />
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.<br />
<br />
=== FlyingChairs ===<br />
<br />
Набор данных FlyingChairs<ref name="FlyingChairs">Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021</ref> и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.<br />
<br />
=== VC-Clothes ===<br />
<br />
Набор данных VC-Clothes<ref name="VC-Clothes">VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020</ref> создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.<br />
<br />
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]<br />
<br />
=== SynthText in the Wild ===<br />
<br />
Набор данных 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). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.<br />
<br />
Чтобы полученный набор выглядел натурально, применяется следующий подход<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]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.<br />
<br />
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 4. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}<br />
<br />
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 5. Примеры миров, сгенерированных NVIDIA DRIVE.]]<br />
<br />
== Другие применения ==<br />
<br />
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов<ref>Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021</ref>. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.<br />
<br />
Для решения этой проблемы компания 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>, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.<br />
<br />
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 5) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.<br />
<br />
<br />
== См. также ==<br />
<br />
* [[Автоматическое машинное обучение]]<br />
* [[Генерация объектов]]<br />
* [[Переобучение]]<br />
<br />
== Примечания ==<br />
<br />
<references/><br />
<br />
== Источники ==<br />
<br />
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021<br />
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984<br />
<br />
[[Категория: Машинное обучение]]<br />
[[Категория: Генерация объектов]]</div>176.59.23.48