Как стать автором
Обновить
2
0

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

Отправить сообщение

Работа с растром на низком уровне для начинающих

Время на прочтение6 мин
Количество просмотров77K
Поводом для данной статьи стал следующий пост: «Конвертация bmp изображения в матрицу и обратно для дальнейшей обработки». В свое время, мне немало пришлось написать исследовательского кода на C#, который реализовывал различные алгоритмы сжатия, обработки. То, что код исследовательский, я упомянул не случайно. У этого кода своеобразные требования. С одной стороны, оптимизация не очень важна – ведь важно проверить идею. Хотя и хочется, чтобы эта проверка не растягивалась на часы и дни (когда идет запуск с различными параметрами, либо обрабатывается большой корпус тестовых изображений). Примененный в вышеупомянутом посте способ обращения к яркостям пикселов bmp.GetPixel(x, y) – это то, с чего начинался мой первый проект. Это самый медленный, хотя и простой способ. Стоит ли тут заморачиваться? Давайте, замерим.

Использовать будем классический Bitmap (System.Drawing.Bitmap). Данный класс удобен тем, что скрывает от нас детали кодирования растровых форматов – как правило, они нас и не интересуют. При этом поддерживаются все распространенные форматы, типа BMP, GIF, JPEG, PNG.
Читать дальше →
Всего голосов 39: ↑31 и ↓8+23
Комментарии22

Создаём аппаратный генератор случайных чисел

Время на прочтение12 мин
Количество просмотров59K
Я хочу представить вашему вниманию программно-аппаратный вариант получения случайных чисел. Забегая вперёд, скажу, что данный вариант не единственный, и этот пост открывает мою небольшую серию статей о получении, генерации и изучении случайных чисел, или точнее сказать просто случайностей.



Читать дальше →
Всего голосов 162: ↑159 и ↓3+156
Комментарии104

Машинное обучение — микроскоп современного ученого. Зачем ЦЕРНу технологии Яндекса

Время на прочтение14 мин
Количество просмотров20K
В начале июля в нашем офисе прошел семинар, посвященный взаимодействию Яндекса и ЦЕРН. В понедельник мы опубликовали первую его часть — доклад Андрея Голутвина о новом эксперименте SHiP (Search for Hidden Particles). Вторая часть этого семинара была отведена Андрею Устюжанину о совместных проектах Яндекса и ЦЕРН.



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

Кроме того, в современной физике высоких энергий активно применяется машинное обучение. На основе тестовых выборок обучаются классификаторы, которые в дальнейшем определяют наличие тех или иных событий уже в реальных данных. При этом количество формул, которые может потребоваться обучить для одного анализа, достигает нескольких сотен или даже тысяч. Надо, однако, иметь в виду, что наши разработки применимы не только в этой сфере, но и в других отраслях науки. Этот доклад — скорее про исследования в целом, про процесс экспериментального подтверждения различных теорий, гипотез и моделей. С такими задачами обычно сталкиваются люди из научно-исследовательских организаций, но сейчас все чаще они возникают и в коммерческих компаниях.
Читать дальше →
Всего голосов 60: ↑54 и ↓6+48
Комментарии2

Реализация и апробация алгоритма распознавания мимики

Время на прочтение8 мин
Количество просмотров14K

Содержание:


1. Поиск и анализ цветового пространства оптимального для построения выделяющихся объектов на заданном классе изображений
2. Определение доминирующих признаков классификации и разработка математической модели изображений мимики"
3. Синтез оптимального алгоритма распознавания мимики
4. Реализация и апробация алгоритма распознавания мимики
5. Создание тестовой базы данных изображений губ пользователей в различных состояниях для увеличения точности работы системы
6. Поиск оптимальной аудио-системы распознавания речи на базе открытого исходного кода
7. Поиск оптимальной системы аудио распознавания речи с закрытым исходным кодом, но имеющими открытые API, для возможности интеграции
8. Эксперимент интеграции видео расширения в систему аудио-распознавания речи с протоколом испытаний

Цели:



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

Задачи:



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

Введение



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

1. Алгоритмы распознавания человеческого лица:

1.1 Алгоритмы, основанные на деформируемой модели.



Деформируемая модель (deformable template model) – это шаблон некоторой формы (для двумерного случая — открытая либо замкнутая кривая, для трехмерного — поверхность). Наложенный на изображение, шаблон деформируется под воздействием различных сил, внутренних (определенных для каждого конкретного шаблона) и внешних (определенных изображением, на которое наложен шаблон) — модель меняет свою форму, подстраиваясь под входные данные [1]. Исходная грубая модель губ деформируется под действием силовых полей, заданных входным изображением (Рис.1).
image
Основное преимущество над традиционными методами поиска, такими как преобразование Хафа (Hough transform [2]), в которых шаблон для поиска задается жестко, заключается в том, что деформируемые модели в процессе работы могут менять свою форму, позволяя более гибко осуществлять поиск объекта [3].

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

Деформируемые модели можно классифицировать по типу ограничений, накладываемых на их форму, на два вида: деформируемые модели свободной формы и параметрические деформируемые модели.
Читать дальше →
Всего голосов 32: ↑25 и ↓7+18
Комментарии4

Что нам стоит сеть построить

Время на прочтение8 мин
Количество просмотров60K
Когда пользуешься сложными алгоритмами для решения задач компьютерного зрения — нужно знать основы. Незнание основ приводит к глупейшим ошибкам, к тому, что система выдаёт неверифицируемый результат. Используешь OpenCV, а потом гадаешь: «может, если сделать всё специально под мою задачу ручками было бы сильно лучше?». Зачастую заказчик ставит условие «сторонних библиотек использовать нельзя», или, когда работа идёт для какого-нибудь микроконтроллера, — всё нужно прогать с нуля. Вот тут и приходит облом: в обозримые сроки реально что-то сделать, только зная как работают основы. При этом чтения статей зачастую не хватает. Прочитать статью про распознавание номеров и попробовать самому такое сделать — огромная пропасть. Поэтому лично я стараюсь периодически писать какие-нибудь простенькие программки, включающие в себя максимум новых и неизвестных для меня алгоритмов + тренирующих старые воспоминания. Рассказ — про один из таких примеров, который я написал за пару вечеров. Как мне показалось, вполне симпатичный набор алгоритмов и методов, позволяющий достичь простенького оценочного результата, которого я ни разу не видел.



Сидя вечером и страдая от того, что нужно сделать что-то полезное, но не хочется, я наткнулся на очередную статью по нейросетям и загорелся. Нужно сделать наконец-таки свою нейросеть. Идея банальная: все любят нейросети, примеров с открытым кодом масса. Мне иногда приходилось пользоваться и LeNet и сетями из OpenCV. Но меня всегда настораживало, что их характеристики и механику я знаю только по бумажкам. А между знанием «нейросети обучаются методом обратного распространения» и пониманием того, как это сделать пролегает огромная пропасть. И тогда я решился. Пришло время, чтобы 1-2 вечера посидеть и сделать всё своими руками, разобраться и понять.
Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии11

Введение в GTK

Время на прочтение4 мин
Количество просмотров136K
На ХабраХабре наконец-то появился новый блог, посвящённый GTK. Присоединяйтесь! :-)

Привет, %username%!

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

GTK+ — это фреймворк для создания кроссплатформенного графического интерфейса пользователя (GUI). Наряду с Qt он является одной из двух наиболее популярных на сегодняшний день библиотек для X Window System.

Изначально эта библиотека была частью графического редактора GIMP, но позже стала независимой и приобрела популярность. GTK+ — это свободное ПО, распространяемое на условиях GNU LGPL и позволяющее создавать как свободное, так и проприетарное программное обеспечение.


Читать дальше →
Всего голосов 72: ↑64 и ↓8+56
Комментарии68

Любительский подход к компьютерной лингвистике

Время на прочтение5 мин
Количество просмотров19K
Этим постом я хочу привлечь внимание к интересной области прикладного программирования, бурно развивающейся в последние годы — компьютерной лингвистике. А именно — системам, способным к разбору и пониманию текста на русском языке. Но основной фокус внимания я хочу сместить с академических и промышленных систем, в которые вложены десятки и тысячи человеко-часов, к описанию тех способов, какими успехов на этом поприще могут добиться любители.
Читать дальше →
Всего голосов 48: ↑45 и ↓3+42
Комментарии26

Пишем бота для онлайн-игры на JavaScript с применением AOP

Время на прочтение5 мин
Количество просмотров103K

Если вы как и я любите онлайн игры, но не любите тратить на них сильно много времени, добро пожаловать под кат. Мы не будем обсуждать боты это хорошо или нет, а просто разберем как можно для конкретной онлайн игры сделать бота. Он будет не тупо клацать по кнопке по таймауту, а будет реагировать на события в браузере. Это мы сделаем с помощью Аспектно-ориентированного программирования (далее AOP). Для примера я выбрал полюбившуюся хабром игру Пернатск.
Читать дальше →
Всего голосов 40: ↑32 и ↓8+24
Комментарии6

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

Время на прочтение9 мин
Количество просмотров69K
Три года тому назад я работал в лаборатории нейробиологии в Барселоне, занимаясь тем, что ставил на людей различные электроды и вел курсы по когнитивным системам. А сегодня я проектирую и пишу программное обеспечение для жизни.

В рамках науки я много писал о программном обеспечении, что-то вроде — если вы хотите разобраться в 40 гигабайтах данных, полученных при сканировании мозга, вы должны закатать рукава и написать парочку сортировочных скриптов. И я всегда был действительно неплохим программистом, хотя и не осознавал этого, пока не выпустился из академии и не начал работать над одним небольшим и очень амбициозным стартапом, — именно тогда я узнал всю правду о разработчиках программного обеспечения и — что еще более важно — о том, что значит, быть в этом бизнесе. Разработка программного обеспечения — это не просто знание языков, библиотек, алгоритмов и проектировочных шаблонов. Это — особый образ мышления.
Читать дальше →
Всего голосов 108: ↑82 и ↓26+56
Комментарии33

И снова игра «Жизнь»

Время на прочтение1 мин
Количество просмотров27K
image Тема игры «Жизнь», не раз поднималась на хабре. Описывались различные модификации игры, я хочу представить еще одну. Модификация игры довольно тривиальна, но дает больше возможности в наблюдении, чем оригинал.

В классических правилах придуманных Джоном Конвеем, каждая клетка игрового поля, может быть только в двух состояниях: либо клетка пуста, либо заполнена фишкой.
Подобно эволюции в природе, где развитие шло от одноклеточных к многоклеточным, логично представить развитие игры «Жизнь», где в клетке может находиться больше одной фишки.
Читать дальше →
Всего голосов 29: ↑25 и ↓4+21
Комментарии10

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

Время на прочтение9 мин
Количество просмотров10K

Введение


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

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

Отметим, что приводимые подходы применимы не только к текстам, а вообще к любым объектам, которые можно представить в виде символьных последовательностей, например, какие-нибудь макромолекулы (ДНК, РНК, протеины) из генетики. Всего мы рассмотрим 4 метода:

  1. Признаковое описание.
  2. Попарное наложение (выравнивание) текстов.
  3. Формирование профиля и скрытой марковской модели.
  4. Представление фрагментами.

Итак, приступим.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии2

Алан Тьюринг, Винт Серф и Джосс Уидон

Время на прочтение2 мин
Количество просмотров18K
Что общего у Алана Тьюринга, Винта Серфа, Джосса Уидона, Анны Ахматовой, а также олимпийских игр, пишущей машинки и гимнастического обруча?

23 июня 2014 года исполняется 50 лет Джоссу Уидону, 71 год Винтону Сёрфу и 102 года со дня рождения Алана Тьюринга.

Вполне возможно, что 23 июня когда-нибудь будет днем криптоанализа или днем искуственного интеллекта
Читать дальше →
Всего голосов 40: ↑29 и ↓11+18
Комментарии4

Про котиков, собак, машинное обучение и deep learning

Время на прочтение15 мин
Количество просмотров84K
image
«В 1997 году Deep Blue обыграл в шахматы Каспарова.
В 2011 Watson обставил чемпионов Jeopardy.
Сможет ли ваш алгоритм в 2013 году отличить Бобика от Пушистика?»


Эта картинка и предисловие — из челленджа на Kaggle, который проходил осенью прошлого года. Забегая вперед, на последний вопрос вполне можно ответить «да» — десятка лидеров справилась с заданием на 98.8%, что на удивление впечатляет.

И все-таки — откуда вообще берется такая постановка вопроса? Почему задачи на классификацию, которые легко решает четырехлетний ребенок, долгое время были (и до сих пор остаются) не по зубам программам? Почему распознавать предметы окружающего мира сложнее, чем играть в шахматы? Что такое deep learning и почему в публикациях о нем с пугающим постоянством фигурируют котики? Давайте поговорим об этом.
По заветам издателей Стивена Хокинга - без формул
Всего голосов 101: ↑98 и ↓3+95
Комментарии49

Распознавание речи для чайников

Время на прочтение9 мин
Количество просмотров168K

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

Читать дальше →
Всего голосов 71: ↑61 и ↓10+51
Комментарии20

А что действительно скрывают нейронные сети?

Время на прочтение7 мин
Количество просмотров56K
Несколько дней назад на хабре вышла статья Что скрывают нейронные сети?. Она является вольным пересказом английской статьи The Flaw Lurking In Every Deep Neural Net, а та в свою очередь рассказывает о конкретном исследовании некоторых свойств нейронных сетей (Интригующие свойства нейронных сетей).

В статье, описывающей исследование, авторы выбрали несколько сенсационный подход к подаче материала и написали текст в духе «в нейронных сетях найдена серьезная проблема» и «мы не можем доверять нейросетям в проблемах, связанных с безопасностью». Ссылку на пост на Хабре среди моих знакомых много кто расшарил, в фейсбуке завязалось сразу несколько дискуссий на эту тему. При этом у меня сложилось впечатление, что за два пересказа часть информации из начального исследования потерялась, плюс возникло много вопросов, связанных с нейронными сетями, которые в изначальном тексте не рассматривались. Мне кажется, что есть потребность подробнее описать, что же делали в исследовании, а заодно попробовать ответить на изначальные вопросы. Формат фейсбука для таких длинных текстов не подходит совсем, так что я решил попробовать оформить свои размышления в пост на Хабре.
Читать дальше →
Всего голосов 124: ↑117 и ↓7+110
Комментарии31

Какому языку можно научиться, задавая вопросы поисковой системе? Семинар в Яндексе

Время на прочтение9 мин
Количество просмотров23K
Языки, на которых пользователи интернет-поиска составляют свои поисковые запросы, появились на наших глазах. Лексически они слабо отличимы от более привычных нам языков, например, русского или английского, и в начале своего существования совпадали с родительскими языками. Но языки поисковых запросов быстро отошли от родительских и обзавелись собственными наборами идиом, синтаксисом и даже особыми «частями речи». Небольшой размер и простота их грамматик, а также возможность изучать полное множество высказываний, порожденных на таких языках, делают их идеальными модельными объектами для тестирования моделей усвоения языка.

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



Хотелось бы также поблагодарить Елену Грунтову за одну из основных идей для исследования и помощь в подготовке доклада.
Конспект доклада
Всего голосов 74: ↑64 и ↓10+54
Комментарии8

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

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





Если вспомнить фильм «Терминатор» и технологии, которыми по сюжету пользовались киборги, то можно будет выделить и нейронные сети, и возможность беспроводной связи с внешним источником интеллекта (Skynet), и компьютерное зрение, и распознавание звука, понимание различных языков. На момент выхода фильма на экраны все это было абсолютной фантастикой, технологиями далекого будущего. Но сегодня большая часть этих технологий реализована в том или ином виде. Попробуем разобраться, что же из всего перечисленного уже используется.
Конспект лекции
Всего голосов 79: ↑68 и ↓11+57
Комментарии44

Распознавание номеров: от А до 9

Время на прочтение9 мин
Количество просмотров171K
Уже пару раз на Хабре возникали дискуссии на тему того, как сейчас работает распознавание номеров. Но статьи, где были бы показаны разные подходы к распознаванию номеров, на Хабре пока не было. Так что здесь попробуем разобраться, как все это работает. А потом, если статья вызовет интерес, продолжим и выложим работающую модель, которую можно будет поисследовать.

image
Читать дальше →
Всего голосов 140: ↑137 и ↓3+134
Комментарии268

Генетические алгоритмы в лицах

Время на прочтение10 мин
Количество просмотров31K
Генетические алгоритмы были изобретены в 1950-х годах как результат первых экспериментов по моделированию естественной эволюции на компьютере. С тех пор они используются для решения самых разнообразных оптимизационных задач, где градиентные методы почему-то не подходят. Биологическая составляющая генетических алгоритмов имеет здесь очень упрощенный вид и речь в данном случае идет скорее о следовании общей идее эволюционного отбора, чем полноценному его моделированию. Тем не менее, иногда результаты работы ГА получается интерпретировать в биологическом смысле. В нашей статье мы рассказываем об опыте применения генетических алгоритмов для задачи распознавания лиц с целью получения «регионов важности» лица. Применение этого подхода позволило в среднем на 20% повысить точность распознавания нашей системы распознавания лиц.
Читать дальше →
Всего голосов 42: ↑35 и ↓7+28
Комментарии38

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

Время на прочтение8 мин
Количество просмотров32K


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

Информация

В рейтинге
4 500-й
Зарегистрирован
Активность