Как стать автором
Обновить
0
0
Y Zitri @h1z

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

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

Разбор каптчи Xakep.ru

Время на прочтение8 мин
Количество просмотров8.4K
Разбор каптчи xakep.ru

Предисловие


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

Читать дальше →
Всего голосов 161: ↑150 и ↓11+139
Комментарии37

pytesser — OCR-библитека для языка Python (оптическое распознавание символов)

Время на прочтение1 мин
Количество просмотров15K
Сегодня бродил по проектам на Google и наткнулся на довольно интересную разработку — pytesser. По утверждению разработчика распознать текст на изображении. Библиотека использует tesseract-ocr и PIL.
Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии6

Использование нейронной сети Хопфилда для решения простейшей задачи

Время на прочтение9 мин
Количество просмотров12K
image В настоящее время достаточно интересной областью программирования является использование нейронных сетей. Не смотря на всю перспективность этой идеи, большинство реализаций которые я встречал были связаны с различным анализом статистических выборок и предсказанием возможного значения какого-либо параметра.

Разговоры об искусственном интеллекте и громоздких экспертных системах — это конечно все хорошо, но как всю эту теорию приблизить к жизни, к нашим приклодным задачам?
Читать дальше →
Всего голосов 72: ↑59 и ↓13+46
Комментарии29

Как компьютеры играют в шахматы

Время на прочтение4 мин
Количество просмотров28K
Интереснейшую реализацию шахматной программы показали вчера на Хабре.
Почитав комментарии, я пришел к выводу, что принцип работы наиболее распространенных алгоритмов игры в шахматы, шашки и тому подобные известны не всем.

Вместе с тем задача создания программы, играющей во что-то, достаточно тривиальна, если имеются способы расчета некоторых величин и оценок, специфичных именно для этой игры.
Читать дальше →
Всего голосов 112: ↑109 и ↓3+106
Комментарии57

Применение нейросетей в распознавании изображений

Время на прочтение10 мин
Количество просмотров243K
Про нейронные сети, как один из инструментов решения трудноформализуемых задач уже было сказано достаточно много. И здесь, на хабре, было показано, как эти сети применять для распознавания изображений, применительно к задаче взлома капчи. Однако, типов нейросетей существует довольно много. И так ли хороша классическая полносвязная нейронная сеть (ПНС) для задачи распознавания (классификации) изображений?
Читать дальше →
Всего голосов 134: ↑131 и ↓3+128
Комментарии73

Распознавание изображений. Алгоритм Eigenface

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

Введение



Я продолжаю серию статей посвящённую тематике pattern recognition, computer vision и machine learning. Сегодня я вам представляю обзор алгоритма, который носит название eigenface.



В основе алгоритма лежит использование фундаментальных статистических характеристик: средних (мат. ожидание) и ковариационной матрицы; использование метода главных компонент. Мы также коснёмся таких понятий линейной алгебры, как собственные значения (eigenvalues) и собственные вектора (eigenvectors) (wiki: ru, eng). И вдобавок, поработаем в многомерном пространстве.
Как бы страшно всё это не звучало, данный алгоритм, пожалуй, является одним из самых простых рассмотренных мною, его реализация не превышает нескольких десятков строк, в тоже время он показывает неплохие результаты в ряде задач.

Мне не страшно.
Всего голосов 132: ↑127 и ↓5+122
Комментарии48

В поисках НЛО. Детект объектов на изображении

Время на прочтение6 мин
Количество просмотров55K
Взлом captcha это, конечно, интересно и познавательно, но, по большому счёту, бесполезно. Это лишь частный случай задачи, которая возникает в одном из интересных направлений развития IT – распознавание образов (pattern recognition).



Сегодня мы рассмотрим алгоритм (точнее, более правильно считать это методикой, т.к. она объединяет в себе множество алгоритмов), который стоит на стыке таких областей, как Machine Learning и Computer Vision.

С помощью этого алгоритма мы будем искать НЛО (позарился на святое) на изображениях.

Уберите детей!
Всего голосов 92: ↑91 и ↓1+90
Комментарии37

Взлом каптчи файлообменника

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

Введение



В данной статье коротко рассказывается о процессе взлома captcha с ifolder.ru. Применение в процессе языка Python и сторонних библиотек. Применение алгоритма преобразований Хафа в составе библиотеки Open Computer Vision © Intel позволит нам избавиться от шума на изображении, простая в использовании и быстрая библиотека FANN (Fast Artificial Neural Network) сделает возможным применение искусственной нейронной сети для задачи распознавания образа.

Моя мотивация состояла, прежде всего, в том, чтобы попробовать язык Python. Как известно, лучший способ изучить язык — решить на нём какую-нибудь прикладную задачу. Поэтому параллельно описанию процесса обработки изображения я буду рассказывать о том, какие библиотеки и для чего я использовал.
Сломать мозг
Всего голосов 183: ↑178 и ↓5+173
Комментарии68

Распознавание речи. Часть 3. Голосовой тракт, слуховой тракт

Время на прочтение7 мин
Количество просмотров24K
Зачем нам это надо

Когда заходит разговор о распознавании речи, невозможно оставаться исключительно в сфере «анализа сигналов» (на то есть отдельные труды и отрасли науки). Всегда надо помнить, что при анализе речи мы работаем с особым видом сигнала, который воспроизводится определенной биологической системой. С одной стороны, она ограничена своими амплитудно-частотными характеристиками (АЧХ), а с другой стороны, самим языком и стандартным набором звуков, которые могут быть произнесены его носителем (например, при анализе русского языка мы не будем принимать во внимание возможность цоканья и свиста). Исходя из поставленной задачи, можно достаточно точно определить характеристики сигнала речи, и его основные свойства.
Тема урока
С другой стороны, для этого сигнала природой же разработан приемник, близкий к идеальному. Это наш слуховой тракт. Пока что не изобретено и не найдено ни одной другой системы, которая могла бы так же точно и качественно заниматься распознаванием речи. Было бы кощунством пренебречь возможностью поучиться этому у природы. Если познакомится с особенностями слухового тракта поближе, начинаешь понимать, что вейвлеты и преобразование Фурье в такие задачи пришли не с потолка. И системы, обеспечивающие разложение сигнала на частотный спектр, появились гораздо раньше первого наскального рисунка…
Урок по биологии: кто такая улитка, и чем она похожа на гребенку фильтров...
Всего голосов 44: ↑41 и ↓3+38
Комментарии24

Распознавание речи. Часть 2. Типичная структура системы распознавания речи

Время на прочтение3 мин
Количество просмотров21K
Распознавание речи – это многоуровневая задача распознавания образов, в которой акустические сигналы анализируются и структурируются в иерархию структурных элементов (например, фонем), слов, фраз и предложений. Каждый уровень иерархии может предусматривать некоторые временные константы, например, возможные последовательности слов или известные виды произношения, которые позволяют уменьшить количество ошибок распознавания на более низком уровне. Чем больше мы знаем (или предполагаем) априорной информации о входном сигнале, тем качественнее мы можем его обработать и распознать.image
Читать дальше →
Всего голосов 40: ↑40 и ↓0+40
Комментарии26

Распознавание речи. Часть 1. Классификация систем распознавания речи

Время на прочтение4 мин
Количество просмотров42K
Эпиграф

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

Но не нужно думать, что за рубежом все уже все давно открыли и нам их никогда не догнать. Когда я искал материал для этой серии, пришлось перерыть тучу зарубежной литературы и диссертаций. Причем статьи и диссертации эти были замечательных американских ученых Huang Xuedong; Hisayoshi Kojima; DongSuk Yuk и др. Понятно, на ком эта отрасль американской науки держится? ;0)

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

image

Классификация систем распознавания речи



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

Признаки систем и большущая диаграмма
Всего голосов 51: ↑50 и ↓1+49
Комментарии40

Серверный редирект на мобильную версию сайта

Время на прочтение2 мин
Количество просмотров37K
image
Предлагаю вашему вниманию простое и дешевое (по ресурсам) решение для перенаправления пользователей мобильных устройств на легкую версию сайта. Решение ориентировано на highload сайты, оптимизация которых основана на кешировании гостевых запросов.
Проверка, является ли клиент мобильным устройством, производится веб-сервером nginx и в случае успеха клиент перенаправляется на поддомен или локейшн. Это существенно экономит ресурсы и позволяет добиться большей масштабируемости по сравнение с PHP методами.
Читать дальше →
Всего голосов 77: ↑68 и ↓9+59
Комментарии35

Регистрация своей фирмы собственными руками, туду-лист

Время на прочтение12 мин
Количество просмотров51K
Дисклаймер: описываю только свой личный опыт и мнения автора могут не совпадать с мнением автора. Статья огромная, читать много.

Пишу эту статью, и представляю себе тебя, читателя Хабра, которой в обеденный перерыв залез почитать что-нибудь для развития. А этот читатель, т.е. ты (да, не отворачивай глаза от букв, именно ты) давно наслышан, что своё дело – это круто. И, может быть, как раз не хватало лёгкого пинка, чтобы выйти из зоны будничного комфорта и что-нибудь, да предпринять.

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

Для создания фирмы необходимо:

Минимальный реквизит для создания своей компании
Подробности под кОтом.
Всего голосов 372: ↑351 и ↓21+330
Комментарии248

Генерация web-шрифтов

Время на прочтение1 мин
Количество просмотров5.3K
Ради интереса, прошелся поиском по хабру, и обнаружил, что тут не освещен один очень полезный сервис: http://www.fontsquirrel.com
Пожалуй, это самый удобный сервис такого рода, создающий на выходе html-страницу с подключенными шрифтами в разных форматах, готовыми font-face в css и демо-текстом.
При этом есть масса настроек по кастомизации шрифтов во время конвертирования.
В частности, можно уменьшить их вес, убрав часть символов или оптимизировав кривые. Так же он умеет хинтовать шрифты и кодировать их в base64. В общем, есть всевозможные плюшки.
Всего голосов 53: ↑46 и ↓7+39
Комментарии14

Многопоточность в Ruby

Время на прочтение9 мин
Количество просмотров38K
Перевод главы «Multithreading» книги David Thomas и Andrew Hunt «Programming Ruby: The Pragmatic Programmers' Guide, Second Edition».

Часто самым простым способом выполнить одновременно две вещи является использование потоков в Ruby. Они являются внутрипроцессными, встроенными в интерпретатор Ruby. Это делает потоки Ruby полностью переносимыми, т.е. независимыми от операционной системы. Но в то же время вы точно не получите выгоду от использования родных, нативных потоков. Что это значит?

Вы можете столкнуться с голоданием (thread starvation — это когда поток с маленьким приоритетом не имеет шанса запуститься). Если вы хотите заблокировать ваши потоки, то со скрежетом остановится целый процесс. А если возникнет ситуация, что некоторые потоки будут посылать вызовы операционной системе, для выполнения которых требуется немалое время, то все потоки будут висеть, пока интерпретатор не получит контроль обратно. И наконец, если ваша машина имеет больше одного процессора, потоки Ruby не будут это использовать, т.к. они запускаются в одном процессе, а в одиночном родном потоке они будут вынуждены запускаться на одном процессоре единовременно.

Все это звучит страшновато. Тем не менее, на практике во многих случаях выгода от использования потоков во многом перевешивает любые потенциальные проблемы, которые могут возникнуть. Потоки Ruby являются эффективным и легким путем достижения параллельности в вашем коде. Вы просто должны понять основные проблемы реализации, и, соответственно, архитектуру.
Читать дальше →
Всего голосов 41: ↑37 и ↓4+33
Комментарии30

Tips & Tricks

Время на прочтение9 мин
Количество просмотров5.1K
Практически во всех языках программирования одну и ту же задачу можно решить несколькими способами. Однако какие-то из них лучше, какие-то хуже. Для некоторых требуется написать 10 строк кода, для других можно обойтись и одной.

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

Методы массивов


Простой пример — допустим, у вас имеется массив объектов класса User. У них есть свойство activated, которое выставляется на 1, если юзер активировал свою учетную запись. Вам нужно проверить, все ли юзеры из массива активированы. Не берем во внимание ActiveRecord (там можно и по-другому сделать), моя цель — показать работу с массивами.

Способ первый, самый примитивный:
  1. @users = User.find(:all)
  2. activated_users = 0
  3. foreach user in @users
  4.   activated_users += 1 if user.activated == 1
  5. end
  6.  
  7. # если количество совпадает, значит все юзеры активированы
  8. activated_users == @users.size
Читать дальше
Всего голосов 76: ↑61 и ↓15+46
Комментарии45

Express — Sinatra для Node

Время на прочтение1 мин
Количество просмотров2.9K
require.paths.unshift('path/to/express/lib');
require('express');

get('/', function(){
 this.redirect('/hello/world')
});

get('/hello/world', function(){
 return 'Hello World'
});

get('/bye/world', function(){
 this.render('title.html.haml', {
  layout: false,
  locals: {
   title: 'Bye World'
  }
 });
});

run();

В стремлении сделать серверный JavaScript похожим на Rails или Sinatra мы получили Express. Чистый и простой. Простой и чистый.
Всего голосов 41: ↑32 и ↓9+23
Комментарии70

Мониторинг доступа к файлам

Время на прочтение3 мин
Количество просмотров33K
Зачастую пользователям и системным администратором необходимо отслеживать, к каким файлам обращается приложение. В Linux-е уже есть все средства для этого, и тем удивительнее постоянно слышать на форумах — есть ли аналог Sysinternal Filemon. В данной статье я опишу использование утилиты strace, и рассмотрю ряд моментов, которые ускользают от некоторых пользователей, полагающих, что приложениям надо ограничивать права даже на чтение, например, ограничить доступ mplayer-а только к показываемому фильму.
Читать дальше →
Всего голосов 63: ↑58 и ↓5+53
Комментарии26

MongoDB — варим хороший кофе

Время на прочтение4 мин
Количество просмотров18K
Введение

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

Сегодня мы поставим MongoDB, ниже рассмотрим свежеиспеченный ХабраЛоггер и пошпионим за главной страницей Хабра в реальном времени.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии51

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность