<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nsychev</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nsychev"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Nsychev"/>
		<updated>2026-08-04T13:36:49Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%85%D0%BE%D0%B4_%D0%B2_%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D1%83&amp;diff=81301</id>
		<title>Обход в ширину</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%85%D0%BE%D0%B4_%D0%B2_%D1%88%D0%B8%D1%80%D0%B8%D0%BD%D1%83&amp;diff=81301"/>
				<updated>2021-12-12T10:10:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Откат правок 195.19.34.91 (обсуждение) к версии 77.234.215.137&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Обход в ширину''' (Поиск в ширину, англ. ''BFS'', ''Breadth-first search'') — один из простейших алгоритмов обхода [[Основные определения теории графов|графа]], являющийся основой для многих важных алгоритмов для работы с графами.&lt;br /&gt;
&lt;br /&gt;
== Описание алгоритма ==&lt;br /&gt;
[[Image: Graph-BFS.gif|thumb|240px|Алгоритм BFS&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;font color=#3c9eff&amp;gt;посещенные&amp;lt;/font&amp;gt; вершины&amp;lt;br&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Пусть задан невзвешенный ориентированный граф &amp;lt;tex&amp;gt; G = (V, E) &amp;lt;/tex&amp;gt;, в котором выделена исходная вершина &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt;. Требуется найти длину кратчайшего пути (если таковой имеется) от одной заданной вершины до другой. Частным случаем указанного графа является невзвешенный неориентированный граф, т.е. граф, в котором для каждого ребра найдется обратное, соединяющее те же вершины в другом направлении.&lt;br /&gt;
&lt;br /&gt;
Для алгоритма нам потребуются [[Очередь|очередь]] и множество посещенных вершин &amp;lt;tex&amp;gt; was &amp;lt;/tex&amp;gt;, которые изначально содержат одну вершину &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt;. На каждом шагу алгоритм берет из начала очереди вершину &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; и добавляет все непосещенные смежные с &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; вершины в &amp;lt;tex&amp;gt; was &amp;lt;/tex&amp;gt; и в конец очереди. Если очередь пуста, то алгоритм завершает работу.&lt;br /&gt;
&lt;br /&gt;
== Анализ времени работы ==&lt;br /&gt;
Оценим время работы для входного графа &amp;lt;tex&amp;gt;G = (V, E)&amp;lt;/tex&amp;gt;, где множество ребер &amp;lt;tex&amp;gt; E &amp;lt;/tex&amp;gt; представлено списком смежности. В очередь добавляются только непосещенные вершины, поэтому каждая вершина посещается не более одного раза. Операции внесения в очередь и удаления из нее требуют &amp;lt;tex&amp;gt; O(1) &amp;lt;/tex&amp;gt; времени, так что общее время работы с очередью составляет &amp;lt;tex&amp;gt; O(|V|) &amp;lt;/tex&amp;gt; операций. Для каждой вершины &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; рассматривается не более &amp;lt;tex&amp;gt; \mathrm{deg}(v) &amp;lt;/tex&amp;gt; ребер, инцидентных ей. Так как &amp;lt;tex&amp;gt; \sum\limits_{v \in V} \mathrm{deg}(v) = 2|E| &amp;lt;/tex&amp;gt;, то время, используемое на работу с ребрами, составляет &amp;lt;tex&amp;gt; O(|E|) &amp;lt;/tex&amp;gt;. Поэтому общее время работы алгоритма поиска в ширину — &amp;lt;tex&amp;gt; O(|V| + |E|) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Корректность ==&lt;br /&gt;
&lt;br /&gt;
{{Утверждение&lt;br /&gt;
|statement=&lt;br /&gt;
В очереди поиска в ширину расстояние вершин до &amp;lt;tex&amp;gt;s&amp;lt;/tex&amp;gt; монотонно неубывает.&lt;br /&gt;
|proof=&lt;br /&gt;
Докажем это утверждение индукцией по числу выполненных алгоритмом шагов.&lt;br /&gt;
&lt;br /&gt;
Введем дополнительный инвариант: у любых двух вершин из очереди, расстояние до &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; отличается не более чем на &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
'''База''': изначально очередь содержит только одну вершину &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
'''Переход''': пусть после &amp;lt;tex&amp;gt; i-й &amp;lt;/tex&amp;gt; итерации в очереди &amp;lt;tex&amp;gt; a + 1 &amp;lt;/tex&amp;gt; вершин с расстоянием &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; b &amp;lt;/tex&amp;gt; вершин с расстоянием &amp;lt;tex&amp;gt; x + 1 &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Рассмотрим &amp;lt;tex&amp;gt; i-ю &amp;lt;/tex&amp;gt; итерацию. Из очереди достаем вершину &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;, с расстоянием &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt;. Пусть у &amp;lt;tex&amp;gt;v&amp;lt;/tex&amp;gt; есть &amp;lt;tex&amp;gt;r  &amp;lt;/tex&amp;gt; непосещенных смежных вершин. Тогда, после их добавления, в очереди находится &amp;lt;tex&amp;gt; a &amp;lt;/tex&amp;gt; вершин с расстоянием &amp;lt;tex&amp;gt; x &amp;lt;/tex&amp;gt; и, после них, &amp;lt;tex&amp;gt; b + r &amp;lt;/tex&amp;gt; вершин с расстоянием &amp;lt;tex&amp;gt; x + 1 &amp;lt;/tex&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Оба инварианта сохранились, &amp;lt;tex&amp;gt;  \Rightarrow &amp;lt;/tex&amp;gt; после любого шага алгоритма элементы в очереди неубывают. &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
Алгоритм поиска в ширину в невзвешенном графе находит длины кратчайших путей до всех достижимых вершин.&lt;br /&gt;
|proof=&lt;br /&gt;
Допустим, что это не так. Выберем из вершин, для которых кратчайшие пути от &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; найдены некорректно, ту, настоящее расстояние до которой минимально. Пусть это вершина &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt;, и она имеет своим предком в дереве обхода в ширину &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;, а предок в кратчайшем пути до &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; — вершина &amp;lt;tex&amp;gt; w &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt; w &amp;lt;/tex&amp;gt; — предок &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; в кратчайшем пути, то &amp;lt;tex&amp;gt; \rho(s, u) = \rho(s, w) + 1 &amp;gt; \rho(s, w) &amp;lt;/tex&amp;gt;, и расстояние до &amp;lt;tex&amp;gt; w &amp;lt;/tex&amp;gt; найдено верно, &amp;lt;tex&amp;gt; \rho(s, w) = d[w] &amp;lt;/tex&amp;gt;. Значит, &amp;lt;tex&amp;gt; \rho(s, u) = d[w] + 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Так как &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; — предок &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; в дереве обхода в ширину, то &amp;lt;tex&amp;gt; d[u] = d[v] + 1 &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Расстояние до &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; найдено некорректно, поэтому &amp;lt;tex&amp;gt; \rho(s, u) &amp;lt; d[u] &amp;lt;/tex&amp;gt;. Подставляя сюда два последних равенства, получаем &amp;lt;tex&amp;gt; d[w] + 1 &amp;lt; d[v] + 1 &amp;lt;/tex&amp;gt;, то есть, &amp;lt;tex&amp;gt; d[w] &amp;lt; d[v] &amp;lt;/tex&amp;gt;. Из ранее доказанной леммы следует, что в этом случае вершина &amp;lt;tex&amp;gt; w &amp;lt;/tex&amp;gt; попала в очередь и была обработана раньше, чем &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt;. Но она соединена с &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt;, значит, &amp;lt;tex&amp;gt; v &amp;lt;/tex&amp;gt; не может быть предком &amp;lt;tex&amp;gt; u &amp;lt;/tex&amp;gt; в дереве обхода в ширину, мы пришли к противоречию, следовательно, найденные расстояния до всех вершин являются кратчайшими.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Дерево обхода в ширину == &lt;br /&gt;
&lt;br /&gt;
Поиск в ширину также может построить [[Дерево, эквивалентные определения|дерево]] поиска в ширину. Изначально оно состоит из одного корня &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt;. Когда мы добавляем непосещенную вершину в очередь, то добавляем ее и ребро, по которому мы до нее дошли, в дерево. Поскольку каждая вершина может быть посещена не более одного раза, она имеет не более одного родителя. После окончания работы алгоритма для каждой достижимой из &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; вершины &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; путь в дереве поиска в ширину соответствует кратчайшему пути от &amp;lt;tex&amp;gt; s &amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt; t &amp;lt;/tex&amp;gt; в &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Реализация ==&lt;br /&gt;
&lt;br /&gt;
Предложенная ниже функция возвращает кратчайшее расстояние между двумя вершинами.&lt;br /&gt;
*&amp;lt;tex&amp;gt; \mathtt{source} &amp;lt;/tex&amp;gt; — исходная вершина&lt;br /&gt;
*&amp;lt;tex&amp;gt; \mathtt{destination} &amp;lt;/tex&amp;gt; — конечная вершина&lt;br /&gt;
*&amp;lt;tex&amp;gt; \mathtt{G} &amp;lt;/tex&amp;gt; — граф, состоящий из списка вершин &amp;lt;tex&amp;gt; \mathtt{V} &amp;lt;/tex&amp;gt; и списка смежности &amp;lt;tex&amp;gt; \mathtt{E} &amp;lt;/tex&amp;gt;. Вершины нумеруются целыми числами.&lt;br /&gt;
*&amp;lt;tex&amp;gt; \mathtt{Q} &amp;lt;/tex&amp;gt; — очередь.&lt;br /&gt;
*В поле &amp;lt;tex&amp;gt; \mathtt{d[u]} &amp;lt;/tex&amp;gt; хранится расстояние от &amp;lt;tex&amp;gt; \mathtt{source} &amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt; \mathtt{u} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 '''int''' '''BFS'''(G: (V, E), source: '''int''', destination: '''int'''):&lt;br /&gt;
     d = '''int'''[|V|]&lt;br /&gt;
     '''fill'''(d, &amp;lt;tex&amp;gt; \infty &amp;lt;/tex&amp;gt;)&lt;br /&gt;
     d[source] = 0&lt;br /&gt;
     Q = &amp;lt;tex&amp;gt; \varnothing &amp;lt;/tex&amp;gt;&lt;br /&gt;
     Q.push(source)&lt;br /&gt;
     '''while''' Q &amp;lt;tex&amp;gt; \ne \varnothing &amp;lt;/tex&amp;gt; &lt;br /&gt;
         u = Q.pop()&lt;br /&gt;
         '''for''' v: (u, v) '''in''' E&lt;br /&gt;
             '''if''' d[v] == &amp;lt;tex&amp;gt; \infty &amp;lt;/tex&amp;gt;&lt;br /&gt;
                 d[v] = d[u] + 1&lt;br /&gt;
                 Q.push(v)&lt;br /&gt;
     '''return''' d[destination]&lt;br /&gt;
&lt;br /&gt;
Если требуется найти расстояние лишь между двумя вершинами, из функции можно выйти, как только будет установлено значение &amp;lt;tex&amp;gt; \mathtt{d[destination]} &amp;lt;/tex&amp;gt;.&lt;br /&gt;
Еще одна оптимизация может быть проведена при помощи метода [[Meet-in-the-middle#Задача о нахождении кратчайшего расстояния между двумя вершинами в графе|meet-in-the-middle]].&lt;br /&gt;
&lt;br /&gt;
== Вариации алгоритма ==&lt;br /&gt;
=== 0-1 BFS ===&lt;br /&gt;
Пусть в графе разрешены ребра веса &amp;lt;tex&amp;gt; 0 &amp;lt;/tex&amp;gt; и &amp;lt;tex&amp;gt; 1 &amp;lt;/tex&amp;gt;, необходимо найти кратчайший путь между двумя вершинами. Для решения данной задачи модифицируем приведенный выше алгоритм следующим образом: &lt;br /&gt;
&lt;br /&gt;
Вместо очереди будем использовать [[Персистентный_дек|дек]] (или можно даже steque). Если рассматриваемое ее ребро имеет вес &amp;lt;tex&amp;gt; 0 &amp;lt;/tex&amp;gt;, то будем добавлять вершину в начало, а иначе в конец. После этого добавления, дополнительный введенный инвариант в доказательстве [[#Корректность | расположения элементов в деке в порядке неубывания]] продолжает выполняться, поэтому порядок в деке сохраняется. И, соответственно, релаксируем расстояние до всех смежных вершин и, при успешной релаксации, добавляем их в дек. &lt;br /&gt;
&lt;br /&gt;
Таким образом, в начале дека всегда будет вершина, расстояние до которой меньше либо равно расстоянию до остальных вершин дека, и инвариант [[#Корректность | расположения элементов в деке в порядке неубывания]] сохраняется. Значит, алгоритм корректен на том же основании, что и обычный BFS. Очевидно, что каждая вершина войдет в дек не более двух раз, значит, асимптотика у данного алгоритма та же, что и у обычного BFS.&lt;br /&gt;
&lt;br /&gt;
=== 1-k BFS ===&lt;br /&gt;
Пусть в графе разрешены ребра целочисленного веса из отрезка &amp;lt;tex&amp;gt;1 \ldots k&amp;lt;/tex&amp;gt;, необходимо найти кратчайший путь между двумя вершинами. Представим ребро &amp;lt;tex&amp;gt;uv&amp;lt;/tex&amp;gt; веса &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; как последовательность ребер &amp;lt;tex&amp;gt;uu_1u_2 \ldots u_{m - 1}v&amp;lt;/tex&amp;gt; (где &amp;lt;tex&amp;gt;u_1 \ldots u_{m - 1}&amp;lt;/tex&amp;gt; — новые вершины). Применим данную операцию ко всем ребрам графа &amp;lt;tex&amp;gt; G &amp;lt;/tex&amp;gt;. Получим граф, состоящий (в худшем случае) из &amp;lt;tex&amp;gt;k|E|&amp;lt;/tex&amp;gt; ребер и &amp;lt;tex&amp;gt;|V| + (k - 1)|E|&amp;lt;/tex&amp;gt; вершин. Для нахождения кратчайшего пути следует запустить BFS на новом графе. Данный алгоритм будет иметь асимптотику &amp;lt;tex&amp;gt; O(|V| + k|E|) &amp;lt;/tex&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== См. также == &lt;br /&gt;
* [[Обход в глубину, цвета вершин]]&lt;br /&gt;
* [[Алгоритм Дейкстры]]&lt;br /&gt;
* [[Теория графов]]&lt;br /&gt;
&lt;br /&gt;
== Источники информации ==&lt;br /&gt;
&lt;br /&gt;
* Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн Алгоритмы: построение и анализ — 2-е изд. — М.: «Вильямс», 2007. — с. 459. — ISBN 5-8489-0857-4&lt;br /&gt;
* [http://e-maxx.ru/algo/bfs MAXimal :: algo :: Поиск в ширину]&lt;br /&gt;
* [[wikipedia:en:Breadth-first_search| Wikipedia {{---}} Breadth-first search]]&lt;br /&gt;
* [[wikipedia:ru:Поиск_в_ширину| Wikipedia {{---}} Поиск в ширину]]&lt;br /&gt;
* [http://rain.ifmo.ru/cat/view.php/vis/graph-general/bfs-2002 Визуализатор алгоритма]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория: Алгоритмы и структуры данных]]&lt;br /&gt;
[[Категория: Кратчайшие пути в графах]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80588</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80588"/>
				<updated>2021-01-24T21:26:47Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
Преимущества использования синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам [[Обучение с частичным привлечением учителя|частичного обучения]] и [[Обучение с частичным привлечением учителя#Самообучение (Self Training)|самообучения]]. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL&amp;lt;ref name=&amp;quot;PIL&amp;quot;&amp;gt;Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры (см. рисунок 3).&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса (см. рисунок 8). Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA DRIVE ===&lt;br /&gt;
&lt;br /&gt;
Для обучения автономного транспорта компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80584</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80584"/>
				<updated>2021-01-24T21:23:58Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
Преимущества использования синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам [[Обучение с частичным привлечением учителя|частичного обучения]] и [[Обучение с частичным привлечением учителя#Самообучение (Self Training)|самообучения]]. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 1. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 1) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 2. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 2). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL&amp;lt;ref name=&amp;quot;PIL&amp;quot;&amp;gt;Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 3. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 3).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры (см. рисунок 4).&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 4. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 5. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 5). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 6. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 6), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 7. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 7). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 8). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 8. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 9. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса (см. рисунок 9). Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80581</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80581"/>
				<updated>2021-01-24T21:21:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
Преимущества использования синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 1. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 1) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 2. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 2). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL&amp;lt;ref name=&amp;quot;PIL&amp;quot;&amp;gt;Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 3. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 3).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры (см. рисунок 4).&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 4. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 5. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 5). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 6. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 6), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 7. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 7). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 8). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 8. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 9. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса (см. рисунок 9). Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80579</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80579"/>
				<updated>2021-01-24T21:15:46Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
Преимущества использования синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL&amp;lt;ref name=&amp;quot;PIL&amp;quot;&amp;gt;Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса. Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80578</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80578"/>
				<updated>2021-01-24T21:13:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства и недостатки ==&lt;br /&gt;
&lt;br /&gt;
Преимущества использования синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL&amp;lt;ref name=&amp;quot;PIL&amp;quot;&amp;gt;Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса. Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80577</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80577"/>
				<updated>2021-01-24T21:13:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства и недостатки ==&lt;br /&gt;
&lt;br /&gt;
Преимущества использования синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL&amp;lt;ref name=&amp;quot;PIL&amp;quot;&amp;gt;Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса. Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br clear=&amp;quot;both&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80576</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80576"/>
				<updated>2021-01-24T21:12:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства и недостатки ==&lt;br /&gt;
&lt;br /&gt;
Преимущества использования синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их, с помощью библиотеки PIL&amp;lt;ref name=&amp;quot;PIL&amp;quot;&amp;gt;Pillow — Pillow (PIL Fork) 8.1.0 Documentation — https://pillow.readthedocs.io/en/stable/ — Retrieved January 25, 2021&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса. Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80574</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80574"/>
				<updated>2021-01-24T21:06:51Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов [[Реидентификация|реидентификации]]&amp;lt;sup&amp;gt;[на 25.01.21 не создан]&amp;lt;/sup&amp;gt; — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса. Это позволяет решать задачу '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80569</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80569"/>
				<updated>2021-01-24T20:58:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Синтетические данные активно используются при обучении алгоритмов управления [[wikipedia:Self-driving car|автономным транспортом]]. Эти алгоритмы решают две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявляют окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принимают решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров. В обучении используется два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные. В самом деле, получить реальные данные для такой задачи — фотографию и её же искажённую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Также с помощью синтетических наборов данных можно упростить обучение алгоритмов [[Компьютерное зрение|компьютерного зрения]], решающих задачи [[Сегментация изображений|семантической сегментации]], [[Компьютерное зрение#Идентификация|поиска]] и [[Компьютерное зрение#Распознавание объектов|локализации]] объектов. В данном случае подходят наборы, в которых искомые объекты определённым образом наносятся на фоновое изображение. В частности, таким объектом может быть текст — тогда с помощью полученного набора может быть решена задача [[Распознавание текста на изображении|распознавания текста на изображении]].&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используются и для создания алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. В этом случае реальные данные собрать довольно сложно, потому что требуется найти много фотографий одних и тех же людей в разных позах, с разных ракурсов и в разной одежде.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Алгоритм TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются в алгоритмах [[Компьютерное зрение|компьютерного зрения]], в частности для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов реидентификации. Он представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80568</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80568"/>
				<updated>2021-01-24T20:45:58Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Nsychev переименовал страницу Участник:Nsychev/Синтетические наборы данных в Синтетические наборы данных без оставления перенаправления:…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA DRIVE ===&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80567</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80567"/>
				<updated>2021-01-24T20:41:22Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1100px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA DRIVE ===&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80566</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80566"/>
				<updated>2021-01-24T20:39:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. Иногда при обучении реальные данные не используются вовсе. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1200px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA DRIVE ===&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80565</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80565"/>
				<updated>2021-01-24T20:36:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: /* OmniSCV */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения. За центр сферы в этой системе координат принимается [[wikipedia:Cardinal point (optics)#Principal planes and points|оптический центр]].&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1200px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA DRIVE ===&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80564</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80564"/>
				<updated>2021-01-24T20:33:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них неизогнутый текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Алгоритм исключает из выбора неподходящие поверхности — очень маленькие, непропорциональные или ортогональные направлению съемки. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1200px|Рисунок 7. Процесс нанесения текста на изображение. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет; готовое изображение&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA DRIVE ===&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Synthtext-Generation-Process.png&amp;diff=80557</id>
		<title>Файл:Synthtext-Generation-Process.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Synthtext-Generation-Process.png&amp;diff=80557"/>
				<updated>2021-01-24T20:27:59Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Nsychev загрузил новую версию Файл:Synthtext-Generation-Process.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example from SynthText in the Wild dataset.&lt;br /&gt;
&lt;br /&gt;
Source: https://www.robots.ox.ac.uk/~vgg/data/scenetext/&lt;br /&gt;
&lt;br /&gt;
© 2016 Visual Geometry Group, Department of Engineering Science, University of Oxford&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80554</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80554"/>
				<updated>2021-01-24T20:18:02Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рисунок 7. Процесс подготовки фонового изображения. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== NVIDIA DRIVE ===&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80528</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80528"/>
				<updated>2021-01-24T17:11:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рисунок 7. Процесс подготовки фонового изображения. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80527</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80527"/>
				<updated>2021-01-24T17:02:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать [[wikipedia:Spherical coordinate system|сферические координаты]]: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рисунок 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рисунок 4. Пример из набора FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot; /&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рисунок 7. Процесс подготовки фонового изображения. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80513</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80513"/>
				<updated>2021-01-24T16:46:39Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. Довольно распространённым подходом является обучение сначала на большом наборе синтетических данных, а затем дообучение на небольшом наборе имеющихся реальных данных. При этом в тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют или их сбор невозможен (из-за большой длительности или дороговизны процесса), наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется набор, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный набор данных можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рисунок 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2021&amp;lt;/ref&amp;gt; и плагина UnrealCV&amp;lt;ref name=&amp;quot;uecv&amp;quot;&amp;gt;UnrealCV — https://unrealcv.org/ — Retrieved January 24, 2021&amp;lt;/ref&amp;gt;. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рисунке 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот набор данных также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге набор изображений включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рисунок 6. Пример изображения из набора SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;/&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (см. рисунок 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (см. рисунок 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рисунок 7. Процесс подготовки фонового изображения. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;/&amp;gt;.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рисунок 8. Образцы глаз, смотрящие в различных направлениях&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes], которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|400px|thumb|right|Рисунок 9. Примеры миров, сгенерированных NVIDIA DRIVE&amp;lt;ref name=&amp;quot;nvidia&amp;quot;&amp;gt;[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.&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref name=&amp;quot;nvidia&amp;quot; /&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (см. рисунок 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80509</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80509"/>
				<updated>2021-01-24T16:38:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах или медицинской информации. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
Достоинства синтетических данных:&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
В то же время, у синтетических данных есть и недостатки:&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рисунок 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рисунок 2. Фотография, сделанная широкоугольной камерой&amp;lt;ref&amp;gt;https://commons.wikimedia.org/wiki/File:Jefferson_Graham_on_Manhattan_Beach_Pier.jpg — Retrieved January 24, 2020&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — [[wikipedia:Equirectangular projection|равноугольные]] и [[wikipedia:Cylindrical perspective|цилиндрические]] панорамы, [[wikipedia:Fisheye lens|«рыбьи глаза»]] и [[wikipedia:Catadioptric system|катадиоптрические системы]], а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|400px|thumb|left|Рисунок 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;/&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рисунок 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (рис. 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс подготовки фонового изображения. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рис. 8. Образцы глаз, смотрящие в различных направлениях.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes]&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;, которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 9. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=80507</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=80507"/>
				<updated>2021-01-24T16:29:38Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя из этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рисунок 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;/&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рис. 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|200px|thumb|left|Рис. 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рис. 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (рис. 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс подготовки фонового изображения. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рис. 8. Образцы глаз, смотрящие в различных направлениях.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes]&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;, которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 9. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79515</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79515"/>
				<updated>2021-01-21T09:29:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рис. 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой.]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|200px|thumb|left|Рис. 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рис. 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild.]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (рис. 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс подготовки фонового изображения. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет.}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рис. 8. Образцы глаз, смотрящие в различных направлениях.]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes]&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;, которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 9. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79514</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79514"/>
				<updated>2021-01-21T09:28:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева направо: размытое изображение, исходное изображение, результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рис. 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|200px|thumb|left|Рис. 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рис. 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (рис. 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс подготовки фонового изображения. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рис. 8. Образцы глаз, смотрящие в различных направлениях]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes]&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;, которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 9. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79465</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79465"/>
				<updated>2021-01-21T00:10:35Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рис. 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|200px|thumb|left|Рис. 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рис. 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (рис. 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс подготовки фонового изображения Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:UnityEyes.png|200px|thumb|left|Рис. 8. Образцы глаз, смотрящие в различных направлениях]]&lt;br /&gt;
&lt;br /&gt;
=== UnityEyes ===&lt;br /&gt;
&lt;br /&gt;
Нередко на практике встречается задача '''окулографии''' (англ. gaze estimation) — определения направления взгляда человека по фотографии. Для решения этой задачи, как правило, необходим довольно большой объем тренировочных данных. В 2016 году была разработана утилита [https://www.cl.cam.ac.uk/research/rainbow/projects/unityeyes/ UnityEyes]&amp;lt;ref name=&amp;quot;unityeyes&amp;quot;&amp;gt;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 &amp;amp; Applications — 2016&amp;lt;/ref&amp;gt;, которая позволяет в реальном времени генерировать реалистичные изображения глаз, направленных в нужном направлении, показанные с требуемого ракурса.&lt;br /&gt;
&lt;br /&gt;
Изображения генерируются с помощью игрового движка Unity 5, доработанного авторами UnityEyes для значительного ускорения рендеринга. Используются 20 трёхмерных изображений головы людей различного возраста, с различным цветом кожи и формой глаз. Помимо этого, используются HDR-панорамы для получения естественного окружающего зеркального отблеска в глазах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 9. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 9) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:UnityEyes.png&amp;diff=79463</id>
		<title>Файл:UnityEyes.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:UnityEyes.png&amp;diff=79463"/>
				<updated>2021-01-20T23:50:01Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: UnityEyes Samples.

Source: 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 &amp;amp;…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UnityEyes Samples.&lt;br /&gt;
&lt;br /&gt;
Source: 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 &amp;amp; Applications — 2016&lt;br /&gt;
&lt;br /&gt;
© 2016 Wood, E., Baltrusaitis, T., Morency, L., Robinson, P., Bulling, A.&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79461</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79461"/>
				<updated>2021-01-20T23:13:01Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рис. 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|200px|thumb|left|Рис. 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рис. 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (рис. 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс подготовки фонового изображения Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 8. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 8) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79460</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79460"/>
				<updated>2021-01-20T23:11:00Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рис. 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|200px|thumb|left|Рис. 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рис. 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше (рис. 7). После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 8. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 8) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79459</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79459"/>
				<updated>2021-01-20T23:03:18Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рис. 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|200px|thumb|left|Рис. 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо (см. рис. 5), но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона (рис. 7). Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 8. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 8) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79458</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79458"/>
				<updated>2021-01-20T23:02:32Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. рис. 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Vc-clothes.png|200px|thumb|left|Рис. 5. Пример данных набора VC-Clothes. В первой строке — фон, в каждой из следующих — один и тот же человек в разной одежде.]]&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
Для создания набора была использована известная компьютерная игра Grand Theft Auto V. Эта игра поддерживает детальную настройку внешнего вида персонажей, произвольные параметры окружающей среды (освещение, угол обзора) и большое количество встроенных сцен — множество улиц, зданий и других мест. При генерации фиксируется маршрут каждого персонажа и позиции камер. Не со всех ракурсов распознаётся непосредственно лицо, но человек вполне может быть распознан по полу, возрасту, фигуре, причёске и другим характеристикам. В итоге датасет включает 512 персонажей, 4 сцены и в среднем 9 изображений для каждого персонажа и каждой сцены.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона (рис. 7). Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 8. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 8) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Vc-clothes.png&amp;diff=79457</id>
		<title>Файл:Vc-clothes.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Vc-clothes.png&amp;diff=79457"/>
				<updated>2021-01-20T22:49:59Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Samples of VC-Clothes.

Source: https://arxiv.org/pdf/2003.04070.pdf

© 2019 Fangbin Wan, Yang Wu, Xuelin Qian, Yanwei Fu, Fudan University
Apache License 2.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Samples of VC-Clothes.&lt;br /&gt;
&lt;br /&gt;
Source: https://arxiv.org/pdf/2003.04070.pdf&lt;br /&gt;
&lt;br /&gt;
© 2019 Fangbin Wan, Yang Wu, Xuelin Qian, Yanwei Fu, Fudan University&lt;br /&gt;
Apache License 2.0&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79456</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79456"/>
				<updated>2021-01-20T22:43:57Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Flyingchairs.png|200px|thumb|right|Рис 4. Пример из набора FlyingChairs.]]&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья, как на рис. 4). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
FlyingChairs строится следующим образом: авторы выбрали несколько сотен изображений с фотохостинга [https://flickr.com Flickr] из категорий «город», «ландшафт», «горы». Части этих изображений использовались в качестве фона. Далее на них накладывались стулья&amp;lt;ref name=&amp;quot;fc-chairs&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для каждого стула были представлены 62 различных угла обзора.&lt;br /&gt;
&lt;br /&gt;
С помощью двумерных аффинных преобразований сдвигается как фон, так и стулья — это позволяет эмулировать одновременно движение как стульев, так и «камеры». Авторы используют другой набор данных, MPI Sintel&amp;lt;ref name=&amp;quot;sintel&amp;quot;&amp;gt;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&amp;lt;/ref&amp;gt;, для получения информации об естественном распределении таких параметров, как начальные позиции объектов и параметры движения, и сохранении этого распределения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 6. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 6). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона (рис. 7). Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 7. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 8. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 8) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Flyingchairs.png&amp;diff=79453</id>
		<title>Файл:Flyingchairs.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Flyingchairs.png&amp;diff=79453"/>
				<updated>2021-01-20T21:58:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Example from Flying Chairs dataset.

Source: https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html

© 2017 E. Ilg, N. Mayer, T. Saikia, M. Keuper, A. Dosovitskiy, T. Brox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example from Flying Chairs dataset.&lt;br /&gt;
&lt;br /&gt;
Source: https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html&lt;br /&gt;
&lt;br /&gt;
© 2017 E. Ilg, N. Mayer, T. Saikia, M. Keuper, A. Dosovitskiy, T. Brox&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79451</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79451"/>
				<updated>2021-01-20T21:54:12Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно [[Генерация объектов|программно сгенерировать]].&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1). Для подготовки набора данных, который подошёл для обучения такого алгоритма, хватило [https://github.com/gardarandri/TextSharpener/blob/master/generator/GenImages.py тривиального скрипта] на Python, генерирующего случайные прямоугольники и надписи на них, а затем размывавшего их.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Рис. 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. рис. 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
Изображения этого набора данных генерируются с помощью графического движка Unreal Engine 4&amp;lt;ref name=&amp;quot;ue&amp;quot;&amp;gt;EpicGames. Unreal Engine 4 Documentation. — https://docs.unrealengine.com/en-US/index.html — Retrieved January 21, 2020&amp;lt;/ref&amp;gt; и плагина UnrealCV. Каждое преобразование задаётся несложной функцией, связывающей координаты плоскости исходного изображения и луча, исходящего из окружающей среды. Например, для равноугольной проекции удобнее всего использовать сферические координаты: &amp;lt;tex&amp;gt;&lt;br /&gt;
(\theta, \phi) = ((\frac{2x}{x_{max}}-1)\pi, (1/2 - \frac{y}{y_{max}})\pi)&amp;lt;/tex&amp;gt;, где &amp;lt;tex&amp;gt;(x, y)&amp;lt;/tex&amp;gt; — координаты пикселя, а &amp;lt;tex&amp;gt;(x_{max}, y_{max})&amp;lt;/tex&amp;gt; — разрешение изображения.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Omniscv-example.png|1580px|Рис 3. Примеры полученных панорам. Слева направо: равноугольная, цилиндрическая и нецентральная (non-central) проекция}}&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 3). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 4. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
[[Файл:Nvidia-drive-sample.png|200px|thumb|right|Рис 5. Примеры миров, сгенерированных NVIDIA DRIVE.]]&lt;br /&gt;
&lt;br /&gt;
== Другие применения ==&lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров (рис. 5) обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Omniscv-example.png&amp;diff=79450</id>
		<title>Файл:Omniscv-example.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Omniscv-example.png&amp;diff=79450"/>
				<updated>2021-01-20T21:50:33Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Example of projections generated by OmniSCV

Source: https://www.mdpi.com/1424-8220/20/7/2066/htm

© 2020 Instituto de Investigación en Ingeniería de Aragón, Universidad de Zaragoza&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example of projections generated by OmniSCV&lt;br /&gt;
&lt;br /&gt;
Source: https://www.mdpi.com/1424-8220/20/7/2066/htm&lt;br /&gt;
&lt;br /&gt;
© 2020 Instituto de Investigación en Ingeniería de Aragón, Universidad de Zaragoza&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Nvidia-drive-sample.png&amp;diff=79400</id>
		<title>Файл:Nvidia-drive-sample.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Nvidia-drive-sample.png&amp;diff=79400"/>
				<updated>2021-01-20T20:14:20Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Sample of NVIDIA DRIVE generated road situations.

Source: 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

© 2020 NVIDIA , O'Reill…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sample of NVIDIA DRIVE generated road situations.&lt;br /&gt;
&lt;br /&gt;
Source: 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&lt;br /&gt;
&lt;br /&gt;
© 2020 NVIDIA , O'Reilly Media, Inc.&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79071</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79071"/>
				<updated>2021-01-20T09:04:36Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 3). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1580px|Рис 4. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79070</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79070"/>
				<updated>2021-01-20T09:04:11Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 3). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1700px|Рис 4. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79069</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79069"/>
				<updated>2021-01-20T09:02:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 3). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
{{wide image|Synthtext-Generation-Process.png|1024px|Рис 4. Процесс генерации набора. Слева направо: исходное изображение; карта глубины (светлее — дальше); разбиение на поверхности; области для нанесения текста и случайно выбранный для них цвет}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Wide_image&amp;diff=79068</id>
		<title>Шаблон:Wide image</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Wide_image&amp;diff=79068"/>
				<updated>2021-01-20T08:59:15Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;thumb {{#switch:{{{5}}}&lt;br /&gt;
|left=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tleft&amp;quot; style=&amp;quot;&lt;br /&gt;
|right=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tright&amp;quot; style=&amp;quot;&lt;br /&gt;
|#default=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tnone&amp;quot; style=&amp;quot;margin-left: auto; margin-right:auto;&lt;br /&gt;
}} width:{{{4|99%}}};&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumbinner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;[[File:{{{1}}}|{{{2}}}|alt={{{alt|}}}|{{#switch:{{{3}}}&lt;br /&gt;
|thumb&lt;br /&gt;
|thumbnail&lt;br /&gt;
|frame&lt;br /&gt;
|border={{{1}}}&lt;br /&gt;
|#default={{{3|}}}}}]]&amp;lt;/div&amp;gt;{{ #if: {{{3|}}}|&amp;lt;div class=&amp;quot;thumbcaption&amp;quot;&amp;gt;{{{3}}}&amp;lt;/div&amp;gt;|}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- If you copy this template, you need to add the overflowx and overflowy CSS classes to your global CSS for Internet Explorer users. On the English Wikipedia, these are conditionally loaded by [[MediaWiki:Common.js]] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Wide_image&amp;diff=79067</id>
		<title>Шаблон:Wide image</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD:Wide_image&amp;diff=79067"/>
				<updated>2021-01-20T08:58:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Новая страница: «&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;thumb {{#switch:{{{5}}} |left=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tleft&amp;quot; style=&amp;quot; |right=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tright&amp;quot; style=&amp;quot; |#default=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tnone…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;thumb {{#switch:{{{5}}}&lt;br /&gt;
|left=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tleft&amp;quot; style=&amp;quot;&lt;br /&gt;
|right=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tright&amp;quot; style=&amp;quot;&lt;br /&gt;
|#default=&amp;lt;nowiki&amp;gt; &amp;lt;/nowiki&amp;gt;tnone&amp;quot; style=&amp;quot;margin-left: auto; margin-right:auto;&lt;br /&gt;
}} width:{{{4|99%}}};&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumbinner&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;overflowbugx&amp;quot; style=&amp;quot;overflow:auto;&amp;quot;&amp;gt;[[File:{{{1}}}|{{{2}}}|alt={{{alt|}}}|{{#switch:{{{3}}}&lt;br /&gt;
|thumb&lt;br /&gt;
|thumbnail&lt;br /&gt;
|frame&lt;br /&gt;
|border={{{1}}}&lt;br /&gt;
|#default={{{3|}}}}}]]&amp;lt;/div&amp;gt;{{ #if: {{{3|}}}|&amp;lt;div class=&amp;quot;thumbcaption&amp;quot;&amp;gt;{{Magnify icon|link=File:{{{1}}} }}&amp;lt;!-- --&amp;gt;{{{3}}}&amp;lt;/div&amp;gt;|}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- If you copy this template, you need to add the overflowx and overflowy CSS classes to your global CSS for Internet Explorer users. On the English Wikipedia, these are conditionally loaded by [[MediaWiki:Common.js]] --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Add categories and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Synthtext-Generation-Process.png&amp;diff=79066</id>
		<title>Файл:Synthtext-Generation-Process.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Synthtext-Generation-Process.png&amp;diff=79066"/>
				<updated>2021-01-20T08:54:01Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Example from SynthText in the Wild dataset.

Source: https://www.robots.ox.ac.uk/~vgg/data/scenetext/

© 2016 Visual Geometry Group, Department of Engineering Science, University of Oxford&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example from SynthText in the Wild dataset.&lt;br /&gt;
&lt;br /&gt;
Source: https://www.robots.ox.ac.uk/~vgg/data/scenetext/&lt;br /&gt;
&lt;br /&gt;
© 2016 Visual Geometry Group, Department of Engineering Science, University of Oxford&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79065</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79065"/>
				<updated>2021-01-20T08:47:46Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 3). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79064</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79064"/>
				<updated>2021-01-20T08:47:16Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них текст из определённого набора (рис. 3). Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
Чтобы полученный набор выглядел натурально, применяется следующий подход&amp;lt;ref name=&amp;quot;SynthText-paper&amp;quot;&amp;gt;Gupta A., Vedaldi A., Zisseman A. Synthetic Data for Text Localisation in Natural Images // IEEE Conference on Computer Vision and Pattern Recognition — 2016&amp;lt;/ref&amp;gt;. Сначала изображение делится на несколько областей в зависимости от значений соседних цветов и текстуры. Затем с помощью [[Сверточные нейронные сети|CNN]] строится карта глубины — определяется, какая точка ближе к камере, а какая дальше. После этого можно по каждой области определить нормаль к поверхности. Наконец, на основе цвета области выбирается цвет текста (и иногда — контура), случайным образом выбирается шрифт, после чего текст «накладывается» на изображение с помощью геометрических трансформаций и преобразования Пуассона. Этот процесс повторяется несколько раз, чтобы наложить сразу несколько текстовых объектов на изображение.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=79063</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=79063"/>
				<updated>2021-01-20T08:35:47Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это программно сгенерированные данные, используемые в прикладных задачах (в том числе в машинном обучении).&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила создания и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по [[Алгоритмы сэмплирования|определённому алгоритму]]&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно сравнить оценки модели и истинные параметры, и исходя их этого судить о качестве полученных выборочных оценок параметров.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания NVIDIA разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция после восприятия (англ. ''postperception simulation'') и сквозная симуляция (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Рис 1. Пример работы TextSharpener. Слева — размытое изображение, посередине — исходное, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Набор данных FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Набор данных VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
=== SynthText in the Wild ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:SynthText-in-the-Wild.png|200px|thumb|right|Рис. 3. Пример изображения из набора SynthText in the Wild]]&lt;br /&gt;
&lt;br /&gt;
Набор данных SynthText in the Wild&amp;lt;ref name=&amp;quot;SynthText&amp;quot;&amp;gt;Visual Geometry Group - University of Oxford — https://www.robots.ox.ac.uk/~vgg/data/scenetext/ — Retrieved January 19, 2020&amp;lt;/ref&amp;gt; разработан для обучения алгоритмов [[Распознавание текста на изображении|распознавания текста на изображении]]. Он берёт обычные изображения и накладывает на них тексты из определённого набора. Набор сопровождается подробной аннотацией: для каждого изображения указаны используемые фразы, а также координаты каждого слова и символа на изображении.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SynthText-in-the-Wild.png&amp;diff=79062</id>
		<title>Файл:SynthText-in-the-Wild.png</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:SynthText-in-the-Wild.png&amp;diff=79062"/>
				<updated>2021-01-20T08:32:39Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Example from SynthText in the Wild dataset.

Source: https://www.robots.ox.ac.uk/~vgg/data/scenetext/

© 2016 Visual Geometry Group, Department of Engineering Science, University of Oxford&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Example from SynthText in the Wild dataset.&lt;br /&gt;
&lt;br /&gt;
Source: https://www.robots.ox.ac.uk/~vgg/data/scenetext/&lt;br /&gt;
&lt;br /&gt;
© 2016 Visual Geometry Group, Department of Engineering Science, University of Oxford&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=77609</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=77609"/>
				<updated>2021-01-11T21:59:18Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это наборы данных для применения в прикладных задачах (в том числе в машинном обучении), которые не были получены исключительно путём прямого сбора и измерений.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила их генерации и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по определённому алгоритму&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно судить о качестве выборочных оценок модели на параметры распределений путём сравнения их с истинными параметрами.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания nVidia разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция объектов (англ. ''postperception simulation'') и симуляция мира (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Изображение 1. Пример работы TextSharpener. Слева — исходное изображение, посередине — размытое, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Датасет FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Датасет VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация объектов]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=77606</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=77606"/>
				<updated>2021-01-11T21:48:35Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это наборы данных для применения в прикладных задачах (в том числе в машинном обучении), которые не были получены исключительно путём прямого сбора и измерений.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила их генерации и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по определённому алгоритму&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно судить о качестве выборочных оценок модели на параметры распределений путём сравнения их с истинными параметрами.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания nVidia разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция объектов (англ. ''postperception simulation'') и симуляция мира (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Изображение 1. Пример работы TextSharpener. Слева — исходное изображение, посередине — размытое, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Датасет FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Датасет VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Источники ==&lt;br /&gt;
&lt;br /&gt;
* Synthetic data — https://en.wikipedia.org/wiki/Synthetic_data — Retrieved January 11, 2021&lt;br /&gt;
* McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация данных]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://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&amp;diff=77605</id>
		<title>Синтетические наборы данных</title>
		<link rel="alternate" type="text/html" href="http://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&amp;diff=77605"/>
				<updated>2021-01-11T21:45:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Определение&lt;br /&gt;
|definition='''Синтетические данные''' — это наборы данных для применения в прикладных задачах (в том числе в машинном обучении), которые не были получены исключительно путём прямого сбора и измерений&amp;lt;ref name=&amp;quot;mcgrawhilldict&amp;quot;&amp;gt;McGraw - Hill dictionary of scientific and technical terms / Под ред. Sybil P. Parker. - 3-е изд. - New York: McGraw - Hill book co., 1984&amp;lt;/ref&amp;gt;.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Нередко возникают ситуации, когда получение реальных данных сложно или дорого, но при этом известны требования к таким объектам, правила их генерации и законы распределения. Как правило, это происходит, когда речь идёт о чувствительных персональных данных — например, информации о банковских счетах. В таких случаях необходимые наборы данных можно программно сгенерировать.&lt;br /&gt;
&lt;br /&gt;
== Применение ==&lt;br /&gt;
&lt;br /&gt;
Сгенерированные объекты можно использовать в [[Общие понятия#Классификация задач машинного обучения|задаче обучения с учителем]] для расширения обучающего множества, сведя её к задачам частичного обучения и самообучения. В тестовых множествах использовать синтетические наборы данных нельзя: в них должны быть только реальные объекты.&lt;br /&gt;
&lt;br /&gt;
Синтетические данные используют не только при недоступности реальных, но и для того, чтобы изменить распределение классов в уже имеющихся данных, дополнив их по определённому алгоритму&amp;lt;ref name=&amp;quot;wiki:oversampling&amp;quot;&amp;gt;Oversampling and undersampling in data analysis — https://en.wikipedia.org/wiki/Oversampling_and_undersampling_in_data_analysis — Retrieved January 11, 2021&amp;lt;/ref&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
При генерации синтетических наборов данных необходимо учитывать специфику каждого конкретного случая, общего алгоритма, подходящего для всех случаев не существует.  Как правило, общие алгоритмы наподобие добавления средних значений оказываются нерепрезентативными.&lt;br /&gt;
&lt;br /&gt;
== Виды генерации ==&lt;br /&gt;
&lt;br /&gt;
Существует два основных подхода к генерации синтетических наборов данных.&lt;br /&gt;
&lt;br /&gt;
В случае, когда реальные данные отсутствуют, наборы генерируются полностью случайным образом на основе некой статистической модели, которая учитывает законы распределения реальных данных. Однако, такой подход не всегда оправдывает себя из-за того, что синтетические данные могут не учитывать весь спектр возможных случаев, и полученная с помощью такого набора модель может давать непредсказуемые результаты в крайних случаях.&lt;br /&gt;
&lt;br /&gt;
Также применяется [[wikipedia:Data_augmentation|аугментация]] (англ. augmentation) — генерация наборов на основе имеющихся реальных данных. К имеющимся данным применяются различные способы искажения: например, для изображений могут использоваться различные геометрические преобразования, искажения цвета, кадрирование, поворот, добавление шума и иные. Для числовых данных могут использоваться такие искажения, как добавление объектов с усреднёнными значениями, смешивание с объектами из другого распределения, добавление случайных выбросов.&lt;br /&gt;
&lt;br /&gt;
== Достоинства ==&lt;br /&gt;
&lt;br /&gt;
* Возможность генерации наборов данных практически любого размера.&lt;br /&gt;
&lt;br /&gt;
* Известность параметров генерации, а значит, и генеральной совокупности: можно судить о качестве выборочных оценок модели на параметры распределений путём сравнения их с истинными параметрами.&lt;br /&gt;
&lt;br /&gt;
* Ускорение и удешевление процесса разработки: не нужно ждать, пока будет собран и размечен достаточный объём реальных данных.&lt;br /&gt;
&lt;br /&gt;
* Повышение доступности больших объёмов данных.&lt;br /&gt;
&lt;br /&gt;
== Недостатки ==&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсального способа генерации, применимого для любых задач: в каждом конкретном случае необходимо дополнительное исследование требований, накладываемых на генерируемые данные.&lt;br /&gt;
&lt;br /&gt;
* Отсутствие универсальных метрик качества и применимости генерируемых данных.&lt;br /&gt;
&lt;br /&gt;
* Излишняя «стерильность» получаемых данных: в общем случае неизвестно, какими могут быть выбросы в реальных данных&amp;lt;ref&amp;gt;Если выбросы известны, то проблема может быть решена путём настройки параметров генератора.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Примеры ==&lt;br /&gt;
&lt;br /&gt;
=== Автономный транспорт === &lt;br /&gt;
&lt;br /&gt;
Автономный транспорт — это вид транспорта, управление которым осуществляется без участия человека при помощи оптических датчиков, систем геолокации и компьютерных алгоритмов&amp;lt;ref&amp;gt;Self-driving car — https://en.wikipedia.org/wiki/Self-driving_car — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Алгоритму управления транспортным средством нужно решить две задачи: сначала [[Обнаружение и обработка дорожных знаков и пешеходов|выявить окружающие объекты]] — машины, дорожные знаки, пешеходов, а затем принять решение о направлении и скорости дальнейшего движения. При реализации таких алгоритмов наиболее важно поведение транспортного средства в критических ситуациях, таких как помехи на дороге или некорректные показания сенсоров — от этого могут зависеть жизни людей. В реальных данных же, наоборот, в основном присутствуют штатные ситуации.&lt;br /&gt;
&lt;br /&gt;
Для решения этой проблемы компания nVidia разработала платформу NVIDIA DRIVE Constellation&amp;lt;ref&amp;gt;[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.&amp;lt;/ref&amp;gt;, которая состоит из двух серверов. Один из них исполняет роль обучаемого транспортного средства, а второй непрерывно генерирует для первого различные «миниатюрные миры», включающие в себя симуляцию вывода с камеры, радара и лидаров.&lt;br /&gt;
&lt;br /&gt;
В обучении компания использует два режима — симуляция объектов (англ. ''postperception simulation'') и симуляция мира (англ. ''end-to-end simulation''). В режиме симуляции объектов из сгенерированных миров обучаемому алгоритму передаётся список объектов и их подробное описание, в свою очередь алгоритм должен выбрать дальнейшие действия автомобиля. В режиме симуляции мира на вход алгоритму подаются показания датчиков из сгенерированного мира, и алгоритм должен также распознать с помощью этих показаний присутствующие вокруг объекты и их характеристики. Этот режим полезен тем, что он более похож на реальный мир и учитывает помехи, возникающие на сенсорах.&lt;br /&gt;
&lt;br /&gt;
=== TextSharpener ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:TextSharpener-Identity.png|200px|thumb|right|Изображение 1. Пример работы TextSharpener. Слева — исходное изображение, посередине — размытое, справа — результат работы алгоритма.]]&lt;br /&gt;
&lt;br /&gt;
Одно из самых наглядных применений аугментации данных — алгоритмы восстановления изображений. Для работы таких алгоритмов исходный набор изображений расширяется их копиями, к которым применяются некие преобразования из фиксированного набора. На основе полученных изображений генерируется датасет, в котором входными данными считаются полученные изображения, а целевыми — исходные.&lt;br /&gt;
&lt;br /&gt;
В самом деле, получить реальные данные для такой задачи — фотографию и её же нечеткую копию — довольно затруднительно, а применение таких преобразований довольно легко автоматизируется. Таким образом, если исходные изображения достаточно хорошо описывали источник данных, то полученный датасет можно применять для обучения алгоритма восстановления изображений, устраняющего применённые преобразования.&lt;br /&gt;
&lt;br /&gt;
Один из известных алгоритмов такого рода — TextSharpener&amp;lt;ref name=&amp;quot;TextSharpener&amp;quot;&amp;gt;Unblurring images of text with convolutional neural networks — https://gardarandri.github.io/TextSharpener/ — Retrieved January 8, 2021&amp;lt;/ref&amp;gt;. Этот алгоритм, разработанный в Университете Исландии и основанный на [[Сверточные нейронные сети|свёрточной нейронной сети]], позволяет убирать размытие текста на изображениях (см. изображение 1).&lt;br /&gt;
&lt;br /&gt;
=== OmniSCV ===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Jefferson_Graham_on_Manhattan_Beach_Pier.jpeg|200px|thumb|left|Изображение 2. Фотография, сделанная широкоугольной камерой]]&lt;br /&gt;
&lt;br /&gt;
Нередко различные устройства оснащаются широкоугольными и панорамными камерами с углом обзора до 360°. Изображения, получаемые с таких камер, обладают довольно сильными искажениями (см. изображение 2).&lt;br /&gt;
Генератор изображений комнат OmniSCV&amp;lt;ref name=&amp;quot;OmniSCV&amp;quot;&amp;gt;OmniSCV — https://www.mdpi.com/1424-8220/20/7/2066/htm — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; используется при разработке роботов для обучения алгоритмов [[Компьютерное зрение|компьютерного зрения]] для устранения искажений широкоугольных объективов и неидеальных условий освещённости.&lt;br /&gt;
&lt;br /&gt;
Генератор умеет симулировать различные варианты объективов — равноугольные и цилиндрические панорамы, «рыбьи глаза» и катадиоптрические системы, а также сопровождать сгенерированные изображения комнат вспомогательной информацией об окружающем пространстве и параметрах используемой камеры.&lt;br /&gt;
&lt;br /&gt;
=== FlyingChairs ===&lt;br /&gt;
&lt;br /&gt;
Датасет FlyingChairs&amp;lt;ref name=&amp;quot;FlyingChairs&amp;quot;&amp;gt;Computer Vision Group, Freiburg — https://lmb.informatik.uni-freiburg.de/resources/datasets/FlyingChairs.en.html — Retrieved January 11, 2021&amp;lt;/ref&amp;gt; и его производные представляют из себя наборы изображений, на которые искусственно добавлены предметы в движении (например, стулья). Эти наборы данных применяются при решении таких задач компьютерного зрения, как [[Сегментация изображений|семантическая сегментация]], [[Компьютерное зрение#Идентификация|поиск]] и [[Компьютерное зрение#Распознавание объектов|локализация]] объекта, а также более сложных, например, для поиска движения.&lt;br /&gt;
&lt;br /&gt;
=== VC-Clothes ===&lt;br /&gt;
&lt;br /&gt;
Датасет VC-Clothes&amp;lt;ref name=&amp;quot;VC-Clothes&amp;quot;&amp;gt;VC-Clothes — https://wanfb.github.io/dataset.html — Retrieved January 11, 2020&amp;lt;/ref&amp;gt; создан для разработки алгоритмов '''реидентификации''' — определения, действительно ли на двух изображениях один и тот же человек. Эти алгоритмы могут использоваться для нахождения людей на записях с камер, на пограничных пунктах и так далее. VC-Clothes представляет из себя сгенерированные изображения одинаковых людей в разной одежде и на разном фоне. Помимо реидентификации, этот датасет также может быть использован для решения задачи семантической [[Сегментация изображений|сегментации]], для отделения пикселей, соответствующих одежде, от пикселей, соответствующих лицу персонажа.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
&lt;br /&gt;
* [[Автоматическое машинное обучение]]&lt;br /&gt;
* [[Генерация объектов]]&lt;br /&gt;
* [[Переобучение]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория: Машинное обучение]]&lt;br /&gt;
[[Категория: Генерация данных]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2&amp;diff=77604</id>
		<title>Категория:Генерация объектов</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2&amp;diff=77604"/>
				<updated>2021-01-11T21:44:13Z</updated>
		
		<summary type="html">&lt;p&gt;Nsychev: Nsychev переименовал страницу Категория:Генерация данных в Категория:Генерация объектов без оставления перенаправления: Ошибка&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Категория: Машинное обучение]]&lt;/div&gt;</summary>
		<author><name>Nsychev</name></author>	</entry>

	</feed>