Новая наука заглядывания за угол

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

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

«Эти изображения скрыты от нас, — сказал он, — но они постоянно нас окружают».

Пережитый опыт позволил ему и его коллеге, Биллу Фриману, также профессору из Массачусетского технологического института, осознать, что мир заполнен «случайными камерами», как они их называют: окнами, углами, домашними растениями и другими обыкновенными объектами, создающими скрытые изображения своего окружения. Эти изображения в 1000 раз менее яркие, чем всё остальное, и обычно они не видны невооружённым глазом. «Мы придумали способы вычленять эти изображения и делать их видимыми», — пояснил Фриман.

Они узнали, как много визуальной информации скрывается прямо на виду у всех. В первой работе они показали, что при съёмке при помощи обыкновенного iPhone изменений света на стене комнаты, из полученного видео можно воссоздать сцену за окном. Прошлой осенью они и их коллеги сообщили, что можно обнаружить человека, движущегося за углом, снимая на камеру землю рядом с углом. Этим летом они продемонстрировали, что могут снять на видео домашнее растение, а потом воссоздать трёхмерное изображение всей комнаты на основе теней, отбрасываемых листьями растения. Или они могут превратить листья в «визуальный микрофон«, увеличивая их колебания и распознавая речь.


1) Патио снаружи комнаты отеля, где Антонио Торральба заметил, что окно работает как пинхол. 2) Размытое изображение патио на стене; 3) ему можно повысить резкость, прикрыв большую часть окна картоном, чтобы уменьшить размер отверстия. 4) Если перевернуть его вверх ногами, можно увидеть сцену снаружи.

«У нашей Мэри был баран», — говорит человек на аудиозаписи, воссозданной с движений пустого пакетика из-под чипсов, которые учёные снимали сквозь звуконепроницаемое окно в 2014 году (это первые слова, записанные Томасом Эдисоном в 1877 году на фонографе).

Исследования по поводу заглядывания за углы и построения предположений об объектах, не видимых напрямую, или «построение изображений не в прямой видимости», начались в 2012 году с работы Торральбы и Фримана по случайной камере, и с ещё одной переломной работы, проведённой отдельной группой учёных из MIT под руководством Рамеша Раскара. В 2016 году, в частности, и благодаря их результатам, Управление перспективных исследовательских проектов Министерства обороны США (DARPA) запустила программу REVEAL стоимостью $27 млн (Revolutionary Enhancement of Visibility by Exploiting Active Light-fields – революционное улучшение видимости с использованием активных световых полей). Программа финансирует появляющиеся по всей стране лаборатории. С тех пор поток новых идей и математических трюков делает построение изображений не в прямой видимости всё более мощным и практичным.

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

Торральба сказал, что у них с Фриманом в самом начале работы не было идей по практическому применению технологии. Они просто разбирались с основами формирования изображений и с тем, что такое камера, из чего естественным образом развилось более полное исследование поведения света и его взаимодействия с объектами и поверхностями. Они начали видеть такие вещи, которые никто и подумать не мог искать. Психологические исследования, по словам Торральба, показывают, что «люди ужасно плохо умеют интерпретировать тени. Возможно, одна из причин этого состоит в том, что многие видимые нами вещи не являются тенями. И в итоге глаза бросили попытки их осмыслить».

Случайные камеры

Лучи света, переносящие изображение мира, находящегося за пределами нашего поля зрения, постоянно падают на стены и другие поверхности, после чего отражаются и попадают нам в глаза. Но почему эти визуальные остатки так слабы? Просто слишком много лучей идёт по слишком большому количеству направлений, и изображения размываются.

Для формирования изображения необходимо серьёзно ограничить лучи, падающие на поверхность, и увидеть только определённых их набор. Это и делает камера-пинхол. Изначальная идея Торральбы и Фримана в 2012 году состояла в том, что в нашем окружении есть довольно много объектов и различных свойств, естественным образом ограничивающих лучи света и формирующих слабые картинки, которые способен распознать компьютер.

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


Билл Фриман


Антонио Торральба

Представьте, что вы снимаете внутреннюю стену комнаты через щель в жалюзи. Многого вы не увидите. Внезапно в вашем поле зрения появляется рука. Сравнение интенсивности света на стене при наличии и при отсутствии руки выдаёт полезную информацию о сцене. Набор лучей света, падающих на стену в первом кадре, на мгновение блокируется рукой в следующем. Вычитая данные второго кадра из данных первого, как говорит Фриман, «можно вычислить то, что блокировала рука» – набор световых лучей, представляющих изображение части комнаты. «Если изучать то, что блокирует свет, и то, что пропускает свет, — сказал он, — можно расширить набор мест, где можно встретить пинхол-камеры».

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

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


Снимая полутень на земле рядом с углом (1), можно получить информацию об объектах, находящихся за углом (2). Когда невидимые объекты начинают двигаться, свет и тени от них двигаются под разными углами по отношению к стене. Небольшие изменения интенсивности и цвета обычно нельзя различить невооружённым глазом (3), но можно усилить при помощи алгоритмов. Примитивные видео со светом, идущим под разными углами к полутени, выдают наличие за углом одного движущегося человека (4) и двоих (5).

Грани и углы, как и пинхолы с точечными камерами, препятствуют прохождению солнечных лучей. Используя обыкновенные камеры, те же iPhone, при дневном свете, Боумен с коллегами снимали полутень на углу здания – область с тенями, подсвечиваемую подмножеством световых лучей, идущих из скрытого участка за углом. Если, к примеру, там пройдёт человек в красной рубашке, эта рубашка отправит небольшое количество красного света в полутень, и этот свет будет перемещаться по полутени, пока человек идёт, невидимый обычным глазом, но обнаруживаемый после постобработки.

В революционной работе, опубликованной в июне, Фриман с коллегами воссоздали «световое поле» комнаты – картину интенсивности и направления хода лучей света в комнате – из теней, отбрасываемых лиственным растением, стоявшим рядом со стеной. Листья работали в качестве точечных камер, каждый из которых блокировал свой набор световых лучей. Сопоставление тени каждого листа с остальными тенями выдавало это недостающий набор лучей, и позволяло получить изображение части спрятанной сцены. Учитывая параллакс, исследователи затем смогли свести все эти изображения вместе.

Такой подход даёт куда как более чёткие изображения, чем ранние работы со случайными камерами, поскольку в алгоритм встроены заранее приобретённые знания о мире. Зная форму растения, полагая, что естественные изображения должны быть гладкими, и учитывая несколько других предположений, исследователи смогли сделать определённые выводы, касающиеся сигналов, содержащих шум, что помогло сделать итоговое изображение резче. Технология работы со световым полем «требует знаний об окружающем мире для создания реконструкции, но и даёт вам много информации», — сказал Торральба.

Рассеянный свет

А пока Фриман, Торральба и их протеже раскрывают изображения, которые были спрятаны, в другом месте кампуса MIT Рамеш Раскар, специалист по компьютерному зрению, выступавший с докладами на TED, намеревается «изменить мир» и выбирает подход под названием «активное построение изображений». Он использует специализированные дорогие системы лазерных камер для создания изображений высокого разрешения, отображающих то, что находится за углом.


Рамеш Раскар

В 2012 году в рамках реализации идеи, посетившей его пять лет назад, Раскар с командой впервые создали технологию, при которой необходимо выпускать лазерные импульсы в стену. Малая часть рассеянного света сумеет обойти препятствие. А через небольшое время после каждого импульса они используют «камеру вспышек», записывающую отдельные фотоны со скоростью миллиарды кадров в секунду, чтобы обнаружить фотоны, отскочившие от стены. Измеряя время, потраченное фотонами на возвращение, исследователи могут узнать, насколько далеко они улетали, и в деталях воссоздать трёхмерную геометрию скрытых за препятствием объектов, на которых рассеялись фотоны. Одна из сложностей состоит в том, что для формирования трёхмерного изображения необходимо проводить растровое сканирование стены лазером. Допустим, что за углом прячется человек. «Тогда свет, отразившийся от определённой точки на голове, от определённой точки на плече, и от определённой точки на колене может прибыть в камеру в одно и то же время, — сказал Раскар. Но если посветить лазером немного в другое место, тогда свет от трёх этих точек уже не прибудет в камеру в одно и то же время». Необходимо скомбинировать все сигналы и решить «обратную задачу» для воссоздания скрытой трёхмерной геометрии.

Оригинальный алгоритм Раскара для решения обратной задачи требовал слишком много вычислительных ресурсов, а сам аппарат стоил полмиллиона долларов. Но была проделана серьёзная работа по упрощению математики и уменьшению расходов. В марте в журнале Nature была опубликована работа, задавшая новый стандарт эффективного и экономичного построения трёхмерных изображений объекта – в работе воссоздавали фигурку кролика – находящегося за углом. Авторы, Мэтью О’Тул, Дэвид Линдел и Гордон Вецтейн из Стэнфордского университета разработали новый мощный алгоритм для решения обратной задачи и использовали относительно недорогие камеры SPAD – полупроводниковые устройства, частота кадров у которых ниже, чем у вспышковых камер. Раскар, ранее работавший куратором двух авторов работы, назвал её «очень хитроумной» и «одной из моих любимых».

Предыдущие алгоритмы тонули в деталях: исследователи обычно пробовали обнаружить возвращающиеся фотоны, отразившиеся не от той точки стены, в которую светил лазер, чтобы камера могла избежать сбора рассеянного света лазера. Но направив лазер и камеру почти в одну точку, исследователи смогли составить карту исходящих и приходящих фотонов из одного «светового конуса«. Рассеиваясь с поверхности, свет формирует расширяющуюся сферу из фотонов, которая вырисовывает конус, распространяясь в пространстве-времени. О’Тул (с тех пор сменивший место работы со Стэнфорда на Университет Карнеги-Меллона) перевёл физику световых конусов – разработанную учителем Альберта Эйнштейна, Германом Минковским в начале XX века – в лаконичное выражение, связывающее время полёта фотона с расположением рассеивающих поверхностей. Он назвал свой перевод «трансформация светового конуса».

Робомобили уже используют системы LIDAR для построения прямых изображений, и можно представить, что когда-нибудь обзаведутся SPAD, чтобы заглядывать за угол. «В ближайшем будущем такие датчики будут доступны и в переносном формате», — предсказывает Андреас Велтен, первый автор начальной работы Раскара от 2012 года, руководящий ныне группой, занимающейся построением активных изображений в Висконсинском университете. Теперь стоит задача «обработки более сложных сцен» и реалистичных сценариев, сказал Велтен, «а не просто тщательного создания сцены с белым объектом и чёрным задником. Нам нужна технология, позволяющая направить прибор и нажать кнопку».

Где находятся вещи

Исследователи из группы Фримана начали совмещать пассивный и активный подходы. В работе, проведённой под руководством исследователя Кристоса Трампулидиса, показано, что при активном построении изображений при помощи лазера точечную камеру известной формы, находящуюся за углом, можно использовать для воссоздания скрытой сцены, совсем не используя информацию о времени полёта фотонов. «И это должно получиться у нас при помощи обычной ПЗС-матрицы», — сказал Трампулидис.

Построение изображений не в прямой видимости когда-нибудь сможет помочь спасательным командам и автономным роботам. Велтен сотрудничает с Лабораторией реактивного движения НАСА, работая над проектом, направленным на построение на расстоянии изображений объектов, находящихся внутри пещер Луны. А Раскар с компанией используют их подход для чтения первых нескольких страниц закрытой книги, и для того, чтобы видеть в тумане.

Кроме аудиореконструкции, алгоритм усиления движений Фримана может помочь создавать медицинские устройства и системы безопасности, а также детекторы малых астрономических движений. Этот алгоритм – «очень хорошая идея», — сказал Дэвид Хогг, астроном и специалист по данным из Нью-Йоркского университета и Института Флатирон. «Я подумал – мы просто обязаны использовать его в астрономии».

Что касается вопросов неприкосновенности личной жизни, поднятых недавними открытиями, Фриман обращается к своему опыту. «Об этой проблеме я очень и очень много размышлял всю мою карьеру», — говорит он. Очкарик, любитель повозиться с камерами, всю свою жизнь занимавшийся фотографией, Фриман сказал, что в начале карьеры ему не хотелось работать ни над чем, у чего был бы какой-то военный или шпионский потенциал. Но со временем он стал думать, что «технология – это инструмент, который можно использовать по-разному. Если попытаешься избежать всего, что может иметь хоть какое-то военное применение, то ничего полезного не придумаешь». Он говорит, что даже в случае с военными, «существует очень широкий спектр возможностей использования вещей. Можно помочь кому-то выжить. И, в принципе, знать, где находятся вещи – это полезно».

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


ссылка на оригинал статьи https://habr.com/post/424389/

Хостинг игрового сервера в профессиональном центре обработки данных

По данным американской аналитической компании EEDAR, 67% американцев (211,2 млн человек) играют в видеоигры, причем большая часть из них (60%) — на мобильных устройствах. Игромания охватывает весь мир. За последние несколько лет игровая индустрия стала одной из самых быстрорастущих. В мире, где все одержимы играми, возраст и пол не имеют значения. С развитием технологий многопользовательские игры онлайн стали альтернативой дорогим игровым консолям. Популярность онлайновых игр с несколькими участниками (Massive Multiplayer Online, MMO) резко выросла благодаря достижениям в области технологий широкополосного доступа, совершенствованию «железа» и алгоритмов самих игр.

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

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

<img align=«center» src=VPS — лучшее решение для игрового сервера?
Для развертывания игрового сайта можно использовать VPS или выделенный сервер. Виртуальные серверы VPS относительно недороги и предлагают новейшие инструменты в области технологий, а значит, у вас будут адекватные ресурсы по доступной цене.

Среди преимуществ использования VPS для размещения игрового сервера можно перечислить следующие:

  • Большинство серверов VPS имеют статический IP-адрес, а это важное требование для многопользовательского игрового сервера.
  • Полный административный доступ для установки и управления игровым сервером через удаленный рабочий стол. Настройка игрового сервера с использованием RDP похожа на установку игрового сервера на вашем локальном компьютере.
  • Серверы VPS легкодоступны, и можно легко обновлять файлы сервера по мере их изменения на локальной машине.
  • Для игрового сервера можно установить прокси-сервер.

Как правило, VPS предлагаются с полным административным доступом через удаленный рабочий стол (в Windows VPS) и SSH (в Linux VPS). Вы можете установить и запустить на виртуальном сервере свое игровое программное обеспечение. Но в ряде случаев может потребоваться выделенный (dedicated), а не виртуальный сервер.

В интернете можно найти немало дискуссий о том, подходит ли VPS для игр. Некоторые считают, что далеко не для всех, особенно, если речь идет о ресурсоемких играх с хорошей графикой. И даже в базовом пакете хостинговая компания должна предоставить на эти цели не менее 1 ГБ оперативной памяти, 1 процессор, 5 ТБ трафика, 25 ГБ на SSD-хранилище и 1 гигабитный порт.

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

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

Как выбрать «правильный» хостинг для игрового сервера? Многие игры предъявляют достаточно высокие требования к серверу, и при удаленном хостинге у игроков показатели задержки (латентность) может заметно различаться, что создает геймерам неравные условия и нарушает конкурентный баланс игры.

Выделенный игровой сервер может помочь избежать этих проблем и обеспечить максимальный контроль над игровой средой, предоставляя игрокам доступ в режиме 24/7/365, поэтому соревноваться друг с другом могут и игроки в часовых поясах – в любое удобное для них время. 

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

▍Производительность

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

Конечно, разные игры будут иметь разные требования к производительности, поэтому стоит проверить доступную документацию и убедиться, что выбирается достаточно мощный сервер.
Например, для Minecraft Wiki от Gamepedia указана минимальная емкость оперативной памяти от 512 МБ до 2 ГБ (в зависимости от того, какой сервер используется). Рекомендация для серверов Linux — 5 ГБ ОЗУ для игр с тремя-пятью игроками с использованием графического интерфейса и 3 ГБ для пяти-восьми игроков с консолями. И эта оперативная память предназначена только для игрового сервера, помимо ОЗУ, используемой ОС.

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

▍Надежность

Рассматривая цену в качестве ключевого фактора выбора хостинга выделенного игрового сервера, не стоит забывать про надежность, время безотказной работы, поскольку хостинг с регулярными сбоями заведомо менее ценен, чем тот, который постоянно поддерживает игру онлайн. Хостинг с показателем безотказной работы 99% может считаться ненадежным (что, впрочем, зависит от требований), а с времени безотказной работы 99,996% — вполне устойчивым.

Безопасность также является фактором надежности, особенно учитывая то, что игровые серверы особенно привлекают внимание хакеров. По данным Qrator Labs, игровая индустрия занимает в мире третье место среди мишеней DDoS-атак. Хороший выделенный сервер предусматривает защиту от DDoS-атак и мощный межсетевой экран.

▍Простота управления и автоматизация

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

▍Поддержка

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

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

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

Необходимо установить на выбранное оборудование базовую платформу (это может быть Linux или Windows), набор серверных программ, а также непосредственно серверную часть клиента игры (она будет отвечать за работу с сетевыми игроками).

Но что лучше: хостинг игрового сервера на Windows VPS или Linux?

Windows или Linux: какая операционная система лучше всего подходит для хостинга игрового сервера?

Расходы на лицензирование: выбирая Linux под Windows, можно сократить расходы на лицензирование, поскольку Linux – ОС с открытым исходным кодом. Тем не менее, считается, что платформа Linux – это ограниченная поддержка, или ее вовсе нет. С другой стороны, стоимость лицензии на Windows не так уж значительна, и вы получаете полную поддержку.

Операционная среда: если вы собираетесь использовать Linux-сервер под игры, это означает, что вы знакомы с платформой Linux и умеете управлять серверами Linux через SSH.

GUI: Windows VPS поставляется с графическим интерфейсом пользователя (GUI) под названием «Удаленный рабочий стол» (RDP). Он может использоваться для доступа и управления вашим виртуальным сервером подобно тому, как вы управляете своим рабочим столом домашнего ПК, в то время как для работы с Linux VPS нужно быть профессиональным и опытным пользователем платформы Linux. Впрочем, для этой ОС тоже есть GUI.

Обслуживание: хостинг игрового сервера требует обслуживания, настроек, обновления и регулярного мониторинга. Все это может оказаться головной болью без GUI.

Цена: Linux VPS может стать отличным вариантом, если вы технически подкованы и несколько ограничены в бюджете. С другой стороны, Windows VPS — это гораздо более удобный вариант, который предлагает вам поддержку, функциональность и поддержку приложений по доступной цене. Если вы хотите запустить игровой сервер на VPS, Linux VPS может быть более дешевым вариантом, но не всегда более подходящим.

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

Приведем примеры типовых планов VPS для игрового сервера:

Windows VPS

• Windows 2012/2008
• 35 ГБ дискового пространства
• Ежемесячный трафик 150 ГБ
• 1 ГБ оперативной памяти (гарантировано)
• 1 выделенный IP-адрес
• 2 виртуальных процессора
• Еженедельные резервные копии

Linux VPS

• Неограниченное количество веб-сайтов
• 20-гигабайтное дисковое пространство Raid 10
• Трафик 150 ГБ/месяц
• Полностью управляемый VPS
• 512 МБ оперативной памяти (гарантированных)
• 1 выделенный IP-адрес
• Еженедельные резервные копии
• Подключение к порту 1 Гбит / с
Все планы VPS должны сопровождаться 99,99% безотказной работы и поддержкой 24/7.

Игровой сервер работает медленно? Попробуйте SSD VPS

Твердотельный накопитель (SSD) позволяет в 100 раз быстрее работать с данными по сравнению с HDD. VPS с технологией хранения SSD имеет несколько заметных преимуществ перед традиционными VPS. У SSD VPS скорость чтения / записи намного выше по сравнению с жесткими дисками SATA.

С увеличением нагрузки на игровой сервер растет вероятность сбоя, либо он просто начинает «тормозить», вызывая нарекания пользователей. В этом случае пора подумать о переходе с виртуального сервера VPS на выделенный. Признаки могут быть такими:

Производительность игры: замедленный отклик, или сервер «падает», когда играют больше пользователей, чем обычно.

Ресурсы: установленная игра потребляет почти все ресурсы ЦП и ОЗУ.

Число геймеров: количество игроков превышает то, с которым может справиться ваш VPS.

Расширение: нужно поддерживать большее количество геймеров.

Число игр на сервере: если вы используете несколько игр, то ваш VPS может не справиться с большим числом запросов.

Все это говорит о том, что пора подумать об апгрейде.

Устранение неполадок при хостинге игрового сервера: общие проблемы и их решение

▍Ошибки при установке игрового сервера

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

Требования к игровому серверу — очень важная часть установки. Игровой сервер обычно имеет некоторые специфические требования, такие как поддержка Java-плагинов, .Net Framework, специфических драйверов и т. д. Если они не установлены или не настроены, это может вызвать ошибку. Следовательно, всегда полезно перед установкой прочитать документацию.

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

Игровой сервер не запускается и выдает ошибку

После успешной установки игрового сервера при попытке запустить службу возникает новая ошибка. Вот некоторые распространенные проблемы и их решения:

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

Игровой сервер аварийно завершает работу во время игры

Существуют многочисленные возможные причины таких инцидентов, некоторые из них перечислены ниже:

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

▍После перезагрузки игрового сервера он не запускается автоматически

Это происходит, если служба вашего игрового сервера не настроена на автоматический запуск. Пользователи Windows могут проверить это из меню Службы (Пуск → Администрирование → Службы). Здесь вы можете перейти к свойствам своего игрового сервера и зайти на вкладку «Восстановление». Там можно установить значения «Перезапустить службу» для разных параметров.

Пример игрового хостинга: RUVDS

Клиенты нашего сервиса получают следующее:

  1. Круглосуточная аналитика и мониторинг сетевого трафика, чтобы обеспечить максимальный уровень защиты от DDoS-атак.
  2. Постоянный доступ и гарантированно высокая скорость. Компания RUVDS обладает собственным дата-центром уровня TIER 3 в г. Королеве, Московская область, а также гермозонами в дата-центрах Deltalis (Швейцария), Лондоне Equinix LD8 (Великобритания), и ММТС-9 (Москва, Россия). Все гермозоны отвечают уровню надежности не ниже TIER 3. Cобственный ЦОД компании RUVDS RUCLOUD в Королеве имеет три интернет-канала по 5 Гбит/сек, что дает гарантированно высокую скорость.  За счет подключения к крупнейшим узлам связи М-9 и М-10 стабильная скорость доступа к вашему VPS/VDS будет не ниже 100 Мбит/сек. Оборудование клиенты могут выбрать на любой из площадок. За счет этого пользователь получает скорость не ниже 250 Мбит/сек с доступом по России, что позволяет ему комфортно работать со своим виртуальным сервером.

    RUVDS также запустила новую гермозону в Лондоне — финансовой столице Европы. Гермозона находится в дата-центре Equinix LD8 – одном из крупнейших дата-центров сети Equinix. ЦОД Equinix обслуживает клиентов из всех стран мира и 175 дата-центров в 22 странах. Гермозона оборудована двухконтурным охлаждением (горячий и холодный коридоры). В ней используется оборудование корпоративного класса от Huawei. Высокое качество производства, надежность, гарантийное обслуживание при разумной цене позволяют предоставлять клиентам услуги аренды выделенных виртуальных серверов на высокопроизводительном новом оборудовании по привлекательной стоимости.

  3. Клиент имеет на виртуальном сервере все полномочия администратора, что позволяет устанавливать серверы для любых игр любого уровня сложности.
  4. Гарантированные ресурсы. Подходит для нагруженных игровых серверов, где недопустимо колебание производительности.

Заказать хостинг для игровых серверов на базе VPS/VDS удобнее всего, воспользовавшись конфигуратором на сайте.


ссылка на оригинал статьи https://habr.com/post/424381/

Elm. Удобный и неловкий. Json.Encoder и Json.Decoder

Продолжим говорить о Elm 0.18.

Elm. Удобный и неловкий
Elm. Удобный и неловкий. Композиция

В этой статье рассмотрим вопросы энкодеров/декодеров.

Декодеры/энкодеры используются для:

  1. преобразование ответов от сторонних ресурсов (Http, WebSocket и прочее);
  2. взаимодействия через порты. Подробнее про порты и нативный код расскажу в следующих статьях.

Как было описано ранее, Elm требует от нас обязательного преобразования внешних данных во внутренние типы приложения. За данный процесс отвечает модуль Json.Decode. Обратный процесс — Json.Encode.

Тип определяющий правила декодирования — Json.Decode.Decoder a. Данный тип параметризуется пользовательским типом и определяет каким образом из JSON объекта получить пользовательский тип a.

Для энкодера определен только тип результата — Json.Encode.Value.

Рассмотрим примеры для типа UserData.

type alias User =   { id: Int   , name: String   , email: String   }

Декодер для получения данных от пользователя:

decodeUserData : Json.Decode.Decoder UserData decodeUserData =   Json.Decode.map3 UserData     (Json.Decode.field “id” Json.Decode.int)     (Json.Decode.field “name” Json.Decode.string)     (Json.Decode.field “email” Json.Decode.string)  encodeUserData : UserData -> Json.Encode.Value encodeUserData userData =   Json.Encode.object     [ ( “id”, Json.Encode.int userData.id)     , ( “name”, Json.Encode.string userData.name)     , ( “email”, Json.Encode.string userData.email)     ]

Функция Json.Decode.map3 принимает конструктора типа UserData. Далее передаются три декодера типа в соответствии с порядок их объявления в пользовательском типе UserData.

Функция decodeUserData может быть использована совместно с функциями Json.Decode.decodeString или Json.Decode.decodeValue. Пример использования из предыдущих статей.

Функция encodeUserData производит кодирование пользовательского типа в тип Json.Encode.Value, который может быть отправлен наружу. По простому, Json.Encode.Value соответствует JSON объекту.

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

Декодеры Union типов или дискриминаторы типов

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

  1. целое число;
  2. строка;
  3. перечислимое. Предполагает выбор одного из допустимых значений.

JSON объект допустим следующего вида:

{   “id”: 1,   “name”: “Product name”,   “price”: 1000,   “attributes”: [     {       “id”: 1,       “name”: “Length”,       “unit”: “meters”,       “value”: 100     },      {       “id”: 1,       “name”: “Color”,       “unit”: “”,       “value”: {         “id”: 1,         “label”: “red”       }     },...   ] }

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

type alias Product =    { id: Int   , name: String   , price: Int   , attributes: Attributes   }  type alias Attributes = List Attribute  type alias Attribute =    { id: Int   , name: String   , unit: String   , value: AttributeValue   }  type AttributeValue   = IntValue Int   | StringValue String   | EnumValue Enum  type alias Enum =    { id: Int   , label: String   }

Слегка обсудим описанные типы. Есть товар (Product), который содержит список атрибутов/характеристик (Attributes). Каждый атрибут (Attribute) содержит идентификатор, наименование, размерность и значение. Значение атрибута описано как union type, по одному элементу для каждого типа значения характеристики. Тип Enum описывает одно значение из допустимого множества и содержит: идентификатор и человеко читаемое значение.

Описание декодера, префикс Json.Decode опустим для краткости:

decodeProduct : Decoder Product decodeProduct =   map4 Product     (field “id” int)     (field “name” string)     (field “price” int)     (field “attributes” decodeAttributes)  decodeAttributes : Decoder Attributes decodeAttributes =   list decodeAttribute  decodeAttribute : Decoder Attribute decodeAttribute =    map4 Attribute    (field “id” int)    (field “name” string)    (field “unit” string)    (field “value” decodeAttributeValue)  decodeAttributeValue : Decoder AttributeValue decodeAttributeValue =   oneOf      [ map IntValue int     , map StringValue string     , map EnumValue decodeEnumValue     ]  decodeEnumValue : Decoder Enum decodeEnumValue =    map2 Enum     (field “id” int)     (field “label” string)

Весь трюк содержится в функции decodeAttributeValue. При помощи функции Json.Decode.oneOf перебираются все допустимые декодеры для значения атрибута. В случае успешной распаковки одним из декодоров, значение тегируется соответствующим тегом из типа AttributeValue.

Кодирование типа Product, может быть выполнено при помощи функции Json.Encode.object, в которую будут переданы закодированные атрибуты типа. Стоит уделить внимание кодированию типа AttributeValue. В соответствии с описанным ранее JSON объектом, энкодер может быть описан как, префикс Json.Encode опустим для краткости:

encodeAttributeValue : AttributeValue -> Value encodeAttributeValue attributeValue =    case attributeValue of     IntValue value ->        int value      StringValue value ->        string value      EnumValue value ->       object         [ (“id”, int value.id)         , (“id”, string value.label)         ]

Как видно, сопоставляем варианты типа и используем соответствующие энкодеры.

Изменим описание атрибутов и определим их с использование дискриминатора типа. JSON объект атрибута, в этом случае, имел бы следующий вид:

{    “id”: 1,    “name”: “Attribute name”,    “type”: “int”,    “value_int”: 1,    “value_string”: null,    “value_enum_id”: null,    “value_enum_label”: null }

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

decodeAttribute2 : Decoder Attribute decodeAttribute2 =  field "type" string   |> andThen decodeAttributeValueType   |> andThen (\attributeValue ->      map4 Attribute         (field "id" int)         (field "name" string)         (field "unit" string)         (succeed attributeValue)   )  decodeAttributeValueType : String -> Decoder AttributeValue decodeAttributeValueType valueType =  case valueType of    "int" ->      field "value_int" int        |> Json.Decode.map IntValue     "string" ->      field "value_string" string        |> Json.Decode.map StringValue     "enum" ->      map2 Enum        (field "value_enum_id" int)        (field "value_enum_label" string)        |> Json.Decode.map EnumValue     _ ->      Json.Decode.fail "Unknown attribute type"

В функции decodeAttribute2 сначала декодируем дискриминатор, в случае успеха — декодируем значение атрибута. Далее декодируем оставшиеся поля типа Attribute, а в качестве значения поля value указываем ранее полученное значение.

Исходный код декодера.

Частичное обновление типа

Встречаются случаи, когда API возвращает не весь объект, а лишь его часть. Например, при регистрации просмотра или смене статуса объекта. В этом случае в сообщении удобнее сразу получать обновленный объект, а все манипуляции скрыть за декодером.

Для примера возьмем тот же товар, но добавим в него поле статус и будем обрабатывать запрос на закрытие товара.

type alias Product =    { id: Int   , name: String   , price: Int   , attributes: Attributes   , status: Int   }  decodeUpdateStatus : Product -> Decoder Product decodeUpdateStatus product =    field “status” int     |> andThen (\newStatus ->       succeed { product | status = newStatus}     )

Или можно использовать функцию Json.Decode.map.

decodeUpdateStatus : Product -> Decoder Product decodeUpdateStatus product =    field “status” int     |> map (\newStatus ->       { product | status = newStatus}     )

Дата и время

Будем использовать функцию Date.fromString, которая реализована при помощи конструктора типа Date.

decodeDateFromString : Decoder Date.Date decodeDateFromString =    string     |> andThen (\stringDate ->       case Date.fromString stringDate of         Ok date -> Json.Decode.succeed date         Err reason -> Json.Decode.fail reason     )

Если в качестве представления даты/времени используется Timestamp, то декодер в общем виде можно описать как:

decodeDateFromTimestamp : Decoder Date.Date decodeDateFromTimestamp =    oneOf     [ int          |> Json.Decode.map toFloat     , float  ]     |> Json.Decode.map Date.fromTime


ссылка на оригинал статьи https://habr.com/post/424437/

Релизим проект на Java с Maven на новый лад

Все мы давно уже привыкли к Maven, к версионности предложенной им и управлению зависимостями. Maven появился на свет, когда ежедневная сборка проекта была уделом самых смелых, когда считалось нормальным релизиться хотя-бы пару раз в год, Jenkins тогда еще назывался Hudson, а деревья были большими…

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

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

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

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

Далее мы попробуем изменить мир к лучшему и упростить себе жизнь.

Дисклеймер

Я предполагаю, что читатель знаком с Java, Maven, жизненным циклом разработки и настройкой CI/CD, понимает зачем все это ему надо и вообще ниндзя.

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

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

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

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

Возможно, все эти проблемы кому то и покажутся надуманными, но при более менее большом количестве проектов, управление и настройка CI/CD превращается в крайне неприятный и запутанный процесс.

Теперь, когда проблема видна, давайте попробуем ее решить, так чтоб не сильно менять набор инструментов, процессов, и вообще чтоб оно само, как-нибудь.

Что требуется:

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

Предположим, что CI/CD сделает для нас получение тега и чекаут проекта.

Допустим, что тег для нас заполнен CI/CD в переменную окружения RELEASE_TAG, тогда, для того чтоб выпустить релиз, мы должны выполнить следующие команды:

mvn -B versions:set -DnewVersion=$RELEASE_TAG (1) mvn -B deploy (2) 

1 — обновляет версии в pom-файлах проекта и его модулей
2 — выполняет сборку и, при правильной настройке проекта, загружает артефакты в репозиторий

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

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

В результате изменений можно удалить конфигурацию maven-release-plugin и scm блока из pom файла.

» Из минусов:
Если у вас где либо используются SNAPSHOT версии, то может начаться путаница, теперь все SNAPSHOT версии выглядят одинаково. И, возможно, такой способ релизить проекты не для вас.

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

» Из плюсов:

  • Все требования удовлетворены, и даже больше!
  • версия хранится только в теге проекта
  • сборка новой и пересборка старой версии выполняется таким-же набором команд что и оригинальная версия
  • отпала необходимость прав на коммит в проект
  • набор инструментов остался тот-же
  • бонус: конфигурация проекта упростилась

Вот так, две строчки опять спасли мир.
На этом и все, спасибо за внимание!


ссылка на оригинал статьи https://habr.com/post/424425/

Не потерять себя: новый метод диагностики деменции

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

Сегодня мы поговорим об исследовании нового метода диагностики деменции с использованием машинного обучения, визуального/звукового анализа и виртуального собеседника-диагноста. Насколько эффективен этот метод и какие, ранее неизвестные, симптомы он обнаружил мы узнаем из доклада ученых. Поехали.

Этиология деменции

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

Прежде всего стоит отметить слово «приобретённое», то есть данное заболевание, точнее группа болезней, не являются врожденными. Чаще всего деменцию ассоциируют с людьми преклонного возраста. Все мы слышали о таких заболеваниях как болезнь Альцгеймера, церебральный атеросклероз, реже о болезни Пика. Все эти жуткие болезни относятся к категории деменций.


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

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

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

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

Герои сегодняшней истории это ученые, решившие применить компьютерные технологии для того, чтобы подстраховать и помочь медикам в столь сложной задаче как диагностика ранних стадий деменции. Нынешние методы обнаружения болезни сопряжены с анализами крови, МРТ, анализом спинномозговой жидкости и когнитивными тестами, которые проводят группы специалистов. Это работает, но занимает не мало времени и денег, которых у пациента может не быть.

Виртуальный собеседник

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


Интерфейс программы диагностики деменции.

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

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

В процессе создания системы участвовали практикующие медики, которые консультировали программистов касательно некоторых тонкостей работы с пожилыми людьми, выступающими в данном исследовании в качестве испытуемых. Во-первых, скорость речи аватара была немного снижена для улучшения восприятия до 3.38 слов в секунду. На экране отображаются субтитры (шрифт Gothic, размер букв — 80) на случай, если у испытуемого проблемы с восприятием устной речи (это может быть связано как с симптомами деменции, так и с банальными проблемами со слухом). Также был понижен на 0.7% изначально высокий тон голоса аватара.

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

Этапы проведения диагностики

Всего есть 6 этапов, каждый из которых имеет свою задачу (на изображении выше отмечены буквами a, b, c, d, e, f).

I. Представление (а), когда система здоровается с испытуемым, называет свое имя и задает следующие вопросы:
— Как Вас зовут?
— Сколько Вам лет?

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

II. Зрительное отслеживание (b), когда на экране появляется черная точка, за которой испытуемый должен следить в течении двух минут. Этот тест позволяет проанализировать задержку реакции.

III. Чтение (с), когда проводится тест памяти Векслера (WMS-R). На экране появляется текст, который испытуемые читают вслух.

IV. Общие для всех вопросы (d), когда всем испытуемым задается 3 вопроса: какой сегодня день (Q1), расскажите о себе что-то (Q2) и как Вы сюда добрались, то есть до места проведения теста (Q3).

V. Случайные вопросы (е), когда аватар задает 5 вопросов, которые случайным образом выбираются системой из 13 заранее подготовленных:

  • Какое сейчас время года?
  • Какой сейчас год?
  • Кто премьер-министр Японии?
  • Вы левша или правша?
  • Вы хорошо спите?
  • Какой у Вас аппетит?
  • Расскажите, пожалуйста, о недавнем событии, которое было для Вас стрессовым.
  • Расскажите, пожалуйста, о Хибари Мисора (известная японская певица).
  • Расскажите, пожалуйста, об Юдзиро Исихара (известный японский актер).
  • Расскажите, пожалуйста, о Шигео Нагашима (известный японский бейсболист).
  • Какое у Вас хобби?
  • Какая Ваша любимая песня?
  • Расскажите, пожалуйста, о Вашей семье.

VI. Пересказ (f), когда система проигрывает запись, на которой психолог читает текст, а испытуемые должны пересказать этот рассказ.

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

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

В данном исследовании приняли участие 33 испытуемых. У 16 (12 мужчин и 4 женщины) из них уже есть клиническое подтверждение деменции, а остальные 17 (13 мужчин и 4 женщины) — здоровы. Обе группы проходили тесты отдельно друг от друга в разных помещениях.


Данные испытуемых. Пометки: AD — болезнь Альцгеймера; NPH — гидроцефалия нормального давления; DLB — деменция с тельцами Леви; MCI — слабые когнитивные нарушения.

Таблица выше содержит краткую информацию о каждом испытуемом: наличие/отсутствие деменции, возраст, коэффициент образования, пол, балл по MMSE (краткая шкала оценки психического статуса — анкета из 30 вопросов) и время, потраченное на тест с аватаром-диагностом.

Далее из 33 участников исследования были исключены четверо, так как у двоих из группы с диагнозом он еще не был клинически подтвержден, а двое из здоровой группы набрали 22 и 23 балла по MMSE, что ниже проходного.

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

Полученные аудио и видео данные прогонялись через систему распознавания наличия или отсутствия симптомов деменции, которая была построена на базе двух алгоритмов машинного обучения. Основными моделями классификаторов стали логистическая регрессия и метод опорных векторов.

Основными критериями оценки состояния испытуемого стали:

  • Gap — пауза между вопросом аватара и ответом испытуемого;
  • F0cov — коэффициент вариаций произнесенных высказываний;
  • Smile — показатель числа кадров в записи испытуемого, на котором он улыбается;
  • h1a3 — разница между амплитудами первой гармоники (h1) и третьей форманты (a3), позволяющая определить «качество» голоса;
  • Power — амплитуда голоса;
  • Verbs — глаголы, использованные испытуемым;
  • Corr. — исправления во время речи;
  • # of pauses — число пауз между предложениями;
  • Prop. of pauses — доля пауз во время ответа;
  • Hesitations — коэффициент неуверенности во время ответа;
  • Tokens — речевые токены (число слова);
  • Nouns — существительные;
  • AR — скорость артикуляции;
  • TTR — соотношение уникальных слов и повторяющихся;
  • D value — индекс разнообразия.

P-значение (P-value) — в данном случае чем ниже этот показатель, тем больше разница между результатами двух групп испытуемых. Cohen’s D или размер эффекта показывает насколько сильно влияние того или иного критерия на формирование конечного результата, то есть диагноза. Trend — показывает вектор изменения тенденции в группе с деменцией.

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

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


ROC-кривая оценки качества классификации логистической регрессией и методом опорных векторов.

Точность диагностики системы на базе логистической регрессии составил 0.91, а на базе опорных векторов — 0.93.

Для более детального изучения исследования можете ознакомиться с докладом ученых.

Эпилог

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

Конечно, к данному исследованию могут быть претензии. Так, многие считают, что использование Р-значения позволяет манипулировать результатами опытов, подгоняя их под желаемые, тем самым дискредитируя его. Однако исследователи утверждают, что их труд основан на реальных измерениях. Будем надеяться, что это правда. Ведь подобные исследования, если они проведены честно и с большим вниманием, имеют огромное значение для человечества.

Я пишу эту статью не столько с целью поделиться информацией касательно вышеописанного исследования, сколько ради очередного, но не лишнего, оглашения той проблемы, которую часто не замечают. Деменция это не просто «старческий маразм», это серьезная проблема как для самого больного, так и для его родных. К сожалению, проблема деменции не столь ярко обсуждается в странах постсоветского пространства. Однако, уделив внимание разработке быстрого, дешевого и эффективного метода превентивной диагностики деменции, можно улучшить качество жизни миллионов людей. Не говоря уже о социальной пользе. Ведь многие страдающие деменцией не просто способны что-то делать для общества и/или хотя бы для родных, но и хотят этого. Но из-за болезни они становятся заложниками собственного разума, который по неудачному стечению обстоятельств и факторов не может работать так, как раньше. Человек, чье сознание возвращается из небытия лишь на мгновение, чтобы осознать свою неспособность нормально мыслить и ощутить этот ужас, выразив его даже не вербально, а лишь взглядом — такое «зрелище» позволяет понять одно — без нашего мозга мы просто мешки с мясом и костями.

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

Посему скажу кратко — берегите тех, кого любите, ибо вы никогда не знаете, когда можете их потерять.

Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps до декабря бесплатно при оплате на срок от полугода, заказать можно тут.

Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?


ссылка на оригинал статьи https://habr.com/post/423961/