Как стать автором
Обновить
3
0.3

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

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

Гайд по настройке Wt::Dbo и Visual Studio С++ для работы на Windows

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров1K

Я использую PostgreSQL 12-й версии! На остальных не проверял! Соответственно, он у вас должен быть скачан и настроен для использования.

Читать далее

Qt-шные прокси-модели и их друзья

Уровень сложностиСложный
Время на прочтение4 мин
Количество просмотров1.8K

Разрабатывая приложения на Qt или PyQt/PySide2 вы рано или поздно столкнетесь с необходимостью создания собственной реализации QAbstractItemModel и/или QAbstractProxyModel. Я хочу рассказать про одну конкретную проблему, с которой я столкнулся, разрабатывая прокси-модель с возможностью группировки объектов дерева.

Читать далее

Мой первый и неудачный опыт поиска торговой стратегии для Московской биржи

Уровень сложностиСложный
Время на прочтение17 мин
Количество просмотров6.2K

Когда закончил писать механизм своего торгового робота обнаружил, что самое главное всё таки не сам механизм, а стратегия, по которой этот механизм будет работать.

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

Первый и самый важный вопрос - при помощи чего проводить тесты торговой стратегии на исторических данных? В какой программе или при помощи какой библиотеки создавать стратегию и потом прогонять её на истории?

Раз мой торговый робот создан в среде исполнения JavaScript Node.js, то и тесты в идеале должны проводится на чём-то схожем. Но забегая немного вперёд скажу что получилось по другому - Python пришёл на помощь.

Разбираюсь и ищу 📈

Компьютерное зрение на С++: подключаем ML-библиотеки и обрабатываем результаты поиска объектов

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

Привет, Хабр! Меня зовут Кирилл Колодяжный, я разрабатываю системы хранения данных в YADRO и изучаю нестандартные подходы к машинному обучению: создаю ML-проекты на С++. 

Это вторая часть цикла о разработке приложения для обнаружения предметов на С++. В прошлом материале мы выяснили, как создать проект в IDE Android Studio, реализовать сессию непрерывного захвата и преобразовать изображение в матрицу OpenCV. Ссылку вы найдете в конце статьи.

В этой статье продолжим реализацию проекта и обсудим следующие шаги:

• Как подключить к проекту библиотеки машинного обучения PyTorch и NCNN.

• Как получить модели YOLOv5 и YOLOv4 для использования на мобильном устройстве.

• Как реализовать инференс моделей для обнаружения объектов.

• Как обработать результаты работы моделей YOLO, реализовав алгоритмы Non-Maximum-Suppression и Intersection-Over-Union.

В конце сравним производительность PyTorch и NCNN и решим, какой фреймворк подойдет для задачи лучше.

Читать далее

Записываем PNG без мам, пап и внешних библиотек

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

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

Формат изображения PNG известен с 1996 года, а на Хабре опубликовано несколько статей о декодировании этого формата. И ни одной — о кодировании. Я расскажу, как сохранить PNG своими руками на случай, если вам тоже придется это делать. Например, в академических целях.

Под катом вас ждет подробный разбор каждого байта на множестве иллюстраций.
Читать дальше →

Алгоритмы быстрого умножения чисел: от столбика до Шенхаге-Штрассена

Уровень сложностиСредний
Время на прочтение26 мин
Количество просмотров49K

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

И уж конечно, никогда при написании a * b мы не задумываемся о том, как реализовано умножение чисел a и b в нашем языке. Какие вообще есть алгоритмы умножения? Это какая-то нетривиальная задача?

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

Скорее к формулам!

Сверточные нейронные сети. Создание нейросети для распознавания цифр на языке программирования Python

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров9.4K

В современном мире искусственный интеллект и машинное обучение стремительно развиваются, меняя нашу повседневную жизнь и открывая новые горизонты в различных областях. Одной из ключевых технологий, лежащих в основе этих достижений, являются сверточные нейронные сети (Convolutional Neural Networks, CNN). Эти мощные алгоритмы позволяют эффективно обрабатывать и анализировать изображения, что находит применение в самых разных сферах: от медицинской диагностики до систем безопасности.

CNN подходит для классификации изображений, что делает её отличным выбором для задачи распознавания рукописных цифр.

Читать далее

Глобально оптимальный, восьмой и наиболее быстрый вид интерпретаторов байткода

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров12K

Совершать невозможное и раздавать пинки здравому смыслу — в этом и состоит жизнь членов Гуррен-Дана! (C) Камина

Эта статья вступает в техническую полемику со статьей 2015 года за авторством Atakua, подходы из которой я и атакую. Atakua исследует 7 видов интерпретаторов байткода, но делает это без уважения - быстрейшей оказывается двоичная трансляция, которая, по сути, уже не интерпретатор байткода, а форма Ahead-Of-Time компилятора. Эта двоичная трансляция транслирует байткод в машинный код, представляющий собой цепочку вызовов скомпилированных сервисных процедур. Тех самых, что в интерпретаторе байткода отвечают за выполнение каждого опкода.

Но Atakua не выжал из интерпретаторов байткода всю скорость которая возможна. Так что эта статья - туториал: как написать интерпретатор байткода, который может обгонять JIT/AOT-компиляцию по скорости. Интересно? Читайте дальше!

Бенчмарк прилагается. Будет немного хардкора и ни одной сгенерированной нейросетью картинки!

Читать далее

Краткий гайд по квантованию нейросетей

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров5.9K

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

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

Рассказываем о видах квантования и приводим примеры в этой статье

Читать далее

Простая нейронная сеть на C++

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров25K

Всем привет!

При помощи нейронной сети решил проблему классификации фигур на изображениях размера 7 на 7 пикселей. Задача решалась в рамках студенческой лабораторной работы. Статья приводится в качестве руководства для решения подобных академических задач.

Читать далее

LLMops: что есть, кроме ChatGPT и как это развернуть

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров8.6K

Привет, Хабр! Меня зовут Ирина Николаева и я — руководитель R’n’D отдела машинного обучения в компании Raft Digital Solution. Я внедряла различные ML-модели: от анализа временных рядов и Computer Vision до высоконагруженных дата-инженерных сервисов. Эта статья написана по мотивам моего доклада на Highload ++ 2023.
В статье вас ждёт: обзор LLM-моделей, техники работы с ними через призму MLOps, разбор лицензий и требований к железу. А так же трюки с квантизацией и файн-тюнингом «на сладкое». Главный дисклеймер статьи в том, что данные лидербордов и технических требований актуальны на момент выступления на Highload, то есть ноябрь 2023, но не всё из них актуально до сих пор. Но если бы я обновила всю статью, была ли бы это та же самая статья — вопрос риторический, поэтому было принято решение оставить всё как есть.

Читать далее

Детекция машин на мобилке в 2023. С какими проблемами мы столкнулись и как решали

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

Как мы распознавали машины с камеры мобильного телефона с помощью TensorFlow-lite, C++, Qt и что из этого вышло.

Читать далее

Перенос нейронной сети из PyTorch на Google Coral

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

Всем привет! Меня зовут Антон Расковалов и мы с командой  отдела перспективных исследований «Криптонит» решили проверить, можно ли использовать Google Coral в решении наших задач. Приобретённым опытом делюсь в статье ниже.

Санкции вынуждают пересматривать подходы к организации ИТ-инфраструктуры, в том числе — искать альтернативу облачным ИИ-платформам. Одним из вариантов является использование специализированных ускорителей с нейропроцессорами, которые физически находятся на стороне клиента. Даже на фоне санкционного давления их можно купить на AliExpress и оплатить банковской картой, выпущенной на территории России.

Данная статья посвящена переносу нейронных сетей написанных на одном из самых популярных фрэймворков, PyTorch, на Google.Coral, один из самых "производительных ускорителей"

Читать далее

Real-time-распознавание лиц: методы обучения быстрых и точных моделей для работы на мобильных девайсах

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

Привет, Хабр! Меня зовут Вадим Селютин, я старший исследователь в компании VisionLabs. Наши решения по распознаванию лиц можно встретить в офисных центрах, московском метро и кассах самообслуживания супермаркетов. Во всех этих кейсах мы используем нейросети, которые адаптируем специально для мобильных устройств.

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

Читать далее

Используем OpenCL в Python

Время на прочтение6 мин
Количество просмотров33K
В последнее время параллельные вычисления прочно входят в жизнь, в частности, с использованием GPU.

Здесь было много статей на эту тему, поэтому ограничусь лишь поверхностным описанием технологии. GPGPU — использование графических процессоров для задач общего назначения, т.е. не связанных напрямую с рендерингом. Пример — библиотека Nvidia PhysX для расчёта физики в некоторых современных играх. Эта технология выгодна тем, что GPU хороши на параллельном выполнении с множеством потоков. Правда, потоков должно быть много, иначе производительность сильно упадет. Ещё из-за особенностей работы с памятью приходится несколько хитрить с передачей данных из оперативной памяти в видеопамять. Известные реализации: CUDA (Nvidia, только для видеокарт), OpenCL (Khronos Group, для гетерогенных систем) и AMD FireStream. Здесь будет обсуждаться только OpenCL.

Итак, приступим к практике. В качестве языка основной программы выберем Python. Он, конечно, не очень быстр сам по себе, зато отлично работает как «клей» — во многих применениях основной расчёт идёт в OpenCL, а код на Python только «подносит патроны». Существует отличная библиотека PyOpenCL, которой и будем пользоваться.

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

Краткая шпаргалка по tmux (менеджеру терминалов)

Время на прочтение1 мин
Количество просмотров436K
tmux — это менеджер терминалов, к которому удобно подключаться и отключаться, не теряя при этом процессы и историю. Как screen, только лучше (в первую очередь потому, что использует модель клиент—сервер).

image

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

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

Как подружить PyTorch и видеокарты AMD с помощью pytorch_dlprim

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров7K


Когда начинаешь изучать или использовать машинное обучение, то думаешь, как приспособить те устройства, которые есть в наличии, чтобы снизить свои траты на вход. И, в частности, обладатели довольно мощных старых карт AMD (типа AMD Fury), на которых легко идут довольно тяжёлые игры типа Cyberpunk 2077 или Atomic Heart, сталкиваются с тем, что эти GPU бесполезны для PyTorch и других фреймворков машинного обучения. Да и самые современные карты AMD 7900-й серии работают с PyTorch только из под Linux. Также есть редкие карты других брендов, типа Intel Arc или китайские, которые хотелось бы использовать для машинного обучения.

Итак, в этой статье я приведу подход, который в некоторых случаях может помочь. Он сыроват, но других работающих вариантов под PyTorch я не нашёл. Итак, речь пойдёт о проекте израильского разработчика Артёма Бейлиса (Тонких) pytorch_dlprim.
Как сумрачный гений плюсов подключает все железки к DL

You Only Look Once… But it Sees Everything! Обзор YOLO детекторов. Часть 1

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров5.3K

Детекция объектов в реальном времени является важнейшей задачей и охватывает большое количество областей, таких как беспилотные транспортные средства, робототехника, видеонаблюдение, дополненная реальность и многие другие. Сейчас такая задача решается с помощью двух типов алгоритмов: one-step алгоритм детекции, например You Only Look Once (YOLO), и two-steps алгоритм, например Faster Region-Based Convolutional Neural Network (Faster R-CNN). Двухстадийный подход имеет ряд недостатков: долгое обучение и инференс, плохое качество детекции маленьких объектов, неустойчивость к различным размерам входных данных. Одностадийный алгоритм детекции подразумевает одновременное выполнение детекции и классификации, что обеспечивает end-to-end обучение с сохранением высоких показателей как точности, так и скорости.

Читать далее

Детекция объектов. YOLO. Часть 2

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров12K

Кто такой YOLO? 🤔

Когда пытаешься разобраться в работе YOLO по статьям в интернете, постоянно натыкаешься на примерно такое объяснение: «Алгоритм делит изображение сеткой SxS, где каждому элементу этой сетки соответствует N ббоксов с координатами, предсказаниями классов и тд...». Но лично мне становилось только непонятнее от такого высокоуровнего описания.. Ведь в исследованиях часто всё происходит примерно так: перебирают гипотезы, пока не получат приемлемый результат, а потом уже придумывают красивое описание. Поэтому для ясности хочется в данной статье рассказать, как вообще приходили к идеям, которые ложились в основу YOLOv1 и последующих версий.

Читать далее

Yolo на мобильном без постобработки

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

Столкнулся я как-то с проблемой распознавания упорядоченных последовательностей объектов на мобильных устройствах. Идея использовать YOLO пришла довольно быстро, так как модель хорошо подходила по многим параметрам. Я экспортировал обученную модель и с грустью осознал, что она выдает не прошедшие фильтрацию боксы, классы и скоры, а нечто, не поддающееся первичному визуальному анализу.

Читать далее

Информация

В рейтинге
3 796-й
Откуда
Кызыл, Тува (Тувинская Респ.), Россия
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Разработчик приложений
Старший
От 150 000 ₽
Python
C++
Linux
Docker