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

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

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

Ищем Арнольда Шварценеггера среди мужчин, женщин и детей с помощью нейросети на С++

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

Привет, Хабр! Меня зовут Кирилл Колодяжный, я ведущий инженер-программист в YADRO. Помимо основных рабочих задач, включающих исследование проблем производительности СХД, я увлекаюсь машинным обучением. Участвовал в коммерческих проектах, связанных с техническим зрением, 3D-сканерами и обработкой фотографий. В задачах часто использовал С++, хотя машинное обучение традиционно ассоциируется с Python. Этот язык программирования буквально захватил сферу, его используют повсюду — от обучающих курсов до серьезных ML-проектов.

Однако Python — не единственный язык, на котором можно решать задачи машинного обучения. Так, альтернативой может стать С++. Если последний вам ближе, вам будет интересен и полезен этот текст.

Под катом разберемся:

как организовать работу с данными и загрузку обучающего датасета, 

как описать структуру нейронной сети, 

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

как организовать конвейер обучения сети, 

как использовать предобученные глубокие сети для решения задач. 

Читать далее
Всего голосов 20: ↑19 и ↓1+20
Комментарии15

Художественные приемы и профессиональные термины для создания изображений с ИИ. Всё, что нужно знать

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

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

Если вы хотите создавать качественные изображения, нужно понимать (или просто запомнить) некоторые профессиональные термины и приемы, используемые художниками и фотографами.

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

Читать далее
Всего голосов 25: ↑22 и ↓3+24
Комментарии10

10 терминов ИИ, которые все должны знать (по версии мелкомягких)

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

ИИ безусловно вокруг нас, это ключ к диджитализации мира, Microsoft собрал 10 ключевых терминов ИИ, предлагаю вашему вниманию дословный перевод и инфографику.

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

Сделай SAM: Segment Anything Model в задачах компьютерного зрения (часть 1)

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

Всем привет! В прошлой статье мы рассказывали, как можно ускорить процесс разметки данных с помощью интерактивной сегментации, и уже упоминали state-of-the-art-решение в этой области — модель Segment Anything. Сегодня остановимся на том, как можно улучшить качество и производительность SAM: научить модель генерировать более детализированные и гранулярные маски, а также ускорить её работу в 50 раз и адаптировать для мобильных устройств. А в следующей части на примерах покажем, что способности SAM не ограничиваются одной только сегментацией: модель может применяться для решения самых разных задач компьютерного зрения.

Что такое Segment Anything (SAM)? 

SAM (Segment Anything Model) — это сегментационная модель, которая была выпущена Meta AI*  весной 2023 года и быстро стала одной из самых популярных AI-моделей. SAM называют первой фундаментальной моделью в компьютерном зрении и сравнивают с ChatGPT в NLP из-за рекордно большого количества разнообразных данных, которые видела модель (SAM обучалась на датасете SA-1B, содержащем более одного миллиарда масок); а также из-за её способности к zero-shot transfer, то есть способности легко обобщаться для решения смежных задач.

Сделай SAM...
Всего голосов 22: ↑22 и ↓0+22
Комментарии3

Сверхдлинное преобразование Фурье на FPGA

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

В этой статье я хочу рассказать про реализацию алгоритма сверхдлинного быстрого преобразования Фурье на ПЛИС. Написать эту статью меня побудило желание поделиться личным практическим опытом, который не хотелось бы потерять, оставив информацию только у себя в голове. А поскольку я больше не занимаюсь задачами цифровой обработки сигналов на ПЛИС, то я просто обязан передать доступные мне знания.

В этой статье показана невозможность реализации «классической» схемы очень длинного БПФ даже на самых современных кристаллах ПЛИС и предложен алгоритм, позволяющий это сделать. Также пошагово рассмотрена основная идея алгоритма: от математической составляющей до создания законченного решения на базе ПЛИС с использованием внешней DDR-памяти. Статья затронет тонкости проектирования многоканальных систем обработки для подобного класса задач и, в частности, опишет мой практический опыт.


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

Об особенностях хранения 16 бит изображений в PNG формате

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

Вашему вниманию предлагается небольшая заметка, посвящённая особенностям хранения одноканальных (серых) 16 бит изображений (как беззнаковых, так и знаковых) в PNG формате. В некоторых случаях интенсивности пикселей, получаемые из такого файла могут не соответствовать изначальным интенсивностям, под катом мы заглянем во внутренности PNG файла и разберёмся, почему так происходит.

Читать далее
Всего голосов 69: ↑69 и ↓0+69
Комментарии4

Многообразие функциональных обёрток

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

В далёком 2002-ом комитет по стандартизации C++ посетил пропозал, предлагавший ввести шаблонный класс, некий обобщенный «указатель на функцию», способный работать как с простыми указателями на функции, указателями на методы классов, так и с произвольными функциональными объектами [1].

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

Кто же знал, что его окажется недостаточно, а один из его юзкейсов — вовсе не его юзкейс?

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

Маршрутизация подсети IPv4 через IPIP

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

Туннель IPIP, как можно понять из его названия — это туннель, работающий в режиме «IP over IP» (RFC 2003).

Такие туннели обычно используются для соединения двух внутренних IPv4-подсетей через общедоступную IPv4-сеть (интернет). Использование IPIP создаёт минимальную дополнительную нагрузку на систему, но по такому туннелю можно выполнять только однонаправленную передачу данных (unicast). То есть, построив подобный туннель, нельзя будет использовать его для групповой передачи данных (multicast).

IPIP-туннели поддерживают режимы «IP over IP» и «MPLS over IP».

И сегодня в данный статье напишу, как можно маршрутизировать подсеть IPv4, например, на сервер для VDS серверов с другого сервера.

Подробнее
Всего голосов 4: ↑2 и ↓20
Комментарии7

Бермудский треугольник: откуда банк берет данные, которые ему никто не давал?

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

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

Очередная прекрасная история приключилась с нашим коллегой. В один непрекрасный день он обнаружил, что банк «Тинькофф» ему ежемесячно напоминает о выставленном счёте за газ — прямо с конкретными цифрами, соответствующими свежей квитанции.

Надо ли говорить, что подобного рода подписки сознательно никто не оформлял?

Ситуация оказалась нередкой: знакомые показали, что им стали сваливаться в личный кабинет банка счета из налоговой, штрафы ГИБДД и прочее. А банк заботливо складывал все счета в специальную новую папку «Счета на оплату»­.

Читать далее
Всего голосов 147: ↑139 и ↓8+170
Комментарии229

Графические оболочки FFmpeg

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


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

Но есть люди, которые всегда предпочтут GUI. Они считают графический интерфейс «наиболее эффективным и удобным способом работы на десктопе». На самом деле они во многом правы, в том числе для специфических задач видеообработки важно сразу видеть результат.

FFmpeg — изначально консольная утилита. Но её популярность крайне высока. Поэтому появляются всё новые варианты графических оболочек для FFmpeg, чтобы доступ к инструменту получили абсолютно все пользователи.
Читать дальше →
Всего голосов 107: ↑107 и ↓0+107
Комментарии76

Случайное открытие, которое может стать будущим энергетики

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

Энергия из воздуха — звучит как что-то из научной фантастики. Одно из сумасшедших изобретений Николы Теслы, о котором он успел рассказать перед смертью. Но это наша реальность в 2023 году. Открытие, сделанное учеными из Массачусетского университета в Амхерсте, позволяет осуществить мечту Теслы. Как и многие ключевые изобретения, сделанные в истории, это открытие произошло совершенно случайно. Как синтетические красители, пакетики для чая, пенициллин, сахарин или рентген.

По принципу это та же гидроэлектроэнергия. Только теперь вместо огромной дамбы её способен вырабатывать крошечный девайс размерами меньше смартфона. Ученые впервые продемонстрировали потенциал технологии в мае этого года, а теперь её уже пытаются коммерциализировать. Стартап CascataChuva из Португалии, созданный участниками лиссабонского научного проекта Cather, уже пытается продавать эту энергию из воздуха.

Итак, что это такое и как это работает? И почему раньше никто не пытался поискать «бесплатную» энергию в этом направлении?

Читать далее
Всего голосов 31: ↑26 и ↓5+36
Комментарии69

Из фото в 3D, ч.2: калибровка камеры

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

Фото до (слева) и после (справа) калибровки камеры

В первой части статьи мы немного поупражнялись на яблоках, чтобы понять, как 3D-объекты проецируются на 2D-плоскость фотографии. Заодно мы описали математическую модель камеры и ее параметры.

Знаешь параметры — живешь в Сочи можешь восстановить 3D-сцену или ее характеристики: высоту здания, расстояние до пешехода, загруженность самосвала. Словом, сплошная польза для целого ряда отраслей. 

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

О том, как восстанавливать параметры камеры (калибровать ее) и нивелировать искажения (дисторсию), читайте в этой публикации.

Также из нее вы узнаете:

как выглядит математическая модель калибровки и дисторсии;

как собрать датасет для калибровки;

какие есть методы калибровки;

детали одного из этих методов.

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

Трассировка ядра с ftrace

Время на прочтение12 мин
Количество просмотров23K
PR-1801-2-2

Проблемы трассировки и профилирования ядра мы уже затрагивали в предыдущих публикациях. Для анализа событий на уровне ядра существует много специализированных инструментов: SystemTap, Ktap, Sysdig, LTTNG и другие. Об этих инструментах опубликовано много подробных статей и обучающих материалов.

Гораздо меньше информации можно найти о «родных» механизмах Linux, с помощью которых можно отслеживать системные события, получать и анализировать отладочную информацию. Эту тему мы хотели бы рассмотреть в сегодняшней статье. Особое внимание мы уделим ftrace — первому и пока что единственному инструменту трассировки, добавленному в ядро. Начнём с определения основных понятий.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии4

QCustomPlot + FetchContent

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

Изыскание на тему безболезненной интеграции библиотеки QCustomPlot в cmake без похода в браузер за исходниками.

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

Новая жизнь старого GPS-приёмника

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

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

Читать далее
Всего голосов 69: ↑68 и ↓1+81
Комментарии121

Безопасное управление двигателем постоянного тока

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

Речь о том, как управлять включением и скоростью двигателя постоянного тока на примере сервопривода MC50 так, чтобы сервопривод не сгорел. Несмотря на то, что MC50 был разработан для управления BLDC моторами, он также хорошо подходит и для управления коллекторными двигателями постоянного тока мощностью до 600 Вт. Правда для этого пришлось сделать некоторые незначительные модификации.

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

Топ-10 артефактов Linux для расследования инцидентов

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

Лада Антипова из команды киберкриминалистов Angara SOC подготовила новый материал о полезных инструментах при расследовании хакерских атак. Материал с удовольствием опубликовали коллеги из Positive Technologies на своих ресурсах, поэтому мы можем сделать его доступным и для нашей аудитории.

Несмотря на то, что Windows остается самой распространенной ОС, о чем знают в том числе атакующие, оставлять без внимания другие системы нельзя, а уж тем более Linux (ладно-ладно, GNU/Linux). Сегодня российские компании все чаще пользуются Linux из соображений импортозамещения, но эта ОС по-прежнему более распространена именно как серверное решение.

А теперь представьте ситуацию: вы работаете на Linux-машине, и вдруг что-то явно идет не так. Уровень нагрузки на процессор резко вырос, начались обращения на неизвестные ресурсы или пользователь www-data неожиданно оказался в группе wheel. Что делать?  

Составляем список команд

У вас есть два пути: либо работать с живой системой, либо делать так называемый пост-анализ. Начнем с первого. Я приведу свой список избранных и наиболее часто используемых команд. Универсального порядка здесь нет: вы, как ИБ-специалист, расставляете приоритеты самостоятельно.

Итак, команды:

Помимо базовых команд на просмотр текстовых файлов (а все мы знаем, что в Linux, по сути, все есть файл) типа cat ~/.bash_history, можно использовать более продвинутые варианты:

tail -n 15 /var/log/<file> по умолчанию выводит 10 строк, но при помощи параметра n их количество можно изменять.

tail -f -s 5 /var/log/<file> используется для отслеживания появления новых строк. Это аналог команды watch для тех же журналов. Может быть полезна для отслеживания определенных событий в реальном времени.

Читать далее
Всего голосов 14: ↑11 и ↓3+10
Комментарии18

IMSProg — программатор для CH341a в Linux

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

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

Читать далее
Всего голосов 67: ↑67 и ↓0+67
Комментарии43

Подключаем дисплей к любому одноплатнику с SPI: большой мануал о поиске экранчиков для ваших проектов

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

Сейчас появилось достаточно много различных дешевых одноплатников с очень достойными характеристиками, которые вполне можно назвать экономичными и портативными. Однако очень часто встает вопрос вывода изображения на дисплей: к сожалению, в подобные устройства обычно ставят урезанные версии чипсетов без видеовыхода на обычные матрицы. Конечно в них практически всегда есть HDMI, но это совершенно не выход для портативного устройства: прожорливый чип скалера будет очень негативно влиять на время работы от АКБ. Да и сами подобные дисплеи очень дорогие: почти 2.000 рублей за матрицу со скалером — это действительно бьет по карману. Сегодня я расскажу Вам о существующих протоколах для дисплеев, подскажу, как применить экранчики от старых навигаторов/мобильников и мы подключим с вами SPI-дисплей к одноплатнику без видеовыхода. Причем мы реализуем как просто библиотеку, которая позволяет выводить произвольную графику из ваших программ, так
и службу, которая будет напрямую копировать данные из фреймбуфера и преобразовывать в формат для нашего дисплея. Интересно? Тогда жду вас в статье!
Читать дальше →
Всего голосов 69: ↑69 и ↓0+69
Комментарии36

Исходники закрыты, но мы не сдадимся: Пишем полностью нативное GUI-приложение под No-Name смартфон без Android

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

Для многих разработчиков приложений далеко не секрет, что экосистема Android не предполагает написание полностью нативных приложений: в этой платформе очень многое завязано на Java и без ART можно запустить только простые службы без какого-либо интерфейса. Однако, есть один способ писать практически под «голый» Linux, не перекомпилируя ядро и при этом пользоваться самыми интересными фишками устройства без оверхеда в виде тяжелого Android: ускорение 3D-графики (OpenGLES), микшер звука, ввод с различных устройств, OTG, Wi-Fi и если очень постараться — даже 3G. Это открывает множество разных интересных применений старым устройствам: «железо» смартфонов зачастую гораздо мощнее современных недорогих одноплатников. Сегодня я покажу вам, как написать и запустить программу, которая полностью написанное на C без Android, на No-Name Android-смартфоне практически без модификаций. Интересно? Жду вас в статье!
Читать дальше →
Всего голосов 81: ↑80 и ↓1+91
Комментарии38
1
23 ...

Информация

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