Pull to refresh
25
0
Send message

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

Level of difficultyMedium
Reading time24 min
Views7.8K

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

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

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

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

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

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

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

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

Читать далее
Total votes 22: ↑21 and ↓1+20
Comments15

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

Reading time7 min
Views6.2K

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

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

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

Читать далее
Total votes 30: ↑27 and ↓3+24
Comments10

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

Level of difficultyEasy
Reading time5 min
Views14K

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

Читать далее
Total votes 23: ↑16 and ↓7+9
Comments1

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

Level of difficultyMedium
Reading time7 min
Views5.9K

Всем привет! В прошлой статье мы рассказывали, как можно ускорить процесс разметки данных с помощью интерактивной сегментации, и уже упоминали 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...
Total votes 22: ↑22 and ↓0+22
Comments3

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

Reading time13 min
Views18K
Всем привет!

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

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


Читать дальше →
Total votes 61: ↑61 and ↓0+61
Comments23

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

Level of difficultyEasy
Reading time11 min
Views4.3K

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

Читать далее
Total votes 69: ↑69 and ↓0+69
Comments4

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

Level of difficultyMedium
Reading time5 min
Views3.1K

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

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

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

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments6

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

Level of difficultyMedium
Reading time2 min
Views5K

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

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

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

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

Подробнее
Total votes 4: ↑2 and ↓20
Comments7

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

Level of difficultyEasy
Reading time6 min
Views38K

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

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

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

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

Читать далее
Total votes 186: ↑178 and ↓8+170
Comments229

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

Level of difficultyEasy
Reading time6 min
Views27K


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

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

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

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

Level of difficultyMedium
Reading time10 min
Views19K

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

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

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

Читать далее
Total votes 46: ↑41 and ↓5+36
Comments69

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

Level of difficultyHard
Reading time13 min
Views6.4K

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

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

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

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

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

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

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

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

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

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

Читать далее
Total votes 14: ↑14 and ↓0+14
Comments0

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

Reading time12 min
Views22K
PR-1801-2-2

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

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

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

Level of difficultyMedium
Reading time18 min
Views24K

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

Читать далее
Total votes 83: ↑82 and ↓1+81
Comments106

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

Level of difficultyMedium
Reading time7 min
Views10K

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

Читать далее
Total votes 22: ↑21 and ↓1+20
Comments23

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

Reading time14 min
Views12K

Лада Антипова из команды киберкриминалистов 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 для тех же журналов. Может быть полезна для отслеживания определенных событий в реальном времени.

Читать далее
Total votes 16: ↑13 and ↓3+10
Comments18

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

Level of difficultyMedium
Reading time4 min
Views13K

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

Читать далее
Total votes 67: ↑67 and ↓0+67
Comments43

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

Level of difficultyMedium
Reading time14 min
Views24K
image

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

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

Level of difficultyMedium
Reading time10 min
Views19K
image

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity