# data[].attributes.headline
Создание фейковых видео =)

# data[].attributes.subject
Создание фейковых видео =)

# data[].attributes.attachment_link.readable_text
пример работы First Order Motion Model

Можно ли из одной фотографии сделать целый фильм? А записав движения одного человека, заменить его на другого в видео? Безусловно, ответ на эти вопросы, крайне важен для таких сфер как кинематограф, фотография, разработка компьютерных игр. Решением может стать цифровая обработка фотографии с помощью специализированного ПО. Задача, о которой идет речь, среди специалистов в этой области называется задачей автоматического синтеза видео или анимации изображения.

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

Сейчас, в большинстве сфер, анимация изображений осуществляется с помощью инструментов компьютерной графики. Для этого подхода требуются дополнительные знания об объекте, который мы хотим анимировать - обычно необходима его 3D модель (как сейчас это работает в кино индустрии можно почитать здесь). Большинство последних решений рассматриваемой задачи основывается на глубоком обучении моделей, в основе которых лежат генеративно-состязательные нейросети (GAN) и вариационные автоэнкодеры (VAE). Данные модели обычно используют предобученные модули для поиска ключевых точек объектов на изображении. Главная проблема такого подхода - данные модули способны распознавать только объекты, на которых они были обучены.

Как же решить описанную задачу для произвольных объектов, находящихся в кадре? Один из способов предложен в статье " First Order Motion Model for Image Animation ". Авторы предлагают свою модель нейросети - First Order Motion Model, которая решает задачу анимации изображения без предобучения на анимируемом объекте. Обучившись на множестве видеороликов, изображающих объекты одной категории (например, лица, человеческие тела), разработанная авторами сеть позволяет анимировать все объекты, относящиеся к данной категории.

Подробнее разберемся как это работает...

Особенности решения

Для моделирования сложных движений используется набор энкодеров ключевых элементов объекта, обученных без учителя и локальные аффинные преобразования.

Для исключения из рассмотрения частей объекта, не видных на исходном изображении, применяется маска перекрытия (occlusion map). Так как эти части отсутствуют на изображении они должны быть сгенерированы нейросетью самостоятельно. Авторы также расширяют функцию эквивариантных потерь, используемую для обучения детектора ключевых точек, с целью улучшения оценки афинных преобразований.

Общая схема

Фреймворк состоит из двух основных модулей: модуля оценки движения и модуля генерации изображения. Модуль оценки движения предназначен для предсказания поля движения из кадра
видео в исходное изображение . Поле движения позже используется для выравнивания ключевых точек объектов из кадра в соответствие с позой этих объектов в кадре .

На вход детектору ключевых точек подаётся изображение и кадр из видео. Этот детектор извлекает представление движения первого порядка, состоящего из разреженных ключевых точек и локальных аффинных преобразований относительно абстрактного кадра (системы отсчета) . Сеть переноса движения использует такое представление движения для создания обратного оптического потока из в и карту перекрытия . Исходное изображение и выходные данные сети переноса движения используются модулем генерации изображения для визуализации целевого изображения.

Далее рассмотрим особенности данного решения более подробно.

Локальные аффинные преобразования для приближения движения

Модуль оценки движения оценивает обратный оптический поток от движущегося кадра до исходного кадра . Авторы аппроксимируют разложением в ряд Тейлора в окрестности ключевых точек. Предполагается, что существует абстрактный кадр (система отсчета), поэтому оценка выражается через оценки и . Более того, учитывая кадр результата , мы оцениваем каждое преобразование в окрестности обученных ключевых точек. Рассмотрим разложение в ряд Тейлора в ключевых точках , где обозначают координаты ключевых точек в .

Получаем:

Чтобы оценить , предполагаем, что локально биективен в окрестности каждой ключевой точки.

Итого:

Предсказатель ключевых точек выдает и . Авторы используют стандартную архитектуру U-Net, которая оценивает тепловых карт, по одной для каждой ключевой точки.
Последний слой декодера использует softmax для предсказания тепловых карт, которые могут интерпретироваться как карты достоверности обнаружения ключевых точек.

Авторы используют сверточную нейросеть для оценки с помощью в ключевых точках (здесь координаты ключевых точек обозначили через ), и исходный кадр . Важно, что параметры , такие как края или текстура, выровнены попиксельно в соответствии с , а не с . Для того чтобы входные данные были уже выровнены с , мы деформируем исходные кадры и получаем преобразованных изображений ( ), каждое из которых выровнено относительно в окрестности ключевой точки. Тепловые карты и преобразованные изображения объединяются и обрабатываются в U-Net.
выражается формулой:

Здесь - маска для выделения окрестности контрольной точки для которой происходит это преобразование ( - для добавления фона) и выражается формулой:

Генерация изображения

Напомню, что исходное изображение не выровнено попиксельно с создаваемым изображением . Чтобы справиться с этим, авторы используют стратегию деформации объекта. После двух down-sampling блоков мы получаем карту объектов . Затем мы деформируем в соответствии c . При наличии перекрытий в , оптического потока может быть недостаточно для генерации . Здесь вводится понятие - карта перекрытий , чтобы пометить области карты объектов, которые должны быть дорисованы, потому что они отсутствуют на изображении . Новая карта объектов выглядит так:

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

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

Функции потерь

Сеть тренируется непрерывно, комбинируя несколько функций потерь. Используется reconstruction loss, основанная на перцептивной функции потерь Джонсона. В качестве ключевой функции потерь для движений в кадре применяется пред-обученная сеть VGG-19. Формула reconstruction loss представлена ниже:

- восстановленный кадр, - кадр с исходным движением, - i-ый элемент канала, извлеченный из конкретного слоя VGG-19, - количество каналов элементов в этом слое.

Наложение ограничения эквивариантности

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

Авторы предполагают, что изображение претерпевает пространственную деформацию , которая может быть как аффинным преобразованием, так и thin plane spline. После этой деформации мы получаем новое изображение . Применяя расширенную оценку движения к обоим изображениям, получаем набор локальных аппроксимаций для и
. Cтандартное ограничение эквивариантности записывается так:

После разложения в ряд Тейлора обеих частей уравнения мы получаем следующие ограничения (здесь - единичная квадратная матрица):

Для ограничения положений ключевых точек используется функция . Авторы используют равные веса при объединении функций потерь во всех экспериментах, так как модель не чувствительна к относительным весам reconstruction loss и 2х эквивариантных функций потерь.

Анимация

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

Важно заметить, что в связи с этим возникает ограничение - объекты на кадрах и должны иметь похожие позы.

Модель ставит рекорды!

Модель обучалась и тестировалась на 4 различных наборах данных:

1. VoxCeleb - датасет лиц из 22496 видео, взятых из YouTube;

2. UvA-Nemo - датасет для анализа лиц, состоящий из 1240 видео;

3. BAIR robot pushing - датасет, состоящий из видео, собранных роботизированной рукой Сойера, которая кладет разные предметы на стол. В нем 42880 обучающих и 128 тестовых видео.

4. 280 TaiChi видео из YouTube.

Результаты работы сравнивались с X2Face и Monkey-Net, так как они являются единственными существующими решениями для анимации изображений без предварительного моделирования.

Как видно из таблицы, First Order Motion модель превосходит другие подходы по всем показателям.

Долгожданные примеры

Mgif

Fashion

А теперь попробуйте сами! Это совсем просто, все подготовлено здесь.

# data[].attributes.attachment_link.title
Дипфейк видео по одному кадру

# data[].attributes.attachment_link.description
пример работы First Order Motion Model Можно ли из одной фотографии сделать целый фильм? А записав движения одного человека, заменить его на другого в видео? Безусловно, ответ на эти вопросы, крайне важен для таких сфер как кинематограф, фотография, разработка компьютерных игр. Решением может стать цифровая обработка фотографии с помощью специализированного ПО.

# data[].attributes.headline
Сжатие 3D анимаций

# data[].attributes.subject
Сжатие 3D анимаций

# data[].attributes.attachment_link.readable_text
0:00 / 4:35•Watch full video

# data[].attributes.attachment_link.title
3D Mesh Animation Compression based on Adaptive Spatio-temporal Segmentation (I3D'19)

# data[].attributes.headline
решение задач

# data[].attributes.subject
решение задач

# data[].attributes.body
https://urok.1sept.ru/articles/590802

# data[].attributes.attachment_link.provider_name
Открытый урок

# data[].attributes.attachment_link.authors[].name
Подушкина Ольга Юрьевна, Издательский дом «Первое сентября»

# data[].attributes.attachment_link.title
Решение задач с помощью аффинных преобразований

# data[].attributes.attachment_link.description
Современный учитель должен учить ученика так, чтобы сформировать единый взгляд на действительность и вооружить общими (универсальными) методами познания этой действительности. Применение аффинных преобразований в геометрии как раз и есть такой универсальный метод. Он позволяет ученику обобщать многи…

# data[].attributes.headline
Кадастровые карты

# data[].attributes.subject
Кадастровые карты

# data[].attributes.attachment_caption
применение аффинных преобразований трёхмерного пространства для расчёта навигационных параметров гироскопических приборов

# data[].attributes.headline
применение аффинных преобразований трёхмерного пространства для расчёта навигационных параметров гироскопических приборов

# data[].attributes.subject
применение аффинных преобразований трёхмерного пространства для расчёта навигационных параметров гироскопических приборов

# data[].attributes.headline
Оптика. Преломление света и тд.

# data[].attributes.subject
Оптика. Преломление света и тд.

# data[].attributes.body
https://ru.wikipedia.org/wiki/%D0%9E%D0%BF%D1%82%D0%B8%D0%BA%D0%B0

# data[].attributes.headline
для решения задач на аффинные свойства фигур и для классификации линий и поверхностей 2-го порядка

# data[].attributes.subject
для решения задач на аффинные свойства фигур и для классификации линий и поверхностей 2-го порядка

# data[].attributes.body
https://scask.ru/g_book_math_al_1.php?id=93

# data[].attributes.attachment_link.readable_text
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

Макеты страниц

Важнейшие применения аффинных преобразований

1) Применение в геометрии для решения задач на аффинные свойства фигур, т. е. такие свойства, которые сохраняются при аффинных преобразованиях. Теорема о диаметрах эллипса и задача об описанном треугольнике были примерами таких задач. Для решения подобных задач аффинно преобразуют фигуру в какую-нибудь более простую, на ней обнаруживают искомое свойство и затем возвращаются к исходной фигуре.

2) Применение в аналитической геометрии для классификации линий и поверхностей 2-го порядка. Дело в том, что, как можно доказать, различные эллипсы родственны друг другу в том смысле, что получаются друг из друга аффинными преобразованиями (affinis собственно и значит по-латински родственный). Также и все гиперболы аффинны друг другу и все параболы аффинны друг другу. Но эллипс в гиперболу или параболу или гипербола в параболу уже не могут быть превращены ни при каком аффинном преобразовании, т. е. они аффинно друг другу не родственны. Естественно разбить все линии 2-го порядка на аффинные классы аффинно родственных друг другу линий. Оказывается, что приведение уравнения к каноническому виду как раз и дает эту классификацию, т. е. что аффинных классов линий 2-го порядка Девять. (Мы не будем входить в подробности того, почему мнимые эллипсы и пары мнимых параллельных прямых относят к разным аффинным классам. Ни в том, ни в другом случае кривых на плоскости, собственно говоря, нет. Речь идет уже об алгебраических свойствах самого уравнения.)

Аналогично классификация поверхностей 2-го порядка по их каноническим уравнениям на 17 видов есть также аффинная классификация.

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

Поясним, о какой совокупности прямых мы здесь говорим. Через любую точку А прямой а можно провести плоскость Р, содержащую прямую и плоскость содержащую прямую с. Эти плоскости Р и пересекутся по той единственной прямой которая проходит через точку А прямой а и пересекает прямые b и с.

Рис. 72.

Рис. 73.

Проводя такие прямые через любую точку прямой а, мы получим совокупность всех прямых пространства, из которых каждая пересекает все три заданные прямые о, и с. Эта совокупность прямых образует некоторую поверхность. Заметим, что всякий заданный однополостный гиперболоид можно получить таким способом, стоит лишь за прямые и с взять три разные прямолинейные образующие одного семейства (рис. 73), а за прямые все образующие другого семейства. Пусть, наоборот, даны три какие угодно попарно скрещивающиеся прямые пространства , одновременно не параллельные одной и той же плоскости. Тогда, как можно показать, они всегда суть прямые трех попарно не имеющих общих точек ребер некоторого параллелепипеда (рис. 74). Построив так параллелепипеды для заданных прямых и для трех образующих одного и того же семейства какого угодно однополостного гиперболоида, сделаем то аффинное преобразование пространства, которое преобразует параллелепипед в параллелепипед ; оно, очевидно, преобразует этот гиперболоид в рассматриваемую поверхность. Но в силу аффинной классификации поверхностей

2-го порядка аффинный образ однополостного гиперболоида есть снова однополостный гиперболоид.

3) Применение к теории непрерывных преобразований сплошной среды, например в теории упругости, в теории течения жидкости, в теории электрического или магнитного поля и т. д. Очень малые элементы рассматриваемой сплошной среды преобразуются «почти» аффинно. Как говорят, «в малом преобразование линейно» (линейными называются выражения 1-й степени, а в следующем пункте мы увидим, что в аналитической геометрии формулы аффинных преобразований именно 1-й степени).

Рис. 74.

Рис. 75.

Рис. 76.

Это видно на рис. 75. На прямых крупной квадратной сетки ясно заметно их искривление, расхождение «веером» и т. д. Для небольшого же кусочка весьма густой квадратной сетки все это уже весьма мало сказывается, и он преобразуется «почти» в сетку равных параллелограмов. Аналогичная картина получается и в пространстве (рис. 76). В силу того, что вснкое аффинное преобразование пространства сводится к движению и трем взаимно перпендикулярным «сжатиям», отсюда следует, что элемент тела при упругой его деформации, во-первых, передвигается, как жесткое тело, и, кроме того, подвергается трем взаимно перпендикулярным «сжатиям».

Оглавление

ПРЕДИСЛОВИЕ
Глава I. ОБЩИЙ ВЗГЛЯД НА МАТЕМАТИКУ

§ 1. ОСОБЕННОСТИ МАТЕМАТИКИ

§ 2. АРИФМЕТИКА

§ 3. ГЕОМЕТРИЯ

§ 4. АРИФМЕТИКА И ГЕОМЕТРИЯ

§ 5. ЭПОХА ЭЛЕМЕНТАРНОЙ МАТЕМАТИКИ

§ 6. МАТЕМАТИКА ПЕРЕМЕННЫХ ВЕЛИЧИН

§ 7. СОВРЕМЕННАЯ МАТЕМАТИКА

§ 8. СУЩНОСТЬ МАТЕМАТИКИ

§ 9. ЗАКОНОМЕРНОСТИ РАЗВИТИЯ МАТЕМАТИКИ

Глава II. АНАЛИЗ

§ 2. ФУНКЦИЯ

Графики функций.

§ 3. ПРЕДЕЛ

§ 4 НЕПРЕРЫВНЫЕ ФУНКЦИИ

§ 5. ПРОИЗВОДНАЯ

Примеры вычисления производных.

§ 6. ПРАВИЛА ДИФФЕРЕНЦИРОВАНИЯ

Производная суммы.

Производная произведения.

Производная частного.

Производная обратной функции.

Таблица производных.

Нахождение производной функции от функции.

§ 7. МАКСИМУМ И МИНИМУМ. ИССЛЕДОВАНИЕ ГРАФИКОВ ФУНКЦИЙ

Отыскание наибольших и наименьших значений функции.

Производные высших порядков.

Смысл второй производной. Выпуклость и вогнутость.

Признаки максимумов и минимумов. Исследование графиков функций.

§ 8. ПРИРАЩЕНИЕ И ДИФФЕРЕНЦИАЛ ФУНКЦИИ

Теорема о среднем и примеры ее применения.

§ 9. ФОРМУЛА ТЕЙЛОРА

Формула Тейлора.

Ряд Тейлора.

§ 10. ИНТЕГРАЛ

Определенный интеграл.

Связь дифференциального и интегрального исчисления.

§ 11. НЕОПРЕДЕЛЕННЫЕ ИНТЕГРАЛЫ. ТЕХНИКА ИНТЕГРИРОВАНИЯ

§ 12. ФУНКЦИИ МНОГИХ ПЕРЕМЕННЫХ

Неявное задание функции.

Геометрическое изображение.

Частные производные и дифференциал.

Дифференцирование неявных функций.

Задачи на максимум и минимум.

Формула Тейлора.

Относительный максимум и минимум.

§ 13. ОБОБЩЕНИЯ ПОНЯТИЯ ИНТЕГРАЛА

Контурные и поверхностные интегралы.

Формула Остроградского.

§ 16. РЯДЫ

Сходимость ряда.

Ряды функций. Равномерно сходящиеся ряды.

Степенные ряды.

Глава III. АНАЛИТИЧЕСКАЯ ГЕОМЕТРИЯ

§ 2. ДВЕ ОСНОВНЫЕ ИДЕИ ДЕКАРТА

Идея сопоставления уравнениям с двумя неизвестными линий на плоскости.

Основные задачи, решаемые аналитической геометрией, и определение аналитической геометрии.

§ 3. ПРОСТЕЙШИЕ ЗАДАЧИ

Площадь треугольника.

Отыскание точек пересечения двух линий.

§ 4. ИССЛЕДОВАНИЕ ЛИНИЙ, ВЫРАЖЕННЫХ УРАВНЕНИЯМИ 1-Й И 2-Й СТЕПЕНИ

Уравнение прямой, проходящей через одну или две заданные точки.

Результат Декарта относительно уравнения 2-й степени.

§ 5. МЕТОД ДЕКАРТА ДЛЯ РЕШЕНИЯ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ 3-й и 4-й СТЕПЕНИ

Решение уравнений 3-й и 4-й степени пересечением окружности с параболой у = x^2.

§ 6. ОБЩАЯ ТЕОРИЯ ДИАМЕТРОВ НЬЮТОНА

§ 7. ЭЛЛИПС, ГИПЕРБОЛА И ПАРАБОЛА

Уравнение эллипса и его фокальное свойство.

Законы движения планет.

Эллипс инерции.

Гипербола и ее фокальное свойство.

Парабола и ее директрисса.

Свойство касательной к параболе.

Директриссы эллипса и гиперболы.

Конические сечения.

Парабола как график пропорциональности квадрату и гипербола как график обратной пропорциональности.

§ 8. ПРИВЕДЕНИЕ ОБЩЕГО УРАВНЕНИЯ 2-Й СТЕПЕНИ К КАНОНИЧЕСКОМУ ВИДУ

Формулы преобразования координат.

Приведение любого уравнения 2-й степени к одному из 9 канонических видов.

§ 9. ЗАДАНИЕ СИЛ, СКОРОСТЕЙ И УСКОРЕНИЙ ТРОЙКАМИ ЧИСЕЛ. ТЕОРИЯ ВЕКТОРОВ

Арифметизация сил, скоростей и ускорений, введенная Лагранжей.

Алгебра векторов.

Скалярное произведение и его свойства.

§ 10. АНАЛИТИЧЕСКАЯ ГЕОМЕТРИЯ В ПРОСТРАНСТВЕ. УРАВНЕНИЕ ПОВЕРХНОСТИ В ПРОСТРАНСТВЕ И УРАВНЕНИЯ ЛИНИИ

Уравнение плоскости и уравнения прямой.

Общее уравнение 2-й степени с тремя переменными и 17 его канонических видов.

Эллипсоид.

Гиперболоиды и конус 2-го порядка.

Параболоиды.

§ 11. ПРЕОБРАЗОВАНИЯ АФФИННЫЕ И ОРТОГОНАЛЬНЫЕ

Эллипс как результат «сжатия» окружности.

Пример решения более сложной задачи.

Важнейшие применения аффинных преобразований

Формулы аффинных преобразований.

Ортогональные преобразования.

§ 12. ТЕОРИЯ ИНВАРИАНТОВ

§ 13. ПРОЕКТИВНАЯ ГЕОМЕТРИЯ

Применение основной теоремы плоской перспективы в аэрофотосъемке.

Проективная плоскость.

Проективные отображения; основная теорема.

Проективная геометрия.

Запись проективных преобразований формулами.

§ 14. ПРЕОБРАЗОВАНИЯ ЛОРЕНЦА

Проективные преобразования круга в себя.

ЗАКЛЮЧЕНИЕ

Глава IV. АЛГЕБРА (ТЕОРИЯ АЛГЕБРАИЧЕСКОГО УРАВНЕНИЯ)

§ 2. АЛГЕБРАИЧЕСКОЕ РЕШЕНИЕ УРАВНЕНИЯ

Разложение многочлена на множители и формулы Виета.

Теорема о симметрических многочленах.

Работы Лагранжа.

Открытие Абеля.

Теория Галуа.

Приложение теории Галуа к вопросу о разрешимости геометрической задачи циркулем и линейкой.

Две основные нерешенные задачи, связанные с теорией Галуа.

§ 3. ОСНОВНАЯ ТЕОРЕМА АЛГЕБРЫ

Теория комплексных чисел.

Поверхность модуля многочлена.

О возрастании модуля многочлена при удалении от начала.

Существование минимумов поверхности M.

Лемма Даламбера.

§ 4. ИССЛЕДОВАНИЕ РАСПОЛОЖЕНИЯ КОРНЕЙ МНОГОЧЛЕНА НА КОМПЛЕКСНОЙ ПЛОСКОСТИ

Простые и кратные корни многочлена.

Теорема Ролля и некоторые ее следствия.

Правило знаков Декарта.

Теорема Штурма.

Задача Гурвица.

§ 5. ПРИБЛИЖЕННОЕ ВЫЧИСЛЕНИЕ КОРНЕЙ

# data[].attributes.attachment_link.title
Важнейшие применения аффинных преобразований

# data[].attributes.attachment_link.description
Научная библиотека популярных научных изданий

# data[].attributes.headline
Стеганография - сокрытие данных

# data[].attributes.subject
Стеганография - сокрытие данных

# data[].attributes.attachment_link.readable_text
Применение принципов стеганографии для решения реальных задач

Собственно, термин "стеганография" давно не вызывает вопросы, и в общем случае понятно, что речь идет о способах передачи скрытых данных внутри других, не скрытых. Правда, когда начинаются рассуждения про применимость этих способов, обычно предлагаются различные варианты сокрытия информации от неких злодеев, которые хотят ее (эту информацию) выявить и употребить. В этой статье предлагается посмотреть на стеганографию чуть шире, хотя, несомненно, задача "скрыть и не дать воспользоваться" - самая очевидная.

Кое-что о "водяных знаках"

Есть такой хороший и довольно известный вариант применения стеганографии - водяной знак на изображении. Используется, как правило, для защиты авторских прав, что очень актуально для дизайнеров, фотографов, иллюстраторов и прочих художников. Подобные механизмы часто уже встроены в графические редакторы, в том же самом Photoshop'е это делается с помощью плагинов. А идея в том, что при экспорте изображение почти незаметно модифицируется, и в дальнейшем содержит идентификатор автора, что и позволяет "отлавливать" факты нелицензионного использования цифровых изображений, почти не теряя при этом в качестве визуально. Правда, ключевое слово тут - "почти", поскольку все-таки картинка немного модифицируется, а значит, отличается от оригинальной. Водяной знак может быть заметен в виде зерна на однородных поверхностях и часто увеличивает размер файла, а также может быть удален, например, размытием по гауссу (правда, и изображение немного потеряет в резкости). И поэтому некоторые фотографы отказываются от подобных программ в пользу обычного копирайта на фотографии.
Но если мы рассмотрим водяной знак не в качестве защиты, а для сохранения дополнительных данных на изображении, то вариантов использования данной технологии становится больше. Подобная картинка может заменить классические штрих-коды, а значит может использоваться для маркирования товаров в магазинах. Здесь открывается простор для деятельности дизайнера упаковок - ведь можно будет не оставлять место под какой-нибудь абстрактный EAN-13 (сейчас не берем вопрос требований регулирующих органов), а указывать необходимую информацию прямо в оформлении упаковки. Одна из компаний предоставляет технологии стеганографии на изображении под лозунгом "The barcode of everything".

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

Аудио-файлы, кстати, тоже могут защищаться с помощью "водяного знака", каким бы странным это ни казалось применительно к звуку. И еще видеоролики.

Дополненные файлы

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

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

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

Стоит отметить, что требуемая информация может быть скрыта в файле различными способами: в метаданных, в свойствах файла, а если речь идет об изображении - с использованием того же "водяного знака". В последнем случае документ будет защищен и при печати (конечно, при условии достаточного качества печатного документа).

Как найти и обезвредить?

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

Один из представителей нашего клиента (а это крупная федеральная компания) в приватном разговоре как-то поведал о подобном инциденте: в сети появилась копия распечатанного и подписанного приказа об изменении внутреннего регламента. Это повлекло за собой проблемы, но суть рассказа была не в этом. Служба безопасности провела расследование, и самое большее, что смогла - определить регион утечки документа. Не помогли ни DLP, ни веб-камеры, ничего. Зато добавилась новая проблема: сотрудники компании поняли, что могут печатать и выносить документы безнаказанно.

Еще варианты

Какие варианты здесь может предложить стеганография? Ну, например, при отправке на печать выводить помимо текста еще и штрихкод с дополнительными данными. Но, во-первых, это уже не совсем стеганография: штрихкод же не скрывается, а, во-вторых, - и это следует из первого - избавиться от него очень просто.

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

Один из вариантов предлагают производители оргтехники. Давно, в общем, уже не секрет, что большинство современных лазерных принтеров ставят на каждую страницу малозаметные микроточки, в основном - желтые. С помощью этих точек на распечатанном документе кодируется информация о серийном номере принтера, а еще о дате и времени печати. Этот вариант вполне себе используется в криминалистике, в СМИ приводятся примеры, когда такая информация позволила расследовать утечку секретных данных и определить виновных: (http://digg.com/2017/did-intercept-burn-reality-winner).

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

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

Аффинные преобразования

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

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

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

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

Уникализация "на лету"

Продолжая развивать идею уникализации документа, приходим к варианту стеганографического кодирования документа при его редактировании, просмотре, а также при копировании и отправке на печать. Готовые промышленные решения здесь отсутствуют, хотя в сети есть сервисы, которые предлагают спрятать необходимое сообщение в произвольном тексте (например, www.spammimic.com - маскирует заданное сообщение в сгенерированном бессмысленном "спаме"; однако сами создатели сайта предостерегают от использования его шпионами). Средств же уникализации документа на этапе его модификации, как уже говорилось, на текущий момент нет.

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

Однако исследовательские работы на эту тему активно ведутся, в том числе и нашей компанией.

# data[].attributes.attachment_link.keywords[]
стеганография

# data[].attributes.attachment_link.keywords[]
информационная безопасность

# data[].attributes.attachment_link.title
Практическая стеганография

# data[].attributes.attachment_link.description
Собственно, термин "стеганография" давно не вызывает вопросы, и в общем случае понятно, что речь идет о способах передачи скрытых данных внутри других, не скрытых. Правда, когда начинаются рассуждения про применимость этих способов, обычно предлагаются различные варианты сокрытия информации от неких злодеев, которые хотят ее (эту информацию) выявить и употребить.

# data[].attributes.headline
преобразования 2D спрайтов

# data[].attributes.subject
преобразования 2D спрайтов

# data[].attributes.attachment_link.readable_text
0:00 / 27:58•Watch full video

# data[].attributes.headline
Аффинные преобразования в расслоениях

# data[].attributes.subject
Аффинные преобразования в расслоениях

# data[].attributes.attachment_link.readable_text
| Общая информация
| Последний выпуск
| Архив

| Поиск публикаций
| Поиск ссылок

| RSS
| Последний выпуск
| Текущие выпуски
| Архивные выпуски
| Что такое RSS

Итоги науки и техн. Сер. Соврем. мат. и ее прил. Темат. обз.:
Год: |
Том: |
Выпуск: |
Страница: |
| Найти

Персональный вход:
Логин: |
Пароль: |
| Запомнить пароль
| Войти
| Забыли пароль?
| Регистрация

Аффинные преобразования в расслоениях
А. Я. Султанов, О. А. Монахова

Педагогический институт им. В. Г. Белинского Пензенского государственного университета

Аннотация: В статье приводится обзор результатов, посвященных исследованию аффинных преобразований в обобщенных пространствах над вещественными линейными алгебрами за последние 15–20 лет.

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

Реферативные базы данных:

Тип публикации: Статья

УДК: 514.76

Образец цитирования: А. Я. Султанов, О. А. Монахова, “Аффинные преобразования в расслоениях”, Геометрия, Итоги науки и техн. Сер. Соврем. мат. и ее прил. Темат. обз., 146, ВИНИТИ РАН, М., 2018,
48–88

Цитирование в формате AMSBIB

\RBibitem{SulMon18}
\by А.~Я.~Султанов, О.~А.~Монахова
\paper Аффинные преобразования в расслоениях
\inbook Геометрия
\serial Итоги науки и техн. Сер. Соврем. мат. и ее прил. Темат. обз.
\yr 2018
\vol 146
\pages 48--88
\publ ВИНИТИ РАН
\publaddr М.
\mathnet{http://mi.mathnet.ru/into289}
\mathscinet{http://www.ams.org/mathscinet-getitem?mr=3824399}

Образцы ссылок на эту страницу:

http://mi.mathnet.ru/into289

http://mi.mathnet.ru/rus/into/v146/p48

Просмотров:
Эта страница: | 152
Полный текст: | 38
Литература: | 2
Первая стр.: | 14

# data[].attributes.attachment_link.title
А. Я. Султанов, О. А. Монахова, “Аффинные преобразования в расслоениях”, Геометрия, Итоги науки и техн. Сер. Соврем. мат. и ее прил. Темат. обз., 146, ВИНИТИ РАН, М., 2018, 48–88

# data[].attributes.headline
автоматическое распараллеливание циклов

# data[].attributes.subject
автоматическое распараллеливание циклов

# data[].attributes.body
http://www.mcst.ru/files/5345a7/3a0cd8/50ee73/000000/gorelov-ispolzovanie_afinnyh_preobrazovanij.pdf

# data[].attributes.headline
Геоинформационные системы

# data[].attributes.subject
Геоинформационные системы

# data[].attributes.attachment_link.readable_text
Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.

        Таким образом, любой растр представлен в виде прямоугольной матрицы,
каждый элемент которой (пиксель) - прямоугольник, т.е. объект с фиксированной
площадью и формой, а также некоторым приписанным к нему основным численным
атрибутом. Поэтому по сравнению с векторными слоями, где элементарным объектом
является точка - объект, не имеющий размеров и формы, преобразование растра имеет
определенные отличия, которые обязательно надо принимать в расчет.
    Для растровых изображений существенно также, что в большинстве
общепринятых форматов растровых изображений (BMP, TIFF, GIF и др.)
пространственные отношения между элементами растра жестко заданы самой
прямоугольной решеткой растра. Поэтому любое преобразование растра имеет
результатом также прямоугольную матрицу пикселей, а в результате
преобразования изменяются атрибуты пикселей полученного растра. Например, если
Вам надо осуществить поворот растрового изображения, то результатом будет
подобная же исходному растру матрица, в которой в результате преобразования
будут фигурировать другие атрибуты пикселей, полученные в результате
преобразования. Так, пиксели результирующего изображения, лежащие вне области
преобразования, будут иметь некоторое одинаковое (фоновое) значение, но, тем не
менее, будут являться частью получаемого в результате растра.
                16   16   16   23   23    23   45   45   45   16
                16   16   23   23   23    23   23   45   45   16
                16   16   23   23   23    23   23   45   45   45
                23   23   23   23   23    23   45   45   45   45
                23   23   23   23   23    23   45   45   45   45
                23   23   23   23   23    45   45   45   45   45
                23   23   23   23   45    45   45   45   45   16

    ПРИМЕР. Исходный (слева) и преобразованный (справа) растры.




                                         51


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

    5.1.Преобразования плоскости

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

    • первая связана с исходным изображением (до преобразования), обозначим
      координаты точки в этой системе Xold, Yold

    • вторая   связана     с   трансформированным      изображением     (после
      преобразования), обозначим координаты точки в этой системе Хnew, Ynew
    После задания соответствующих опорных точек в первой и второй системах
координат (тиков), выбирается преобразование для всей цифровой карты.

    5.1.1.Сдвиг и поворот по двум точкам
    Формулы преобразования сдвига и поворота:
    Хnew = к * (( Xold - Хо ) * cos θ + (Yold - Yo ) *sin θ),
    Ynew = к * (-( Xold - Xo ) *sin θ + (Yold - Yo ) * cos θ),
    где Xo , Yo - сдвиг начала координат второй системы координат относительно
начала первой системы координат; θ - угол поворота; к – коэффициент
масштабирования; Xold , Yold и Xnew , Ynew - координаты точки в первой и второй
системах координат соответственно
    Коэффициенты преобразования могут быть вычислены по двум точкам,
координаты которых заданы в двух системах координат: до и после преобразования.
    Данное преобразование позволяет совмещать изображение по двум опорным
точкам. Использование преобразования позволяет восстанавливать изображение,
претерпевшее такие изменения, как сдвиг, поворот, масштабирование. В некоторых
случаях можно изменить систему координат растрового изображения без
физического трансформирования растра. Для этого служит функция настройки



                                              52


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

    5.1.2.Аффинное преобразование
    Формулы аффинного преобразования:
    Xnew = a1*Xold+a2*Yold + a3
    Ynew = a4*Xold + a5*Yold + a6

    где аi - коэффициенты преобразования; Xold , Yold и Xnew, Ynew - координаты
точки в первой и второй системах координат соответственно.
    Коэффициенты преобразования могут быть вычислены по трем точкам, не
лежащим на одной прямой, координаты которых заданы до и после преобразования.
Коэффициенты преобразования могут быть также определены из условия
минимизации отклонения образов m заданных точек от некоторых фиксированных m
точек (m >3).
    Аффинное преобразование позволяет совмещать изображение по трем
опорным     точкам.   Использование    аффинных     преобразований   позволяет
восстанавливать изображение, претерпевшее такие изменения, как сдвиг, поворот,
масштабирование (в т.ч. с различными коэффициентами по осям X и Y) по трем
опорным точкам, а также с помощью m опорных точек несколько уменьшать
отклонения точек изображения, не подчиняющиеся простому закону, связанные,
например, с неравномерным растяжением (сжатием) бумаги. Аффинное
преобразование переводит прямые в прямые с сохранением свойства
параллельности. Это позволяет использовать локально-аффинное преобразование
области изображения, разбитой на треугольники, с сохранением непрерывности на
границах треугольников.

    5.1.3.Проективное преобразование
    Формулы проективного преобразования:

    Xnew = (a1*Xold+a2*Yold + a3)/d,
    Ynew = (a4*Xold + a5*Yold + a6)/d,
    d = a7*Xold + a8*Yold+l,
    где ai - коэффициенты преобразования; Xold , Yold и Xnew , Ynew - координаты
точки в первой и второй системах координат соответственно.




                                         53


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

    5.1.4.Квадратичное преобразование
    Формулы преобразования с помощью полиномов второй степени:
    Xnew = а1 * Xold * Xold + а2* Yold * Yold + а3 * Xold * Yold + a4 * Xold + a5 * Yold + a6
    Ynew = а7 * Xold * Xold + а8* Yold * Yold + а9 * Xold * Yold + a10 * Xold + a11 * Yold + a12 ,

    где ai - коэффициенты преобразования; Xold , Yold и Xnew , Ynew - координаты
точки в первой и второй системах координат соответственно.
    Коэффициенты преобразования могут быть вычислены по шести точкам,
координаты которых заданы до и после преобразования. Коэффициенты
преобразования могут быть также определены из условия минимизации отклонения
образов m заданных точек от некоторых фиксированных m точек (m>6).
    Преобразование с помощью полиномов второй степени позволяет совмещать
изображение по шести опорным точкам непрерывно и не сохраняет прямые линии.
Такие преобразования позволяют с помощью m опорных точек несколько больше,
чем аффинные преобразования, уменьшать отклонения точек изображения, не
подчиняющиеся простому закону.

    5.1.5.Преобразование полиномами 5-й степени
    Формулы преобразования с помощью полиномов пятой степени см. в [GG20].
Коэффициенты преобразования могут быть вычислены по опорным точкам,
координаты которых заданы до и после преобразования. Минимальное количество
опорных точек - двадцать одна. Коэффициенты преобразования могут быть
также определены из условия минимизации отклонения образов m заданных
точек от некоторых фиксированных m точек (m >21).
    Преобразование с помощью полиномов пятой степени целесообразно
использовать при наличии большого числа опорных точек (по крайней мере, 60 - 70),
если ни аффинное, ни квадратичное преобразования не дают желаемого результата.

                                                54


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

    5.1.6. Локально-аффинное преобразование
    Для проведения локально-аффинного преобразования плоскость разбивается на
треугольники, вершинами которых являются опорные точки. Затем для каждого
треугольника по трем точкам определяются коэффициенты аффинного
преобразования и часть изображения, ограниченная любым из треугольников,
преобразуется с помощью соответствующих ему коэффициентов. При этом на
границах треугольников сохраняется непрерывность, так как аффинное
преобразование переводит прямые в прямые с сохранением постоянного масштаба
вдоль каждой прямой. Разбиение плоскости на треугольники осуществляется
программно, с использованием алгоритма оптимизации разбиения. Если
треугольники не покрывают все изображение, то в качестве условных опорных
точек могут быть использованы экстремумы исходной карты. При этом
координаты этих точек после преобразования определяются простым аффинным
преобразованием по всем истинным опорным точкам (тикам).
    Файлы опорных точек (тиков) должны содержать:
    •         для СдвигаПоворота - только 2 точки
    •         для Аффинных преобразований - не менее 3-х точек
    •         для Проективных преобразований - только 4 точки
    •         для Квадратичных преобразований - не менее 6-и точек
    •         для Преобразований полиномами 5-й степени - не менее 21 точки
    •         для Локально-Аффинных преобразований - не менее 3-х точек

    5.2. Преобразование картографических проекций

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


                                       55


    Форма земли - для части проекций может быть выбран эллипсоид вращения
или шар, а для некоторых проекций форма земли задается автоматически.
    Шар/эллипсоид:
    • Если в качестве формы земли выбран эллипсоид вращения, то эллипсоид
      выбирается из предлагаемого списка; по умолчанию - эллипсоид
      Красовского.
    • Если требуется использовать эллипсоид, которого нет в списке, и размеры
      полуосей которого известны пользователю, следует выбрать вариант
      «Размеры полуосей эллипсоида в метрах». При этом становятся доступными
      поля для ввода размеров полуосей.
    • Если в качестве формы земли выбран шар, то он может быть выбран из
      списка.
    • Если требуется использовать шар, которого нет в списке, и радиус которого
      известен пользователю, следует выбрать вариант «Радиус шара в метрах».
    • Существует возможность вычисления радиуса шара как среднего радиуса
       кривизны в точке выбранного эллипсоида с заданной широтой. В этом случае
       в качестве формы земли выбирается шар, а из списка «Эллипсоид/шар»
       выбирается соответствующий эллипсоид.
    Масштаб - указывается знаменатель масштаба карты, для которой
определяются параметры проекции. Например, для карты масштаба 1 : 2500000
проставляется 2500000
    Полюс проекции (только для нормальных проекций) выбирается из списка:
    • Северный   полюс     -   для   карт   территорий,      расположенных
      преимущественно в северном полушарии,
     • Южный полюс - для карт территорий, расположенных преимущественно в
       южном полушарии
     Широта полюса проекции - для поперечных проекций автоматически
выбирается «0», для косых проекций становится доступным поле для ввода широты.
     Минимальная и максимальная широта - указываются для определения
рабочей области и используются для ускорения вычислений. Все точки карты
должны лежать внутри или на границе рабочей области (рабочая область может быть
определена с избытком). Например, если минимальная широта равна 64 40' с.ш., то
следует проставить «64.6», (можно даже «64.») а не «64.7» (в градусах в виде
десятичной дроби)
     Восточная и западная граница - указываются для определения рабочей
области и используются для ускорения вычислений. Все точки карты должны лежать
внутри или на границе рабочей области (рабочая область может быть определена с

                                      56


избытком). Например, если долгота западной границы территории равна 120 20'
в.д., то следует проставить «120.3», а не «120.4» (в градусах в виде десятичной
дроби)
      Осевой меридиан - долгота меридиана, перпендикулярного нижней рамке
карты.
      Расстояние до осевого меридиана - расстояние от оси Y до осевого
меридиана, т.е. координата X точки пересечения выбранной параллели с осевым
меридианом (проставляется в единицах цифрования).
      Расстояние до выбранной параллели - расстояние от точки пересечения оси
X с осевым меридианом до точки пересечения выбранной параллели с осевым
меридианом, т.е. координата Y точки пересечения выбранной параллели с осевым
меридианом (проставляется в единицах цифрования).
      Широта выбранной параллели - широта выбранной параллели (в градусах в
виде десятичной дроби).
      Кроме того, для отдельных проекций могут задаваться параметры, которые
можно найти в руководстве по конкретной ГИС. Ниже описаны такие параметры
для проекции Гаусса-Крюгера (по материалам ГИС GeoGraph):
      (сокращенная формула, обеспечивающая соответствие таблицам координат
Гаусса-Крюгера с точностью до последнего знака)
      Зона - может быть выбран номер зоны. В этом случае долгота среднего
меридиана территории будет проставлена автоматически. Долгота среднего
меридиана может быть также введена вручную.
      Расстояние до среднего меридиана - может быть указан стандартный сдвиг на
500000 м или 500 км (в зависимости от используемого масштаба) или тот же сдвиг с
номером зоны. Например, 7500000 для 7-й зоны.
      Постоянная С - «0»- формулы проекции привязаны к среднему меридиану; «1»
- при вычислении проекции территория автоматически разбивается на
стандартные шестиградусные зоны; для каждой зоны используется свой средний
меридиан. При этом номер зоны должен быть равен 1 (долгота среднего меридиана 3
), западная граница 0 , восточная граница 6 , расстояние до среднего меридиана-
1500000, масштаб 1:1000.




                                      57


   6.Источники и средства ввода/вывода
пространственной информации
     В настоящее время наиболее актуальна, особенно в сфере земельных отношений,
задача получения достоверной информации для дальнейшего использования в
геоинформационной системе. В качестве такой информации выступают:
      • результаты наземных топографо-геодезических измерений;
      • данные наземной съемки с применением GPS оборудования;
      • результаты аэрофотосъемки;
      • существующие (устаревшие) картографические материалы;
      • данные, полученные в ходе предыдущих этапов земельной реформы;
      • данные государственной статистической отчетности;
      • информация, получаемая в результате работы с участниками земельных
отношений.
     Этот этап геоинформационной технологии наиболее трудоемок и требует
наибольших финансовых затрат.
     Для ГИС, используемых в кадастровой технологии, принципиально важно
установить перечень видов входных данных, их объем и способ представления.
Последний фактор во многом определяет требования к составу аппаратуры,
необходимой на следующем этапе подготовки данных.
     Наиболее     часто   привлекают    картографические,     статистические  и
аэрокосмические материалы, поэтому именно они будут предметом рассмотрения в
данной главе.
     В случае использования картографических материалов дело обычно сводится
к следующей трудоемкой последовательности процедур:
    • сканирование карт выбранного масштаба на всю планируемую зону
      покрытия (в случае большого города это тысячи карт масштабов М1:2000 и
      М1:500);
    • преобразование координат и сшивка растрового материала по опорным
      точкам (тикам);
    • векторизация объектов карты и создание баз данных пространственной
      информации;
    • связывание пространственной информации с базами данных атрибутивной
       информации.
    Математическое содержание преобразования координат рассмотрено выше. А
связывание пространственной информации с базами данных мы рассмотрим ниже в
отдельном разделе.


                                      58


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

    6.1. Данные дистанционного зондирования (ДДЗ)

    Одним из основных источников данных для ГИС служат материалы
дистанционного зондирования. Виды космических материалов также очень
разнообразны. Существуют две технологии космических съемок: съемки с
фотографических и со сканерных систем.
     Дистанционное зондирование осуществляют специальными приборами –
датчиками. Датчики могут быть пассивными и активными, причем пассивные
датчики улавливают отраженное или испускаемое естественное излучение, а
активные способны сами излучать необходимый сигнал и фиксировать его отражение
от объекта. К пассивным датчикам относят оптические и сканирующие устройства,
действующие в диапазоне отраженного солнечного излучения, включая
ультрафиолетовый, видимый и ближний инфракрасный диапазоны. К активным
датчикам относят радарные устройства, сканирующие лазеры, микроволновые
радиометры и др. В настоящее время в области разработки оперативных космических
электронных систем дистанционного зондирования наметилась тенденция к
комбинированному использованию различных многоканальных, многоцелевых
датчиков с высоким разрешением, включая всепогодное оборудование. Наряду с этим
по-прежнему     применяют     космические     системы      с   панхроматическим
фотооборудованием и многоспектральными фотокамерами, обеспечивающими
высокое разрешение и геометрическую точность (см.рис.1.3).

    6.2.Данные GPS-приемников

    6.2.1.Принцип работы GPS-приемников
     Спутниковая навигационная система GPS (Global Positioning System) или
Глобальная система позиционирования (местоопределения), точнее - ее космический
сегмент, представляет собой созвездие из 24 спутников. Система GPS (официальное
название - NAVSTAR) разработана по заказу и находится под управлением
Министерства обороны США. В 1980-х систему открыли для гражданского
использования. Система GPS работает при любых погодных условиях по всему миру
24 часа в сутки. С ее помощью можно с высокой степенью точности определять
координаты и скорость подвижных объектов. За пользование услугами системы GPS


                                      59


не взимается ни абонентская плата, ни плата за подключение. Все, что нужно для
пользования системой GPS - это приобрести GPS-приемник.
    Как работает система GPS
    Спутники GPS вращаются вокруг Земли по круговым орбитам с частотой 2
оборота в сутки, передавая навигационные радиосигналы. GPS-приемники
принимают эти сигналы и вычисляют местоположение методом триангуляции.
Приемник      сравнивает     время
излучения сигнала с временем
приема этого сигнала. Разность
между этими величинами позволяет
вычислить расстояние до спутника.
Зная расстояние до нескольких спутников, GPS-приемник может определить свое
местоположение и отобразить его на электронной карте.
    Принимая информацию по крайней мере от трех спутников, GPS-приемник
может определить двухмерные координаты пользователя (широту и долготу).
"Захватив" четыре и более спутников, прибор может определить трехмерные
координаты (широту, долготу и высоту). Определив местоположение пользователя,
приемник может вычислить такие величины как скорость, путевой угол, траекторию,
пройденное расстояние, расстояние до конечного пункта, время восхода и захода
солнца и многое другое.
    Точность системы GPS
    Современные многоканальные GPS-приемники обеспечивают достаточно
высокую точность. Так, 12-канальные GPS-приемники GARMIN отслеживают до 12-
ти спутников GPS одновременно, обеспечивая быстрое и уверенное определение
местоположения, в том числе в городских условиях или под густыми кронами
деревьев. На точность определения местоположения GPS-приемником влияет
расположение видимых спутников, а также ряд атмосферных и других факторов. В
среднем, точность GPS-приемников GARMIN составляет 15 м.
    Точность GPS-приемников может быть повышена путем приема
дифференциальных       поправок.     Наиболее    перспективные      источники
дифференциальных поправок - глобальные дифференциальные подсистемы,
передающие поправку к сигналам GPS с геостационарных спутников. За их
использование не предусмотрено какой-либо платы. К ним относятся американская
система WAAS, европейская EGNOS и японская MSAS. Они улучшают точность
определения местоположения GPS-приемниками до 1-3 м.



                                      60

# data[].attributes.headline
Защита данных от несанкционированного использования, ватермарки

# data[].attributes.subject
Защита данных от несанкционированного использования, ватермарки

# data[].attributes.headline
АФФИННЫЕ ПРЕОБРАЗОВАНИЯ ОБЪЕКТОВ В КОМПЬЮТЕРНОЙ ГРАФИКЕ НА ПРИМЕРЕ ВРАЩАЮЩЕЙСЯ 3D МОДЕЛИ 

# data[].attributes.subject
АФФИННЫЕ ПРЕОБРАЗОВАНИЯ ОБЪЕКТОВ В КОМПЬЮТЕРНОЙ ГРАФИКЕ НА ПРИМЕРЕ ВРАЩАЮЩЕЙСЯ 3D МОДЕЛИ 

# data[].attributes.attachment_link.readable_text
Типовая задача, решаемая при помощи растровой изобразительной графики - преобразование изображения в целом и его отдельных фрагментов: перемещение, поворот вокруг заданного центра, изменение линейных размеров и т.п. Такая задача решается использованием аффинных преобразований [1, 2, 3].

Введем несколько определений.

Определение 1. Преобразование плоскости называется аффинным, если оно взаимно однозначно и образом любой прямой является прямая.

Определение 2. Преобразование называется взаимно однозначным, если оно разные точки переводит в разные, и в каждую точку переходит какая-то точка.

Определение 3. Аффинное преобразование - отображение плоскости или пространства в себя, при котором параллельные прямые переходят в параллельные прямые, пересекающиеся в пересекающиеся, скрещивающиеся в скрещивающиеся.

Аффинные преобразования используются в следующих ситуациях:

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

2. Для просмотра трехмерных объектов с различных точек зрения.

3. Для проецирования трехмерных объектов на плоскость и отображения сцены в окне.

Аффинные преобразования на плоскости в общем виде описываются следующими формулами:

(1)

Преобразование (1) можно записать в матричной форме

Аффинным преобразованиям может подвергаться как сама система координат, так и объекты на плоскости. Если преобразование производится над системой координат, то значения ( х, у) в выражении (1) интерпретируются как координаты точки в старой системе координат, а значения ( Х, У) - координаты точки в новой системе координат.

Частным случаем аффинных преобразований являются просто движения (без какого-либо сжатия или растяжения). Движения - это преобразования, которые сохраняют расстояние между любыми двумя точками неизменным, а именно параллельные переносы, повороты, различные симметрии и их комбинации.

Перемещение в пространстве задается с помощью матрицы размера 3x3. Для этого необходимо использование однородных координат.

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

Однородными координатами вектора (х, у) является тройка чисел (x', y', h), где х = х' / h, у = y'/h, а h - некоторое вещественное число (случай, когда h = 0 является особым).

Аналогичные преобразования происходят и для трехмерных объектов. Приведем пример программы, написанной на языке Pascal, которая вращает аббревиатуру "СФУ" и ее части.

program program1;

uses GraphABC;

type

TVector = array [1..4] of Real;

TMatrix = array [1..4, 1..4] of Real;

function Vector(x, y, z: Real): TVector;

begin

Result[1]:=x;

Result[2]:=y;

Result[3]:=z;

Result[4]:=1;

end;

function Vector(x, y: Real): TVector;

begin

Result[1]:=x;

Result[2]:=y;

Result[3]:=0;

Result[4]:=1;

end;

....

procedure DrawLine(a, b: TVector; transform: TMatrix);

begin

ApplyTransform(a, transform);

ApplyTransform(b, transform);

Line(Round(a[1]), Round(a[2]), Round(b[1]), Round(b[2]));

end;

procedure DrawLine(x1, y1, x2, y2: Real; transform: TMatrix);

begin

DrawLine(Vector(x1, y1), Vector(x2, y2), transform);

end;

procedure DrawArc(x, y, r, alf, bet: Real; m: TMatrix);

var

x1, y1, x2, y2: Real;

i, b, e: Integer;

begin

b:=Round(alf/Pi*180);

e:=Round(bet/Pi*180);

if b > e then

begin

i:=b; e:=b; b:=i;

end;

for i:=b to e do

begin

x2:=x+r*cos(i/180*Pi);

y2:=y-r*sin(i/180*Pi);

if i > b then

DrawLine(x1, y1, x2, y2, m);

x1:=x2;

y1:=y2;

end;

end;

var// t - матрица преобразования // p - матрица проекции // m - временная матрица

t, p, m: TMatrix;

//picture: Integer;

begin// Создание матрицы проекции

SetWindowSize(600, 600);

//picture:=CreatePicture(600, 600);

//SetDrawingSurface(picture);

SetPenColor(rgb(255, 128, 0));

SetPenWidth(50);

// Создание матрицы проекции

CreateSimpleProjectionMatrix(100, p);

// Матрица переноса в центр изображения

CreateTranslationMatrix(300, 300, 0, m); MatrixProduct(p, m); // применение матрицы m // Создание матрицы преобразования

IdentityMatrix(t);

CreateScaleMatrix(100, 100, 100, m); MatrixProduct(t, m); ); // Создание и применение матрицы масштабирования к матрице преобразования

CreateZAxisRotationMatrix(-PI / 8, m); MatrixProduct(t, m); // Создание и применение матрицы вращения к матрице преобразования

CreateTranslationMatrix(0, 0, 200, m); MatrixProduct(t, m);

// Объединение матриц преобразования и проекции

CopyMatrix(t, m); // копировать матрицу преобразования в m

MatrixProduct(m, p); // применить матрицу проекции к матрице m // m - готовая матрица преобразования // С

DrawArc(-4, -2, 1, 0, Pi/2, m);

DrawLine(-4, -3, -6, -3, m);

DrawArc(-6, -2, 1, Pi/2, Pi, m);

DrawLine(-7, -2, -7, +2, m);

DrawArc(-6, +2, 1, Pi, Pi*3/2, m);

DrawLine(-6, +3, -4, +3, m);

DrawArc(-4, +2, 1, Pi*3/2, Pi*2, m);

// Ф

DrawLine(+0, +3, +0, -3, m);

DrawArc(-sqrt(2)/2*3/2, -1.5, 3/2, pi*1/4, pi*7/4, m);

DrawArc(+sqrt(2)/2*3/2, -1.5, 3/2, -pi*3/4, pi*3/4, m);

// У

DrawLine(+3, +3, +7, -3, m);

DrawLine(+3, -3, +5, +0, m);

//RestoreDrawingSurface;

//DrawPicture(picture, 0, 0);

//SavePicture(picture, 'Картинка.bmp');

end.

Список использованных источников

1. Кудрина М.А., Мурзин А.В. Аффинные преобразования объектов в компьютерной графике. Труды Международного симпозиума "Надежность и качество", 2014, 1.

2. Бубенчиков А.М., Базаров К.Л., Буянтуева З.Г. Компьютерная графика, порожденная линейными преобразованиями координат. Вестник Бурятского государственного университета, 2013, 9.

3. Дорофеев С.Н. Геометрические преобразования в примерах и задачах, 2002

# data[].attributes.attachment_link.title
АФФИННЫЕ ПРЕОБРАЗОВАНИЯ ОБЪЕКТОВ В КОМПЬЮТЕРНОЙ ГРАФИКЕ НА ПРИМЕРЕ ВРАЩАЮЩЕЙСЯ 3D МОДЕЛИ - Студенческий научный форум

# data[].attributes.attachment_link.description
Типовая задача, решаемая при помощи растровой изобразительной графики - преобразование изображения в целом и его отдельных фрагментов: перемещение, поворот вокруг заданного центра, изменение линейных размеров и т.п. Такая задача решается использованием аффинных преобразований [1, 2, 3]. Введем несколько определений. Определение 1. Преобразование плоскости называется аффинным, если оно взаимно однозначно и образом любой прямой является прямая.

# data[].attributes.headline
Управление масштабированием

# data[].attributes.subject
Управление масштабированием

# data[].attributes.body
https://youtu.be/qy5Y-mYa74I

# data[].attributes.attachment_link.readable_text
Alias-Free Generative Adversarial Networks (StyleGAN3)
Official PyTorch implementation of the NeurIPS 2021 paper

Alias-Free Generative Adversarial Networks
Tero Karras, Miika Aittala, Samuli Laine, Erik Härkönen, Janne Hellsten, Jaakko Lehtinen, Timo Aila
https://nvlabs.github.io/stylegan3

Abstract: We observe that despite their hierarchical convolutional nature, the synthesis process of typical generative adversarial networks depends on absolute pixel coordinates in an unhealthy manner. This manifests itself as, e.g., detail appearing to be glued to image coordinates instead of the surfaces of depicted objects. We trace the root cause to careless signal processing that causes aliasing in the generator network. Interpreting all signals in the network as continuous, we derive generally applicable, small architectural changes that guarantee that unwanted information cannot leak into the hierarchical synthesis process. The resulting networks match the FID of StyleGAN2 but differ dramatically in their internal representations, and they are fully equivariant to translation and rotation even at subpixel scales. Our results pave the way for generative models better suited for video and animation.

For business inquiries, please visit our website and submit the form: NVIDIA Research Licensing

Release notes

This repository is an updated version of stylegan2-ada-pytorch, with several new features:

Alias-free generator architecture and training configurations (stylegan3-t, stylegan3-r).

Tools for interactive visualization (visualizer.py), spectral analysis (avg_spectra.py), and video generation (gen_video.py).

Equivariance metrics (eqt50k_int, eqt50k_frac, eqr50k).

General improvements: reduced memory usage, slightly faster training, bug fixes.

Compatibility:

Compatible with old network pickles created using stylegan2-ada and stylegan2-ada-pytorch. (Note: running old StyleGAN2 models on StyleGAN3 code will produce the same results as running them on stylegan2-ada/stylegan2-ada-pytorch. To benefit from the StyleGAN3 architecture, you need to retrain.)

Supports old StyleGAN2 training configurations, including ADA and transfer learning. See Training configurations for details.

Improved compatibility with Ampere GPUs and newer versions of PyTorch, CuDNN, etc.

Synthetic image detection

While new generator approaches enable new media synthesis capabilities, they may also present a new challenge for AI forensics algorithms for detection and attribution of synthetic media. In collaboration with digital forensic researchers participating in DARPA's SemaFor program, we curated a synthetic image dataset that allowed the researchers to test and validate the performance of their image detectors in advance of the public release. Please see here for more details.

Additional material

Result videos

Curated example images

StyleGAN3 pre-trained models for config T (translation equiv.) and config R (translation and rotation equiv.)

Access individual networks via https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan3/versions/1/files/<MODEL>, where <MODEL> is one of:
stylegan3-t-ffhq-1024x1024.pkl, stylegan3-t-ffhqu-1024x1024.pkl, stylegan3-t-ffhqu-256x256.pkl
stylegan3-r-ffhq-1024x1024.pkl, stylegan3-r-ffhqu-1024x1024.pkl, stylegan3-r-ffhqu-256x256.pkl
stylegan3-t-metfaces-1024x1024.pkl, stylegan3-t-metfacesu-1024x1024.pkl
stylegan3-r-metfaces-1024x1024.pkl, stylegan3-r-metfacesu-1024x1024.pkl
stylegan3-t-afhqv2-512x512.pkl
stylegan3-r-afhqv2-512x512.pkl

StyleGAN2 pre-trained models compatible with this codebase

Access individual networks via https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan2/versions/1/files/<MODEL>, where <MODEL> is one of:
stylegan2-ffhq-1024x1024.pkl, stylegan2-ffhq-512x512.pkl, stylegan2-ffhq-256x256.pkl
stylegan2-ffhqu-1024x1024.pkl, stylegan2-ffhqu-256x256.pkl
stylegan2-metfaces-1024x1024.pkl, stylegan2-metfacesu-1024x1024.pkl
stylegan2-afhqv2-512x512.pkl
stylegan2-afhqcat-512x512.pkl, stylegan2-afhqdog-512x512.pkl, stylegan2-afhqwild-512x512.pkl
stylegan2-brecahad-512x512.pkl, stylegan2-cifar10-32x32.pkl
stylegan2-celebahq-256x256.pkl, stylegan2-lsundog-256x256.pkl

Requirements

Linux and Windows are supported, but we recommend Linux for performance and compatibility reasons.

1–8 high-end NVIDIA GPUs with at least 12 GB of memory. We have done all testing and development using Tesla V100 and A100 GPUs.

64-bit Python 3.8 and PyTorch 1.9.0 (or later). See https://pytorch.org for PyTorch install instructions.

CUDA toolkit 11.1 or later. (Why is a separate CUDA toolkit installation required? See Troubleshooting).

GCC 7 or later (Linux) or Visual Studio (Windows) compilers. Recommended GCC version depends on CUDA version, see for example CUDA 11.4 system requirements.

Python libraries: see environment.yml for exact library dependencies. You can use the following commands with Miniconda3 to create and activate your StyleGAN3 Python environment:

conda env create -f environment.yml

conda activate stylegan3

Docker users:

Ensure you have correctly installed the NVIDIA container runtime.

Use the provided Dockerfile to build an image with the required library dependencies.

The code relies heavily on custom PyTorch extensions that are compiled on the fly using NVCC. On Windows, the compilation requires Microsoft Visual Studio. We recommend installing Visual Studio Community Edition and adding it into PATH using "C:\Program Files (x86)\Microsoft Visual Studio\<VERSION>\Community\VC\Auxiliary\Build\vcvars64.bat".

See Troubleshooting for help on common installation and run-time problems.

Getting started

Pre-trained networks are stored as *.pkl files that can be referenced using local filenames or URLs:

# Generate an image using pre-trained AFHQv2 model ("Ours" in Figure 1, left).
python gen_images.py --outdir=out --trunc=1 --seeds=2 \
    --network=https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan3/versions/1/files/stylegan3-r-afhqv2-512x512.pkl

# Render a 4x2 grid of interpolations for seeds 0 through 31.
python gen_video.py --output=lerp.mp4 --trunc=1 --seeds=0-31 --grid=4x2 \
    --network=https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan3/versions/1/files/stylegan3-r-afhqv2-512x512.pkl

Outputs from the above commands are placed under out/*.png, controlled by --outdir. Downloaded network pickles are cached under $HOME/.cache/dnnlib, which can be overridden by setting the DNNLIB_CACHE_DIR environment variable. The default PyTorch extension build directory is $HOME/.cache/torch_extensions, which can be overridden by setting TORCH_EXTENSIONS_DIR.

Docker: You can run the above curated image example using Docker as follows:

# Build the stylegan3:latest image
docker build --tag stylegan3 .

# Run the gen_images.py script using Docker:
docker run --gpus all -it --rm --user $(id -u):$(id -g) \
    -v `pwd`:/scratch --workdir /scratch -e HOME=/scratch \
    stylegan3 \
    python gen_images.py --outdir=out --trunc=1 --seeds=2 \
         --network=https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan3/versions/1/files/stylegan3-r-afhqv2-512x512.pkl

Note: The Docker image requires NVIDIA driver release r470 or later.

The docker run invocation may look daunting, so let's unpack its contents here:

--gpus all -it --rm --user $(id -u):$(id -g): with all GPUs enabled, run an interactive session with current user's UID/GID to avoid Docker writing files as root.

-v `pwd`:/scratch --workdir /scratch: mount current running dir (e.g., the top of this git repo on your host machine) to /scratch in the container and use that as the current working dir.

-e HOME=/scratch: let PyTorch and StyleGAN3 code know where to cache temporary files such as pre-trained models and custom PyTorch extension build results. Note: if you want more fine-grained control, you can instead set TORCH_EXTENSIONS_DIR (for custom extensions build dir) and DNNLIB_CACHE_DIR (for pre-trained model download cache). You want these cache dirs to reside on persistent volumes so that their contents are retained across multiple docker run invocations.

Interactive visualization

This release contains an interactive model visualization tool that can be used to explore various characteristics of a trained model. To start it, run:

Using networks from Python

You can use pre-trained networks in your own Python code as follows:

with open('ffhq.pkl', 'rb') as f:
    G = pickle.load(f)['G_ema'].cuda()  # torch.nn.Module
z = torch.randn([1, G.z_dim]).cuda()    # latent codes
c = None                                # class labels (not used in this example)
img = G(z, c)                           # NCHW, float32, dynamic range [-1, +1], no truncation

The above code requires torch_utils and dnnlib to be accessible via PYTHONPATH. It does not need source code for the networks themselves — their class definitions are loaded from the pickle via torch_utils.persistence.

The pickle contains three networks. 'G' and 'D' are instantaneous snapshots taken during training, and 'G_ema' represents a moving average of the generator weights over several training steps. The networks are regular instances of torch.nn.Module, with all of their parameters and buffers placed on the CPU at import and gradient computation disabled by default.

The generator consists of two submodules, G.mapping and G.synthesis, that can be executed separately. They also support various additional options:

w = G.mapping(z, c, truncation_psi=0.5, truncation_cutoff=8)
img = G.synthesis(w, noise_mode='const', force_fp32=True)

Please refer to gen_images.py for complete code example.

Preparing datasets

Datasets are stored as uncompressed ZIP archives containing uncompressed PNG files and a metadata file dataset.json for labels. Custom datasets can be created from a folder containing images; see python dataset_tool.py --help for more information. Alternatively, the folder can also be used directly as a dataset, without running it through dataset_tool.py first, but doing so may lead to suboptimal performance.

FFHQ: Download the Flickr-Faces-HQ dataset as 1024x1024 images and create a zip archive using dataset_tool.py:

# Original 1024x1024 resolution.
python dataset_tool.py --source=/tmp/images1024x1024 --dest=~/datasets/ffhq-1024x1024.zip

# Scaled down 256x256 resolution.
python dataset_tool.py --source=/tmp/images1024x1024 --dest=~/datasets/ffhq-256x256.zip \
    --resolution=256x256

See the FFHQ README for information on how to obtain the unaligned FFHQ dataset images. Use the same steps as above to create a ZIP archive for training and validation.

MetFaces: Download the MetFaces dataset and create a ZIP archive:

python dataset_tool.py --source=~/downloads/metfaces/images --dest=~/datasets/metfaces-1024x1024.zip

See the MetFaces README for information on how to obtain the unaligned MetFaces dataset images. Use the same steps as above to create a ZIP archive for training and validation.

AFHQv2: Download the AFHQv2 dataset and create a ZIP archive:

python dataset_tool.py --source=~/downloads/afhqv2 --dest=~/datasets/afhqv2-512x512.zip

Note that the above command creates a single combined dataset using all images of all three classes (cats, dogs, and wild animals), matching the setup used in the StyleGAN3 paper. Alternatively, you can also create a separate dataset for each class:

python dataset_tool.py --source=~/downloads/afhqv2/train/cat --dest=~/datasets/afhqv2cat-512x512.zip
python dataset_tool.py --source=~/downloads/afhqv2/train/dog --dest=~/datasets/afhqv2dog-512x512.zip
python dataset_tool.py --source=~/downloads/afhqv2/train/wild --dest=~/datasets/afhqv2wild-512x512.zip

Training

You can train new networks using train.py. For example:

# Train StyleGAN3-T for AFHQv2 using 8 GPUs.
python train.py --outdir=~/training-runs --cfg=stylegan3-t --data=~/datasets/afhqv2-512x512.zip \
    --gpus=8 --batch=32 --gamma=8.2 --mirror=1

# Fine-tune StyleGAN3-R for MetFaces-U using 1 GPU, starting from the pre-trained FFHQ-U pickle.
python train.py --outdir=~/training-runs --cfg=stylegan3-r --data=~/datasets/metfacesu-1024x1024.zip \
    --gpus=8 --batch=32 --gamma=6.6 --mirror=1 --kimg=5000 --snap=5 \
    --resume=https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan3/versions/1/files/stylegan3-r-ffhqu-1024x1024.pkl

# Train StyleGAN2 for FFHQ at 1024x1024 resolution using 8 GPUs.
python train.py --outdir=~/training-runs --cfg=stylegan2 --data=~/datasets/ffhq-1024x1024.zip \
    --gpus=8 --batch=32 --gamma=10 --mirror=1 --aug=noaug

Note that the result quality and training time depend heavily on the exact set of options. The most important ones (--gpus, --batch, and --gamma) must be specified explicitly, and they should be selected with care. See python train.py --help for the full list of options and Training configurations for general guidelines & recommendations, along with the expected training speed & memory usage in different scenarios.

The results of each training run are saved to a newly created directory, for example ~/training-runs/00000-stylegan3-t-afhqv2-512x512-gpus8-batch32-gamma8.2. The training loop exports network pickles (network-snapshot-<KIMG>.pkl) and random image grids (fakes<KIMG>.png) at regular intervals (controlled by --snap). For each exported pickle, it evaluates FID (controlled by --metrics) and logs the result in metric-fid50k_full.jsonl. It also records various statistics in training_stats.jsonl, as well as *.tfevents if TensorBoard is installed.

Quality metrics

By default, train.py automatically computes FID for each network pickle exported during training. We recommend inspecting metric-fid50k_full.jsonl (or TensorBoard) at regular intervals to monitor the training progress. When desired, the automatic computation can be disabled with --metrics=none to speed up the training slightly.

Additional quality metrics can also be computed after the training:

# Previous training run: look up options automatically, save result to JSONL file.
python calc_metrics.py --metrics=eqt50k_int,eqr50k \
    --network=~/training-runs/00000-stylegan3-r-mydataset/network-snapshot-000000.pkl

# Pre-trained network pickle: specify dataset explicitly, print result to stdout.
python calc_metrics.py --metrics=fid50k_full --data=~/datasets/ffhq-1024x1024.zip --mirror=1 \
    --network=https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan3/versions/1/files/stylegan3-t-ffhq-1024x1024.pkl

The first example looks up the training configuration and performs the same operation as if --metrics=eqt50k_int,eqr50k had been specified during training. The second example downloads a pre-trained network pickle, in which case the values of --data and --mirror must be specified explicitly.

Note that the metrics can be quite expensive to compute (up to 1h), and many of them have an additional one-off cost for each new dataset (up to 30min). Also note that the evaluation is done using a different random seed each time, so the results will vary if the same metric is computed multiple times.

Recommended metrics:

fid50k_full: Fréchet inception distance[1] against the full dataset.

kid50k_full: Kernel inception distance[2] against the full dataset.

pr50k3_full: Precision and recall[3] againt the full dataset.

ppl2_wend: Perceptual path length[4] in W, endpoints, full image.

eqt50k_int: Equivariance[5] w.r.t. integer translation (EQ-T).

eqt50k_frac: Equivariance w.r.t. fractional translation (EQ-Tfrac).

eqr50k: Equivariance w.r.t. rotation (EQ-R).

Legacy metrics:

fid50k: Fréchet inception distance against 50k real images.

kid50k: Kernel inception distance against 50k real images.

pr50k3: Precision and recall against 50k real images.

is50k: Inception score[6] for CIFAR-10.

References:

1. GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium, Heusel et al. 2017

2. Demystifying MMD GANs, Bińkowski et al. 2018

3. Improved Precision and Recall Metric for Assessing Generative Models, Kynkäänniemi et al. 2019

4. A Style-Based Generator Architecture for Generative Adversarial Networks, Karras et al. 2018

5. Alias-Free Generative Adversarial Networks, Karras et al. 2021

6. Improved Techniques for Training GANs, Salimans et al. 2016

Spectral analysis

The easiest way to inspect the spectral properties of a given generator is to use the built-in FFT mode in visualizer.py. In addition, you can visualize average 2D power spectra (Appendix A, Figure 15) as follows:

# Calculate dataset mean and std, needed in subsequent steps.
python avg_spectra.py stats --source=~/datasets/ffhq-1024x1024.zip

# Calculate average spectrum for the training data.
python avg_spectra.py calc --source=~/datasets/ffhq-1024x1024.zip \
    --dest=tmp/training-data.npz --mean=112.684 --std=69.509

# Calculate average spectrum for a pre-trained generator.
python avg_spectra.py calc \
    --source=https://api.ngc.nvidia.com/v2/models/nvidia/research/stylegan3/versions/1/files/stylegan3-r-ffhq-1024x1024.pkl \
    --dest=tmp/stylegan3-r.npz --mean=112.684 --std=69.509 --num=70000

# Display results.
python avg_spectra.py heatmap tmp/training-data.npz
python avg_spectra.py heatmap tmp/stylegan3-r.npz
python avg_spectra.py slices tmp/training-data.npz tmp/stylegan3-r.npz

License

Copyright © 2021, NVIDIA Corporation & affiliates. All rights reserved.

This work is made available under the Nvidia Source Code License.

Citation

@inproceedings{Karras2021,
  author = {Tero Karras and Miika Aittala and Samuli Laine and Erik H\"ark\"onen and Janne Hellsten and Jaakko Lehtinen and Timo Aila},
  title = {Alias-Free Generative Adversarial Networks},
  booktitle = {Proc. NeurIPS},
  year = {2021}
}

Development

This is a research reference implementation and is treated as a one-time code drop. As such, we do not accept outside code contributions in the form of pull requests.

Acknowledgements

We thank David Luebke, Ming-Yu Liu, Koki Nagano, Tuomas Kynkäänniemi, and Timo Viitanen for reviewing early drafts and helpful suggestions. Frédo Durand for early discussions. Tero Kuosmanen for maintaining our compute infrastructure. AFHQ authors for an updated version of their dataset. Getty Images for the training images in the Beaches dataset. We did not receive external funding or additional revenues for this project.

# data[].attributes.attachment_link.title
GitHub - NVlabs/stylegan3: Official PyTorch implementation of StyleGAN3

# data[].attributes.attachment_link.description
Official PyTorch implementation of StyleGAN3. Contribute to NVlabs/stylegan3 development by creating an account on GitHub.