Search
Write a publication
Pull to refresh
29
0
Алексей @MarkWatney

Пользователь

Send message

Простой классификатор P300 на открытых данных

Reading time11 min
Views12K

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


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



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


Разбор способа построения нейроинтерфейса на P300 с пошаговым кодом и визуализациями, а также ссылку на репозиторий можно найти под катом.

Читать дальше →

Что такое ЭЭГ и зачем она нужна

Reading time10 min
Views28K

Ученые любят искать первое упоминание своей науки. К примеру, я видел статью, где всерьез утверждалось, что первые опыты по электрической стимуляции мозга были проведены в Древнем Риме, когда кого-то ударил током электрический угорь. Так или иначе, обычно, историю электрофизиологии принято отсчитывать примерно от опытов Луиджи Гальвани (XVIII век). В этом цикле статей мы попробуем рассказать небольшую часть того, что наука узнала за последние 300 лет про электрическую активность мозга человека, про то, какие профиты из всего этого можно извлечь.


Читать дальше →

Всё, что вам нужно — это внимание (часть 2)

Level of difficultyHard
Reading time15 min
Views12K
Источник

Примечание переводчика: Это вторая часть перевода статьи Attention is all you need, с которой началось развитие больших языковых моделей, в том числе чат-бота ChatGPT. Первую часть можно найти здесь.
Читать дальше →

Беспилотный робот не в ROS

Reading time6 min
Views3K

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

Читать далее

Как работает перспектива в изображениях?

Reading time9 min
Views34K
«Линза доминировала уже шесть сотен лет и я считаю, что изображениям пора отходить от неё. Если это произойдёт, может случиться что-то чудесное».Дэвид Хокни, 2022 год

У вас когда-нибудь было такое: вы фотографируете какую-то далёкую сцену, а на фото она выглядит слишком маленькой по сравнению с её окружениями?


Комикс Мег Адамс

В этом посте мы поговорим о том, как возникает это явление, и что мы с ним можем сделать.
Читать дальше →

Визуальный SLAM: делаем HD-карты при помощи смартфона

Reading time11 min
Views17K

Привет, Хабр! Меня зовут Гращенков Александр, я iOS-разработчик в компании RoadAR. С 2016 года живу и работаю в Иннополисе, занимаюсь компьютерным зрением и интеграцией нейросетей в мобильные платформы.

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

Сейчас мы создаем детализированные трехмерные сканы дорог при помощи смартфонов. Я расскажу, что такое HD-карты, сравню два подхода к их созданию и покажу вам трехмерный Иннополис.

Читать далее

Разработка под Flipper Zero: быстрый старт и первое приложение

Reading time19 min
Views34K

Итак, это случилось. Я добыл Flipper Zero в бою (ну, на самом деле мне его выдали на хакатоне), и естественно, что интереснее всего не играть в него, используя уже сделанные кем-то функции, а писать что-то новое. Примерно так же я развлекался с Pebble. Тут, кстати, все очень похоже — МК, RTOS, небольшой монохромный экранчик, си.

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

Читать далее

Двухколесный робот на карданном моторе

Reading time3 min
Views12K

С этим роботом я играюсь уже несколько месяцев. Перемещается он за счет поворачивания колес относительно груза маятника, а скорость контролирует, ориентируясь на обратную связь от датчика наклона. На его сборку меня вдохновила снятая на Consumer Electronics Show (CES 2020) видео-демонстрация с роботом Ballie от Samsung. Было понятно, что это для них чисто хайповый проект, который в серийное производство не выйдет. Тем не менее у меня возник интерес собрать нечто аналогичное.
Читать дальше →

Хакаем CAN шину авто. VAG диагностический бортовой компьютер

Reading time5 min
Views38K

С огромным увлечением исследую протоколы CAN шины и разрабатываю устройства взаимодействующие с автомобилем. У меня уже есть голосовое управление центральным замком, виртуальная панель приборов и даже мобильное приложение для моей Skoda Octavia A5.

Теперь я решил разработать диагностический бортовой компьютер для автомобилей группы VAG (VW, Audi, Skoda, Seat). Моими техническими требованиями было: OLED дисплей, лёгкая установка и подключение, множество диагностических параметров. В качестве компонентной базы выбрал:
Читать дальше →

Простое объяснение симуляции жидкости в реальном времени

Reading time28 min
Views17K
image

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

Код проекта можно найти на моём Github.


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

Параметрическая модель движения ног в анимации

Reading time3 min
Views2.3K

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

Читать далее

Корутины в C++20 — что это и как с ними работать

Reading time20 min
Views42K

Прим. Wunder Fund: В статье описаны базовые подходы к работе с корутинами в 20м стандарте С++, на паре практических примеров разобраны шаблоны классов для промисов и фьючеров. По нашему скромному мнению, можно было бы реализовать и поизящнее. Приходите к нам работать, если имеете сильные мнения о корутинах хе-хе.

Возникает такое ощущение, что тема реализации корутин в C++20 окутана серьёзной неопределённостью. Полагаю, это так из-за того, что в проекте технической спецификации C++20 сказано, что работа над механизмами корутин всё ещё ведётся, в результате в данный момент нельзя ожидать полной поддержки этих механизмов компиляторами и стандартной библиотекой.Множество проблем, вероятно, возникает из-за отсутствия официальной документации по работе с корутинами. Нам дали синтаксическую поддержку корутин в C++ (co_yield и co_return), но не всё то, что я счёл бы признаками их полной библиотечной поддержки. В стандартной библиотеке имеются хуки и базовый функционал поддержки корутин, но нам приходится самостоятельно встраивать всё это в наши собственные классы. Я ожидаю, что полная поддержка корутин-генераторов появится в C++23.

Если вы — Python- или C#-разработчик и ожидаете увидеть в C++ простую механику работы с корутинами, то вас ждёт разочарование, так как фреймворк общего назначения C++20 недоработан. Учитывая это, можно отметить, что в интернете имеется множество публикаций, в состав кода, обсуждаемого в которых, входит шаблонный класс, поддерживающий корутины-генераторы. В этом материале вы найдёте шаблон корутины, применимый на практике, а также примеры кода. Всё это предваряется общими сведениями о корутинах.

Читать далее

Vulkan. Руководство разработчика. Layout дескрипторов и буфер

Reading time10 min
Views4.9K


Добрый день! Я продолжаю выкладывать на Хабр переводы Vulkan Tutorial на русский язык (оригинал руководства можно посмотреть здесь).

Сегодня я перехожу к следующему разделу — Uniform buffers, и начну я с перевода статьи, которая называется Descriptor layout and buffer.

Содержание
Читать дальше →

Как мы получили реалистичные лица с новых ракурсов с помощью нейросетей

Reading time7 min
Views13K

В этой статье вы узнаете про глубокий нейросетевой подход Neural Radiance Fields — метод для генерации новых изображений сцены с различных ракурсов. Основная задача — интерполяция новых views между исходными оригинальными изображениями для получения “непрерывной сцены” из ограниченного числа фотографий.

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

Читать далее

Шасси беспилотника на базе Lada Vesta. Полный комплект drive-by-wire

Reading time7 min
Views8.7K

Мой опыт превращения Lada Vesta в шасси для беспилотника при помощи проекта с открытым исходным кодом Polysync OSCC. Как научить автомобиль поворачивать, ускоряться и тормозить по команде.

Читать далее

Обзор методов численной оптимизации. Безусловная оптимизация: метод линий

Reading time24 min
Views46K
image

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

Введение


Оптимизация — это процесс нахождения точки экстремального значения некоторой заданной целевой функции $f(\mathbf{x})$. Это один из крупнейших краеугольных камней прикладной математики, физики, инженерии, экономики, промышленности. Область её применений необъятна и может распространяться от минимизации физических величин на микро- и макроуровнях до максимизации прибыли или эффективности логистических цепочек. Машинное обучение также заострено на оптимизации: всевозможные регрессии и нейроные сети пытаются минимизировать ошибку между предсказанием и реальными данными.

Экстремум может быть как минимумом, так и максимумом, но обычно принято изучать любую оптимизацию исключительно как поиск минимума, поскольку любая максимизация эквивалентна минимизации из-за возможности поменять знак перед целевой функцией: $f(\mathbf{x})\to -f(\mathbf{x})$. Следовательно, в любом месте ниже под оптимизацией мы будем понимать именно минимизацию.
Читать дальше →

Нахлобучиваем домофонные ключи iButton с помощью Flipper Zero

Reading time11 min
Views107K


Flipper Zero — проект карманного мультитула для хакеров в формфакторе тамагочи, который мы разрабатываем. Предыдущие посты [1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14]

iButton — это общее название для формата электронного ключа в форм-факторе металлической “таблетки”. Еще его называют Dallas Touch Memory. Часто его ошибочно называют “магнитным” ключом, но это неправильно, ничего магнитного в нем нет. Внутри iButton полноценный микрочип, работающий по цифровому протоколу.

В статье разберем формат ключей iButton от физического устройства до протоколов, а также трюки, которые можно с ним делать при помощи Flipper Zero.

Введение в различные алгоритмы обучения с подкреплением (Q-Learning, SARSA, DQN, DDPG)

Reading time8 min
Views32K

(Q-learning, SARSA, DQN, DDPG)

Обучение с подкреплением (RL далее ОП) относится к разновидности метода машинного обучения, при котором агент получает отложенное вознаграждение на следующем временном шаге, чтобы оценить свое предыдущее действие. Он в основном использовался в играх (например, Atari, Mario), с производительностью на уровне или даже превосходящей людей. В последнее время, когда алгоритм развивается в комбинации с нейронными сетями, он способен решать более сложные задачи.

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

1.    Обучение с подкреплением

Типичное ОП состоит из двух компонентов, Агента и Окружения.

Читать далее

Self-driving ГАЗ66 Monster Truck 1/16

Reading time15 min
Views24K
Хабр, привет!

Хочу рассказать вам о том, как я делал и сделал самоуправляему машинку :)

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

Те места, где было что фоткать, с фотками. Там, где про софт — скорее всего без фото.

Это будет действительно история в формате повествования, как я рассказывал бы вам за чашкой кофе. Это не про bash команды, python скрипты, и вот это вот всё.

Начнём с фотки и видео того, что получилось, и дальше вся история под катом.


Виртуальных частиц не существует

Reading time5 min
Views39K

И бесконечного количества пар «частица-античастица» в вакууме тоже нет.

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

Читать далее

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity