Pull to refresh
0
0
Send message

Разбираемся с войной нейронных сетей (GAN)

Reading time7 min
Views40K
Generative adversarial networks (GAN) пользуются все большей популярностью. Многие говорят о них, кто-то даже уже использует… но, как выясняется, пока мало кто (даже из тех кто пользуется) понимает и может объяснить. ;-)
Давайте разберем на самом простом примере, как же они работают, чему учатся и что на самом деле порождают.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments10

Бинаризация изображений: алгоритм Брэдли

Reading time5 min
Views65K
Этот пост я хочу посвятить приятному трофею, добытому в англоязычном интернете. Речь пойдет об одном из методов адаптивной бинаризации изображений, методе Брэдли (или Брэдли-Рота, поскольку авторов двое).

Немного теории


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

Главная цель бинаризации, это радикальное уменьшение количества информации, с которой приходится работать. Просто говоря, удачная бинаризация сильно упрощает последующую работу с изображением. С другой стороны, неудачи в процессе бинаризации могут привети к искажениям, таким, как разрывы в линиях, потеря значащих деталей, нарушение целостности объектов, появление шума и непредсказуемое искажение символов из-за неоднородностей фона. Различные методы бинаризации имеют свои слабые места: так, например, метод Оцу может приводить к утрате мелких деталей и „слипанию“ близлежащих символов, а метод Ниблэка грешит появлением ложных объектов в случае неоднородностей фона с низкой контрастностью. Отсюда следует, что каждый метод должен быть применен в своей области.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments19

Евклидов алгоритм генерации традиционных музыкальных ритмов

Reading time17 min
Views19K
Перевод статьи Godfried Toussaint The Euclidean Algorithm Generates Traditional Musical Rhythms.

От переводчика


В Sonic Pi есть функция spread, которая принимает два числовых параметра и возвращает набор значений для генерации ритма. В описании этой функции есть ссылка на работу «The Euclidean Algorithm Generates Traditional Musical Rhythms». Эта блестящая статья, вышедшая аж в 2005 году, похоже, так и не была переведена на русский язык. Не будучи специалистом по переводам, я попытался, тем не менее, восполнить этот пробел.
Небольшое пояснения по поводу слова «ожерелье»: в тексте статьи «necklace» — в музыкальной теории такого термина нет, насколько мне известно. Я полагаю, что это просто некая визуальная интуиция автора, действительно ведь ритмическое кольцо, в том виде, в каком оно представлено на рисунках, напоминает ожерелье — поэтому так и перевожу.

Конспект


Евклидов алгоритм (дошедший до нас из «Начал» Евклида) подсчитывает наибольший общий делитель двух целых чисел. Настоящая работа демонстрирует, что структура евклидова алгоритма может быть использована для того, чтобы очень эффективно генерировать большое семейство ритмов, используемых в качестве пульсаций (остинато), в частности в музыке тропической Африки, и в традиционной музыке вообще. Эти ритмы, называемые здесь евклидовыми ритмами, имеют то свойство, что их ударные рисунки распределяются насколько возможно равномерно. Евклидовы ритмы также находят приложение в ускорителях в атомной физике и в компьютерных науках, и тесно связаны с несколькими семействами слов и последовательностями, изучаемыми комбинаторикой слов, такими как евклидовы строки, с которыми сравнивают евклидовы ритмы.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments17

Зачем нужна теория вероятностей в жизни

Reading time2 min
Views26K
Именно под таким названием мы и провели вебинар — «Зачем нужна теория вероятностей в жизни».

В вебинаре мы не касались «жёлтых» тем типа "как выигрывать у казино" и "100% способ получить миллион без регистрации и SMS".

Наоборот, были затронуты более серьёзные. Вот сам вебинар:



Например, в индустрии статистики больше денег, чем в торговле оружием, наркотиками и людьми вместе взятыми. Один малоизвестный английский учёный в 18 веке использовал статистику длительностей жизни (так называемые актуарные таблицы, составленные ещё Галлеем, который ещё и комету Галлея открыл) и основал бизнес, который сейчас стал целой индустрией, бизнесом №1 в мире. И вы тоже в нём участвуете каждый день, сознательно или нет, например, когда едете на работу.

Идея похожего математического аппарата используется в Индии: можно купить билетик у мафии и кататься в общественном транспорте бесплатно, а полученные вами штрафы оплатит мафия. Называется «хафта» и выгодно вам и мафии, но не государству.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments10

Математика на пальцах: линейно-квадратичный регулятор

Reading time10 min
Views64K

Пара часов из жизни математика-программиста или читаем википедию


Для начала в качестве эпиграфа цитирую rocknrollnerd:
— Здравствуйте, меня зовут %username%, и втайне раскрываю суммы из сигма-нотации на листочке, чтобы понять, что там происходит.
— Привет, %username%!


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

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

Раз уж пошёл эксгибиционизм про мою работу, то вот вам моё рабочее место (кликабельно):

Математика для программистов!
Total votes 47: ↑44 and ↓3+41
Comments86

Список ресурсов по машинному обучению. Часть 2

Reading time11 min
Views48K


Продолжим (1, 2) рассматривать тему машинного обучения. Вашему вниманию вторая часть (первая тут) адаптированной подборки полезных материалов.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Comments0

Обстоятельно о подсчёте единичных битов

Reading time16 min
Views97K
Я хотел бы подарить сообществу Хабра статью, в которой стараюсь дать достаточно полное описание подходов к алгоритмам подсчёта единичных битов в переменных размером от 8 до 64 битов. Эти алгоритмы относятся к разделу так называемой «битовой магии» или «битовой алхимии», которая завораживает своей красотой и неочевидностью многих программистов. Я хочу показать, что в основах этой алхимии нет ничего сложного, и вы даже сможете разработать собственные методы подсчёта единичных битов, познакомившись с фундаментальными приёмами, составляющими подобные алгоритмы.

Читать дальше →
Total votes 82: ↑82 and ↓0+82
Comments92

Vision-based SLAM: tutorial

Reading time7 min
Views30K
После опубликования статьи об опыте использования монокулярного SLAM мы получили несколько комментариев с вопросами о подробной настройке. Мы решили ответить песней серией статей-уроков о SLAM. Сегодня предлагаем ознакомиться с первой из них, в которой поставим все необходимые пакеты и подготовим окружение для дальнейшей работы.



Читать дальше →
Total votes 27: ↑27 and ↓0+27
Comments8

Нейрореволюция в головах и сёлах

Reading time8 min
Views94K
В последнее время всё чаще и чаще слышишь мнение, что сейчас происходит технологическая революция. Бытует мнение, что мир стремительно меняется.



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

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

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

Кто лишится в ближайшие лет десять работы, а у кого будут новые перспективные вакансии.
Читать дальше →
Total votes 78: ↑76 and ↓2+74
Comments124

Простыми словами о фильтре частиц

Reading time8 min
Views28K


В этой статье я расскажу вам об одном из методов оптимальной фильтрации — Фильтре частиц — и покажу, что применить такой фильтр намного проще чем вы думаете.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments4

Навигация квадрокоптера с использованием монокулярного зрения

Reading time5 min
Views41K
Сейчас для многих компьютерное зрение не является тайной за семью замками. Однако новые алгоритмы и подходы не перестают впечатлять. Одним из таких направлений является монокулярное зрение, в особенности SLAM. О том, как мы решали задачу навигации квадрокоптера, оснащенного единственной камерой, и пойдет речь в этой статье.


Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments31

«Hello World!» на C массивом int main[]

Reading time5 min
Views46K
Я хотел бы рассказать о том, как я писал реализацию «Hello, World!» на C. Для подогрева сразу покажу код. Кого интересует как до этого доходил я, добро пожаловать под кат.

#include <stdio.h>
const void *ptrprintf = printf;
#pragma section(".exre", execute, read)
__declspec(allocate(".exre")) int main[] =
{
    0x646C6890, 0x20680021, 0x68726F57,
    0x2C6F6C6C, 0x48000068, 0x24448D65,
    0x15FF5002, &ptrprintf, 0xC314C483
};

Реализация
Total votes 114: ↑108 and ↓6+102
Comments143

Векторное управление электродвигателем «на пальцах»

Reading time17 min
Views317K
— Что такое векторное управление?
— Держать ток под 90 градусов.


Термин «векторное управление» электродвигателями знаком всем, кто хоть как-то интересовался вопросом, как с помощью микроконтроллера управлять двигателем переменного тока. Однако обычно в любой книге по электроприводу глава про векторное управление находится где-нибудь ближе к концу, состоит из кучи волосатых формул с отсылками ко всем остальным главам книги. Отчего разбираться в этом вопросе совсем не хочется. И даже самые простые объяснения всё равно держат путь через дифференциальные уравнения равновесия, векторные диаграммы и кучу другой математики. Из-за чего появляются примерно вот такие вот попытки как-то закрутить двигатель без использования мат.части. Но на самом деле векторное управление – это очень просто, если понимать принцип его работы «на пальцах». А там уже и с формулами разбираться в случае надобности будет веселее.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments48

FlyElephant как инструмент для вычислений на C++, R, Python или Octave

Reading time5 min
Views11K

Приветствую всех!

Сегодня я расскажу о возможностях платформы FlyElephant для ученых и инженеров, которые в своей работе проводят различные вычисления на C++, R, Python или Octave. Это могут быть научные расчеты, анализ данных, моделирование или другие задачи. 22 января я буду проводить вебинар “Введение в FlyElephant”, на котором детально расскажу о платформе FlyElephant, а сегодня в общих чертах познакомлю вас с ней и покажу процесс проведения расчетов.

FlyElephant — это платформа, которая предоставляет ученым готовую вычислительную инфраструктуру для проведения расчетов, автоматизирует рутинные задачи и позволяет сосредоточиться на основных вопросах исследований.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments21

Shazam: алгоритмы распознавания музыки, сигнатуры, обработка данных

Reading time13 min
Views158K
В ресторане заиграла почти забытая песня. Вы слушали её в далёком прошлом. Сколько трогательных воспоминаний способны вызвать аккорды и слова… Вы отчаянно хотите послушать эту песню снова, но вот её название напрочь вылетело из головы! Как быть? К счастью, в нашем фантастическом высокотехнологичном мире есть ответ на этот вопрос.

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


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

Как же всё это работает?
Читать дальше →
Total votes 64: ↑58 and ↓6+52
Comments22

Обзор примера применения обучения с подкреплением с использованием TensorFlow

Reading time21 min
Views46K
КПДВ. В Karpathy game играет нейронная сеть

Всем привет!
Я думаю, что многие слышали о Google DeepMind. О том как они обучают программы играть в игры Atari лучше человека. Сегодня я хочу представить вам статью о том, как сделать нечто подобное. Данная статья — это обзор идеи и кода примера применения Q-learning, являющегося частным случаем обучения с подкреплением. Пример основан на статье сотрудников Google DeepMind.
За подробностями добро пожаловать под кат
Total votes 22: ↑22 and ↓0+22
Comments15

Автоматизация освещения участка в деревне или первый шаг к умному дому

Reading time3 min
Views28K
Я давно собирался написать про свой умный дом и вот пришли длинные каникулы, на которые я никуда не уехал и есть хороший повод исполнить задуманное. Я думаю разбить текст на несколько небольших статей, которые будет проще читать (и, наверное, писать тоже).

Вначале преамбула. Все началось с того, что я поставил несколько столбов на деревенском участке и установил на них плафоны освещения. После чего у меня и появилась идея как-нибудь автоматизировать включение и выключение света.
Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments30

Скриншотим игры — the hard way

Reading time6 min
Views39K
Ну что такого сложного может быть в создании скриншота? Казалось бы — позови функцию, любезно предоставленную операционкой и получи готовую картинку. Наверняка многие из вас делали это не один раз, и, тем не менее, нельзя просто так взять и заскриншотить полноэкранное directx или opengl приложение. А точнее — можно, но в результате вы получите не скриншот этого приложения, а залитый черным прямоугольник.
Читать дальше →
Total votes 46: ↑45 and ↓1+44
Comments22

Введение в OpenCL

Reading time11 min
Views61K
Эта статья посвящена основам программирования на OpenCl. OpenCl -это язык программирования на GPU/CPU, по своей структуре близкий к стандарту c99. Его развитием занимается Khronos Group, где на их сайте доступна полная документация. Во избежание полемики на тему «ну это же всё тривиально, достаточно покопаться в инете» сразу оговорюсь: в рунете информация на эту тематику практически полностью отсутствует, а в западном инете доступна весьма в разрозненном состоянии на десятке сайтов. Здесь будет приведена некоторая компиляция базовых принципов, максимально упрощающая начинающему программисту жизнь, а так же позволяющая с самого первого проекта максимально задействовать вычислительные мощности видеокарты. Людям написавшим 2-3 серьёзных программы на OpenCl это будет уже неинтересно. Статья в некотором смысле является продолжением моей прошлой статьи.
Читать дальше →
Total votes 47: ↑46 and ↓1+45
Comments26

Подглядываем за метаниями нейронной сети

Reading time8 min
Views32K


В комментариях к моей предыдущей статье о происходящем в нейронной сети проскользнула фраза, что, к сожалению, визуализация процессов обучения редко бывает возможна на реальных задачах с большими данными. Действительно очень жаль. Давайте же попытаемся это исправить. Под катом я предлагаю простую и, как ни удивительно, информативную визуализацию процесса обучения нейронной сети, не зависящую ни от характера задачи, ни от свойств самой сети, то есть доступную для сколь угодно сложной задачи.
Читать дальше, с картинками
Total votes 42: ↑40 and ↓2+38
Comments17

Information

Rating
Does not participate
Registered
Activity