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

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

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

Итоги развития компьютерного зрения за один год

Время на прочтение12 мин
Количество просмотров29K
Часть первая. Классификация/локализация, обнаружение объектов и слежение за объектом

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

Введение


Компьютерным зрением обычно называют научную дисциплину, которая даёт машинам способность видеть, или более красочно, позволяя машинам визуально анализировать своё окружение и стимулы в нём. Этот процесс обычно включает в себя оценку одного или нескольких изображений или видео. Британская ассоциация машинного зрения (BMVA) определяет компьютерное зрение как «автоматическое извлечение, анализ и понимание полезной информации из изображения или их последовательности».

Термин понимание интересно выделяется на фоне механического определения зрения — и демонстрирует одновременно и значимость, и сложность области компьютерного зрения. Истинное понимание нашего окружения достигается не только через визуальное представление. На самом деле визуальные сигналы проходят через оптический нерв в первичную зрительную кору и осмысливаются мозгом в сильно стилизованном смысле. Интерпретация этой сенсорной информации охватывает почти всю совокупность наших естественных встроенных программ и субъективного опыта, то есть как эволюция запрограммировала нас на выживание и что мы узнали о мире в течение жизни.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+19
Комментарии14

Коротко об HTML 5.2

Время на прочтение2 мин
Количество просмотров42K
Уважаемые коллеги, добрый день.

В связи с тем, что 14.12.2017 года W3C в блоге объявила о выходе новой редакции HTML 5, предлагаю Вашему вниманию краткое описания основных нововведений.

Новации


  1. Поддержка модульного JavaScript


    На мой взгляд, самая интересная и ожидаемая новация связана с поддержкой модульного синтаксиса последнего стандарта ECMA Script.
Читать дальше →
Всего голосов 62: ↑58 и ↓4+54
Комментарии68

Вычислительные методы в оптике или как моделировать электромагнитные процессы на различных пространственных масштабах

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

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


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


В данной заметке помимо краткого разбора двух традиционных методов, мы расскажем о более новом подходе, который получил название "метод огибающей пучка" (beam envelope method), и обсудим его преимущества для задач вычислительной оптики.
image

Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии6

Как делать меньше ошибок в английском. Поясняет носитель языка

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


В лингвистике существует такое понятие, как интерференция — влияние родного языка на тот, который мы изучаем. Чаще всего это попытки найти какие-то общие черты в фонетике, грамматике и лексике в родном и иностранном языках.

На начальном этапе это помогает разобраться в фонетике, но потом приходится свыкаться с большим количеством правил и исключений, которые не имеют аналогов в русском.
Мы попросили одного из самых опытных носителей английского языка в нашей школе, Трессу, рассказать о наиболее частых ошибках ее русскоязычных студентов и как их исправить. Но прежде чем перейти к самому списку, есть ряд советов от нее, чтобы количество ошибок постоянно уменьшалось:
Читать дальше →
Всего голосов 53: ↑49 и ↓4+45
Комментарии56

Метрики качества ранжирования

Время на прочтение7 мин
Количество просмотров116K
В процессе подготовки задачи для вступительного испытания на летнюю школу GoTo, мы обнаружили, что на русском языке практически отсутствует качественное описание основных метрик ранжирования (задача касалась частного случая задачи ранжирования — построения рекомендательного алгоритма). Мы в E-Contenta активно используем различные метрики ранжирования, поэтому решили исправить это недоразуменее, написав эту статью.

Метрики качества ранжирования


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

Нестандартная кластеризация 5: Growing Neural Gas

Время на прочтение13 мин
Количество просмотров19K
Часть первая — Affinity Propagation
Часть вторая — DBSCAN
Часть третья — кластеризация временных рядов
Часть четвёртая — Self-Organizing Maps (SOM)
Часть пятая — Growing Neural Gas (GNG)

Доброго времени суток, Хабр! Сегодня я бы хотел рассказать об одном интересном, но крайне малоизвестном алгоритме для выделения кластеров нетипичной формы — расширяющемся нейронном газе (Growing Neural Gas, GNG). Особенно мало информации об этом инструменте анализа данных в рунете: статья в википедии, рассказ на Хабре о сильно изменённой версии GNG и пара статей с одним лишь перечислением шагов алгоритма — вот, пожалуй, и всё. Весьма странно, ведь мало какие анализаторы способны работать с меняющимися во времени распределениями и нормально воспринимают кластеры экзотической формы — а это как раз сильные стороны GNG. Под катом я попробую объяснить этот алгоритм сначала человеческим языком на простом примере, а затем более строго, в подробностях. Прошу под кат, если заинтриговал.

(На картинке: нейронный газ осторожно трогает кактус)
Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Комментарии5

Кривая Гильберта vs Z-order

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

Неоднократно доводилось слышать мнение, что из всех заметающих кривых. именно кривая Гильберта наиболее перспективна для пространственной индексации. Мотивируется это тем, что она не содержит разрывов и потому в некотором смысле “хорошо устроена”. Так ли это на самом деле и при чем здесь пространственная индексация, разберёмся под катом.
Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии20

[CppCon 2017] Herb Sutter: Метапрограммирование и кодогенерация в C++

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

Продолжаю серию публикаций Fil по CppCon 2017. В докладе представлены ранние наработки по добавлению рефлексии и кодогенерации в C++, а также по метаклассам, которые позволят генерировать части классов C++. В стандарт эти новшества попадут не ранее, чем в C++23.

Всего голосов 14: ↑14 и ↓0+14
Комментарии7

Метавычисления и глубокие свёрточные сети: интервью с профессором ИТМО

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


После победы AlphaGo в марте 2016 года над одним из сильнейших игроков Go в мире Ли Седолем о методах глубокого обучения заговорили практически везде. И даже Google не упустил случая назвать себя компанией машинного обучения и искусственного интеллекта.

Что стоит за термином «глубокое обучение»? Какими бывают модели машинного обучения и на чём они пишутся? Ответить на эти и многие другие вопросы, связанные с МО и, в частности, с глубоким обучением (deep learning), мы попросили Алексея Потапова, профессора кафедры компьютерной фотоники и видеоинформатики ИТМО.
Читать дальше →
Всего голосов 58: ↑55 и ↓3+52
Комментарии3

Ambient Occlusion Volumes для прожженных самоваров

Время на прочтение7 мин
Количество просмотров14K
Скитаясь по интернету в поисках алгоритмом освещения, которые бы удовлетворили мои потребности, я наткнулся на весьма новый алгоритм, разработанный компанией NVIDIA, название которого AOV (Ambient Occlusion Volumes). Имея в своём распоряжении тёмные осенние ночи и несколько чашек горячего кофе, я решился изучить данный алгоритм, следствием чего является данная статья. Прежде чем я начну, хотелось бы отметить своё удивление по поводу того, что данный алгоритм имеет незаслуженно малую популярность в кругах разработчиков игр, в отличии от всеми знакомого нам SSAO. Содержание данной статьи будет, по большей мере, состоять из теории.
Читать дальше →
Всего голосов 40: ↑38 и ↓2+36
Комментарии11

FPS и пусть ваш код подождет

Время на прочтение8 мин
Количество просмотров19K
Приветствую, уважаемые читатели Хабра. Эта статья про фронтенд, JavaScript и FPS. И сегодня мне хотелось бы поделиться своими мыслями о «слепом» коде, который фактически никак не учитывает производительности среды исполнения. Ну и, конечно, напишем очередной велосипедокостыль — куда без них.

image
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии38

Моделирование динамических систем (метод Лагранжа и Bond graph approach)

Время на прочтение9 мин
Количество просмотров19K
Всем доброго дня. В данной статье хочу показать один из графических методов построения математических моделей для динамических систем, который называется Bond graph («bond» — связи, «graph» — граф). В русской литературе, описания данного метода, я нашел только в Учебном пособии Томского политехнического университета, А.В. Воронин «МОДЕЛИРОВАНИЕ МЕХАТРОННЫХ СИСТЕМ» 2008 г. Также показать классический метод через уравнение Лагранжа 2 рода.


Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Комментарии7

std::shared_ptr и кастомный аллокатор

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

Кто из нас не любит рефакторинг? Думаю, что неоднократно каждый из нас при рефакторинге старого кода открывал для себя что-то новое или вспоминал что-то важное, но хорошо забытое. Совсем недавно, несколько освежив свои знания работы std::shared_ptr при использовании пользовательского аллокатора, я решил что больше забывать их не стоит. Всё что удалось освежилось собрал в этой статье.

Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии9

Правила хорошего тона при написании плагина на jQuery

Время на прочтение7 мин
Количество просмотров32K
Правила хорошего тона при написании плагина на jQueryЯ написал уйму плагинов на jQuery. Если посмотреть код всех плагинов, сортируя их по дате публикации на github, то можно проследить эволюцию кода. Ни в одном из этих плагинов не соблюдены все рекомендации, которые будут описаны ниже. Все что будет описано, лишь мой личный опыт, накопленный от проекта к проекту.
Писать расширения на jQuery довольно просто, но если хотите узнать как написать их так, чтобы потом их было просто поддерживать и расширять, добро пожаловать под кат.
Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии36

Опасный target="_blank"

Время на прочтение2 мин
Количество просмотров201K
Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.

Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
Читать дальше →
Всего голосов 132: ↑126 и ↓6+120
Комментарии136

Как посчитать всё на свете одним SQL-запросом. Оконные функции PostgreSQL

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

Я с удивлением обнаружил, что многие разработчики, даже давно использующие postgresql, не понимают оконные функции, считая их какой-то особой магией для избранных. Ну или в лучшем случае «копипастят» со StackOverflow выражения типа «row_number() OVER ()», не вдаваясь в детали. А ведь оконные функции — полезнейший функционал PostgreSQL.
Попробую по-простому объяснить, как можно их использовать.


Читать дальше →
Всего голосов 75: ↑73 и ↓2+71
Комментарии54

Фурье-вычисления для сравнения изображений

Время на прочтение10 мин
Количество просмотров63K
Традиционная техника “начального уровня”, сравнения текущего изображения с эталоном основывается на рассмотрении изображений как двумерных функций яркости (дискретных двумерных матриц интенсивности). При этом измеряется либо расстояние между изображениями, либо мера их близости.

Как правило, для вычисления расстояний между изображениями используется формула, являющаяся суммой модулей или квадратов разностей интенсивности:
d(X,Y) = SUM ( X[i,j] — Y[i,j] )^2

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

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

Наличие большого числа библиотек, реализующих Фурье преобразований (во всевозможных вариантах быстрых версий), делает реализацию алгоритмов сравнения изображений не очень сложной задачей для программирования.
Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии47

Дайджест продуктового дизайна, июнь 2015

Время на прочтение18 мин
Количество просмотров12K
Уже пять лет я публикую регулярные обзоры свежих статей по теме интерфейсов, новых инструментов и коллекций паттернов, интересных кейсов и исторических рассказов. Из лент нескольких сотен тематических подписок отбирается примерно 5% стоящих публикаций, которыми интересно поделиться. Предыдущие материалы: апрель 2010-май 2015.

Дайджест продуктового дизайна, июнь 2015
Читать дальше →
Всего голосов 25: ↑23 и ↓2+21
Комментарии0

Захват пакетов в Linux на скорости десятки миллионов пакетов в секунду без использования сторонних библиотек

Время на прочтение8 мин
Количество просмотров87K
Моя статья расскажет Вам как принять 10 миллионов пакетов в секунду без использования таких библиотек как Netmap, PF_RING, DPDK и прочие. Делать мы это будем силами обычного Линукс ядра версии 3.16 и некоторого количества кода на С и С++.



Сначала я хотел бы поделиться парой слов о том, как работает pcap — общеизвестный способ захвата пакетов. Он используется в таких популярных утилитах как iftop, tcpdump, arpwatch. Кроме этого, он отличается очень высокой нагрузкой на процессор.

Итак, Вы открыли им интерфейс и ждете пакетов от него используя обычный подход — bind/recv. Ядро в свою очередь получает данные из сетевой карты и сохраняет в пространстве ядра, после этого оно обнаруживает, что пользователь хочет получить его в юзер спейсе и передает через аргумент команды recv, адрес буфера куда эти данные положить. Ядро покорно копирует данные (уже второй раз!). Выходит довольно сложно, но это не все проблемы pcap.

Кроме этого, вспомним, что recv — это системный вызов и вызываем мы его на каждый пакет приходящий на интерфейс, системные вызовы обычно очень быстры, но скорости современных 10GE интерфейсов (до 14.6 миллионов вызовов секунду) приводят к тому, что даже легкий вызов становится очень затратным для системы исключительно по причине частоты вызовов.

Также стоит отметить, что у нас на сервере обычно более 2х логических ядер. И данные могут прилететь на любое их них! А приложение, которое принимает данные силами pcap использует одно ядро. Вот тут у нас включаются блокировки на стороне ядра и кардинально замедляют процесс захвата — теперь мы занимаемся не только копированием памяти/обработкой пакетов, а ждем освобождения блокировок, занятых другими ядрами. Поверьте, на блокировки может зачастую уйти до 90% процессорных ресурсов всего сервера.

Хороший списочек проблем? Итак, мы их все геройски попробуем решить!
Читать дальше →
Всего голосов 113: ↑112 и ↓1+111
Комментарии77

О производительности Android-приложений

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

Введение


Первое, что я хочу сказать: статья не претендует на сильно глубокий уровень, скорее я хочу рассказать о том, что производительность это не только «быстрее с NDK на С++» и «экономьте память, а то сборка мусора будет часто запускаться», а это целый комплекс мер, потому что проблемы с производительностью возникают не когда одна функция медленно работает, а в комплексе.
Не было ли у вас ощущения, что приложение тормозит, а вы уже не знаете что делать — и память вроде не жрет, и профайлером уже посмотрели, а решения все нет. Если да, то эти заметки для вас.
Понятия и термины я переводить не буду, так как я думаю что почти все разработчики их не переводят.
Читать дальше →
Всего голосов 40: ↑37 и ↓3+34
Комментарии10
1
23 ...

Информация

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