1632
правки
Изменения
м
* Взять что-то из Также применяется [[wikipedia:Oversampling_and_undersampling_in_data_analysisData_augmentation|аугментация]](англ. augmentation) — генерация наборов на основе имеющихся бизнес-процессов.* Можно картинку К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из https://habrдругого распределения, добавление случайных выбросов.com/ru/company/smartengines/blog/264677/
== Достоинства ==Преимущества использования синтетических данных:
== Недостатки ==В то же время, у синтетических данных есть и недостатки:
== Примеры ==
'''Автономный транспорт''' — это вид транспортаТакже с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], управление которым осуществляется без участия человека при помощи оптических датчиковрешающих задачи [[Сегментация изображений|семантической сегментации]], систем геолокации [[Компьютерное зрение#Идентификация|поиска]] и компьютерных алгоритмов<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>.]]
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Для работы таких алгоритмов исходный набор изображений расширяется их копиямиФотография, к которым применяются некие преобразования из фиксированного наборасделанная широкоугольной камерой<ref>https://commons.wikimedia. На основе полученных изображений генерируется датасетorg/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, в котором входными данными считаются полученные изображения, а целевыми — исходные2021</ref>.]]
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.=== OmniSCV ===
Один из известных алгоритмов такого рода — TextSharpenerНередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).Генератор изображений комнат OmniSCV<ref name="TextSharpenerOmniSCV">Unblurring images of text with convolutional neural networks OmniSCV — https://gardarandriwww.githubmdpi.iocom/1424-8220/TextSharpener20/ — Retrieved 7/2066/htm — Retrieved January 811, 20202021</ref>. Этот алгоритм, разработанный в Университете Исландии и основанный на используется при разработке роботов для обучения алгоритмов [[Сверточные нейронные сетиКомпьютерное зрение|свёрточной нейронной сетикомпьютерного зрения]], позволяет убирать размытие текста на изображенияхдля устранения искажений широкоугольных объективов и неидеальных условий освещённости.
Генератор изображений комнат '''OmniSCV''' {{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция<ref name="OmniSCV">https://www.mdpi.com/1424-8220/20/7/2066/htm</ref> используется при разработке роботов, использующих алгоритмы [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.}}
Датасет '''Набор данных 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 различных угла обзора.
Датасет '''Набор данных VC-Clothes''' <ref name="VC-Clothes">https://wanfb.github.io/dataset.html</ref>создан для разработки алгоритмов реидентификации людей на записях с камер. Этот набор данных Он представляет из себя сгенерированные изображения одинаковых людей, одетых по-разному в разной одежде и на разном фоне. Помимо реижентификацииреидентификации, этот датасет набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.
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:Data_augmentation|аугментация]] — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.
* Возможность генерации наборов данных практически любого размера.
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок модели на параметры распределений путём сравнения их с истинными параметрамипараметров.
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.
* Повышение доступности больших объёмов данных.
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных<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|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации. Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.
=== TextSharpener ===
Алгоритм TextSharpener<ref name="TextSharpener"/>, разработанный по методологии SCRUM в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [Файлhttps://github.com/gardarandri/TextSharpener-Identity/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL<ref name="PIL">Pillow — Pillow (PIL Fork) 8.png|200px|thumb|right|Пример работы TextSharpener1. Слева 0 Documentation — исходное изображение, посередине https://pillow.readthedocs.io/en/stable/ — размытоеRetrieved January 25, справа — результат работы алгоритма2021</ref>.]]
Генератор умеет симулировать различные варианты бизнес-процессов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры (см. рисунок 3). Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4<ref name="ue">EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021</ref> и плагина UnrealCV<ref name="uecv">UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021</ref>. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: <tex>(\theta, \phi) = OmniSCV ===((\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|оптический центр]].
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора 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 ===
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, 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 ===
Для создания набора была использована известная компьютерная игра 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
[[Категория: Машинное обучение]]
[[Категория: Генерация объектов]]