Изменения

Перейти к: навигация, поиск

Синтетические наборы данных

15 429 байт добавлено, 19:26, 4 сентября 2022
м
rollbackEdits.php mass rollback
{{Определение
|definition='''Синтетические данные''' — это наборы данных для применения программно сгенерированные данные, используемые в прикладных задачах бизнес-приложениях (в том числе в машинном обучении), которые не были получены исключительно путём прямого сбора и измерений.<ref name="mcgrawhilldict">McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984</ref>.
}}
Нередко возникают ситуации, когда получение реальных данных бизнес-процессов сложно или дорого, но при этом известны требования к таким объектамбизнес-процессам, правила их генерации создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетахили медицинской информации. В таких случаях необходимые наборы данных можно программно сгенерировать. == Применение == Сгенерированные объекты можно использовать в задаче обучения с учителем для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты. Синтетические данные используют [[wikipedia:Oversampling_and_undersampling_in_data_analysisГенерация объектов|не толькопрограммно сгенерировать]] при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по определённому алгоритму.  При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует. '''Хотя всегда можно добавить среднее как в kNN и получить какой-то набор данных, но не факт, что он будет сколь-либо репрезентативным -- не знаю, как нормально это написать. Так-то универсальный способ существует -- берёшь и копируешь объекты из датасета, либо дополняешь средними: набор? Набор! Имеет смысл? Скорее всего -- нет.'''
== Виды генерации ==
Существует два основных подхода к генерации синтетических наборов данных.
В случае, когда реальные данные отсутствуютили их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.
Также применяется [[wikipedia:Data_augmentation|аугментация]] — генерация (англ. augmentation) — генерация наборов на основе имеющихся реальных данныхбизнес-процессов. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.
* '''Можно картинку из httpsПреимущества использования синтетических данных://habr.com/ru/company/smartengines/blog/264677/ --- Ну если это про схему "обучение-поиск ошибок-генерация искажений-генерация датасета", то можно, конечно, но как-то к ней отослать''' == Достоинства ==
* Возможность генерации наборов данных практически любого размера.
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок модели на параметры распределений путём сравнения их с истинными параметрамипараметров.
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.
* Повышение доступности больших объёмов данных.
== Недостатки ==В то же время, у синтетических данных есть и недостатки:
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных<ref>Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.</ref>.
== Примеры ==
=== Автономный транспорт Применение == Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам [[Обучение с частичным привлечением учителя|частичного обучения]] и [[Обучение с частичным привлечением учителя#Самообучение (Self Training)|самообучения]]. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты. Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]<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>.  Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации. Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.
'''Автономный транспорт''' — это вид транспортаТакже с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], управление которым осуществляется без участия человека при помощи оптических датчиковрешающих задачи [[Сегментация изображений|семантической сегментации]], систем геолокации [[Компьютерное зрение#Идентификация|поиска]] и компьютерных алгоритмов<ref>Self-driving car — https://en[[Компьютерное зрение#Распознавание объектов|локализации]] объектов.wikipedia.org/wiki/Self-driving_car — Retrieved January 8В данном случае подходят наборы, 2020</ref>. При реализации алгоритмов управления автономным транспортом наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи которых искомые объекты определённым образом наносятся на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людейфоновое изображение. В реальных данных жечастности, наоборот, в основном присутствуют штатные ситуациитаким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].
Для решения этой проблемы компания nVidia разработала платформу NVIDIA DRIVE ConstellationСинтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]<refsup>[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на 25.pdf El Emam, K01. Accelerating AI with Synthetic Data21 не создан] — Beijing, Boston, Farnham, Sebastopol, Tokyo: O'Reilly Media, Inc., 2020.</refsup>— определения, которая состоит из действительно ли на двух серверовизображениях один и тот же человек. Один из них исполняет роль обучаемого транспортного средстваЭти алгоритмы могут использоваться для нахождения людей на записях с камер, а второй непрерывно генерирует для первого различные «миниатюрные миры»на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, включающие потому что требуется найти много фотографий одних и тех же людей в себя симуляцию вывода разных позах, с камеры, радара разных ракурсов и лидаровв разной одежде.
В обучении компания использует два режима — симуляция объектов (англПри генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует. ''postperception simulation'') и симуляция мира (англ Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными. ''end == Примеры == [[Файл:TextSharpener-to-end simulation'')Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описаниеСлева направо: размытое изображение, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиляисходное изображение, результат работы алгоритма<ref name="TextSharpener">Unblurring images of text with convolutional neural networks — https://gardarandri. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристикиgithub. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехиio/TextSharpener/ — Retrieved January 8, возникающие на сенсорах2021</ref>.]]
=== TextSharpener ===
Алгоритм TextSharpener<ref name="TextSharpener"/>, разработанный по методологии SCRUM в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL<ref name="PIL">Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021</ref>. [[Файл:TextSharpener-IdentityJefferson_Graham_on_Manhattan_Beach_Pier.pngjpeg|200px|thumb|rightleft|Пример работы TextSharpenerРисунок 2. Слева — исходное изображениеФотография, посередине сделанная широкоугольной камерой<ref>https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg размытоеRetrieved January 24, справа — результат работы алгоритма2021</ref>.]] === OmniSCV ===
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображенийНередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Для работы Изображения, получаемые с таких алгоритмов исходный набор изображений расширяется их копиямикамер, к которым применяются некие преобразования из фиксированного набораобладают довольно сильными искажениями (см. На основе полученных рисунок 2).Генератор изображений генерируется датасеткомнат OmniSCV<ref name="OmniSCV">OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, в котором входными данными считаются полученные изображения, а целевыми — исходные2021</ref> используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.
В самом делеГенератор умеет симулировать различные варианты бизнес-процессов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, получить реальные данные для такой задачи — фотографию [[wikipedia:Fisheye lens|«рыбьи глаза»]] и её же нечеткую копию — довольно затруднительно[[wikipedia:Catadioptric system|катадиоптрические системы]], а применение таких преобразований довольно легко автоматизируетсятакже сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры (см. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразованиярисунок 3).
Один из известных алгоритмов такого рода — TextSharpenerИзображения этого набора данных генерируются с помощью графического движка Unreal Engine 4<ref name="TextSharpenerue">Unblurring images of text with convolutional neural networks EpicGames. Unreal Engine 4 Documentation. — https://gardarandridocs.githubunrealengine.iocom/TextSharpeneren-US/ — Retrieved index.html — Retrieved January 821, 20202021</ref> и плагина UnrealCV<ref name="uecv">UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021</ref>. Этот алгоритмКаждое преобразование задаётся несложной функцией, разработанный в Университете Исландии связывающей координаты плоскости исходного изображения и основанный на луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[Сверточные нейронные сетиwikipedia:Spherical coordinate system|свёрточной нейронной сетисферические координаты]]: <tex>(\theta, позволяет убирать размытие текста на изображениях\phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)</tex>, где <tex>(x, y)</tex> — координаты пикселя, а <tex>(x_{max}, y_{max})</tex> — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция<ref name=== "OmniSCV ==="/>.}}
Генератор изображений комнат '''OmniSCV''' [[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs<ref name="OmniSCVFlyingChairs">Computer Vision Group, Freiburg — https://wwwlmb.mdpiinformatik.com/1424uni-8220freiburg.de/20resources/7datasets/2066/htmFlyingChairs.en.html — Retrieved January 11, 2021</ref> используется при разработке роботов, использующих алгоритмы [[Компьютерное зрение|компьютерного зрения.]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.
=== FlyingChairs ===
Датасет '''Набор данных FlyingChairs''' <ref name="FlyingChairs">https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html</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.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде<ref name="VC-Clothes">VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021</ref>.]]
=== VC-Clothes ===
Датасет '''Набор данных VC-Clothes''' <ref name="VC-Clothes">https://wanfb.github.io/dataset.html</ref>создан для разработки алгоритмов реидентификации людей на записях с камер. Этот набор данных Он представляет из себя сгенерированные изображения одинаковых людей, одетых по-разному в разной одежде и на разном фоне. Помимо реидентификации, этот датасет набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа. Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены. [[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора 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, 2021</ref>.]] === SynthText in the Wild === Набор данных SynthText in the Wild<ref name="SynthText"/> разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 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]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение. {{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение<ref name="SynthText-paper"/>.}} [[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях<ref name="unityeyes">Wood, E., Baltrusaitis, T., Morency, L., Robinson, P., Bulling, A. Learning an appearance-based gaze estimator from one million synthesised images // Proceedings of the Ninth Biennial ACM Symposium on Eye Tracking Research & Applications — 2016</ref>.]] === UnityEyes === В 2016 году по методологии SCRUM была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса (см. рисунок 8). Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Программист бизнес-приложений получает в два раза больше программистов других приложений, поэтому он должен знать и эти алгоритмы. Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах. [[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE<ref name="nvidia">[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 DRIVE === Для обучения автономного транспорта компания NVIDIA разработала по методологии SCRUM платформу NVIDIA DRIVE Constellation<ref name="nvidia" />, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах. == См. также == * [[Автоматическое машинное обучение]]* [[Генерация объектов]]* [[Переобучение]]
== Примечания ==
<references/>
 
== Источники ==
 
* 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
 
[[Категория: Машинное обучение]]
[[Категория: Генерация объектов]]
1632
правки

Навигация