<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Компьютерное зрение | Компания НТР</title>
	<atom:link href="https://ntr.ai/ntr-web-tags/kompyuternoe-zrenie/feed/" rel="self" type="application/rss+xml" />
	<link>https://ntr.ai</link>
	<description>Разработка информационных систем</description>
	<lastBuildDate>Wed, 30 Oct 2024 12:58:46 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>
	<item>
		<title>Научно-технический вебинар «От СДУ до задачи Монжа-Канторовича и обратно: путь к ИИ?»</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-ot-sdu-do-zadachi-monzha-kantorovicha-i-obratno-put-k-ii/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Tue, 05 Mar 2024 08:27:25 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=1389</guid>

					<description><![CDATA[<p>Спикер о вебинаре: А.Н. Колмогоров &#8212; крупнейший математик XX века, [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-ot-sdu-do-zadachi-monzha-kantorovicha-i-obratno-put-k-ii/">Научно-технический вебинар «От СДУ до задачи Монжа-Канторовича и обратно: путь к ИИ?»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Спикер о вебинаре:</strong><br />
А.Н. Колмогоров &#8212; крупнейший математик XX века, основоположник современной теории вероятностей, также заложивший основы теории марковских случайных процессов с непрерывным временем. Эти результаты, оказавшие огромное влияние на развитие прикладных методов обработки сигналов, фильтрации, моделирования и обработки финансовых данных, в 21 веке снова оказались в центре внимания в связи с развитием искусственного интеллекта и его приложений.</p>
<p>Действительно, для решения таких важных прикладных задач, как повышение разрешения изображений, синтезирование речи по тексту, генерация изображений на основе текстовых описаний, и др. требуются эффективные методы генеративного моделирования, которые способны порождать объекты из распределения, задаваемого выборкой примеров. Недавние достижения в области генеративного моделирования как раз и базируются на диффузионных моделях и используют математическую основу, заложенную еще в прошлом веке А.Н. Колмогоровым и его последователями.</p>
<p>В докладе будет рассказано о современных подходах к генеративному моделированию на основе диффузионных процессов и на основе решения задачи Монжа-Канторовича. Будет показана связь решения энтропийно-регуляризованной задачи Монжа-Канторовича с задачей построения диффузионного процесса с определенными экстремальными свойствами. Работа соответствующих алгоритмов будем продемонстрирована на примере решения различных задач обработки изображений.</p>
<p><strong>Презентация: </strong><a href="https://drive.google.com/file/d/1NV0OkagOYdYF_LylDtVpOzPo-PQxLcfA" rel="nofollow ">https://drive.google.com/file/d/1NV0OkagOYdYF_LylDtVpOzPo-PQxLcfA/</a></p>
<p><strong>Видеозапись: </strong><a href="https://youtu.be/fSbAHoCoUOk" rel="nofollow ">https://youtu.be/fSbAHoCoUOk</a></p>
<p><strong>Расшифровка вебинара:</strong><br />
<em>Расшифровка выполнена с помощью системы автопрокотолирования Protocol.AI, разработанной НТР</em></p>
<p>Речь идет о генерировании изображений, даже тех, которые не существуют и могут соответствовать какому-либо текстовому описанию. Сегодня я поговорю о нескольких классах алгоритмов, которые могут решать эту задачу. И почему это вообще связано с искусственным интеллектом? А потому, что существуют два типичных подхода к решению подобных задач, и между ними есть некая связь, о которой я расскажу.<br />
Генеративное удаление как таковое развивалось довольно давно, но в 2014 году появился новый подход на основе ГАНов (Генеративных adversarial networks) &#8212; это сверточные нейронные сети, которые берут на вход какой-то вектор шума или шумовую матрицу. Если правильно настроить параметры такой сверточной сети, на выходе можно получить изображения высокого разрешения, например, лиц людей, которые не существуют. Эта техника эксплуатирует факт, что если у нас есть простое распределение, например, равномерное гауссово, то нелинейным отображением его можно преобразовать в arbitrarily сложное многомерное распределение. Вопрос заключается в том, как это сделать.<br />
То есть, мы можем не знать вид плотности распределения рэпле, но мы можем сгенерировать неявное представление этой плотности, которая проявляется в данном случае. Распределение данных, генерируемых ею, напоминает распределение реальных данных, причем этот факт используется в алгоритме, который назван градиентным неконкурентным нерассеивающимся. Кроме того, в 20-м году появился другой класс моделей, основанных на диффузионных процессах. Сначала генерируется шумовое изображение, а затем оно специальным образом расширяется, чтобы получилось изображение, похожее на реальное, как те, что были в обучающих выборках. Кроме того, в идеале изображение коррелирует с описанием, которое пользователь ввел. Эти результаты используют некоторые интересные факты и теорию вероятности, особенно в отношении второго подхода, основанного на диффузионных процессах. Эти факты были заложены теорией паронных процессов, разработанной Колмогоровым, известным математиком прошлого столетия. Вот собственно и три основные компоненты.<br />
Я собираюсь сначала рассказать о диффузионных процессах, которые представляют собой первый подход к построению нериативных моделей. Второй подход &#8212; это оптимальный транспорт, который отличается от диффузионных процессов, но превосходит их математической строгостью и способностью достичь желаемого результата в различных ситуациях. Можно соединить эти два подхода с помощью моста Шелтингера, который также заслуживает внимания.<br />
Диффузионный процесс в непрерывном времени &#8212; это просто преобразование переменной x в момент времени, которое можно записать более просто. Здесь x может быть многомерным и задается нелинейным уравнением, включающим коэффициент сноса. Кроме того, добавляется дополнительное движение, которое задает случайность. Существует начальное значение процесса, которое генерируется случайным образом, и затем траектория запускается из этой начальной точки.<br />
Мы можем заинтересоваться свойствами такого случайного процесса. Например, если начальное распределение точки было сложным или даже представляло собой распределение некоторой сложной величины, такой как изображение, мы можем рассматривать изображение как реализацию случайно влеченной из неизвестного нам распределения реальных изображений.<br />
«Предположим, что изображение реального мира является реализацией неизвестного нам распределения реальных изображений. Мы считаем, что существует некоторое распределение, которое описывает изображения в реальном мире, хотя мы не можем быть уверены в этом. Пусть у нас есть сложное начальное распределение для случайных процессов. Известно, что если мы запустим случайную траекторию из этого распределения, то при определенных условиях (не слишком ограничивающих) её предельное распределение будет стремиться к некоторому фиксированному гауссовскому распределению. То есть в каждый момент времени распределение значения в этой траектории будет сходиться к гауссовскому распределению.»<br />
Этот факт, известный в теории марковских процессов в дискретном времени и в прерывистом случае, также применим к случайным процессам. Существует другой важный факт из теории случайных процессов: если случайный процесс в прямом времени удовлетворяет некоторому уравнению, то случайный процесс, определенный обратным временем, начинается с начального распределения, соответствующего предельному распределению прямого случайного процесса.<br />
Если уравнение траектории такое, то оно сходится к предельному распределению, которое соответствует начальному распределению прямого процесса. Это интересный факт, но требует некоторых дополнительных предположений. Кроме того, необходимо знать плотность распределения прямого процесса в любой момент времени, потому что для запуска обратного процесса требуется знать градиент логарифма этой плотности. Если мы знаем это, то мы можем воспользоваться уравнением, обладающим определенным удивительным свойством, как показано на рисунке. Это также очень важный факт из теории случайных процессов. Почему это оказывается полезным?<br />
Предположим, у нас есть некоторое начальное распределение, например, распределение векторов, каждый компонент которых соответствует пикселю изображения. Мы взяли arbitrarily одну случайную картинку из Интернета, как будто она была сгенерирована из этого распределения, которое нам неизвестно, но мы хотим иметь возможность моделировать его, т.е. генерировать из него наблюдения, похожие на реальные изображения. Мы запускаем траекторию случайного процесса из arbitrarily выбранной начальной точки. Что произойдет дальше?<br />
Если все будет сделано правильно, траектория сходится к предельному распределению, например, гауссовому. Фактически, мы начинаем зашумлять изображение. После определенного количества шагов, где каждый пиксель изображения преобразуется случайным диффузионным процессом, мы получим изображение с пикселями, которые представляют собой гауссовский шум. Если мы можем записать уравнение обратного процесса для данного диффузионного процесса, то мы можем размыть изображение, т.е. взять arbitrarily случайное изображение и преобразовать его в объект из распределения, как будто оно было сгенерировано из начального распределения, которое соответствует распределению реальных изображений. Если мы точно знаем начальное распределение, то мы должны получить изображение, похожее на начальное, а не на шум. Вот как можно реализовать эту идею?<br />
Конечно, для этого необходимо конкретное уравнение, которое удовлетворяет необходимому предельному свойству. Например, такими могут быть уравнения вида «капп», но в нашем случае будем использовать очень простое. В качестве коэффициента диффузии выступает некая функция брата, которая с течением определенного времени стремится к определенному значению с определенной скоростью. Таким образом, мы можем записать уравнение для обратного процесса. Основная сложность заключается в том, что мы не можем явно записать плотность распределения в этом процессе, поскольку оно зависит не только от текущего момента времени, но также от начального распределения, которое нам неизвестно и которое мы именно желаем бы моделировать.<br />
Предположим, нам удалось сделать это с помощью нейросети, в частности, используя универсальный парокситатор. Мы можем ассимилировать градиент логарифма плотности распределения неким хитрым образом. Если нам это удалось сделать, мы получаем следующую систему: у нас есть процесс, который зашумляет изображение, т.е. мы можем применить диффузионный процесс к любой начальной картинке и получить в результате просто шум. Если мы построили такой зашумляющий процесс, его можно обратить, построив некоторую нейросеть, которая аппроксимирует градиент логарифма плотности процесса. Таким образом, мы можем легко размыть изображение<br />
С помощью такого уравнения мы можем легко размыть изображение. Конечно, это уравнение записывается в дискретном времени, и мы вычисляем, как оно взаимодействует с arbitrarily выбранной картинкой, постепенно размывая ее и получая результат, похожий на те картинки, которые мы зашумляли для оценки градиента логарифма плотности распределения. Теперь осталось научить нейросеть размывать изображения таким же образом. На самом деле, все эти методы широко используются в теории случайных процессов.<br />
Если у нас есть распределение траекторий случайного процесса на некотором отрезке для процесса, градиент логарифма плотности которого мы знаем точно, то мы можем оценить распределение траекторий процесса с помощью некоторого расстояния Кульбака-Лейблера между двумя траекториями, рассматриваемыми как случайные функции. Это расстояние задается определенным уравнением, которое включает математическое ожидание внутреннего произведения. В таком случае, что мы могли бы сделать?<br />
Мы вычисляем этот интеграл с помощью модели авторегрессии, вместо интегрирования по времени. Затем мы подставляем значение этой величины, которая задается математическим ожиданием по траектории, во все уравнение и оптимизируем его по параметрам, чтобы обучить нейросеть размывать изображения. Проблема заключается в том, что мы обычно не можем выписать эту формулу явно. Но мы можем воспользоваться следующим трюком: разделим математическое ожидание на две части.<br />
Мы ожидаем не по времени, а по картинкам из обучающей выборки. Мы аппроксимируем это ожидание усреднением по обучающей выборке. Затем мы явно разделяем ожидание на две части: ожидание по картинкам и ожидание по траектории. Мы подставляем оценку плотности логарифма распределения, которую можем вычислить явно для конкретной диффузионной модели, в формулу. Затем мы минимизируем по параметрам. Вот что еще можно сделать: мы можем оценивать все остальное по формуле Монте-Карло для конкретного диффузионного процесса<br />
Здесь мы можем сгенерировать не только картинки, но и картинки, обусловленные текстом. Для этого нам нужно взять выборку пар «картинка-текстовое описание» и добавить в качестве параметра скор-функции некоторый вектор, представляющий условие на текст. Этот вектор получается с помощью вложения текста в некоторое пространство с помощью нейросети. Таким образом, мы можем управлять генерацией картинок с помощью текста.<br />
Хорошо, давайте продолжим. Мы уже обсудили один из подходов к моделям деления. Теперь перейдем ко второму методу, основанному на теории оптимального транспорта. Идея следующая: была задача Монжа, затем Канторовича. В современной постановке задача формулируется так: есть две меры, и мы хотим построить такое отображение T, чтобы оно точно переводило одно распределение в другое. Я уже упоминал, что можно преобразовать любое распределение в любое другое в этом же пространстве, если применить достаточно сложное отображение. Так вот, наша цель — найти среди всех возможных отображений такое, которое минимально изменяет исходное распределение.<br />
Леонид Витальевич Канторович был выдающимся математиком, который работал как в теории, так и на практике, решая множество важных прикладных задач. Он предложил теоретический подход к решению задачи, который оказался очень важным и полезным. Это по сути генеративно-состязательная сеть (ГАН), поскольку генеративные адверсариальные сети — это способ построения отображения, которое трансформирует простое распределение Гаусса в распределение изображений. Важно то, как устроен алгоритм оценки этого отображения и какой целевой функционал оптимизируется.<br />
Теперь обобщим: мы строим генератор, который трансформирует одно распределение в другое, и оптимизируем функционал, который при этом естественно возникает. На самом деле мы не знаем исходные распределения точно; они представлены наборами точек, сгенерированных из этих распределений. Если мы построили такое отображение, можно для любой новой точки предсказать, какой точке она соответствует. Это позволяет трансформировать один домен в другой.<br />
Теперь о классической задаче, также известной как слабый оптимальный транспорт. Если в классическом случае каждую точку одного распределения мы переносим в точку другого распределения так, что кажется, будто последняя была сгенерирована из второго распределения, то в случае слабого оптимального транспорта каждая точка переносится в окрестность, где существует условное распределение в зависимости от этой точки. Мы используем более общее описание функции стоимости, которое не просто учитывает квадрат разности, а зависит от способности порождать новые точки из условного распределения. И вот мы минимизируем этот функционал по всем возможным совместным распределения.<br />
Это то, что называется транспортным планом. В качестве функционала ?C можно использовать квадратичный функционал, который учитывает разность между ?Y и генерированным ?Y из условного распределения при заданном ?X. Однако, если использовать только квадратичную функцию стоимости, это может привести к вырождению транспортного плана в дельта-функцию, то есть условное распределение будет порождать только одну конкретную точку для каждого фиксированного ?X, что нежелательно. Чтобы избежать этого, следует добавить регуляризацию, которая предотвращает вырождение условного распределения.<br />
Такой подход позволяет создавать много разных условных точек ?Y для каждого ?X, используя штраф на дисперсию условного распределения. Это гарантирует, что условное распределение не будет вырожденным. Теперь возникает вопрос, как решать такую задачу оптимального транспорта. Очевидно, что нужно использовать нелинейные преобразования, если ранее мы использовали их для неявного представления распределений. Если раньше у нас было простое распределение, которое трансформировалось в сложное, то теперь ситуация немного сложнее.<br />
Имеется начальная точка ?X, которую мы отображаем в точку ?Y. Однако ?Y не однозначен и как будто генерируется из распределения при фиксированном ?X. Чтобы учесть эту неоднозначность, мы можем генерировать случайные значения шума ?Z, например, из Гауссовского распределения, и за счёт этого дополнительного источника шума разные ?X пропускают этот шум через нелинейное преобразование, получая разные ?Y, как если бы они были сгенерированы из условного распределения.<br />
Это неявный способ моделирования условного распределения, который может усовершенствовать любое условное распределение. Почему эта задача на самом деле важна на практике? Многие задачи анализа данных могут быть поставлены в непарной постановке. Например, мы хотим каждой фотографии сопоставить аниме-лицо, похожее на лицо человека на фотографии, но у нас нет пар «фотография — аниме-лицо». Мы не знаем, какое аниме-лицо на самом деле соответствует каждому человеческому лицу, но мы хотим достичь некоторой разумности в сопоставлении.<br />
Для этого мы задаём функцию стоимости, которая сравнивает лицо реального человека с аниме-лицом, и решая оптимизационную задачу, мы строим такое отображение, которое любую точку из распределения реальных лиц отображает в аниме-лицо, которое похоже с точки зрения функции стоимости на реальное лицо. Это отображение в идеале должно быть эффективным, и предполагается, что меры ??μX и ??μY существуют в одном пространстве одной размерности.<br />
Важно, что при определённых условиях можно достичь того, что отображение будет взаимнооднозначным. Если говорить об исходной задаче, то всегда существует решение. Эту задачу оптимизации можно переписать в двойственной форме, чтобы найти соответствующее отображение. Необходимо взять это отображение и другое преобразование, которое действует как дискриминатор, и оптимизировать данный целевой функционал, что выполняется довольно просто.<br />
Это похоже на задачу, возникающую в генеративно-состязательных сетях (ГАНах), где также присутствует оптимизационная минимаксная задача. Основное отличие здесь заключается в том, что в случае ГАНов существует дополнительное ограничение, которого нет в рассматриваемом нами случае. Задача оптимизируется по параметрам двух моделей, и находится седловая точка. Интегралы в этой двойственной задаче оцениваются методами, предложенными Карлом Декартом.<br />
На практике предположим, у нас есть картинки сумок, и мы хотим для каждой сумки сгенерировать обувь, похожую на структуру сумки. Поскольку из второго распределения при условии точки из первого можно сгенерировать множество различных образцов обуви, мы можем получить множество различных пар обуви для одной и той же сумки.<br />
Примеры подтверждают, что если использовать различные метрики, такие как Receptive Field или другие подобные метрики, качество трансфера может быть таким же или даже лучше. В случае анимационных лиц мы видим, что в целом сохраняется определенная семантика — выражение лица, цветовая гамма, что достигается даже с использованием самых простых функций стоимости.<br />
В этом контексте параметр гамма, о котором идет речь, имеет большое значение: чем больше гамма, тем больше дисперсия условного распределения, что влияет на результаты, которые мы получаем для заданного лица. Это можно использовать на практике, например, для трансформации поля ветра из одного домена, соответствующего климатической модели, в домен, соответствующий реальным измерениям. Это улучшает климатический прогноз, придавая ему свойства, близкие к реальным измерениям, что позволяет более точно оценивать феноменологические риски.<br />
Перейдем к третьей части моего рассказа о мошеннингере, который включает задачу построения оптимального транспорта. Транспортное отображение строится с учетом некоторой функции стоимости, что позволяет генерировать условные ?Y, зафиксированные на ?X, при условии, что функция стоимости не квадратичная и включает регуляризацию для предотвращения вырождения транспортного плана. В качестве такой реализации я использовал дисперсию, но можно применять и другие подходы, например, энтропию этого распределения ΠΠ.<br />
В случае использования энтропии, решение задачи слабого оптимального транспорта в многомерном случае становится практически невозможным, потому что оценка многомерной энтропии распределения ΠΠ в многомерном пространстве — это сложная и неблагодарная работа. Несмотря на то, что энтропия является часто используемым и теоретически привлекательным функционалом, применение его в непрерывных задачах оптимального транспорта, где распределение ?μ известно только выборочно, делает его использование нецелесообразным.<br />
Тем не менее, можно решить задачу оптимального транспорта с энтропийной регуляризацией, просто для этого нужно действовать иначе.<br />
Итак, это мост Шрёдингера. Существует задача, которая связывает дефиниционные процессы и оптимальный транспорт. Идея динамического моста Шрёдингера заключается в том, что он представляет собой стохастический процесс, управляемый стохастическим дифференциальным уравнением, который эволюционирует из одного распределения в другое. Мы требуем, чтобы начальное и конечное распределения точно совпадали, и при этом стремимся минимизировать квадрат сноса процесса, делая его траектории как можно более близкими к нулю.<br />
Оказывается, что между решением задачи моста Шрёдингера и оптимального транспорта существует взаимно однозначное соответствие: если решить задачу моста Шрёдингера с определёнными распределениями, то совместное распределение начального и конечного состояний этого процесса будет являться оптимальным транспортным планом для задачи оптимального транспорта. Это интересный факт, показывающий, что вместо прямого решения одной сложной задачи, можно переформулировать её и решить альтернативную задачу моста Шрёдингера.<br />
Как это работает на практике? Рассмотрим прикладную задачу: допустим, у нас есть изображения в плохом разрешении и мы хотим преобразовать их в изображения хорошего разрешения. Технически сложно сделать точные пары изображений одной сцены в разных разрешениях, поэтому традиционный регрессионный подход не применим. Вместо этого у нас есть множество непарных изображений, и мы хотим построить модель, которая &#171;наделяет&#187; изображение в плохом разрешении характеристиками изображения в хорошем разрешении.<br />
Здесь на помощь приходит мост Шрёдингера: начиная с изображения в плохом разрешении и применяя оптимальный стохастический процесс, мы можем постепенно преобразовать его в изображение хорошего разрешения. Если параметр стохастичности ?=0ϵ=0, процесс является детерминированным, и мы получаем прямое преобразование. При ?=1ϵ=1, процесс включает стохастичность, что добавляет вариативность в генерируемые изображения, делая результаты более разнообразными, но похожими на исходное изображение.<br />
Интересно наблюдать, как изменение параметра ?ϵ влияет на &#171;температуру&#187; преобразования: при увеличении ?ϵ стохастичность увеличивается, и конечное изображение может сильно отличаться от исходного, сохраняя при этом общие характеристики.<br />
Эти теоретические разработки важны, поскольку они позволяют формулировать строгие задачи для построения инновационных моделей. Из этих постановок можно извлечь теоретические оценки, объясняющие, почему те или иные алгоритмы работают эффективно. В отличие от эмпирических подходов, таких как ГАНы, где теоретические оценки часто сложны или невозможны, мост Шрёдингера предоставляет возможность для строгой теоретической оценки и объединения нескольких подходов в единую конструкцию.<br />
В заключение, мост Шрёдингера не только решает практические задачи, но и обеспечивает глубокое теоретическое понимание связей между различными областями математики и компьютерных наук.</p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-ot-sdu-do-zadachi-monzha-kantorovicha-i-obratno-put-k-ii/">Научно-технический вебинар «От СДУ до задачи Монжа-Канторовича и обратно: путь к ИИ?»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар «Иерархические методы и алгоритмы визуальной навигации внутри помещений с обучаемыми навыками»</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-ierarhicheskie-metody-i-algoritmy-vizualnoj-navigaczii-vnutri-pomeshhenij-s-obuchaemymi-navykami/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Mon, 04 Dec 2023 09:19:33 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=1294</guid>

					<description><![CDATA[<p>Спикер о вебинаре: Темой семинара является развитие автономности робототехнических систем, [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-ierarhicheskie-metody-i-algoritmy-vizualnoj-navigaczii-vnutri-pomeshhenij-s-obuchaemymi-navykami/">Научно-технический вебинар «Иерархические методы и алгоритмы визуальной навигации внутри помещений с обучаемыми навыками»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Спикер о вебинаре:</strong><br />
Темой семинара является развитие автономности робототехнических систем, поскольку современные методы нуждаются в большем семантическом понимании окружающей среды для решения задачи навигации при поиске целевых объектов и увеличении горизонта планирования. Перенос как обучаемых так и необучаемых методов решения задачи навигации из симуляционной среды в реальный мир также требует развития методологии и увеличения метрик качества получаемой траектории в силу того, что требуется учитывать возникающие шумы в датчиках и актуаторах робота.</p>
<p><strong>Дополнительные материалы:</strong><br />
<a href="https://ieeexplore.ieee.org/abstract/document/9241850/" rel="nofollow ">Real-Time Object Navigation With Deep Neural Networks and Hierarchical Reinforcement Learning</a><br />
<a href="https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9795006/" rel="nofollow ">Hierarchical Landmark Policy Optimization for Visual Indoor Navigation</a><br />
<a href="https://www.mdpi.com/2218-6581/12/4/104" rel="nofollow ">Skill Fusion in Hybrid Robotic Framework for Visual Object Goal Navigation</a></p>
<p><strong>Презентация: </strong><a href="https://drive.google.com/file/d/1iOq-UN_BlchyJW9y12LVIRkBym7-hUt0/view?usp=sharing" rel="nofollow ">https://drive.google.com/file/d/1iOq-UN_BlchyJW9y12LVIRkBym7-hUt0/view?usp=sharing</a></p>
<p><strong>Видеозапись: </strong><a href="https://www.youtube.com/watch?v=KGBDU2O8jMk" rel="nofollow ">https://www.youtube.com/watch?v=KGBDU2O8jMk</a></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-ierarhicheskie-metody-i-algoritmy-vizualnoj-navigaczii-vnutri-pomeshhenij-s-obuchaemymi-navykami/">Научно-технический вебинар «Иерархические методы и алгоритмы визуальной навигации внутри помещений с обучаемыми навыками»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Certified Robustness: Fundamentals and Challenges&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-certified-robustness-fundamentals-and-challenges/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Wed, 07 Dec 2022 11:21:08 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=989</guid>

					<description><![CDATA[<p>Speaker about the webinar: Adversarial attacks on neural net models [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-certified-robustness-fundamentals-and-challenges/">Научно-технический вебинар «Certified Robustness: Fundamentals and Challenges»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><b>Speaker about the webinar: </b><br />
Adversarial attacks on neural net models (usually solving computer vision tasks) have been an active machine learning research topic for more than 10 years. To mitigate the devastating effect of adversarial examples the methods of adversarial defense are proposed, being mostly empirical approaches. That said, some proposed algorithms of defense provide theoretical guarantees under any type of attack &#8212; they constitute the direction of certified robustness.<br />
In this talk, I will present not only the classical methods of certified defense and approaches to improving it but also the essential problems of certified robustness approaches and what could be considered as the possible solution to these challenges.</p>
<p><b>Additional Information:</b><br />
[1] Cohen, Jeremy M., Elan Rosenfeld, and J. Zico Kolter. &#171;Certified adversarial robustness via randomized smoothing.&#187;<br />
[2] Kumar A. et al. “Curse of dimensionality on randomized smoothing for certifiable robustness”<br />
[3] Fischer, Marc, Maximilian Baader, and Martin Vechev. &#171;Certification of Semantic Perturbations via Randomized Smoothing.&#187;<br />
[4] Muravev, Nikita, and Aleksandr Petiushko. &#171;Certified Robustness via Randomized Smoothing over Multiplicative Parameters.&#187;<br />
[5] Pautov, Mikhail, et al. &#171;CC-Cert: A Probabilistic Approach to Certify General Robustness of Neural Networks.”<br />
[6] <a href="https://sokcertifiedrobustness.github.io" rel="nofollow">https://sokcertifiedrobustness.github.io</a><br />
* Aleksandr Petiushko personal webpage: <a href="https://petiushko.info" rel="nofollow">https://petiushko.info </a><br />
** Aleksandr Petiushko Google Scholar profile: <a href="https://scholar.google.com/citations?user=b8d5wS-QfscC" rel="nofollow">https://scholar.google.com/citations?user=b8d5wS-QfscC </a></p>
<p><b>Attention! The event will be in English.</b></p>
<p><b>Video: </b> <a href="https://youtu.be/N40xcQBIXDg" rel="nofollow">https://youtu.be/N40xcQBIXDg</a></p>
<p><b>Slides: </b> <a href="https://drive.google.com/file/d/1sDK9EfBUt7vBMKzFMueHR5q7ilviRFQ2/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1sDK9EfBUt7vBMKzFMueHR5q7ilviRFQ2/view?usp=sharing</a></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-certified-robustness-fundamentals-and-challenges/">Научно-технический вебинар «Certified Robustness: Fundamentals and Challenges»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Манипуляции изображений при помощи сетей GAN&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-manipulyaczii-izobrazhenij-pri-pomoshhi-setej-gan/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Mon, 11 Jul 2022 04:57:36 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=865</guid>

					<description><![CDATA[<p>Спикер о работе: Считается, что в латентных пространствах GAN есть [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-manipulyaczii-izobrazhenij-pri-pomoshhi-setej-gan/">Научно-технический вебинар «Манипуляции изображений при помощи сетей GAN»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><b>Спикер о работе: </b><br />
Считается, что в латентных пространствах GAN есть векторы, соответствующие семантически значимым признакам на изображении. Сдвиги вдоль этих векторов приводят к интерпретируемым изменениям на самом изображении, например, можно менять цвет волос, добавлять очки и т. д. Я расскажу про две наши статьи, в которых мы рассмотрели как линейные, так и нелинейные сдвиги в латентном пространстве GAN.</p>
<p><b>Дополнительные ссылки: </b><br />
<a href="https://arxiv.org/pdf/2102.06204.pdf" rel="nofollow">https://arxiv.org/pdf/2102.06204.pdf</a>;<br />
<a href="https://openaccess.thecvf.com/content/ICCV2021/papers/Khrulkov_Latent_Transformations_via_NeuralODEs_for_GAN-Based_Image_Editing_ICCV_2021_paper.pdf" rel="nofollow">https://openaccess.thecvf.com/content/ICCV2021/papers/Khrulkov_Latent_Transformations_via_NeuralODEs_for_GAN-Based_Image_Editing_ICCV_2021_paper.pdf</a>;<br />
<a href="https://openaccess.thecvf.com/content/CVPR2022/papers/Preechakul_Diffusion_Autoencoders_Toward_a_Meaningful_and_Decodable_Representation_CVPR_2022_paper.pdf" rel="nofollow">https://openaccess.thecvf.com/content/CVPR2022/papers/Preechakul_Diffusion_Autoencoders_Toward_a_Meaningful_and_Decodable_Representation_CVPR_2022_paper.pdf</a>.</p>
<p><b>Видео: </b><a href="https://youtu.be/EsNd_8GST38" rel="nfollow">https://youtu.be/EsNd_8GST38</a><br />
<b>Презентация:</b> <a href="https://drive.google.com/file/d/1Z6GfcPXSspUVnK0LQJ74tIH2th0uOa6_/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1Z6GfcPXSspUVnK0LQJ74tIH2th0uOa6_/view?usp=sharing</a></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-manipulyaczii-izobrazhenij-pri-pomoshhi-setej-gan/">Научно-технический вебинар «Манипуляции изображений при помощи сетей GAN»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Улучшение генерализации при определении дипфейков&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-uluchshenie-generalizaczii-pri-opredelenii-dipfejkov/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Wed, 22 Jun 2022 04:14:11 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=846</guid>

					<description><![CDATA[<p>Спикер о работе: Системы для определения дипфейков плохо генерализируются на [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-uluchshenie-generalizaczii-pri-opredelenii-dipfejkov/">Научно-технический вебинар «Улучшение генерализации при определении дипфейков»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><b>Спикер о работе: </b><br />
Системы для определения дипфейков плохо генерализируются на новых базах данных или новых дипфейках. В этом вебинаре, мы продемонстрируем эту проблему и предложим несколько общих подходов, которые должны улучшить генерализацию моделей для определения дипфейков.<br />
Мы рассмотрим такие подходы как увеличение разнообразия данных при тренировке с помощью агрессивной генерации данных, тонкая настройка моделей под новые данные и переформатирование моделей под обучение для атрибуции вместо обычной бинарной классификации.</p>
<p><b>Дополнительные ссылки: </b><br />
 &#8212; Pavel Korshunov and Sébastien Marcel, &#171;Improving Generalization of Deepfake Detection with Data Farming and Few-Shot Learning&#187;, IEEE Transactions on Biometrics, Behavior, and Identity Science, 2021. <a href="https://publications.idiap.ch/attachments/papers/2021/Korshunov_TBIOM_2021.pdf" rel="nofollow">https://publications.idiap.ch/attachments/papers/2021/Korshunov_TBIOM_2021.pdf</a><br />
 &#8212; Anubhav Jain, Pavel Korshunov, and Sébastien Marcel, &#171;Improving Generalization of Deepfake Detection by Training for Attribution&#187;, MMSP 2021. <a href="http://publications.idiap.ch/downloads/papers/2021/Jain_MMSP_2021.pdf" rel="nofollow">http://publications.idiap.ch/downloads/papers/2021/Jain_MMSP_2021.pdf</a><br />
 &#8212; Pavel Korshunov, Anubhav Jain, and Sébastien Marcel, &#171;Custom attribution loss for improving generalization and interpretability of deepfake detection&#187;, ICASSP 2022. <a href="https://publications.idiap.ch/attachments/papers/2022/Korshunov_ICASSP_2022.pdf" rel="nofollow">https://publications.idiap.ch/attachments/papers/2022/Korshunov_ICASSP_2022.pdf</a></p>
<p><b>Презентация: </b> <a href="https://drive.google.com/file/d/16jKOvCiJcRSHYZsxnicXHrnaJ_1pIpVg/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/16jKOvCiJcRSHYZsxnicXHrnaJ_1pIpVg/view?usp=sharing</a><br />
<b>Видеозапись: </b> <a href="https://youtu.be/ZockRUVLlR0" rel="nofollow">https://youtu.be/ZockRUVLlR0</a></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-uluchshenie-generalizaczii-pri-opredelenii-dipfejkov/">Научно-технический вебинар «Улучшение генерализации при определении дипфейков»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар “Распознавание дипфейков: люди против машин”</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskiy-vebinar-raspoznavanie-dipfeykov-lyudi-protiv-mashin/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Mon, 30 Aug 2021 09:49:06 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=585</guid>

					<description><![CDATA[<p>Спикер о работе: Практически каждый может сейчас сгенерировать реалистичный дипфейк. [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskiy-vebinar-raspoznavanie-dipfeykov-lyudi-protiv-mashin/">Научно-технический вебинар “Распознавание дипфейков: люди против машин”</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Спикер о работе: Практически каждый может сейчас сгенерировать реалистичный дипфейк. Уже существует много методов для распознавания дипфейков, но до сих пор непонятно насколько реалистичны дипфейки для обычного человека и справляются ли алгоритмы лучше с их распознаванием. В контексте этого вебинара, мы сравним насколько люди, из результатов субъективного исследования 60-ти человек, лучше или хуже определяют дипфейки по сравнению с двумя моделями распознавания дипфейков.</p>
<p>Публикации по теме:</p>
<p>1. P. Korshunov and S. Marcel, &#171;Subjective and objective evaluation of deepfake videos&#187;, ICASSP 2021.</p>
<p><a href="https://publications.idiap.ch/index.php/publications/show/4543" target="_blank" rel="nofollow noopener">https://publications.idiap.ch/index.php/publications/show/4543</a></p>
<p>2. A. Jain, P. Korshunov and S. Marcel, &#171;Improving Generalization of Deepfake Detection by Training for Attribution&#187;, MMSP 2021.</p>
<p><a href="https://publications.idiap.ch/index.php/publications/show/4635" target="_blank" rel="nofollow noopener">https://publications.idiap.ch/index.php/publications/show/4635</a></p>
<p>3. P. Korshunov and S. Marcel, &#171;Vulnerability assessment and detection of Deepfake videos&#187;, IJCB 2019</p>
<p><a href="https://publications.idiap.ch/index.php/publications/show/4122" target="_blank" rel="nofollow noopener">https://publications.idiap.ch/index.php/publications/show/4122</a></p>
<p><strong>Презентация:</strong> <a href="https://drive.google.com/file/d/1hc-ZkUNWsdapPB4kqxpx6TWN-nMxnd1U/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/1hc-ZkUNWsdapPB4kqxpx6TWN-nMxnd1U/view?usp=sharing</a></p>
<p><strong>Запись:</strong> <a href="https://youtu.be/8wIPneLCxC8" target="_blank" rel="nofollow noopener">https://youtu.be/8wIPneLCxC8</a></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskiy-vebinar-raspoznavanie-dipfeykov-lyudi-protiv-mashin/">Научно-технический вебинар “Распознавание дипфейков: люди против машин”</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар “Гиперболические эмбеддинги для задач классификации изображений”</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-giperbolicheskie-embeddingi-dlya-zadach-klassifikaczii-izobrazhenij/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Tue, 10 Aug 2021 06:34:31 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=361</guid>

					<description><![CDATA[<p>Спикер о вебинаре: &#171;В этом докладе я расскажу про нашу [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-giperbolicheskie-embeddingi-dlya-zadach-klassifikaczii-izobrazhenij/">Научно-технический вебинар “Гиперболические эмбеддинги для задач классификации изображений”</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Спикер о вебинаре:</p>
<p>&#171;В этом докладе я расскажу про нашу статью об эмбеддингах изображений в гиперболическое пространство. Обычно в задачах компьютерного зрения используются Евклидовы или сферические эмбеддинги; в нашей статье мы предложили искать эмбеддинги изображений в гиперболическом пространстве.</p>
<p>Сначала я немного поговорю о ранее предложенных методах машинного обучения, использовавшие вложения в гиперболические пространства, потом коротко расскажу об обучении на датасетах с малым количеством примеров на каждый класс (few-shot learning), и, наконец, мы обсудим наши эксперименты.&#187;</p>
<p>Ссылка на статью: <a href="https://openaccess.thecvf.com/content_CVPR_2020/papers/Khrulkov_Hyperbolic_Image_Embeddings_CVPR_2020_paper.pdf" target="_blank" rel="noopener">https://openaccess.thecvf.com/content_CVPR_2020/papers/Khrulkov_Hyperbolic_Image_Embeddings_CVPR_2020_paper.pdf</a></p>
<p><span style="font-weight: 600;">Запись:</span> <a href="https://youtu.be/MkuLcY-EHq8" target="_blank" rel="noopener">https://youtu.be/MkuLcY-EHq8</a></p>
<p><span style="font-weight: 600;">Презентация:</span> <a href="https://drive.google.com/file/d/1M33m51nnJTt9qKdVxrTTOgcUZZxMZeKC/view?usp=sharing">https://drive.google.com/file/d/1M33m51nnJTt9qKdVxrTTOgcUZZxMZeKC/view?usp=sharing</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">(00:00:00) (Начало записи.)</span></p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Меня зовут Лейла, я сегодня расскажу про нашу статью </span><i><span style="font-weight: 400;">Hyperbolic Image Embeddings. </span></i><span style="font-weight: 400;">Если есть какие-то вопросы, можно прямо во время спрашивать.</span></p>
<p><span style="font-weight: 400;">Сначала я расскажу вообще в принципе о гиперболической геометрии в рамках машинного обучения, нейронных сетей. Потом я расскажу про сеттинги, в которых мы пробовали применить эмбеддинги гиперболических пространств, Few-shot learning. И в конце, собственно, расскажу про эксперименты. Это все по мотивам статьи, вот тут авторы работ. Это CVPR 2020 года. Если кому интересно, весь код выложен на GitHub. </span></p>
<p><span style="font-weight: 400;">Вообще мотивация у нас была достаточно простая. Если немножко упростить, то мы можем считать, что с точки зрения кривизны пространства бывают трех видов: это может быть постоянная нулевая кривизна, как у Евклидовых пространств, постоянная положительная кривизна и постоянная отрицательная кривизна. Тут такая иллюстрация интуитивная. То есть в случае постоянной нулевой кривизны у нас пространство Евклидово, это обычное пространство, к которому мы привыкли. Есть сферические пространства с постоянной положительной кривизной и, соответственно, гиперболические пространства с постоянной отрицательной. </span></p>
<p><span style="font-weight: 400;">И, допустим, в machine learning мы ищем очень часто эмбеддинги данных в какое-то метрическое пространство. Обычно это пространства либо Евклидовы, либо сферические. В задачах computer vision пространство используют либо Евклидово, наше стандартное, либо сферическое – это в случае, если у нас metric cosine similarity. </span></p>
<p><span style="font-weight: 400;">И первые работы, которые использовали применение таких гиперболических пространств для задач, были задачи NLP. И вообще такие гиперболические пространства очень подходят для каких-то данных, у которых есть иерархия, и в NLP она достаточно явная. А для картинок до нашей работы никто не пробовал применить такие эмбеддинги.</span></p>
<p><span style="font-weight: 400;">Вообще, у гиперболической геометрии есть несколько эквивалентных моделей, потому что мы явно не можем вложить это все в Евклидово пространство, поэтому нам нужны такие специальные модели. Одна из них – это модель Лоренца, это модель гиперболоида. Есть еще модель Бельтрами-Кляйна, есть еще модель Пуанкаре, и там есть еще, на самом деле, и другие тоже, но это самые популярные. И в нашей работе мы использовали модель Пуанкаре. Она в принципе достаточно удобна для визуализации, например, если мы хотим потом как-то визуализировать данные, то обычно используют модель Пуанкаре.</span></p>
<p><span style="font-weight: 400;">Вообще модель Пуанкаре – это пара такая. Первый элемент пары – это открытый диск, и второй – это метрика. И в этой модели точки у нас лежат внутри этого диска, а прямые линии – это такие дуги, перпендикулярные границе диска. И, допустим, у нас есть точка в гиперболическом пространстве x, есть точка y. Их сумма, про которую я расскажу чуть позже, как она определяется, точка z будет лежать вот здесь. А средняя от этих трех будет внутри такого треугольника находиться, как бы такой центр масс. Про эти операции среднего и их сложения я чуть попозже расскажу. </span></p>
<p><span style="font-weight: 400;">Такое более формальное определение. У нас эта пара – многообразие и заданная метрика – то есть у нас открытый шар и метрический тензор. Точнее говоря, модель Пуанкаре считается конформной к Евклидовой, то есть углы между векторами сохраняются. Метрический тензор выглядит вот так, то есть у нас есть конформный фактор относительно евклидовой метрики, стандартная единичная матричка. </span></p>
<p><span style="font-weight: 400;">Соответственно, расстояние для двух точек внутри модели Пуанкаре выглядит таким образом, такая функция.</span></p>
<p><span style="font-weight: 600;">(00:04:55)</span></p>
<p><span style="font-weight: 400;">Вообще говоря, гиперболические пространства не являются векторными пространствами, к которым мы привыкли. То есть мы не можем складывать вектора явно, мы не можем умножать на число, мы не можем умножать на матрицу и так далее. Но нам хотелось бы уметь это делать, поэтому можно воспользоваться, что называется, формализмом гировекторных пространств, Möbius Gyrovector framework, в рамках которого можно определить своего рода сложение, умножение на число, на матрицу и так далее.</span></p>
<p><span style="font-weight: 400;">И вот этим воспользовались в работе, которая предложила вообще использовать гиперболические нейронные сети. То есть они, например, обобщили линейный слой на такой линейный гиперболический слой. Сделали они это следующим образом. </span></p>
<p><span style="font-weight: 400;">Сейчас отойду немножко в сторону. До этого я давала в определении модели пару открытого диска единичного радиуса, но, вообще говоря, иногда нам было бы интересно рассматривать еще другие радиусы, потому что, если так представить, то, если у нас есть какой-то такой диск бесконечного радиуса, то есть очень-очень большого радиуса, который стремится к бесконечности, то это в пределе будет Евклидово пространство, потому что все эти соотношения кривизны нарушаются.</span></p>
<p><span style="font-weight: 400;">Соответственно, меняется определение многообразия, немножко модифицируется формула для конформного фактора. И теперь мы можем определить то, что называется сложением в рамках вот этого формализма Мёбиуса. То есть, если у нас есть две точки, вектора, то мы можем сложить их следующим образом. Расстоянием будет вот такая функция. </span></p>
<p><span style="font-weight: 400;">И тут в принципе можно упражнение сделать: если взять c = 1, диск единичного радиуса, то мы получим гиперболическое расстояние, которое я показывала до этого. А если в пределе взять с, стремящееся к 0, то у нас будет просто Евклидово расстояние. И можно думать об этом параметре c как о чем-то, что будет модифицировать пространство так, что оно будет ближе к Евклидовому, либо ближе к гиперболическому пространству. Если у нас c маленькое, то в пределе у нас будет Евклидово пространство. То есть мы можем чуть-чуть добавить гиперболичности, что бы это ни значило. Это все очень нестрого.</span></p>
<p><span style="font-weight: 400;">Еще вообще нам нужны отображения из Евклидового в гиперболическое пространство и обратно. То есть, если у нас есть вектор в Евклидовом пространстве, мы ищем его аналог в гиперболическом. Это будет осуществляться при помощи экспоненциального отображения, то есть это функция из R</span><span style="font-weight: 400;">n</span><span style="font-weight: 400;"> в диск заданного радиуса. Она выглядит вот так. Это сложение, которое мы определили до этого, вот здесь что-то надо вычислить.</span></p>
<p><span style="font-weight: 400;">Соответственно, обратное к нему отображение из модели Пуанкаре в Евклидово пространство выглядит вот таким образом. </span></p>
<p><span style="font-weight: 400;">В общем, мы будем пользоваться этим для того, чтобы искать разные представления векторов в Евклидовом и в пространстве Пуанкаре.</span></p>
<p><span style="font-weight: 400;">Помимо всего прочего, нам еще было бы полезно определить умножение матрицы на вектор. Вот так оно выглядит. И тогда мы уже можем прямо явно сразу же определить обобщение линейного слоя на гиперболическое пространство. В принципе, если мы возьмем с в пределе, равное 0, то у нас будет обычный линейный слой. То есть это, действительно, не какая-то такая совершенно новая вещь, это, можно сказать, надстройка, это больше как обобщение. И здесь связь все равно остается с Евклидовым пространством в смысле этой кривизны, близкой к 0. </span></p>
<p><span style="font-weight: 400;">Еще очень часто в задачах нужно еще определить среднюю точку, как я вам показывала вот тут. То есть нам много где может понадобиться нахождение такого центра масс. И, если в Евклидовом пространстве мы привыкли, что это просто среднее, обычное наше среднее, то есть сумма, поделенная на количество членов, то… Вообще говоря, в других пространствах это не так явно, потому что, если определять среднюю точку, то это будет какая-то, наверное, оптимизационная задача, которая ищет точку, которая была бы максимально равноудалена от всех остальных.</span></p>
<p><span style="font-weight: 600;">(00:10:16)</span></p>
<p><span style="font-weight: 400;">И решать какую-то такую оптимизационную задачу в гиперболическом пространстве нам не хотелось бы, но, как я уже говорила, у гиперболических пространств есть несколько моделей. И так бывает, что в какой-то из моделей какая-то вещь выглядит намного проще, чем в других. И, так как они все эквивалентны, мы можем переходить из одной модели в другую, считать координаты, в которых это посчитать проще, и возвращаться обратно.</span></p>
<p><span style="font-weight: 400;">Здесь такая как раз ситуация. В модели Клейна можно достаточно просто найти среднее. Это в литературе называется Einstein midpoint, и выглядит оно следующим образом, то есть мы суммируем все точки с какими-то весами, веса – это Лоренц-факторы так называемые. Они тоже зависят от кривизны. И взвешиваем их в соответствии с этими коэффициентами.</span></p>
<p><span style="font-weight: 400;">И чтобы нам все определить, нам нужны отображения между моделями Пуанкаре и Клейна, то есть, если у нас есть точка в модели Клейна, то точка в модели Пуанкаре будет выглядеть таким образом, и наоборот. То есть все достаточно просто.</span></p>
<p><span style="font-weight: 400;">Все, что я сейчас рассказала – это такой математический аппарат, необходимый, чтобы определить эти слои в гиперболических нейронных сетях. То есть я привела формулу только для линейного слоя, но, вообще говоря, в этой статье есть еще, по-моему, (…) для задач NLP, RNN и еще, по-моему, что-то для классов регрессии. Но мы использовали, по-моему, только линейные слои, в нашей задаче ничего больше не понадобилось. </span></p>
<p><span style="font-weight: 400;">Как я сказала, все эти модели вообще были впервые использованы для задач NLP, и это делалось по причине того, что гиперболические пространства очень хорошо моделируют какую-то иерархическую структуру данных. Есть работы, которые показывают, что мы можем любое дерево вложить в двумерное пространство Пуанкаре, двумерную модель, с любой заданной точностью. И одной из первых работ, которая использовала гиперболическую геометрию в глубинном обучении – это модель, которая как раз искала эмбеддинги дискретных данных, генетические деревья с такой явной заданной иерархической структурой, какие-то сети. Для такого типа данных вложение в гиперболические пространства очень удобно.   </span></p>
<p><span style="font-weight: 400;">Возвращаясь к картинкам, в картинках сходу так не понятно, почему гиперболические эмбеддинги могут нам помогать, потому что, если для тех же слоев мы можем задать иерархию, то для картинок это все не так просто. То есть мы можем так пофантазировать и, например (такой пример мы приводили в статье) в каких-то задачах мы можем задать иерархию следующим образом. Здесь есть большая картинка, и есть какие-то подкартинки разных размеров. То есть подкартинка большего размера в этой иерархии была бы логично ближе к корню дерева. И какие-то мелкие детали – уже ближе к, так сказать, листьям дерева.</span></p>
<p><span style="font-weight: 400;">В общем, какую-то иерархию в принципе мы можем придумать. Но, вообще говоря, есть еще способ это измерить. Это называется дельта-гиперболичность. Она была введена в работах Михаила Громова. Есть еще смежное название: Gromov delta-hyperbolicity. Это способ, так сказать, оценить степень гиперболичности данных, точек. Она еще связана с параметром кривизны, то есть с радиусом диска нашей модели. И такая очень интуитивная интерпретация будет следующая: у нас есть какой-то треугольник, этой дельтой будет то, как сильно мы должны пошевелить границы этого треугольника, чтобы приблизиться к идеальному гиперболическому треугольнику. </span></p>
<p><span style="font-weight: 600;">(00:15:05)</span></p>
<p><span style="font-weight: 400;">Но в формулах это все выглядит намного проще. Для начала, нам нужно ввести то, что называется Gromov product от трех точек. Это такая разница попарных расстояний. И тогда у нас дельта – это будет минимальная разница между вот этим Gromov product для четырех точек. В общем, это four-point condition называется. </span></p>
<p><span style="font-weight: 400;">Я достаточно долго в свое время вглядывалась в эту формулу, но тут какая-то убойно неудобная интерпретация написана. То есть это то, насколько отличаются вот эти выражения для любой из этих четырех точек относительно того, как если бы они были внутри дерева, которое является чисто гиперболическим пространством. </span></p>
<p><span style="font-weight: 400;">Вообще, мне кажется, проще и в каком-то смысле полезнее думать о какой-то интерпретации для дискретных данных. То есть, если у нас есть набор точек, мы просто по определению строим матрицу таких попарных Gromov products, и потом нам нужно взять самое большое значение в следующей матрице, где матрица, вот этот вот крестик в кружочке, определяется следующим образом. </span></p>
<p><span style="font-weight: 400;">Вообще говоря, вот такой способ нахождения дельты вроде бы вообще кубической сложности, поэтому мы не можем это сделать все для… Если датасет у нас достаточно большой, больше 2000 точек, то…</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Сергей Кастрюлин спрашивает: «Не могли бы вы раскрыть, почему гиперболические пространства хорошо подходят для представления иерархических структур?»  </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Я, на самом деле, отправлю в статьи, потому что там все не так просто, какие-то теоремы. Но в целом можно считать так, что…</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Я немножко, может быть, помогу начать. Вообще говоря, пространство Громова является обобщением дерева.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Обобщением? Естественно, строить это все так: то есть в центр шара мы помещаем корень дерева, и потом вот здесь будут уже какие-то более низкоуровневые «дети» этого дерева. В общем, суть в том, что вот эти расстояния будут расти экспоненциально, и поэтому тут ближе к границе немножко какое-то расширение пространства происходит, и вот сюда можно поместить намного большее количество точек, чем ближе к центру. Я не знаю, насколько это понятно все звучит. В общем, в гиперболическое пространство, модель Пуанкаре, можно вложить очень много точек за счет того, что они все будут около границы. </span></p>
<p><span style="font-weight: 400;">В общем, я, наверное, не могу объяснить достаточно строго. Интуитивно – как-то так.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Да. Гиперболическое пространство, несомненно, является обобщением понятия дерева. Просто там у нас еще появляются такие интересные связи между листьями этого дерева. И поэтому, если у нас иерархическая структура представляется деревом, то, используя структуру гиперболического пространства, которое является обобщением понятия дерева, мы можем не только отразить связи между веткой и листом дерева, не только построить дерево, которое хорошо ветвится к краю гиперболического пространства, но еще и отразить, например, связи между листьями деревьев. Они окажутся достаточно далеко, что естественно, но, с другой стороны, мы можем видеть, какие листья ближе к каким, независимо от их… Скажем так, вводя дополнительную метрику помимо длины через корень, которая будет коррелировать с метрикой в гиперболическом пространстве. Наверное, как-то так. Не знаю, ответили ли мы с Лейлой на ваш вопрос.</span></p>
<p><span style="font-weight: 600;">(00:20:33)</span></p>
<p><span style="font-weight: 400;">Максим Годзи спрашивает: «А эти попарные расстояния в Gromov product в каком пространстве измеряются?»</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Здесь были, по-моему, гиперболические расстояния. Нет, Евклидовы. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Любая метрика там, по-моему, уводится. Как только у нас имеется метрическое пространство с метрикой d, мы можем строить дальше произведение Громова и дальше смотреть, насколько гиперболичное наше пространство. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Продолжаю. </span></p>
<p><span style="font-weight: 400;">Вообще говоря, для картинок тоже не очень ясно, как посчитать эту дельту. Поэтому мы предлагаем следующий такой алгоритм: мы берем картинки, ищем фичи с помощью какой-то сети нейронной, и потом уже считаем расстояние между множеством этих фичей. Вот эту как раз матрицу попарных Gromov products. И вот относительно них мы уже считаем эту дельту. </span></p>
<p><span style="font-weight: 400;">В общем, как я уже упомянула, там сложность кубическая, поэтому весь набор данных мы не можем так просчитать. И поэтому мы можем брать, семплировать каждый раз, допустим, 1500 картинок, и для них считать эту дельту, и потом усреднять. В принципе, на практике мы видели, что там не очень сильно меняется эта дельта, то есть это достаточно устойчивая оценка. Но это все эмпирически было. </span></p>
<p><span style="font-weight: 400;">Как я уже сказала, мы можем вообще считать, что вот эта дельта в каком-то смысле может быть мерой гиперболичности в плане того, что если она близка к 0, нам не нужно сильно модифицировать наши данные так, чтобы они были близки к какому-то идеальному гиперболическому их аналогу на примере с этими треугольничками. </span></p>
<p><span style="font-weight: 400;">Чтобы это сравнивать, нам нужно как-то нормировать вот эту дельту, потому что, вообще говоря, она будет зависеть от максимального расстояния между точек. Это диаметр множества. Поэтому мы можем взять вот такое соотношение, которое будет вообще по построению от 0 до 1. И оно будет интуитивно показывать то, насколько наши данные близки к гиперболическому пространству. </span></p>
<p><span style="font-weight: 400;">И в качестве такой проверки нашей затеи мы насемплили точки из гиперболического пространства, из полусферы, из сферы и вот из дерева. Теория гласит, что для гиперболического пространства дельта должна быть равна 0, для сферы и полусферы – 1, а для дерева тоже 0.</span></p>
<p><span style="font-weight: 400;">Но на практике получилось у нас вот так. Это ошибка в соответствии с этим семплингом. Но в принципе достаточно близко. Тут, конечно, приличная разница, здесь тоже, но вот для сферы достаточно точно. Как такую интуитивную меру это использовать можно. </span></p>
<p><span style="font-weight: 400;">Для картинок мы воспользовались тремя сетями для того, чтобы найти эмбеддинги, и вот для нескольких датасетов мы прикинули. И мы, в общем-то, достаточно обрадовались, увидев, что разница между значениями для разных нейронных сетей не очень большая. То есть это достаточно устойчивая оценка.</span></p>
<p><span style="font-weight: 600;">(00:25:05)</span></p>
<p><span style="font-weight: 400;">И еще мы можем использовать эту дельту для подсчета оптимального значения радиуса нашего диска. </span></p>
<p><span style="font-weight: 400;">Теперь я хотела бы перейти к задаче, которую мы решили решать в рамках эмбеддингов в гиперболические пространства. Есть такой класс задач, это называется Few-shot learning, в которых у нас для каждого класса не очень много примеров. И это такие достаточно сложные задачи, потому что обычных искусственных датасетах у нас много примеров, и наша сеть выучивается. А если у нас примеров, не знаю, по 200 на каждый класс, что близко к реальной жизни, нам надо как-то исхитряться и как-то, может быть, моделировать какие-то отношения между ветками одного класса. Мы, в общем-то, подумали, что, может, здесь пригодятся как раз эмбеддинги в гиперболические пространства.  </span></p>
<p><span style="font-weight: 400;">В общем, как вообще выглядят данные задачи? В обычном сеттинге классификации у нас есть какие-то батчи, внутри которых есть элементы каждого класса, и мы выучиваем модель так последовательно. </span></p>
<p><span style="font-weight: 400;">Но в рамках Few-shot learning мы на каждом этапе семплируем не батчи, а мы семплируем так называемые задачи, tasks. И внутри этой задачи у нас есть обучающая выборка, которая здесь называется в этих терминах support set, тестовая, которая здесь называется query set. </span></p>
<p><span style="font-weight: 400;">И вот эти задачи выглядят следующим образом. У нас есть какой-то коэффициент N-way K-Shot, такая задача. Тут цель наша – классифицировать вот эти тестовые картинки относительно количества классов, которые мы рассматриваем на каждой итерации, таким образом, что для каждого класса у нас есть K картинок. То есть давайте здесь на примере объясню, чтобы было понятнее.</span></p>
<p><span style="font-weight: 400;">Вот у нас есть три вида собачек, и здесь у нас будет по K примеров для каждого класса. То есть суммарно у нас тут будет N*K картинок. На этапе теста нам нужно будет правильно классифицировать какое-то количество Q картинок относительно этих N классов. В общем, я надеюсь, что понятно. </span></p>
<p><span style="font-weight: 400;">В общем, основная мысль в том, что каждый раз мы семплируем. Допустим, один из стандартных сеттингов у нас – по 1 картинке на 5 классов. </span></p>
<p><span style="font-weight: 400;">В общем, прям явно такие задачки решать, как мы решаем задачи классификации, мы не можем. Одно из таких простеньких геометрически интуитивных решений – это использование prototype networks. Оно выглядит следующим образом. </span></p>
<p><span style="font-weight: 400;">Интуитивно мы считаем, что у каждого класса есть как бы свой центр масс, и, когда к нам приходит картинка, мы решаем, к какому из центров она ближе. Такую модель достаточно просто обобщить на гиперболическое пространство, потому что здесь в качестве центра масс мы возьмем вот это гиперболическое среднее, которое вычисляется через Einstein midpoint. И каждую картинку мы будем просто эмбеддить в гиперболическое пространство. </span></p>
<p><span style="font-weight: 600;">(00:29:55)</span></p>
<p><span style="font-weight: 400;">Если так это все просуммировать, то алгоритм примерно следующий. У нас есть набор данных, мы оцениваем его гиперболичность, значение дельты. То есть мы берем, 100 раз семплим оттуда по 1500 картинок, измеряем для них значение дельты, усредняем. И его мы используем для оценки оптимального параметра кривизны для вложения. Радиус нашего диска в модели Пуанкаре. </span></p>
<p><span style="font-weight: 400;">Мы взяли вот эту ProtoNet, вот эту сеть, эту модель. Назначили какие-то сверточные слои, и в конце пошли в fully connected слои. И мы добавляем туда слой, который берет фичи картинок, отправляет их в модель Пуанкаре с помощью экспоненциального вот этого отображения, то есть это просто явная формула. Потом мы как раз прикидываем, пересчитываем прототипы каждого класса через гиперболическое среднее. И в качестве нашего предсказания мы берем просто ближайший прототип относительно гиперболического расстояния. </span></p>
<p><span style="font-weight: 400;">То есть, по сути, технически тут ничего такого сложного. То есть мы перекидываем все в гиперболическое пространство, считаем там матрицу гиперболических расстояний, и просто берем ближайший класс.</span></p>
<p><span style="font-weight: 400;">Достаточно интересно то, что такая простая процедура помогла улучшить точность. Мы рассматривали это на двух Few-shot сеттингах. Один Few-shot learning, и брали датасеты, которые были у этой задачи, такие стандартные. Это датасет с птицами, там примерно 12 тысяч картинок, классов там 200, примерно по 600 картинок для каждого класса, то есть это немного. И MiniImageNet, составленный из большого ImageNet датасета. Там у нас 100 классов по 600 примеров на каждый класс.</span></p>
<p><span style="font-weight: 400;">Здесь таблички из нашей статьи. Вот здесь мы сравниваемся с другими моделями. Статья уже, на самом деле, устарела, сейчас там уже какие-то очень хитрые-хитрые методы используются. Но вот примерно относительно Baseline, который мы брали, который мы меняли. Вот тут, допустим, было 50%, но наша вся эта процедурка с меппингом в гиперболическое пространство и поиском ближайшего класса через матрица попарных гиперболических расстояний дала нам прирост вообще в 13%. Здесь 12%. Понятно: чем больше примеров на каждый класс, тем легче модели.</span></p>
<p><span style="font-weight: 400;">И относительно других моделей здесь, например, какие-то такие модели, они уже достаточно сложные. ProtoNet простая с геометрической точки зрения, но все остальные какие-то уже более навороченные. И вот относительно более сложных моделей у нас все равно достаточно хорошая точность. Учитывая особенно простоту. </span></p>
<p><span style="font-weight: 400;">Датасет с картинками птичек считается достаточно простым, поэтому в качестве сети для эмбеддинга можно брать сверточные слои, обычные. Но вот для каких-то более сложных датасетов, например, MiniImageNet, там уже больше работают ResNet-модели. </span></p>
<p><span style="font-weight: 400;">На MiniImageNet у нас результаты были не такими хорошими, но в принципе относительно Baseline-сети, вот этой ProtoNet, у нас прирост тоже был заметным. Но, например, почему-то, когда мы брали в качестве эмбеддинга ResNet, у нас точность была хуже. Она все равно лучше, чем здесь, но относительно других моделей, которые моделируют все это в Евклидовом пространстве, у нас точность проседала. Не очень сильно, в принципе, но она здесь уже не лучшая в столбце. Не знаю, может быть, как-то вот эти коннекшны как-то нарушают какую-то геометрическую структуру. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> А функции потерь у вас были одни и те же? Что у вас за функция потерь была?</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Да, там стандартная ошибка. </span></p>
<p><span style="font-weight: 600;">(00:35:00)</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Потому что в принципе там должна быть достаточно тонкая игра между функцией потерь и пространством вложения. Например, triplet loss, троичная функция потерь, уже даже по своей записи довольно близка к расстоянию у Громова. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">В принципе, да, она же как раз будет моделировать эти расстояния между уже тремя точками. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Поэтому идеологически там должна быть достаточно тонкая игра между функцией потерь и пространством вложения. Например, наши результаты говорят о том, что triplet loss генерирует метрические вложения, которые являются компактными, но неразделимыми линейно. Поэтому там, например, хорошо ConvNet работает, а линейные разделители работают плохо. Вероятно, у вас здесь какая-то похожая ситуация. Почему там ResNet-ы работают хуже, чем ConvNet, там надо разбираться. Но, скорее всего, какие-то особенности компактности вложений и того, как вы их измеряете, здесь играют. Но, поскольку я свечку не держал около ваших вложений, мне довольно трудно рассуждать, почему это именно произошло. Но я бы предложил здесь хорошенько подумать о тонкой игре между пространством вложений и функцией потерь. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Да, возможно. У нас такая работа была немножко proof of concept, просто взяли достаточно простой способ все это внедрить, (…) задать. Поэтому какого-то прямо серьезного анализа у нас не было, но то, что ResNet что-то портит, мы заметили. С этим было достаточно обидно, потому что до (…) значений мы не могли дотянуть, потому что они как раз были получены с помощью ResNet, а для MiniImageNet просто </span><span style="font-weight: 400;">search esteem</span><span style="font-weight: 400;"> не хватало этого. </span></p>
<p><span style="font-weight: 400;">Общий вывод. Вообще говоря, если посмотреть на ту табличку с оценкой дельты, дельта там достаточно маленькая. Напомню: там было в районе 0,2-0,25 относительно отрезка от 0 до 1. То есть ближе к 0. Как бы создается ощущение, что какая-то гиперболическая структура в данных с картинками присутствует. Но что она из себя представляет, понять сложно, потому что мы явно не можем найти какие-то интерпретируемые представления в гиперболических пространствах. </span></p>
<p><span style="font-weight: 400;">Еще эксперимент показывает, что такая простая операция в виде перехода в гиперболическое пространство, действительно, улучшает точность. На более простом датасете с птицами разница порядка 13-15%, а для MiniImageNet чуть похуже, 5%, наверное. Но тоже достаточно ощутимая разница. </span></p>
<p><span style="font-weight: 400;">Вообще да, интересно было бы еще посмотреть, в каких, может быть, смежных задачах в Computer Vision можно попробовать это все применить. У нас эксперименты были в основном на Few-shot learning, и еще одна наша соавтор делала эксперименты на задаче Person re-identification. Это когда надо идентифицировать человека, который уже когда-то был в чаще выборки. Что-то такое, я не буду вдаваться в детали. Но там тоже какой-то прирост был, но он был не таким ощутимым, как в задаче Few-shot learning.      </span></p>
<p><span style="font-weight: 400;">Это, наверное, примерно все, что я хотела рассказать. Полный список работ.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Спасибо большое! Очень интересно. Коллеги, пожалуйста, вопросы, соображения. Нас здесь 32 человека. </span></p>
<p><span style="font-weight: 400;">Пока коллеги собираются с вопросами, я сделаю анонс. Это в текущем сезоне у нас последний вебинар, дальше в августе мы уходим на краткие каникулы. И вебинары возобновятся с сентября, о чем мы дополнительно всех известим.</span></p>
<p><span style="font-weight: 600;">(00:40:20)</span></p>
<p><span style="font-weight: 400;">Нам задаюсь вопросы. Владимир Елисеев спрашивает: «Какой размерности пространство было получено в результате перехода в гиперболическое пространство?» Размерность – наверное, число измерений имеется здесь в виду.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Да. Мы вкладывали, по-моему, в размерность… 128 у нас была стандартно. В общем, относительно других методов она была ниже. Как раз особенность гиперболических пространств – что можно брать меньшую размерность, чем у других методов. Но, возможно, мы в экспериментах еще брали равную размерность, для какого-то, может быть, более честного сравнения с другими методами. Но в любом случае, оно не будет совсем честным. Но в целом размерность можно брать точно меньше, чем в Евклидовом пространстве. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> У меня есть вопрос. Вы делали вложение в гиперболическое пространство только на последнем слое? Предыдущие слои гиперболическими вы не делали?</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Да. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> А почему?</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Не знаю. Нам показалось это, наверное, более естественным способом, потому что мы хотели… Я сейчас вспомнила конкретно с этим, это как раз отвечает на предыдущий вопрос. Чтобы заметить разницу между вообще наличием этого слоя и отсутствием мы брали как бы стандартную модель, и просто, чтобы было относительно честное сравнение, мы навесили еще один слой с переходом в гиперболическое пространство, чтобы мы могли сравнивать нашу модель как бы со слоем и без слоя. Но, вообще говоря, можно, наверное, сразу. Просто должен быть не выход, а в сверточном слое не терзор, а что-то такое.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Вам задают вопросы массово. Валерий Парубец спрашивает: «Есть ли различия при подборе размерности эмбеддинг-слоя, то есть количества измерений, между Евклидовым пространством, сферой и гиперболоидом?»</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Гиперболоидом – в смысле, моделью Лоренца или просто?</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Имеется в виду гиперболический эмбеддинг.  </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Так как считается, что гиперболические пространства могут моделировать какие-то достаточно сложные соотношения между точками, между данными, можно брать не очень высокую размерность. И на практике, если сделать какой-то great search по размерностям (мы это делали не в этой работе, мы это делали в другой работе для рекомендательных систем), то можно увидеть, что меньшие размерности часто работают лучше. То есть, начиная с какого-то момента, может, увеличить еще можно с каким-то приростом, но начиная с какого-то момента точность падает. То есть высокая размерность там точно не плюс. То, что могут использовать в стандартных сетях и вкладывать в размерность 1024, например, здесь будет очень излишним. Здесь навскидку 128 работает уже хорошо. Может, даже 64 будет лучше. </span></p>
<p><span style="font-weight: 400;">А сферические, если честно, я особо в этих работах не разбираюсь. Там это так названо сферическими, но какого-то явного вложения их нет. Там будет нормировка относительно нормы, то есть так, чтобы была единичная норма, и сверху cosign distance. И какого размера они берут фичи, я, если честно, не знаю. Но, мне кажется, что-то, наверно, как у Евклидового пространства. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Максим Годзи спрашивает: «Хотелось бы чуть больше деталей про Gromov product, опять же. Выглядит как интересный способ оценить иерархичность данных. Как пошагово это сделать, если применять этот метод к анализу семантики текстов, связей между словами, для которых мы подозреваем иерархичность и хотим ее измерить?» Наверное, надо открутить на слайд, где у вас матричный продукт. </span></p>
<p><span style="font-weight: 600;">(00:45:05)</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Да. Я в NLP не разбираюсь, но так навскидку кажется, что все, что нам нужно – это какие-то… Если можно задать метрику на предложениях, на словах, на всем таком, то тут все достаточно явно. Вообще у меня на первом слайде есть ссылка на репозиторий, и на репозитории есть код. Там он коротенький, ничего сверхъестественно сложного нет. Все, что нужно для этой функции – только матрица попарных расстояний. И если есть матрица попарных расстояний, то эту дельту посчитать очень просто.</span></p>
<p><span style="font-weight: 400;">Другое дело, что я не знаю, чем это будет для таких текстовых данных.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Раз Максим задает такой вопрос, он подозревает где-то иерархичность. Ну, например, есть же естественная иерархичность у слов, связанная с их значением. Например, имеется животное, животное бывает кошка, собака и многое другое, а собака бывает бульдог, лайка, овчарка и прочее. Это естественная иерархичность данных. Она у вас и в картинках присутствует. Мне на самом деле удивительно, что вы не стали подобные вещи как-то исследовать, потому что в том же ImageNet есть некая иерархия, которую теоретически можно было бы выявить. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Мы немножко пытались разобраться в этом, но, например, для ImageNet мы тоже так смотрели. Там есть какие-то фотографии животных, скажем. Тоже можно привязать иерархию из биологии. Есть млекопитающие, среди них есть кошки, есть собаки, есть тигры. В общем, что-то такое. Но для этого нужно подразумевать наличие таких данных. То есть мы должны уже что-то про эту иерархию знать, какие-то метаданные должны быть.</span></p>
<p><span style="font-weight: 400;">И вообще, насколько я помню, вроде бы есть статья или хотя бы пре-принт. Она тоже про картинки, но там использовали еще какие-то метаданные как раз вот для какого-то поиска иерархии, скажем. В общем, для какого-то более иерархически определенного вложения.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор: </span><span style="font-weight: 400;">Теоретически мы можем пытаться построить… Пусть у нас есть некое пространство, в котором у нас есть признаки, например, картинок. И мы посчитали нашу дельта-гиперболичность по Громову, увидели, что данные обладают достаточной гиперболичностью. Взяли и начали строить деревья на наших данных, и теоретически должен существовать способ построить объемлющее дерево некое, которое будет давать некую иерархию, которая оптимально аппроксимирует данные в нашем гиперболическом пространстве. То есть можно поставить задачу аппроксимации в гиперболическом пространстве. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Не имея какой-то информации?</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Не имея, да. То есть задача оптимальной аппроксимации гиперболического пространства (…). Пожалуйста, вам на кандидатскую или на докторскую.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Звучит сложно. Там перебирать много что придется.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Там должна ставиться хорошо задача. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Так можно, наверное. Но пока что сходу что-то такое тяжеловесное. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Почему? Весь (…) прямолинейная наука. Ладно. Дмитрий Перверзев спрашивает: «Есть ли формальный способ определить оптимальный способ изогнутости гиперболического пространства?»</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Относительно данных, можно как раз делать через дельту. А потом можно параметр кривизны по этой формуле посчитать.</span></p>
<p><span style="font-weight: 600;">(00:50:02)</span></p>
<p><span style="font-weight: 400;">Но это будет не прямо точно-точно, потому что, как минимум, в дискретной постановке мы здесь будем много раз семплить, то есть это будет какое-то приближение. Плюс у модели Пуанкаре из-за того, что нам нужно постоянно оставаться внутри диска, чтобы точки не выходили за пределы, нам, вообще говоря, в каждой операции нужно будет убеждаться, что точки лежат в пространстве, и нам нужно делать клиппинг. То есть мы будем обрезать значения, которые будут выходить за 1, в любом случае. И в принципе они из-за того, что много таких сложных функций, как логарифмы, вот эти все формулы, какие-то корни и все такое, там могут быть числовые нестабильности, поэтому там приходится все время добавлять какой-то </span><span style="font-weight: 400;">ε</span><span style="font-weight: 400;"> на каждом этапе. И вот какой-то прям точной оценке c и, соответственно, вложений прямо не будет. Но будет примерно это вот так. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Спасибо. Пока наши коллеги собираются с вопросами, у меня есть вопрос. Вы упомянули свою другую работу по гиперболическим вложениям для рекомендательных систем. А вы там считали гиперболичность пространства данных?</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Да. Там как раз на этом всем и была вся работа основана, потому что для рекомендательных систем вот эту иерархию представить намного проще. Тоже есть какие-то популярные предметы, товары, и какие-то менее популярные. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Каталог продуктов, например. В любом интернет-магазине у нас есть каталог продуктов, представляющий собой графовую структуру дерева, по сути. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Да, это либо по типу товара, либо с точки зрения популярности. Но похожим образом это все можно строить для таких данных. Но там у нас была немножко другая модель. Если здесь мы брали какую-то обычную Евклидову, и к ней добавляли вот этот слой, который отображает гиперболическое пространство, то та модель была совсем другая. Там мы использовали автоэнкодеры, вариационные автоэнкодеры в гиперболическом пространстве. Если это обычный автоэнкодер, то это просто линейные слои, а для гиперболических автоэнкодеров там немножко другая структура была. Да, там мы считали эту дельту. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> И как дельта получилась? </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Близко к 0. То есть там подразумевает какую-то иерархичность. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Хорошо, спасибо. Коллеги, пожалуйста, еще вопросы к Лейле. Максим Годзи спрашивает: «Какие следующие шаги?» Максим, куда шаги? </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Если вообще глобально про гиперболические такие вещи для машинного обучения, идея мне очень нравится, и геометрически это очень красиво. Но на практике иногда это достаточно сложно оптимизировать. Возможно, за счет вот этих нестабильностей в отображениях. То есть там формулы, и они какие-то достаточно сложные: там все эти корни, все эти логарифмы. И за счет этого, во-первых, уже может точность проседать. </span></p>
<p><span style="font-weight: 400;">А если мы вообще рассматриваем другой класс задач, где нам нужно, например, для рекомендательных систем, если мы храним отдельно наши эмбеддинги и их оптимизируем, в таком случае, возможно, понадобится вообще Риманова оптимизация. Оптимизация в гиперболических пространствах есть, но это все тоже достаточно тяжеловесное. </span></p>
<p><span style="font-weight: 400;">И в рекомендательных системах, несмотря на то что мы потом все простые baseline обогнали, нам было достаточно сложно это все подбирать. То есть там получается много параметров. Подсчет дельты и кривизны спасает от параметра, связанного с кривизной. </span></p>
<p><span style="font-weight: 600;">(00:55:07)</span></p>
<p><span style="font-weight: 400;">Раньше люди все брали единичный диск и в нем уже искали эти вложения. Но это не всегда оптимально. Но, если у нас оптимизация уже Риманова, то там тоже свои нюансы есть. Не всегда очень просто с этим экспериментировать. </span></p>
<p><span style="font-weight: 400;">А так не знаю, мне кажется, в каких-то основных областях уже кто-то попробовал какие-то гиперболические аналоги. Например, в NLP очень много теорий. Не знаю, ответила ли я на вопрос. </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Хорошо. Спасибо! </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Спасибо вам.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Модератор:</span><span style="font-weight: 400;"> Кажется, больше вопросов у нас нет. Спасибо, очень интересный рассказ! Надеемся, что у вас скоро появятся какие-то новые результаты, о которых вы у нас тоже расскажете. Я благодарен всем присутствующим, со всеми прощаюсь до сентября. Спасибо и до свидания! </span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">Мирвахабова Лейла: </span><span style="font-weight: 400;">Спасибо вам, что позвали! Все, до свидания.</span></p>
<p>&nbsp;</p>
<p><span style="font-weight: 600;">(00:56:27) (Конец записи.)   </span></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-giperbolicheskie-embeddingi-dlya-zadach-klassifikaczii-izobrazhenij/">Научно-технический вебинар “Гиперболические эмбеддинги для задач классификации изображений”</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар &#171;Open Images датасет: один датасет для многочисленных задач компьютерного зрения&#187;</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-open-images-dataset-odin-dataset-dlya-mnogochislennyh-zadach-kompyuternogo-zreniya/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 09:23:53 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=320</guid>

					<description><![CDATA[<p>Open Images &#8212; это очень большой датасет с унифицированными аннотациями [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-open-images-dataset-odin-dataset-dlya-mnogochislennyh-zadach-kompyuternogo-zreniya/">Научно-технический вебинар «Open Images датасет: один датасет для многочисленных задач компьютерного зрения»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Open Images &#8212; это очень большой датасет с унифицированными аннотациями для тренировки моделей для различных задач компьютерного зрения. Во-первых, он охватывает классические задачи компьютерного зрения: классификацию изображений, детектирование объектов, сегментацию объектов и детектирования взаимосвязей между объектами. Размер датасета имеет свои преимущества, но также и проблемы, о которых я расскажу в своей презентации. В версии датасета V6 мы добавили новый тип аннотаций &#8212; мультимодальные аннотации, состоящие из синхронизированного голоса, транскрипта и движения компьютерной мышки для описании картинки. Мы надеемся, что эти новые аннотаций будут содействовать исследованиям и инновациям в различных мультимодальных задачах.</p>
<p>‍</p>
<p>Open Images is a very large-scale dataset that provides unified annotations for many computer vision tasks. Firstly, it covers the classical tasks of computer vision: image classification, object detection, instance segmentation and visual relationship detection. The scale of the dataset brings its advantages as well as its challenges, which I will discuss during the talk. Further, in the V6 version of the dataset we added a new type of annotation &#8212; multimodal annotations consisting of synchronized voice, textual caption, and mouse traces over the objects being described. We hope that those new types of annotations will support the research and innovation in various computer vision and multimodal tasks.</p>
<p>‍</p>
<p><strong>Материалы:</strong></p>
<p>Сайт Open Images dataset: <a href="https://storage.googleapis.com/openimages/web/index.html" target="_blank" rel="nofollow noopener">https://storage.googleapis.com/openimages/web/index.html</a></p>
<p>Сайт Open Images challenge: <a href="https://storage.googleapis.com/openimages/web/challenge_overview.html" target="_blank" rel="nofollow noopener">https://storage.googleapis.com/openimages/web/challenge_overview.html</a></p>
<p>&nbsp;</p>
<p>Публикация по Open Images:</p>
<p>&#171;The Open Images Dataset V4: Unified image classification, object detection, and visual relationship detection at scale&#187;</p>
<p><a href="https://arxiv.org/abs/1811.00982" target="_blank" rel="nofollow noopener">https://arxiv.org/abs/1811.00982</a></p>
<p>&#171;Large-scale interactive object segmentation with human annotators.&#187;</p>
<p><a href="https://arxiv.org/abs/1903.10830" target="_blank" rel="nofollow noopener">https://arxiv.org/abs/1903.10830</a></p>
<p>&#171;Connecting Vision and Language with Localized Narratives.&#187;</p>
<p><a href="https://arxiv.org/abs/1912.03098" target="_blank" rel="nofollow noopener">https://arxiv.org/abs/1912.03098</a></p>
<p>Data: <a href="https://google.github.io/localized-narratives/" target="_blank" rel="nofollow noopener">https://google.github.io/localized-narratives/</a></p>
<p>&nbsp;</p>
<p>Модели для детекции объектов опубликованные на TF-Hub и колаб с примером использования:</p>
<p><a href="https://tfhub.dev/google/faster_rcnn/openimages_v4/inception_resnet_v2/1" target="_blank" rel="nofollow noopener">https://tfhub.dev/google/faster_rcnn/openimages_v4/inception_resnet_v2/1</a></p>
<p><a href="https://tfhub.dev/google/openimages_v4/ssd/mobilenet_v2/1" target="_blank" rel="nofollow noopener">https://tfhub.dev/google/openimages_v4/ssd/mobilenet_v2/1</a></p>
<p><a href="https://colab.sandbox.google.com/github/tensorflow/hub/blob/master/examples/colab/object_detection.ipynb" target="_blank" rel="nofollow noopener">https://colab.sandbox.google.com/github/tensorflow/hub/blob/master/examples/colab/object_detection.ipynb</a></p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-open-images-dataset-odin-dataset-dlya-mnogochislennyh-zadach-kompyuternogo-zreniya/">Научно-технический вебинар «Open Images датасет: один датасет для многочисленных задач компьютерного зрения»</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Научно-технический вебинар “Перенос нейросетей, работающих с изображениями, на мобильные устройства”</title>
		<link>https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-perenos-nejrosetej-rabotayushhih-s-izobrazheniyami-na-mobilnye-ustrojstva/</link>
		
		<dc:creator><![CDATA[Модератор Модераторов]]></dc:creator>
		<pubDate>Mon, 09 Aug 2021 07:04:02 +0000</pubDate>
				<guid isPermaLink="false">https://ntr.ai/?post_type=ntr-web&#038;p=306</guid>

					<description><![CDATA[<p>В докладе описаны разные архитектуры для запуска нейросетей на мобильных [&#8230;]</p>
<p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-perenos-nejrosetej-rabotayushhih-s-izobrazheniyami-na-mobilnye-ustrojstva/">Научно-технический вебинар “Перенос нейросетей, работающих с изображениями, на мобильные устройства”</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>В докладе описаны разные архитектуры для запуска нейросетей на мобильных девайсах, рассмотрены методы ускорения нейросетей на устройствах и типичные проблемы с переводом моделей на устройства. В качестве примера запустили модель на телефоне.</p>
<p>_ _ _</p>
<p>Запись прошедшего вебинара: <a href="https://youtu.be/3k9uHUkOSN8" target="_blank" rel="noopener">https://youtu.be/3k9uHUkOSN8</a></p>
<p>Материалы:</p>
<p>Про производительность <a href="http://ai-benchmark.com/" target="_blank" rel="noopener">http://ai-benchmark.com/</a></p>
<p>Примеры TF Lite <a href="https://www.tensorflow.org/lite/examples" target="_blank" rel="noopener">https://www.tensorflow.org/lite/examples</a></p>
<p>EfficientNet <a href="https://arxiv.org/pdf/1905.11946.pdf" target="_blank" rel="noopener">https://arxiv.org/pdf/1905.11946.pdf</a></p>
<p>Model optimization <a href="https://www.tensorflow.org/lite/performance/model_optimization" target="_blank" rel="noopener">https://www.tensorflow.org/lite/performance/model_optimization</a></p>
<p>‍</p>
<p>‍</p>
<p>(00:00:00) (Начало записи)</p>
<p>Сергей Чичерин: Добрый день, уважаемые коллеги. Меня зовут Сергей Чичерин. Я попытаюсь рассказать, возможно, даже показать разные варианты того, как можно использовать мобильное устройство для запуска нейронных сетей. Моя цель, здесь воодушевить и вдохновить вас для использования мобильных девайсов в качестве платформы для запуска нейронных сетей.</p>
<p>Допустим, у вас есть замечательная сеть, которая выполняет какую-то задачу, например стандартную задачу в компьютерном зрении, это классификация, сегментация, возможно, какие-то генеративные задачи, возможно, задачи, которые связаны с восстановлением или модификацией изображений. Также может быть ряд других задач, например с текстами и аудио.</p>
<p>Допустим, у вас есть рабочая модель, которые вы используйте, вы хотите как-то это решение претворить в жизнь. По сути, у вас несколько вариантов. Один из вариантов – это соорудить большую серверную платформу, которая выводит (inferring)  ваши сети, и вы можете их запускать, отсылая данные на сервер, и получая обратно ответ. Это очень дорого, это достаточно сложно и, возможно, третья проблема, с которой вам в таком случае предстоит столкнуться, это с тем, что, часть этих данных пользователи не хотят отсылать на сервер, есть различные законы о персональных данных, GDPR, о том, что вы не можете без разрешения отослать фотографию на сервер. Вы должны подтвердить, если это имеет отношение к персональным данным. При запуске сети локально на мобильных соблюдается приватность, не требуются внешние ресурсы и программы, и возможно получить быстрый отклик, там где это нужно.</p>
<p>Какие минусы запуска нейросетей на мобильных устройствах? Возможность запуска появилась сравнительно недавно, буквально 2-3 года назад. До этого те фреймворки, которые использовались, позволяли запускать нейросети на мобильных устройствах, но исключительно в режиме какой-то эмуляции, без поддержки со стороны железа. Несколько лет назад появились первые устройства, прежде всего, это Apple iPhone, Huawei P 20 и прочие,  устройства на базе Qualcomm, в которые встроен ускоритель для запуска нейросетей. Поэтому когда у нас есть готовое решение на базе нейросети, которое что-то делает, мы не можем его запускать на телефоне без отрыва от того, насколько быстро это будет работать, насколько вообще возможно, что оно будет работать, насколько мы можем адаптировать это для данного устройства.</p>
<p>Это очевидный минус, который присутствует в данной технологии. Технология достаточно свежая, но достаточно популярная, и поэтому, возможно, мы можем ожидать какое-то будущее за этой технологией.</p>
<p>(00:04:55)</p>
<p>Я немножко расскажу про какие-то платформы, может быть, показывая выдержки из статей, и затем мы попробуем запустить какую-то нейросеть и сконвертировать ее для мобильного устройства. Учитывая то, что количество платформ огромное, а количество нейросетей, количество того, что можем запустить, тоже, я попробую ограничиться минимально рабочим вариантом MVP.</p>
<p>Платформы. Допустим, у нас есть какое-то мобильное устройство, с поддержкой запуска нейросетей. Что представляет из себя его архитектура, так называемая system on a chip (SoC)? В мобильном устройстве есть, так же, как и в обычном компьютере, CPU &#8212; Central Processor Unit, GPU &#8212; графический ускоритель, периферийные контроллеры. Далее, появились в мобильных устройствах ускоритель для запуска нейросетей, NPU, и также есть другие ускорители, которые в зависимости от платформы, в зависимости от вендора, тоже позволяют ускоренно запускать нейросеть. Также присутствуют сигнальные процессоры DSP, которые   на некоторых платформах могут работать как ускорители для нейросетей.</p>
<p>По опыту запуска нейросетей на компьютерах мы знаем, что GPU, конечно, работает значительно быстрее, чем CPU. Для мобильного устройства, для телефона это, пожалуй, даже более критично, потому что мы ожидаем какой-то производительности от телефонов для того, чтобы выполнять какие-то задачи.</p>
<p>Например, типичная сеть для распознавания, она может занимать сотни мегабайт, и несколько миллиарда операций (GFLOPS), которое мы не всегда можем позволить себе на мобильном устройстве. Отсюда всевозможные ухищрения,специальные сетки для мобильных устройств, бенчмарки и методы для того, чтобы впихнуть данную сеть на мобильное устройство.</p>
<p>Существует одно из интересных исследований про performance мобильных устройств, правда, к сожалению, оно только для Android, называется AI Benchmark http://ai-benchmark.com. Создатели сделали несколько сетей и запустили на разных устройствах, и в зависимости от устройства мы видим ускорение производительности, насколько быстро это работает. Они провели некоторое исследование и написали статью, которая постепенно обновляется в связи с развитием платформы. Уникальность этой статьи в том, что они написали ее в содружестве с вендорами из Qualcomm, Samsung, Huawei и, таким образом, есть какая-то возможность сравнивать платформы System-on-a-Chip и сравнивать их производительность.</p>
<p>Какой типичный сценарий запуска нейросети на мобильном устройстве? Допустим, у нас есть какое-то одно определенное устройство, а мы хотим, чтобы она запускалась только на нем. Это идеальный вариант, в таком случае мы можем даже воспользоваться SDK, который предоставляет вендор, в случае, например, Qualcomm это SNPE, в случае Huawei HiAI, для Apple MLCore, подразумевая, что данная сеть работает максимально быстро. Данные инструменты могут включать в себя также возможность профилирования.</p>
<p>(00:10:12)</p>
<p>Но, чаще всего нам хочется, чтобы эта сеть работала скорее на всех платформах, и включая Apple тоже. Поэтому мы идем с другой стороны. Есть две замечательные библиотеки, которые стараются поддерживать запуск нейросетей. Это TF Light, то есть TensorFlow Light, это подпроект TensorFlow, которая, по сути, берет вычислительный граф из TensorFlow, и затем его преобразует, оптимизирует, и далее запускает на мобильное устройство в новом формате. В чем отличие запуска модели на устройстве, используя TensorFlow Light, или же PyTorch Mobile, соответственно, от запуска обычной сети на компьютере? Во-первых, у нас нету backward, то есть там чаще всего реализован сценарий, когда у нас есть фиксированный вход, то есть, условно говоря, тензорное произведение 3 X 224 X 224, и у нас нет возможности доступа к каким-то различным операциям, которые есть в стандартном TensorFlow, или которые мы можем сделать, используя PyTorch, потому что TF Light – это отдельная библиотека, которая поддерживает лишь какой-то набор операций. Посредством интерфейса Android NNApi операции запускаются на GPU и CPU мобильной платформы.</p>
<p>То же самое с Apple CoreML.</p>
<p>Существует ONNX формат для запуска сетей. Он содержит наборы операций и возможности конвертации, но при этом он не более распространен, чем другие</p>
<p>Каким образом мы еще можем ускорить нейросеть? По опыту мы знаем, что если сеть тренируется, например, на 32битных числах с плавающей точкой fp32, то мы можем снизить разрядность тех чисел в сети, которые используются, и понизить ее до fp16(квантизация), например, а чаще всего понижение до fp 16 не меняет производительность, не ухудшает performance, довольно слабо влияет на метрики, поэтому  чаще всего мы можем сделать Tensor Flow cast на fp16 или в PyTorch просто написать .float() Что произойдет? Мы убираем числа после запятой, некоторое количество разрядов, и получается модель значительно меньшего разрешения, то есть она в два раза меньше, и, соответственно она гораздо более производительная. Более того, она более производительная, потому что, может так случиться, что графический ускоритель на телефоне, например, более поддерживает ускорение в fp16.</p>
<p>Рассмотрим стандартный пример, который приведен в PyTorch Mobile, где рассказывается про то, что мы берем модель, которая, улучшает изображение, и затем ее преобразуем во что-то, чтобы затем запустить на телефоне. Модели, работающие в таком ключе с изображениями вполне могут работать на fp16.</p>
<p>(00:15:00)</p>
<p>Что касается фреймворков, во-первых, стоит ли говорить о том, что классически есть два способа разделения записи тензорного произведения от массивов тензоров. В одном случае канал идет в начале, например, 3, 224, 224, в другом конце 224, 224, 3. Один используется в Tensor Flow, соответственно, Tensor Flow Light, другой в PyTorch и Caffe. Соответственно, эта разница между фреймворками, из-за этого возникает некоторая проблема, связанная с тем, что данная конвертация между фреймворками сильно затруднена. Поэтому, имеет смысл чаще всего запускать, тренироваться на одном фреймворке.</p>
<p>Когда мы квантизируем до 16 бит, все отлично и хорошо, если мы пытаемся уменьшить квантизацию и, например, сделать ее восьмибитную, тут и появляются некоторые проблемы. Понятно, сильно выигрываем в производительности. Во-первых, когда квантизируется модель 8-битная, мы уже переводим в int, то есть мы значение из float, то есть числа с плавающей точкой, мы переводим в целочисленные. Например, мы берем самое большое, самое маленькое значение, затем их преобразуем в int-значение и растягиваем это вдоль промежутка и получаем какую-то целочисленную математику. Возможны проблемы с переполнением. Эти же проблемы возможны при тренировке, например, если мы тренируем модель не в fp32, а fp16,  допустим, большинство слоев работает нормально, но, например, batch norm то есть нормализация, когда мы вначале все складываем и умножаем, вполне возможно, получится так, что мы потеряем лишние значения.</p>
<p>Поэтому при тренировке чаще всего&#8230; Раньше делали как? Брали, тренировали все в double, а потом как бы квантизовали, отдавали в 16-битные или 8-битные числа. Иногда для ускорения тренировки  сейчас используют все-таки тренировку fp16, есть замечательный проект у NVidia, который называется apex, который позволяет достаточно легко декларативно написать, чуть-чуть поменяв train loop, сказав, что мы хотим изменить, уменьшить разрядность и увеличить скорость, при которой тренируется. Особенно это хорошо работает на новых платформах, на NVIDIA Turing, (00:18:58) и мы меняем opt-level, то есть O1 означает то что по дефолту</p>
<p>O2, как раз означает то, что мы оптимизируем те слои, которые работают нормально, мы их запускаем на пониженном разрешении, то есть во fp16, а, например, батч-нормы мы запускаем как обычно. Внутри этого фреймворка стоят конвертеры, которые конвертируют между, например, fp 16 и fp 32 на каких-то слоях.</p>
<p>Так, теперь, когда мы квантуем до 8 бит или даже менее. В принципе, можно и менее. Вот, например, какая-нибудь прекрасная статья про то, как можно квантовать в гораздо меньшее количество бит, и это отлично все работает, потому что, допустим, у нас есть дальше классификации, то есть мы используем сжимающее отображение</p>
<p>(00:20:02)</p>
<p>По сути, это какое-то сильное понижение размерности, то есть мы из пространства 224 на 224 на 3 переходим в 1000 классов и, наверное, можно придумать какое-то отображение, которое при этом достаточно похоже на оригинальное, даже используя такую пониженную арифметику.</p>
<p>Но до сих пор как-то не очень много девайсов, то есть производители не спешат предоставлять интерфейсы, производители фреймворков писать, чтобы это запускалось на меньшей разрядности, поэтому, в принципе, сейчас это более теоретические исследования, можем ли мы запустить на меньшем количестве бит, чем 8. Но мы пытаемся на 8-битных запустить.</p>
<p>Проблемы возникают не только во время training loop, то есть когда мы проходим forward, backward, но еще проблема в inference, то есть когда мы уже запускаем готовую сетку, потому что если мы каким-то образом квантизируем, то есть отсекаем эти данные, то получается накапливание ошибок. Отсюда появляется такой замечательный механизм, который называется quantization aware training. Это про то, что мы во время тренировки делаем следующее: сравниваем результаты, полученные от нормальной сети, и от сильно ужатой. Когда мы их сравниваем, мы должны понять, что ошибки округления не приводят к ошибкам, тем лоссам, которые возникают в результатах. В целом это примерно так.</p>
<p>Теперь про какие-нибудь классические сети. Чаще всего рассматривают классификационные сети, потому что это изученная проблема, и мы можем посмотреть бенчмарки на них.</p>
<p>Первая сеть, которая делает классификацию на мобильных устройствах, это всем известная MobileNet, она появилась сравнительно недавно. Что авторы сделали? Взяли типичный блок для сверток, который, например, ядро 3X3, batchnorm и ReLU, они заменили depthwise сверткой, а далее  depthwise, используя ядро 1 на 1, это pointwise-свертки, которые, в принципе, работают примерно схоже, но они значительно быстрее, потому что там могут быть группы или еще что-то. В следующих поколениях mobile.net, например, заменили ReLU на ReLU6, то есть выпрямитель стали ограничивать, например, 6 для того, чтобы при квантизации в int-значение у нас не возникало такого переполнения, то есть все значения находились в каком-то промежутке, достаточно ограниченном.</p>
<p>Затем появилось целое поколение других сетей. В принципе, сейчас state of the art задач распознавания – это EfficientNet, для поиска которого (00:24:16) использовали network architecture search, то есть искали используя алгоритмы для перебора архитектур. Наверное, у нас не так много времени, я не буду останавливаться на этом. Если вдруг вам требуется разрабатывать самим архитектуру нейросети, имеет смысл смотреть на те блоки, которые присутствуют в этих сетях, потому что они с доказанной производительностью работают.</p>
<p>(00:24:55)</p>
<p>Если посмотреть на известный график по image classification,, кажется, что  больше нескольких gflops мы уже не можем запускать на мобильных устройствах, то есть порог отсечения где-то в районе EfficientNet b3. Поэтому мы и используем какие-то сильно измененные архитектуры.</p>
<p>Процедура следующая. Мы берем, тренируем обычную модель, возможно, включаем quantization aware training, это тот способ, когда мы добавляем ошибку округления в общую ошибку, то есть таким образом сеть тренируется, что при дальнейшем округлении мы не сильно теряем. Затем мы переносим ее на ту архитектуру, которая может запускаться на телефонах. Соответственно, в случае PyTorch или Caffe это, например, ONNX, и дальше&#8230;</p>
<p>ONNX – это формат для обмена весами и операциями в нейросети.</p>
<p>Раньше думали, что этот формат будет распространен, и все будут им пользоваться, но на самом деле, он, к сожалению, поддерживается слабо&#8230;все равно мы не можем так легко конвертировать из него во что-то другое, но, тем не менее, это одна из попыток индустрии собрать какой-то один формат для конвертации данных. Затем переводим его в какую-то сеть в зависимости от платформы. Например, команда TensorFlow Light сделала гигантские усилия по тому, чтобы вы могли сеть запускать на разных устройствах. В зависимости от устройства мы можем выбрать тот способ, как мы можем запускать. В одном случае мы можем запускать на CPU, на CPU большинство операций поддерживается, и все замечательно, можем запускать на GPU, и можем запускать, если есть возможность, на NPU. Кроме того, например, если рассматривать Android, то та прослойка Android, которая называется NN API, она автоматически позволяет это определить, поддерживает ли данное устройство ускоритель или нет.</p>
<p>Давайте посмотрим какой-нибудь пример типичный, то есть вот, например, типичный пример запуска классификационной сети на Android. Что у нас есть? В принципе, это есть стандартный пример приложения на TensorFlow Light, которое запускается. Это классификация, она запускает несколько сетей. Здесь подключена камера, уже готовый код, который, например, считывает что-то с изображения, преобразует его в тензор, именно таким, способом. Но надо понимать, что то, что написано на Java, там даже форматы чисел другие, то есть littleendian против bigendian, (00:29:09) то есть он преобразует для формата данных, который запускает на TensorFlow Light. Так, тут, наверное, это какой-нибудь абстрактный класс.</p>
<p>Способы применения. Здесь сразу две сети, реализованы вызов, EfficientNet и MobileNet. соответственно, когда мы подаем изображение, мы вычитаем из него среднее и делим на отклонение, и затем запускаем сеть.</p>
<p>(00:29:58)</p>
<p>Сейчас, формат данного файла tflight. В каком-то виде (Netron) мы можем посмотреть фиксированный input т 224 на 224 на 3, затем цепочка таких блоков, о которых я говорил. Здесь разные форматы. С помощью средств командной строки мы можем преобразовать один формат в другой, это все есть в документации, то есть когда мы берем TF Light и конвертер, то, например это можно сделать при помощи кода. Мы берем обычную модель, в случае Tensor Flow это либо Keras модель, либо замороженный граф. Затем tflight конвертер что делает? Он делает несколько достаточно умных вещей, помимо всего прочего, он оптимизирует граф для запуска. Например,  у нас есть в конце блока batchnorm, он может, например, сделать fused batchnorm, так как он для запуска. то есть эти умножения, сложения, их добавить в свертки, и получится fuse block.</p>
<p>В заключение я хотел показать,  как запускается эта сеть, но тут ничего, на самом деле, тоже интересного нету. Я,  скачал с Kaggle какой-нибудь набор данных, который запускает,  какую-нибудь классификацию, то есть не просто готовую сеть, а, к примеру, она классифицирует по фотографии родинки определяет тип заболевания. То есть, возможно, эта родинка, например, какое-то заболевание. Вам будет интересно попробовать какую-то обычную классификационную сеть.</p>
<p>Я буквально только скачал все эти данные, затем запустил какой-то готовый ноутбук, и единственное, что здесь поменялось, это механизм преобразования файлов. Это стандартный Transfer Learning, то есть мы берем какую-то готовую сеть, и пытаемся преобразовать ее для наших нужд. Инициализация на PyTorch, соответственно, в вашем случае что-то будет по-разному, какой-то список классов. Мы читаем эту базу данных.</p>
<p>Изменение следующее. Я подключаю сюда EfficientNet, то есть я запускаю модель, которая не достаточно тяжелая, которая используется для классификации, а вот используя EfficientNet. Тут тоже Depthwise Separable Convolution и ReLU6, и затем вот такие стандартные блоки, и затем обучаю уже ее. В случае quantization aware training мне нужно будет добавить несколько блоков, которые добавляют ошибку квантизации, если я вдруг модель квантизирую.</p>
<p>В принципе, она как-то обучается, где-то тут есть, абсолютно без изменений, что-то там происходит, можно ее поставить дальше обучаться. Затем мы можем что сделать? Затем мы можем перенести ее на мобильные устройства. Так, как показать, не видно&#8230; Можно подключить кабель, затем, например, в случае Android я увижу, что это ADB Devices, наверное, где-то этот девайс должен появиться. Затем он появляется здесь. Я запускаю обучение, копирую модель и заменяю ее здесь нужной моделью, то есть конвертирую в tflight, заменяю здесь нужной моделью, и запускаю. Вот запустилась, и он как-то классифицирует. Понятное дело, что так как сами данные взяты не из сотового телефона, а из каких-то других картинок, тут вряд ли она идеально будет работать&#8230; тут согласно теореме об отсутствии бесплатных завтраков перенос домена на картинке с мобильного может не сработать и может не сработать куча вещей, но, общий принцип перенос сетей такой.</p>
<p>(00:35:08)</p>
<p>Ведущий: Видите, у нас есть несколько вопросов от участников.</p>
<p>Сергей Чичерин: Ага, давайте.</p>
<p>Ведущий: Некоторые из них более ли менее очевидны&#8230;</p>
<p>Сергей Чичерин: Давайте, сейчас по очереди. Я не понял про книжку.</p>
<p>Ведущий: Это про вашу статью на экране комментарий был.</p>
<p>Сергей Чичерин: Да, наверное, просто как-то не очень интересно пересказывать статьи, я просто их пришлю, весь список, который нужен, хотя бы про которые я говорил.</p>
<p>Затем&#8230; Да, недавно появилась возможность запуска PyTorch на мобильных устройствах, этот проект называется PyTorch Mobile. Они еще не добавили возможность запуска на GPU, то есть это только в процессе, поэтому это не так быстро. Но при этом то, как он работает на CPU, то есть на всех устройствах, достаточно быстро, потому что они используют замечательную библиотеку QNNX, которая достаточно хорошая и быстрая. Соответственно, да, PyTorch Mobile Android, там как раз пример, как на Android.</p>
<p>На TensorFlow, в зависимости от того, что&#8230; Сложности там, если, например, люди все время делали на TensorFlow, сказать им, как на PyTorch. Проект Android на GitHub, это просто тэфлайтовский проект и example, то есть это пример, где он расположен&#8230; Там куча примеров в TF Light, я взял image classification, но буквально поменял пару строчек и соответственно саму модель. В общем, какие-то навыки Android-программирования, наверное, нужны, чтобы помеcтить (00:37:09) заставку и  убыстрить диалог, но в целом, эти примеры, они прямо из коробки, когда мы меняем модель.</p>
<p>Про операции. Смотрите, есть операции, во-первых сегментации, то есть сегментацию можно по-разному проделать, PyTorch Mobile основан на&#8230; то есть он, в принципе, включает в себя набор операций из ONNX, и там может чего-то не быть, но мы можем как-то это заменить, то есть нет такого, что мы не можем это запустить. Но PyTorch Mobile – это более свежая, более незрелая разработка, поэтому, в общем-то, сейчас, конечно, все ориентируются на TF Light. Но, есть конечно еще и решения от вендоров, есть, от SNPE для Qualcomm, или Apple ML Core. Про них достаточно сложно говорить. Кажется, что общее решение, пусть не самое быстрое, но определенно хорошо работающее на разных девайсах, на наиболее большом спектре девайсов, это TF Light.</p>
<p>Ведущий: У меня еще есть вопрос. Вообще говоря, теоретически есть три основных направления, с помощью которых ужимаются, утаптываются нейронные сети. Одно из них квантизация, другое из них дистилляция, и третье – малоранговые и тому подобные аппроксимации. В основном вы сегодня говорили про квантизацию, а про дистилляцию и малоранговые аппроксимации, в общем-то, не говорили. Значит ли это, что в суровой практике упаковывания нейронных сетей в мобильные телефоны эти подходы почти не встречаются, и в основном вы добиваетесь своих результатов с помощью квантизации?</p>
<p>Сергей Чичерин: Смотрите, дистилляция как подход обычно&#8230; Как я для себя понимаю, это тот способ, когда мы берем какую-то большую сеть, и пытаемся результаты, полученные от большой сети воткнуть в малую. Та малая сеть, которая получена&#8230; Это способ обучения сети с меньшим количеством параметров, один из способов обучения.</p>
<p>(00:39:58)</p>
<p>В принципе, он замечательно работает, понятно, что не на всех типах задач. На классификации почему-то его не используют, потому что там резко понижается размерность. А, например, на каких-то генеративных задачах, наверное, дистилляция может работать. Но, тем не менее, теоретических работ мало на эту тему. Но, возможно, да, есть в каком-то&#8230; В принципе, генеративные сети тоже, по сути, могут выступать таким типом дистилляции, когда дискриминатор выглядит как какой-то такой элемент, который позволяет маленький генератор чему-то обучать.</p>
<p>Ведущий: У нас участники еще назадавали вопросов.</p>
<p>Сергей Чичерин: Так, ага. Про перспективы нейросетей&#8230; Выгода в цене&#8230; Сейчас. Кто платит-то? Платят пользователя, платят разработчики. Не совсем понятно&#8230; Пользователям, конечно, нужна какая-то интерактивность, например, что-то сфотографировал, и сразу получил результаты, и при этом не куда-то там отсылается, на сервер или еще что-то. Какая-то интерактивность, возможно, в AR каких-то приложениях. Я не очень знаю про текстовые приложения на телефонах, но, наверное, там тоже какая-то большая активность ведется.</p>
<p>Так. «Что почитать, за чем следить?» Можно читать, можно следить, можно этот пример, который я рассказал, как-то добить, то есть взять какую-то задачу, классификации, еще какую-то, какая вам интересна, и попробовать развить это. Не знаю, может быть это мне кажется, но теперь перенос нейросетей на мобильные телефоны перестал быть таким очень сложным. Там есть свои проблемы, но как будто бы достаточно несложно.</p>
<p>«У кого есть конвертер TF-моделей в код, который запускается на NPU?» «Нужен ли конвертер, или задействовать TF Light?» Смотрите, TF Light, в принципе, может запускать что? Он может запускать NN API. Раньше так было, что NN API – это часть Android, операционной системы, которая говорит, что «вот я могу запустить часть нейросети на данном устройстве», и это достаточно прозрачно. Соответственно, TF Light может&#8230; Например, грубо говоря, есть какой-то участок кода, сейчас я его открою, то, что мы просто выбираем&#8230; Вначале в блоке инициализации мы проверяем, какие девайсы присутствуют, и далее здесь модель, то есть мы в зависимости от этого запускаем нужную модель, то есть если GPU, то такое, если еще какое-то, то другое. Там есть какая-то инициализация блока, которая связана с NN API, и раньше это было&#8230; Сейчас, может быть, поменялся синтаксис, но раньше это было так, что мы можем&#8230; проверка, мы можем запустить этот блок NN API, и если можем, то, например, мы ее запускаем, нейросеть, на нужном устройстве.</p>
<p>Вообще говоря, у производителей «железа» есть конвертеры, которые именно запускаются прямо на самом железе. Это то же самое, SNPE Framework и Qualcomm – это примерно тот же аналог, наверное, того же конвертера, который берет TF-модель и конвертирует в SNPE, но в таком случае вам нужно взять программный интерфейс каждого вендора, и конвертировать для каждого вендора, то есть, по сути, проделать работу, которую проделывает скромная команда TF Light в Google, достаточно тяжело.</p>
<p>«Получается что на мобильниках сейчас нормально с GPU, можно работать&#8230;» Да, с GPU и даже с NPU. Отличие еще такое, что данные архитектуры по-разному поддерживают разные разрядности. Когда вы посмотрите вот демку Tensor Flow Light, например, может статься так, что на GPU, например, не запускается int8 модели, а запускается только float16-модели, то есть fp16.</p>
<p>(00:45:14)</p>
<p>Бинарные сети, они&#8230; Можно сжать классификатор, чтобы он работал как бинарная сеть, но почему мало исследований? Наверное, потому, что нет железных девайсов, которые так прямо работают. Но, возможно, что-то изменится в ближайшем будущем, как минимум, бинарные сети, то есть когда сжимается не до int8, а вообще до 0,1.</p>
<p>«Какой программный интерфейс&#8230;» Я не знаю, вот про сайты производителей, еще что-то, как там доступ для абстрактных вычислений, то есть про это я навряд ли могу сказать больше, чем на каких-то сайтах. Я консультировал Huawei на заре, сейчас я все же сотрудник Samsung, поэтому&#8230;</p>
<p>Так, Caffe2. А, вот, с Caffe2 последняя история PyTorch Mobile про то, что&#8230; Последняя истории Facebook про то, что они отказались от Caffe 2, они включили, условно говоря, весь код, который присутствует в Caffe 2, и они включили его в PyTorch Mobile, то есть теперь это вот так называется. Да, Caffe 2 – это раньше был очень популярный фреймворк для запуска на телефонах, но сейчас вот так.</p>
<p>Кажется, по крайней мере, обещали PyTorch Mobile на GPU.</p>
<p>Ведущий: Тут еще пропущенный вопрос: «Что думаете насчет бинарных сетей?»</p>
<p>Сергей Чичерин: А, нет, я говорил, что они работают, это достаточно интересное направление, но проблема в хардварной реализации, то есть, условно говоря, сейчас даже количество каких-то блоков оптимизируется исключительно под то, чтобы это работало, удобно работало на hardware, потому что какие-то рекомендации, что оно должно быть кратно 8 или какому-то другому числу.</p>
<p>Да, про сегментацию. Да, Detectron2, но это же фреймворк для&#8230; В общем, да, есть какая-то идея о том, что legacy какой-то код, который, подразумевалось, что если PyTorch – это фреймворк для исследований, то Caffe 2 – это inference framework, то есть для того, чтобы запускать сети, неважно, на чем. Но кажется, сейчас происходит то, что непонятно, что под него используется, и все же его не очень используют для inference.</p>
<p>Мобильный браузер&#8230; Я не очень знаю, но очень интересные проекты связаны с TF и JS, то есть когда Tensor Flow работает может быть, в Assembler, в JavaScript, и, соответственно, иногда даже работает в браузере. Может быть, работает не так быстро и не так замечательно, но проект очень интересный.</p>
<p>Так. «Кажется, что с мобиль&#8230;» Мобильные браузеры, в принципе, могут запускать TFJS, я видел какое-то даже приложение, которое работает на TFJS и мобильном браузере, но кажется, что там сильно понижается производительность и все остальное.</p>
<p>Ведущий: На самом деле, этот вебинар у нас по количеству вопросов уже побил предыдущий рекорд.</p>
<p>Сергей Чичерин: Наверное, может быть, потому что я не очень подготовился, и просто показал screen share, так хотя бы как-то пообщались.</p>
<p>Ведущий: Да, пожалуйста, Эмил, на любые вопросы даем любые ответы.</p>
<p>Сергей Чичерин: TFLight очень хорошо поддерживается на iPhone, и там единственное, что этот ускоритель эпловский, он работает, начиная с iPhone X или XR, с десятых версий.</p>
<p>(00:50:07)</p>
<p>Там как раз появилась поддержка ML Core API. Во-первых, у них есть свой API какой-то, а во-вторых&#8230; Я как-то запускал какую-то сеть из PyTorch Mobile в ONNX, и на iPhone она работала real-time, то есть это была какая-то такая real-time призма, по-моему, это какой-то стандартный пример в PyTorch Mobile.</p>
<p>Так, Java/Kotlin, если Android, то Java Kotlin, еще С. Можно на С++ писать Да. Не могу сказать, ничего не знаю про это, про инференс на FPGA. (00:50:55) Java/Kotlin – это стандартный интерфейс, еще интерфейс для Android-приложений, соответственно, можно и на сишной какой-то писать. Инференс телефона, да, так, System-on-chip – это штука, которая&#8230; По сути, это плата в телефоне, которая поддерживает разные устройства, которая поддерживает разные чипы, разные подсистемы, CPU, GPU, DSP, NPU.</p>
<p>Ведущий: Хорошо. Сергей, спасибо большое и за рассказ, и за ответы на вопросы, но к нам продолжают еще идти вопросы.</p>
<p>Сергей Чичерин: Отлично. Мы также можем общаться, во-первых, в Telegram-канале. А, энергопотребление, да, есть, конечно, большая проблема в том, что сейчас эти приложения сильно&#8230; Если у нас inference прямо постоянно, то надо рассматривать то, что телефоны могут сильно греться. Эта работа, benchmark.ai, она тоже про device stroking, про понижение производительности, если начинает греться девайс, если нам надо запустить сеть не один раз, а непрерывно.</p>
<p>Да, мы можем продолжить дискуссию в Telegram-канале.</p>
<p>Ведущий: Хорошо, да, не будем больше задерживать Сергея. Сейчас мы материалы разошлем чуть позже через Telegram-канал и, возможно, и по email, поскольку мы собрали с вас со всех email во время регистрации, и таким образом вы сможете получить ссылки на материалы. Также если, коллеги, кто-то сделал какую-то интересную работу в области нейронных сетей и хочет поделиться с сообществом, обращайтесь к нам там же, мы с удовольствием людей, сделавших интересные работы, позовем у нас о них рассказать.</p>
<p>На этом спасибо большое за то, что вы были с нами. Спасибо еще раз Сергею. До свидания, и всем доброго вечера.</p>
<p>Сергей Чичерин: Всем доброго вечера.</p>
<p>(00:53:39) (Конец записи)</p><p>The post <a href="https://ntr.ai/webinar/nauchno-tehnicheskij-vebinar-perenos-nejrosetej-rabotayushhih-s-izobrazheniyami-na-mobilnye-ustrojstva/">Научно-технический вебинар “Перенос нейросетей, работающих с изображениями, на мобильные устройства”</a> first appeared on <a href="https://ntr.ai">Компания НТР</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
