Обновить
128K+

Обработка изображений *

Работаем с фото и видео

60,96
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Как побороть распространенные артефакты графики

Время на прочтение4 мин
Охват и читатели27K
Художники нарисовали яркую графику, программисты встроили ее в игру, аниматоры добавили движения — казалось бы, все, готово. Но нет, менеджерам не нравится:

«Надо убрать серые пятна и белые линии. Тут пульсирующая кнопка дергается, там прогресс-бар лесенкой идет».

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



Небольшой опрос для тех, кто уже знает откуда берутся артефакты. Что делать в такой ситуации?

  1. Нужна мощная видеокарта и свежие драйверы;
  2. Стоит сделать скачиваемые наборы графики для всех возможных разрешений экрана;
  3. У квадратных текстур с размерами степени двойки нет таких проблем;
  4. Это все из-за сжатия графики (PVRTC/DXT5/ETC1/...);
  5. В графическом редакторе придется слегка размазать края;
  6. Так и должно было получиться, ведь мы не подготовили графические данные;
  7. Поможет только антиалиасинг;
  8. Нужны текстуры и таргеты в режиме premultiplied alpha.

Какой вариант ответа правильный, почему именно он и как побороть артефакты графики читайте под катом.
Читать дальше →

Веб-камера, Node.js и OpenCV: делаем систему распознавания лиц

Время на прочтение5 мин
Охват и читатели44K
Компьютерное зрение — это, в двух словах, набор технологий, в основу которых положены принципы человеческого зрения, которые позволяют компьютеру видеть и понимать то, что он видит. На первый взгляд вроде бы просто, но на самом деле это далеко не так.



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

Как говорится: «лучше один раз увидеть», в данном случае — увидеть, как Amazon использует эту технологию для создания торговых центров нового поколения. Потрясающе, правда?

Если вы хотите приобщиться к технологиям компьютерного зрения — предлагаю поговорить о том, как создать интерактивную систему распознавания лиц с использованием обычной веб-камеры, Node.js и OpenCV.
Читать дальше →

Уменьшение размера файла сборки Android в Unity

Время на прочтение5 мин
Охват и читатели15K
Размер сборки — важная характеристика мобильного приложения. Если приложение весит много, оно первым будет удалено при чистке. Также меньший размер может ускорить запуск, установку, скачивание.

Даже пустой проект в Unity весит очень много. Пустой проект под Android с настройками по умолчанию в Unity 2017.1 весит 21637 КБ. Однако его можно очень легко уменьшить до 11952\12412 КБ, указав платформу для компиляции (ARMv7 и x86 соответственно).

По аналогии с этим, можно еще попробовать еще немного уменьшить вес, выбрав Graphic API. Если выбрать OpenGLES2 вместо Auto Graphics API, можно сэкономить еще 236 КБ (11716 вместо 11952). Выгода незначительна и возможна потеря в производительности, так что этого делать я не рекомендую.

Теперь поговорим о содержимом проекта. Рассмотрим 2D игру с большим количеством спрайтов.
Есть вероятность, что многие спрайты будут симметричными по одной или нескольким осям.
Читать дальше →

Как программно разметить спутниковую фотографию? Решение задачи Dstl Satellite Imagery Feature Detection

Время на прочтение9 мин
Охват и читатели12K


Привет, Хабр! Меня зовут Евгений Некрасов, я программист-исследователь в Mail.Ru Group. Сегодня я расскажу о своем решении соревнования по анализу данных Dstl Satellite Imagery Feature Detection, которое было посвящено сегментации спутниковых изображений. В этом соревновании я использовал относительно простой поход к моделированию и занял 7 место из 419 команд. Под катом — рассказ, как мне это удалось.
Читать дальше →

37 причин, почему ваша нейросеть не работает

Время на прочтение9 мин
Охват и читатели47K
Сеть обучалась последние 12 часов. Всё выглядело хорошо: градиенты стабильные, функция потерь уменьшалась. Но потом пришёл результат: все нули, один фон, ничего не распознано. «Что я сделал не так?», — спросил я у компьютера, который промолчал в ответ.

Почему нейросеть выдаёт мусор (например, среднее всех результатов или у неё реально слабая точность)? С чего начать проверку?

Сеть может не обучаться по ряду причин. По итогу многих отладочных сессий я заметил, что часто делаю одни и те же проверки. Здесь я собрал в удобный список свой опыт вместе с лучшими идеями коллег. Надеюсь, этот список будет полезен и вам.
Читать дальше →

Как я сделал самый быстрый ресайз изображений. Часть 3, числа с фиксированной точкой

Время на прочтение14 мин
Охват и читатели11K

Я продолжаю подробно рассказывать о приемах оптимизации, позволивших мне написать самый быстрый ресайз изображений на современных x86 процессорах. На этот раз речь пойдет о преобразовании вычислений с плавающей точкой в вычисления с целыми числами. Сперва я расскажу немного теории, как это работает. Затем вернусь к реальному коду, в том числе SIMD-версии.


В предыдущих частях:


Часть 0
Часть 1, общие оптимизации
Часть 2, SIMD

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

Подлинность ваших видео теперь неоспорима благодаря Prover

Время на прочтение3 мин
Охват и читатели11K
Сегодня я напишу про интересный проект интересных людей. Иван Писарев и Илья Свирин показали себя в проекте Нордавинд, самостоятельно разработав аппаратно-программные, очень простые и очень навороченные решения для разных сфер, от здоровья до безопасности. И вот недавно у них появилась идея…



Четыре миллиарда людей по всему миру владеют гаджетами. Создаваемый ими видеоконтент давно перестал использоваться лишь в развлекательных целях – сегодня это необходимая часть медийной, финансовой, страховой, юридической и медицинской отраслей. Выдаваемые за правду “фейки” не раз приводили к скандалам, а то и трагедиям, поэтому потребность в подтверждении подлинности видео-файлов необычайно высока. Сервис Prover, подтверждающий достоверность видео с привязкой к конкретному времени и устройству, был создан именно с этой целью.
Читать дальше →

Распознавание дорожных знаков с помощью CNN: Инструменты для препроцессинга изображений

Время на прочтение11 мин
Охват и читатели28K
Привет, Хабр! Продолжаем серию материалов от выпускника нашей программы Deep Learning, Кирилла Данилюка, об использовании сверточных нейронных сетей для распознавания образов — CNN (Convolutional Neural Networks)

Введение


За последние несколько лет сфера компьютерного зрения (CV) переживает если не второе рождение, то огромный всплеск интереса к себе. Во многом такой рост популярности связан с эволюцией нейросетевых технологий. Например, сверточные нейронные сети (convolutional neural networks или CNN) отобрали себе большой кусок задач по генерации фич, ранее решаемых классическими методиками CV: HOG, SIFT, RANSAC и т.д.

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


MultiNet как пример нейронной сети (трех в одной), которую мы будем использовать в одном из следующих постов. Источник.
Читать дальше →

Artisto: опыт запуска нейросетей в production

Время на прочтение21 мин
Охват и читатели17K
конференция разработчиков высоконагруженных систем HighLoad++

Эдуард Тянтов (Mail.ru Group)


Меня зовут Эдуард Тянтов, я занимаюсь машинным обучением в компании Mail.ru Group. Я расскажу про приложение стилизации видео с помощью нейронных сетей Artisto, про технологию, которая лежит в основе этого приложения.

Давайте я дам пару фактов о нашем приложении:

  • 1-е мобильное приложение стилизации видео в мире;
  • Уникальная технология стабилизации видео;
  • Приложение с технологией разработаны за 1 месяц.
Читать дальше →

Создание шейдера дыма на GLSL

Время на прочтение11 мин
Охват и читатели30K
image
[Дым на КДПВ несколько сложнее получаемого в туториале.]

Дым всегда был окружён ореолом таинственности. На него приятно смотреть, но сложно моделировать. Как и многие другие физические явления, дым — это хаотическая система, которую очень сложно предсказать. Состояние симуляции сильно зависит от взаимодействия между отдельными частицами.

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

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

Что читать о нейросетях

Время на прочтение6 мин
Охват и читатели140K


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


Стоит ли изучать нейросети не специалистам в области машинного обучения? Каждый для себя ответит на этот вопрос сам. Мы же посмотрим на ситуацию с другой стороны — что делать разработчикам (и всем остальным), которые хотят больше знать про методы распознавания образов, дискриминантный анализ, методы кластеризации и другие занимательные вещи, но не хотят расходовать на эту задачу лишние ресурсы.


Ставить перед собой амбициозную цель, с головой бросаться в онлайн-курсы — значит потратить много времени на изучение предмета, который, возможно, вам нужен лишь для общего развития. Есть один проверенный (ретроградный) способ, занимающий по полчаса в день. Книга — офлайновый источник информации. Книга не может похвастаться актуальностью, но за ограниченный период времени даст вам фундаментальное понимание технологии и способов ее возможной реализации под ваши задачи.

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

Британские спутниковые снимки 2: как все было на самом деле

Время на прочтение21 мин
Охват и читатели35K
image

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

Краткое содержание первой части:

1. DSTL (научно-техническая лаборатория при министерстве обороны Великобритании) провела открытое соревнование на Kaggle.
2. Соревнование закончилось 7 марта, результаты объявлены 14 марта.
3. Пять из десяти лучших команд — русскоговорящие, причем все они являются членами сообщества Open Data Science.
4. Призовой фонд в $100,000 разделили брутальный малазиец Kyle, команда Романа Соловьева и Артура Кузина, а также я и Сергей Мушинский.
5. По итогам были написаны блог-посты (мой пост на хабре, пост Артура на хабре, наш с Серегой пост на Kaggle), проведены выступления на митапах (мое выступление в Adroll, мое выстпление в H20.ai, выступление Артура в Yandex, выступление Евгения Некрасова в Mail.Ru Group), написан tech report на arxiv.

Организаторам понравилось качество предложенных решений, но не понравилось, сколько они отстегнули за это соревнование. В Каggle ушло $500k, в то время как призовые всего $100k.
Читать дальше →

Deep Learning, теперь и в OpenCV

Время на прочтение13 мин
Охват и читатели71K


Данная статья является кратким обзором возможностей dnn — модуля OpenCV, предназначенного для работы с нейросетями. Если вам интересно, что это такое, что оно умеет и как быстро работает, добро пожаловать под кат.
Читать дальше →

Ближайшие события

EBU R128/BS.1770-3: Пакетная нормализация громкости аудио/видео файлов, ч2

Время на прочтение8 мин
Охват и читатели3.3K
В предыдущем посте обрисовал идею с пакетной нормализацией громкости аудио/видео файлов.

Настала пора выложить реализацию этой идеи. Решение получилось гибкое и масштабируемое.

Для использования необходимо запастись знаниями матчасти звука и видео, мануалами по SoX — Sound eXchange, FFmpeg, BS1770GAIN, а так же моим любимым пакетом AutoIt.
Читать дальше →

Smart IDReader SDK — добавляем распознавание в Android приложения

Время на прочтение11 мин
Охват и читатели9.3K

Привет, Хабр! В одной из прошлых наших статей изучался вопрос встраивания ядра распознавания Smart IDReader в iOS приложения. Пришло время обсудить эту же проблему, но для ОС Android. Ввиду большого количества версий системы и широкого парка устройств это будет посложнее, чем для iOS, но всё же вполне решаемая задача. Disclaimer – приведённая ниже информация не является истинной в последней инстанции, если вы знаете как упростить процесс встраивания/работы с камерой или сделать по другому – добро пожаловать в комментарии!

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

Создание шейдеров

Время на прочтение27 мин
Охват и читатели213K
Освоить создание графических шейдеров — это значит взять под свой контроль всю мощь видепроцессора с его тысячами параллельно работающих ядер. При таком способе программирования требуется другой образ мышления, но раскрытие его потенциала стоит потраченных усилий.

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


Сцена из Minecraft, до и после добавления нескольких шейдеров.

Задача этого туториала


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

Автоматическое распознавание текста в видео

Время на прочтение18 мин
Охват и читатели19K
Данная статья является переводом статьи «Automatic text recognition in digital videos» за авторством Райнера Линхарта и Франка Штубера, Университет Маннхайма, Германия.

Краткий обзор


Мы занимаемся разработкой алгоритмов для автоматической сегментации символов в фильмах, которые извлекают текст из предисловия, титров и заключения. Наши алгоритмы используют стандартные символы текста в видео, чтобы повысить качество сегментации и, как следствие, эффективность распознавания. Как результат мы имеем отдельные символы из кадров. Их можно проанализировать с помощью любого ПО OCR. Результаты распознавания нескольких экземпляров одного и того же символа во всех последующих кадрах объединяются для повышения качества распознавания и для вычисления конечного результата. Мы протестировали наши алгоритмы в серии экспериментов с видеоклипами, записанными с телевизора, и достигли хороших результатов сегментации.
Читать дальше →

Бинарная сегментация изображений методом фиксации уровня (Level set method)

Время на прочтение10 мин
Охват и читатели15K
Сегментация изображений является задачей разбиения цифрового изображения на одну или несколько областей, представляющих интерес. Это фундаментальная проблема в области компьютерного зрения, которая решается многими различными способами, каждый из которых обладает своими преимуществами и недостатками.

В этой статье я кратко рассмотрю понятие метода фиксации уровня и неявно заданных динамических поверхностей (level set method). Также рассмотрю роль этого метода в бинарной сегментации с введением и определением математических конструкций, таких как SDT (Signed Distance Transforms), маркированной карты расстояний.

Слева — исходное изображение, справа — сегментированное
Читать далее...

Рынок систем детекции и распознавания: Эмоции и «эмоциональные вычисления»

Время на прочтение9 мин
Охват и читатели10K
В наши дни технологии по распознаванию перестают быть недосягаемыми. Распознавание эмоций и «эмоциональные вычисления» являются частью большого пласта науки, также включающего такие основополагающие понятия, как распознавание образов и обработка визуальной информации. Этим постом мы хотим открыть наш блог на Хабре и провести небольшой обзор решений, представленных на рынке систем распознавания эмоций — взглянем, какие компании работают в этом сегменте и чем конкретно они занимаются.

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

Отжиг и вымораживание: две свежие идеи, как ускорить обучение глубоких сетей

Время на прочтение4 мин
Охват и читатели16K


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


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