Как стать автором
Обновить
45
0
Georgy Osipov @xjossy

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

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

Хакинг метрик качества видео или как с приходом ИИ все становится намного сложнее

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

Сейчас модно писать, что ML пришел туда и все стало отлично, DL пришел сюда и все стало замечательно. А к кому-то пришел сам AI, и там все стало просто сказочно! Возможна ли ситуация, когда к нам пришел волшебный ML/DL и все стало сложнее, тяжелее и на порядок запутаннее? Безусловно! Разберем такой пример.

Десятки лет при сравнении кодеков и алгоритмов обработки видео исследователи использовали старые добрые метрики PSNR и SSIM с довольно простыми формулами и были счастливы. Но прогресс невозможно остановить! На их место пришли новые метрики и… тут выяснилось, что они взламываются.

— Погодите, погодите… — скажет взволнованный читатель, — А как это вообще выглядит, взломать метрику??? 
— Добро пожаловать в 21 век, дорогой товарищ! Благодаря неудержимому прогрессу, сегодня можно хакнуть не только утюг, колонку, автопилот машины и домашний пылесос, но и метрику качества видео.

В этот момент собеседники обычно дружно спрашивают, кому это надо? О, поверьте, есть люди, которым не просто надо, а сильно надо! Представьте себе, что вы руководитель подразделения и у вас жесткие KPI (маркетинг требует обогнать конкурентов, от этого зависят нехилые годовые бонусы у всех сотрудников и особенно у вас). Чтобы улучшить видеокодек на условные 4%, требуются десятки человеко-месяцев труда весьма высокооплачиваемых инженеров, причем, бывает, получается, а бывает, не очень. И тут выясняется, что можно за пару недель работы одного зеленого стажера подшаманить метрику на 7%. Ваши действия? Вспоминается жизненный анекдот «тут-то мне карта и поперла»…

Далее мы популярно затронем взлом методом черного ящика, белого ящика, взлом недифференцируемых метрик (привет дистилляция!) и цирк с дифференцируемыми.

Впрочем обо всем по порядку…

Кому интересен цирк с конями взлом метрик — го под кат.

Читать далее
Всего голосов 65: ↑64 и ↓1+87
Комментарии38

ВКС-дайджест: уход Avaya, транскрипция с русского, бесплатная версия Teams для переговорных

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

Продолжаем выборочно публиковать новости из нашего телеграм-канала

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

Зачем айтишникам с опытом курсы по программированию

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


Есть мнение, что IT-курсы рассчитаны исключительно на новичков в сфере: пришёл, научился азам и в идеале сменил профессию. А вот ребятам с опытом в обучении делать нечего — они и так всё знают, а если и нет, то погуглят. Но так ли оно на самом деле?

Мы поговорили с выпускниками Яндекс.Практикума, которые пришли учиться, имея опыт в сфере IT. Они рассказали, в чём преимущество курсов перед самостоятельным поиском информации в интернете и чем они могут быть полезны даже тем, кто занимается разработкой не первый год.
Читать дальше →
Всего голосов 22: ↑11 и ↓110
Комментарии17

Открытый микрофон «Спроси меня про Go»: 21 января в 19.00

Время на прочтение1 мин
Количество просмотров1.6K
21 января Яндекс.Практикум проведёт вебинар в формате открытого микрофона «Спроси меня про Go». На вебинаре ответим на любой вопрос, связанный с Go: про язык и его возможности, про карьеру Go-разработчика, а главное, попробуем ответить на вопрос — стоит ли изучать Go сейчас и зачем он нужен именно вам.



Мероприятие будет полезно тем, кто что-то слышал про Go и хочет узнать больше, тем, кто хочет понять, применим ли Go для конкретных задач, а также тем, кто уже писал на Go и хочет обменяться идеями или опытом с другими гоферами.
Читать дальше →
Всего голосов 12: ↑7 и ↓5+4
Комментарии0

Первый truly stateless оптимальный алгоритм модел-чекера и его проверка на Coq

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

Надоели нестабильные баги в многопоточном коде? Попробуй воспользоваться модел-чекерами! Ведь больше не надо бояться неверифицированных модел-чекеров,  работающих либо за экспоненциальное время, либо неоптимально. Все это в прошлом: в Max Planck Institute for Software Systems разработали новый алгоритм под названием TruSt, который решает эти проблемы и, кроме того, верифицирован на Coq.

Меня зовут Владимир Гладштейн. Этим летом я проходил стажировку в MPI-SWS в группе, которая придумала алгоритм нового модел-чекера для поиска багов в многопоточных программах. Этот алгоритм является оптимальным и truly stateless (вследствие чего работает с линейными затратами по памяти). В этом посте я расскажу, как работают модел-чекеры, в каких случаях их можно использовать, и что за алгоритм придумали мои коллеги. А еще как я проверял доказательства его корректности на Coq.

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

Сервер видеоконференций TrueConf MCU: обзор возможностей

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

Всем привет! Меня зовут Александр Паринов, я эксперт по ВКС в компании TrueConf. Наверное, всем знаком этот кадр из фильма «Матрица: Перезагрузка». Если бы в комнате Архитектора проводили видеоконференции, то подобную раскладку было бы непросто сформировать без транскодирующего сервера (MCU). Мы сделали такой сервер. Если вам интересно, зачем мы его сделали и чем он отличается от других MCU – добро пожаловать под кат!

Поехали →
Всего голосов 16: ↑8 и ↓8+5
Комментарии7

Вычисляем на видеокартах. Технология OpenCL. Часть 1a. Как работает OpenCL

Время на прочтение7 мин
Количество просмотров15K
22 июня автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов провёл вебинар «Вычисляем на видеокартах. Технология OpenCL».



Мы подготовили для вас его текстовую версию, для удобства разбив её на смысловые блоки.

0. Зачем мы здесь собрались. Краткая история GPGPU.
1a. Как работает OpenCL.
1b. Пишем для OpenCL.
2. Алгоритмы в условиях массового параллелизма.
3. Сравнение технологий.

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

Есть мнение, что для написания эффективного кода для GPU программист обязан понимать архитектуру видеокарты. И это мнение не чьё-нибудь там, а NVIDIA (см. Лекции NVIDIA по GPGPU). Не будем спорить и разберём базовые принципы работы видеокарты.
Читать дальше →
Всего голосов 30: ↑30 и ↓0+30
Комментарии9

Вычисляем на видеокартах. Технология OpenCL. Часть 0. Краткая история GPGPU

Время на прочтение7 мин
Количество просмотров18K
22 июня автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов провёл вебинар «Вычисляем на видеокартах. Технология OpenCL».

Мы подготовили для вас его текстовую версию, для удобства разбив её на смысловые блоки.

  • 0 (вводная часть). Зачем мы здесь собрались. Краткая история GPGPU.
  • 1. Пишем для OpenCL.
  • 2. Алгоритмы в условиях массового параллелизма.
  • 3. Сравнение технологий.

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

Цикл будет полезен и тем, кто уже знаком с OpenCL: в нём мы поделимся некоторыми хаками и неочевидными наблюдениями из собственного опыта.

CPU — в помойку?


В статье будем рассматривать технологию GPGPU. Разберёмся, что значат все эти буквы. Начнем с последних трёх — GPU. Все знают аббревиатуру CPU — Central Processor Unit, или центральный процессор. А GPU — Graphic Processor Unit. Это графический процессор. Он предназначен для решения графических задач.

Но перед GPU есть ещё буквы GP. Они расшифровываются как General-Purpose. В аббревиатуре опускают словосочетание Computing on. Если собрать всё вместе, получится General-Purpose Computing on Graphic Processor Unit, что по-русски — вычисления общего назначения на графическом процессоре.



То есть процессор графический, но мы почему-то хотим вычислять на нём что-то, что вообще к графике никакого отношения не имеет. Например, прогноз погоды, майнинг биткоинов. Моя задача в ближайшее время — объяснить, зачем нужно на процессоре для графики обучать, например, нейросети.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Комментарии29

Как развитие алгоритмов сжатия остановилось 20 лет назад, или о новом конкурсе на 200 тысяч евро

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

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

Пост набрал 206 «плюсов», вышел на 2 место топа недели и вызвал оживленную дискуссию, в которой мне больше всего понравился комментарий: «Коммерческого интереса эффективность по сжатию алгоритмов сжатия без потерь сегодня не представляет, в силу отсутствия принципиально более эффективных алгоритмов. Деньги сегодня — в сжатии аудио-видео. И там и алгоритмы другие. Тема сжатия без потерь удобна именно лёгкостью верификации алгоритма, и не слегка устарела. Лет на 20.» 

Поскольку я сам уже 20 лет в области сжатия видео, с ее бурным развитием мне спорить сложно. А вот что сжатие без потерь развиваться перестало… Хотя логика тут понятна каждому. Я до сих пор пользуюсь ZIP, все мои друзья пользуются ZIP с 1989 года — значит, ничего нового не появляется. Так ведь? Похоже рассуждают сторонники плоской земли. ))) Я не видел, знакомые не видели, и даже некоторые авторитеты утверждают, значит, это так! 

О том, как Intel просили меня не прекращать читать курс по сжатию, ибо людей нет новые алгоритмы делать, я в прошлый раз писал. Но тут и Huawei в ту же дуду дует! Вместо того, чтобы раздать призы и должности победителям, а затем успокоиться, поскольку развитие давно встало, эти эксцентричные люди посчитали конкурс крайне успешным и запустили новый с призовым фондом 200 тысяч EUR.

Развивались ли алгоритмы сжатия без потерь в последние 20 лет? Чем закончился прошлый конкурс и на сколько опередили baseline? Сколько денег получили русские таланты, а сколько зарубежные? И есть ли вообще жизнь на Марсе в сжатии без потерь? 

Кому интересно — добро пожаловать под кат! 
Читать дальше →
Всего голосов 198: ↑197 и ↓1+255
Комментарии134

С++23 WIP: онлайн-встреча международного комитета по C++

Время на прочтение4 мин
Количество просмотров15K
Вчера прошла встреча рабочей группы ISO C++, добавляли фичи в C++23, исправляли C++20. Мы участвуем в работе комитета, поэтому сегодня поделюсь с вами свежими новостями о развитии стандарта.



Должен заметить, что международный комитет в онлайне работает совсем уж неторопливо… Настолько неторопливо, что на февральской встрече из полезного приняли только std::to_underlying() — функцию, преобразовывающую значение enum к нижележащему целочисленному типу:

enum class ABCD : std::uint64_t { A = 0x1012, B = 0x405324, };

constexpr std::uint64_t value = std::to_underlying(ABCD::A); 

В этот раз дело пошло веселее
Всего голосов 36: ↑35 и ↓1+53
Комментарии61

Стандарт C++20: обзор новых возможностей C++. Часть 6 «Другие фичи ядра и стандартной библиотеки. Заключение»

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


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся на почти 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это шестая, заключительная часть. Она рассказывает о других нововведениях ядра и стандартной библиотеки, добавленных Стандартом C++20.

Другие фичи ядра


Я рассказал о самых значительных нововведениях Стандарта, но это только капля в море C++20. Перейдём к менее глобальным, но не менее интересным вещам. Подробно останавливаться на каждой не буду, потому что цель обзора — рассказать пусть не всё, но обо всём.
Читать дальше →
Всего голосов 27: ↑26 и ↓1+39
Комментарии52

Стандарт C++20: обзор новых возможностей C++. Часть 5 «Корутины»

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


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор основных нововведений Стандарта, рассказывается, как их применять уже сейчас и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся на почти 2,5 часа. Для вашего удобства мы разбили текст на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это пятая часть, кратко рассказывающая о корутинах, или сопрограммах, в современном C++.

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



Но существуют решения, позволяющие усидеть на двух стульях.

Мотивация


Очень часто при программировании возникает задача вернуть из функции не один объект, а целый набор. Есть несколько вариантов решения:
Читать дальше →
Всего голосов 16: ↑15 и ↓1+21
Комментарии14

Ленивая реализация обхода дерева дочерних элементов класса QObject

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

Введение


В статье описана ленивая реализация обхода дерева на языке C++ с использованием сопрограмм и диапазонов на примере улучшения интерфейса работы с дочерними элементами класса QObject из фреймворка Qt. Подробно рассмотрено создание пользовательского представления для работы с дочерними элементами и приведены ленивая и классическая его реализации. В конце статьи есть ссылка на репозиторий с полным исходным кодом.

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

Стандарт C++20: обзор новых возможностей C++. Часть 4 «Ranges»

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


25 февраля автор курса «Разработчик C++» в Яндекс.Практикуме Георгий Осипов рассказал о новом этапе языка C++ — Стандарте C++20. В лекции сделан обзор всех основных нововведений Стандарта, рассказывается, как их применять уже сейчас, и чем они могут быть полезны.

При подготовке вебинара стояла цель сделать обзор всех ключевых возможностей C++20. Поэтому вебинар получился насыщенным. Он растянулся почти на 2,5 часа. Для вашего удобства текст мы разбили на шесть частей:

  1. Модули и краткая история C++.
  2. Операция «космический корабль».
  3. Концепты.
  4. Ranges.
  5. Корутины.
  6. Другие фичи ядра и стандартной библиотеки. Заключение.

Это четвёртая часть, рассказывающая о новом модуле стандартной библиотеки, — Ranges.
Читать дальше →
Всего голосов 16: ↑15 и ↓1+19
Комментарии63

Информация

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