Найти в Дзене
Поиск часто встречающихся числовых последовательностей
Мы продолжаем тему, начатую в предыдущей статье, там же вы найдете список всех статей по numpy-программированию. Здесь же мы будем искать наиболее часто встречающиеся последовательности, для этого нам потребуется массив последовательностей m, а также векторы distance, a и b, полученные в указанной статье. Если забыли, как мы их вывели, то не стесняйтесь заглянуть туда, чтобы освежить память. Первое, что мы можем сделать, уполовинить вектор расстояний, выбрав половину наименьших расстояний: Напомню,...
2 года назад
Поиск повторяющихся числовых последовательностей с помощью numpy
В этот раз в серии статей по numpy-программированию мы будем решать практическую задачу. Предыдущие статьи нашего сериала: В этой статье мы займемся выявлением паттернов, в нашем случае это будет поиск повторяющихся числовых последовательностей. Сложность заключается в том, что числовые значения могут не совпадать, но быть близкими. Насколько близкими они должны быть? Для объяснения решения этой задачи, мы возьмем последовательность из двух чисел. На самом деле, два числа это слишком мало, так как повторение двухчисловой последовательности может быть случайностью, но нам нужно понять суть...
2 года назад
Numpy: вычисление разницы каждого элемента вектора с каждым
Продолжаем серию статей по numpy-программированию. Для удобства читателей собрал список моих статей по этой теме: Если бы нам нужна была разница двух векторов, то мы могли бы воспользоваться функцией diff или просто отнять один вектор от другого. Та же функция diff нам поможет получить разницу между рядом стоящими элементами нашего вектора. Нам же нужна разница каждого элемента с каждым, а не рядом стоящих. Для лучшего понимания приведем пример, для чего возьмем следующий вектор v: [34, 77, 67, 61, 88, 36, 7, 41, 29, 38]...
2 года назад
Знакомство с pytorch не для самых маленьких
По вполне объяснимой причине входной порог этого фреймворка очень высок. На читателя сразу сваливаются математические понятия тензоров, графов решений, градиентов и т.п., что для математически подготовленного человека терпимо, а вот все остальные вынуждены бросать изучение torch просто из-за непонимания про что тут пишут. При этом обучение не менее сложного tensorflow вполне обходится без этих сложных понятий, по крайней мере, на этапе обучения. Почему бы не попробовать пойти этой же дорогой в изучении...
2 года назад
Обнаружение объектов на изображении с помощью компьютерного зрения
Для многих людей обнаружение объектов на изображении кажется каким-то колдовством, однако существует огромное количество способов распознать на изображении определенные объекты. Одно только перечисление займет всю статью, а уж их сравнение вполне тянет на серьезное исследование. Для начала поставим задачу. Нужно посчитать количество людей, имеющихся на изображении. Делать это будем в бесплатном colab. Считать людей будем на публичном наборе изображений с людьми: https://www.cis.upenn.edu/~jshi/ped_html/PennFudanPed...
2 года назад
Отличие матричного программирования от numpy-программирования
Мы с вами уже давно обсуждаем матричное или numpy-программирование. Для удобства привожу список статей: В начале прошлой статьи был затронут вопрос, который сегодня мы разберем. Для этого возьмем последнюю задачу из предыдущей статьи и попробуем решить её без библиотеки numpy. Если в предыдущей статье мы искали все индексы, то сейчас будем искать первый индекс прямоугольника, координаты которого близки не более чем на 5%. Всю задачу можно решить в одну строку, но так будет хуже читаться, да и статья окажется короткой...
2 года назад
Numpy для работы с координатами прямоугольников
Продолжаем наш цикл статей про матричное программирование: первая, вторая, третья, четвертая и пятая. Для начала ответим на вопрос: является ли матричное программирование синонимом numpy-программированию? Если вы используете библиотеку numpy, то ответ будет положительным. Матричное программирование является более общим понятием, в которое входит и numpy-программирование. В задачах компьютерного зрения достаточно часто приходится иметь дело с прямоугольниками, стороны которых параллельны осям координат...
2 года назад
Поиск локального максимума с помощью numpy-программирования
Данная статья продолжает цикл статей про матричное программирование: первая, вторая, третья и четвертая. Функция поиска локального максимума имеется в библиотеке sklearn, но это мы уже обсуждали в предыдущих статьях. Предполагаю, что большинство читателей уже забыли раздел математики про дифференциалы и интегралы, где было такое определение - локальный максимум (экстремум), поэтому попробуем логическим способом прийти к этому определению. Представим, что значения в ряду увеличиваются, и в какой-то...
528 читали · 2 года назад
Подсчет людей с помощью компьютерного зрения
Тема подсчета объектов поднималась не раз, например, здесь, здесь или здесь. Казалось бы, задача пусть сложная, но решаемая. Как всегда, "дьявол кроется в деталях". В нашем случае детали были таковы, что решить в лоб задачу не получалось. Во-первых, источником изображений (видео) были охранные видеокамеры на КПП, которые настроены на видеофиксацию входа на стройку. Во-вторых, нужно было определять одеты ли люди в спецодежду (строительные каски и жилеты). "Вторая дьявольская деталь" и определила необходимость обучения собственной модели, вместо использования предобученной...
111 читали · 2 года назад
Перебор значений без циклов
Мы продолжаем цикл лекций про numpy-программирование: первая статья, вторая и третья. Сегодня мы попробуем сгенерировать все варианты из двух списков. Конечно же есть удобная библиотека itertools, которая позволит получить нужный результат, но наша задача - написать алгоритм в новом стиле матричного программирования. Стало уже доброй традицией формулировать задачу на конкретном примере. Не будем нарушать традиций. Пусть у нас будет два вектора по 5 элементов каждый: [1, 2, 3, 4, 5], [ 6, 7, 8, 9,...
2 года назад
Создаем скользящее окно без циклов
Эта статья продолжает цикл примеров numpy-программирования: первая статья и вторая. Рекомендуем вам ознакомится с этими статьями, надеюсь в них вы найдете ответы на многие вопросы. Сегодня же мы решим задачу скользящего окна. Что такое скользящее окно? Очень часто приходится использовать статистические функции, например, скользящее среднее, не для всего ряда, а за определенный период, который называется размером окна, смещая окно на шаг смещения (обычно на единицу), мы можем получить желаемые данные по всему ряду...
324 читали · 2 года назад
Продолжаем numpy-программирование для продвинутых
В предыдущей статье мы начали цикл статей про матричное программирование. Многие ответы вы сможете найти там. А сегодня решим задачу масштабирование набора данных. Если вы не знаете, что такое масштабирование, для чего оно нужно, то вам сюда. Нам же надо знать, что на выходе мы должны получить такой же набор данных, только эти данные не должны превышать 1, и не быть меньше 0. Другими словами нам надо выполнить те же действия, что и функция MinMaxScaler библиотеки sklearn (раздел preprocessing)....
2 года назад