Задачи на Intel Summer Internship 2017

Добавлено 31.03.2017 / Обновлено 04.04.2017

Задачи для Летней интернатуры 2017 в Нижнем Новгороде

Задача 1. Микроархитектурная оптимизация приложений для высокопроизводительных систем.

Задача 2. Машинное обучение на платформах Intel: решение актуальных задач с использованием инструментов Intel для разработки ПО и алгоритмов машинного/глубокого обучения.

Задача 3. Разработка персистентных структур данных для энергонезависимой памяти.

Задача 4. Оптимизация производительности C++ приложения с помощью векторизации и OpenMP*.

Задача 5. Разработка системы расширенного анализа результатов тестирования Intel® MPI Library.

Задача 6. Исследование и разработка инфраструктуры для получения и анализа трасс процессорных инструкций для Intel® MPI Library.

Задача 7. Разработка и оптимизация систем содействия водителю с помощью технологии Intel® Processor Trace.

Задача 8. Расширение системы рекомендаций в Vectorization Advisor.

Задача 9. Разработка интерактивного информационного инструмента для работы с управляющими переменными окружения Intel® MPI Library.

Задача 10. Разработка инструмента для поиска open source компонентов с известными проблемами в области безопасности, включенных в состав продуктов Intel.

Задача 11. Анализ бенчмарков из набора SpecACCEL_OMP4.0. Оптимизация исходного кода под различные новые микроархитектуры Intel.

Задача 12. Демо распознавания образов в процессе транскодирования видео с помощью Intel® Media SDK и Intel® DAAL.

Задача 13. Геймификация совместного процесса разметки в Intel® GO™ Automotive Software Development Kit (SDK) Sensor data labeling tool.

Задача 14. Миграция статистики о HPC приложениях в СУБД. Визуализация данных в HMTL.

Задача 15. Разработка Демо приложения для визуализации результатов обработки изображений с помощью функций из библиотеки Intel® IPP.

Задача 16. Разработка и низкоуровневая оптимизация функций изменения размера изображения (Resize) на основе арифметики с фиксированной точкой.

Задача 17. Детектирование автомобилей.

Задача 18. Разработка полуавтоматических и автоматических методов разметки видео и изображений для алгоритмов компьютерного зрения. Создание нового датасета для одной из задач компьютерного зрения.

Задача 19. Портировать примеры алгоритмов на OpenVX.

Задача 20. Оптимизация алгоритмов компьютерного зрения на языке C/C++.

Задача 21. Проектирование и реализация компонента для визуализации 3D модели окружения.

Задача 22. Проектирование и реализация программного обеспечения для объектной симуляции с целью обучения алгоритмов автономного вождения на основе выходных данных.

Задача 23. Решить задачу по машинному обучению в условиях данных, поступающих онлайн с помощью Intel® DAAL.

Задача 24. Реализация прототипов дополнительных критериев разбиения для метода машинного обучения Дерево принятия решений.

Задача 25. Расширение библиотеки генераторов случайных чисел для коротких векторов.

Задача 26. Реализация прототипа B-сплайнов.

Задача 27. Анализ видеоданных для целей автоматизированного сельского хозяйства.

Задача 28. Корона и Кролик: реализация поддержки Intel Embree в движке трассировки лучей Blender TM.

Задача 29. Реализация части алгоритмов Parallel STL.

Задача 30. Расширение поддержки С++11 в компоненте Flow Graph библиотеки Intel® Threading Building Blocks (Intel® TBB).

Задача 31.Улучшение гетерогенной среды OpenVX.

Задача 32. Поддержка и улучшение демонстрационного приложения, использующего алгоритмы компьютерного зрения.

Задача 33. Расширение возможностей анализа лиц в AIM Suite.

Задача 34. Улучшение алгоритма детектирования вредоносного воздействия на камеру.

Задача 35. Разработка прототипа оптимизации “разбиения входного пространства” для компилятора OpenCL

Задача 1. Микроархитектурная оптимизация приложений для высокопроизводительных систем

Описание. Приложения для высокопроизводительных систем (High Performance Computing) используются в академической среде для счётной обработки различных научных данных (обработка значений физических измерений, симуляция различных процессов: физических, астрофизических, погодных, тектонических, химических, биохимических и др.). Особенностью этих приложений являются большие (и очень большие) объёмы обрабатываемых данных и высокие требования к скорости их обработки. Основной задачей является достижение максимальной эффективности использования новейших процессоров Intel и современных вычислительных систем (вычислительных кластеров).

Задача состоит в ускорении HPC приложений: поиске узких мест и способов их устранения с использованием отчётов оптимизации Intel Compiler, вычислительных профилей Intel® VTune™, коммуникационных профилей Intel MPI и других инструментов; внедрении архитектурных оптимизаций в исходные тексты программ.

Требования к претенденту.

  • Архитектура x86 - начальный уровень;
  • C/C++ - средний уровень;
  • Linux* OS - обычный пользователь;
  • Знания MPI/OpenMP*/компилятора, как дополнительный плюс.

Задача 2. Машинное обучение на платформах Intel: решение актуальных задач с использованием инструментов Intel для разработки ПО и алгоритмов машинного/глубокого обучения

Описание. Применение программного стека и платформ Intel для решения актуальных задач машинного обучения. Будет включать в себя пункты исследовательского характера, а также портирование и оптимизацию для платформ Intel.

Требования к претенденту.

  • C/C++ базовые навыки;
  • Начальный опыт использования скриптовых языков (Python, Perl, bash);
  • Знание алгоритмов машинного обучения, базовые навыки работы с Linux* OS приветствуются.

Задача 3. Разработка персистентных структур данных для энергонезависимой памяти

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

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

Требования к претенденту.

  • С++;
  • шаблонное программирование;
  • ООП;
  • структуры данных и алгоритмы.

Задача 4. Оптимизация производительности C++ приложения с помощью векторизации и OpenMP*

Описание. Необходимо оптимизировать существующий код на С++ через векторизацию и распараллеливание на OpenMP, эффективно используя средства Intel – компилятор и Intel® Advisors. Кроме того, важно правильно документировать изменения и создать обучающий материал на основе проделанной работы.

Требования к претенденту. Знания С/С++, Microsoft Visual Studio*, параллельного программирования, OpenMP, векторизации

Задача 5. Разработка системы расширенного анализа результатов тестирования Intel® MPI Library

Описание. Необходимо разработать расширение для автоматического детектирования неисправностей в работе продукта, на основе анализа данных, собранных в результате функционального тестирования Intel® MPI Library, используя инструменты на базе языка Python (Flask, Celery).

Требования к претенденту.

  • Опыт web-разработки (Javascript, HTML5, Flask, SQLAlchemy, Celery, jQuery);
  • Скриптовые языки (Python);
  • Linux* OS;
  • Базы данных (SQL);
  • Английский язык – чтение и написание технической документации.

Задача 6. Исследование и разработка инфраструктуры для получения и анализа трасс процессорных инструкций для Intel® MPI Library

Описание. Message Passing Interface (MPI) – это стандартизированный интерфейс передачи сообщений, который позволяет обмениваться информацией между процессами, выполняющими одну задачу. Intel MPI – оптимизированная под платформы Intel реализация MPI стандарта.

В рамках тестирования производительности библиотеки Intel® MPI Library требуется разработать инфраструктуру для построения трассы инструкций процессора, ее обработки и исследования влияния количества инструкций на производительность библиотеки.

Требования к претенденту.

  • Linux* OS;
  • Скриптовые языки (UNIX shell, Python);
  • C/C++;
  • Английский язык.

Дополнительно: MPI.

Задача 7. Разработка и оптимизация систем содействия водителю с помощью технологии Intel® Processor Trace

Описание. Разработка современных систем содействия водителю (ADAS-платформ) не обходится без непрерывного анализа производительности используемого программного обеспечения. Intel® Processor Trace является одной из перспективных технологий для решения данной задачи.

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

Необходимо произвести анализ и реализовать улучшенные алгоритмы обработки и хранения данных, позволяющие проводить быстрый анализ (>=1ГБ/мин) и отображение полученых данных (отклик < 10с).

Требования к претенденту. C/C++, ООП, Linux* OS, Bash/Python, умение и желание исследовать узкие места в чужом коде.

Задача 8. Расширение системы рекомендаций в Vectorization Advisor

Описание. Intel® Advisor – профилировщик для анализа векторизованных циклов и оптимизации приложений. Данная задача предполагает исследование проблем производительности, используя новые типы анализов, как Roofline моделирование и профилирование вычислений с плавающей запятой и маскированных инструкций, создание новых алгоритмов детектирования этих проблем в Vectorization Advisor и написание примеров для тестирования реализованных рекомендаций.

Требования к претенденту. Понимание различных техник оптимизации кода. Желательно хорошее знание C++. Будет плюсом хорошее знание английского из-за потенциальной необходимости общаться с англоязычными экспертами.

Задача 9. Разработка интерактивного информационного инструмента для работы с управляющими переменными окружения Intel® MPI Library

Описание. Message Passing Interface (MPI) - это стандартизированный интерфейс передачи сообщений, который используется для параллельных вычислений на распределенных системах. Intel® MPI Library – оптимизированная под платформы Intel реализация MPI стандарта, в которой одним из основных механизмов управления режимами работы являются специальные переменные окружения.

Необходимо pазработать инструмент, который будет предоставлять полную информацию о MPI переменных окружения (описание, диапазон значений и так далее) и позволит значительно повысить удобство использования библиотеки.

Требования к претенденту.

  • Linux* OS;
  • C/C++;
  • Скриптовые языки (Perl, Unix shell);
  • Английский язык.

Дополнительно: MPI.

Задача 10.  Разработка инструмента для поиска open source компонентов с известными проблемами в области безопасности, включенных в состав продуктов Intel

Описание. В настоящее время модель разработки с открытым исходным кодом является очень популярной. Продукты с открытым исходным кодом, как и коммерческие продукты, включают различные open source компоненты, чтобы снизить стоимость разработки или обеспечить совместимость с существующими решениями. Но и программы с открытым исходным кодом содержат ошибки, связанные с безопасностью. Наши клиенты и партнеры уделяют много внимания вопросам безопасности в общем, и особенно в программных продуктах, которые они используют. Выпуская продукты в компании Intel, мы обязаны удостовериться в том, что наши продукты (в том числе и компоненты с открытым исходным кодом, которые являются частью продуктов) не содержат уязвимостей или других проблем в области безопасности. Необходимо разработать прототип инструмента для сканирования наших продуктов на наличие уязвимых компонентов, определения их версий и извлечения информации о характере уязвимости и ее критичности из различных online баз данных (например, National Vulnerability Database).

Требования к претенденту.

  • Уверенное знание языка программирования Python;
  • Знания алгоритмов работы с большим объемом текстовых данных и формата XML;
  • Опыт работы с операционными системами Windows*OS и Linux* OS;
  • Знания в областях, связанных с процессом тестирования, будут дополнительным плюсом;
  • Уверенное владение техническим английским языком (чтение, письмо).

Задача 11. Анализ бенчмарков из набора SpecACCEL_OMP4.0. Оптимизация исходного кода под различные новые микроархитектуры Intel

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

Требования к претенденту. Хорошее знание языков программирования C/Fortran. Знание стандарта OpenMP и техник векторизаций и оптимизаций кода являются дополнительным плюсом.

Задача 12. Демо распознавания образов в процессе транскодирования видео с помощью Intel® Media SDK и Intel® DAAL

Описание. Реализация приложения распознавания образов с помощью нейронной сети топологии AlexNet в процессе транскодирования видео в реальном времени с использованием современных технологий компании Intel: Intel® Media SDK и Intel® DAAL.

Требования к претенденту. Глубокое знание C/C++. Работа с нейронными сетями и транскодированием видео будет плюсом. Хорошие способности к быстрому обучению.

Задача 13. Геймификация совместного процесса разметки в Intel® GO™ Automotive Software Development Kit (SDK) Sensor data labeling tool

Описание. Sensor data labeling tool является частью Intel® GO™ Automotive Software Development Kit (SDK) и позволяет создавать надежные сценарии для обучения алгоритмов и моделирования окружающей среды при разработке решений в области автономного вождения. Данная задача подразумевает добавление поддержки геймификации совместного процесса ручной разметки в Sensor data labeling tool. Необходимо продумать архитектуру и реализовать модуль геймификации внутри Sensor data labeling tool, а также разработать пользовательский интерфейс геймификации.

Требования к претенденту. От года опыта разработки прикладных приложений с графическим пользовательским интерфейсом с использованием Qt/C++/QML. Опыт геймификации процессов в области программного обеспечения приветствуется.

Задача 14. Миграция статистики о HPC приложениях в СУБД. Визуализация данных в HMTL

Описание. Долговременное наблюдение за миром высокопроизводительных вычислений(HPC) порождает большой объем информации об HPC приложениях и с каждой новой архитектурой данных становится все больше. Большие объемы данных требуют бережного хранения. Необходимо мигрировать большой объем статистики об HPC-приложениях из текстового формата в СУБД. Разработать базу для хранения данных. Разработать модуль HTML-визуализации статистики. Встроить модуль визуализации статистики в существующий сайт.

Требования к претенденту.

  • Linux* OS intermediate user;
  • Python/Django;
  • SQL;
  • Bash (or any other script language).

Задача 15. Разработка демо-приложения для визуализации результатов обработки изображений с помощью функций из библиотеки Intel® IPP

Описание. Библиотека Intel® IPP – это набор функций для оптимизированной обработки данных и мультимедиа. Активно используя особенности микроархитектуры процессоров, в частности, возможности векторизации, функции Intel® IPP значительно увеличивают скорость работы приложения. Библиотека Intel® IPP содержит широкий набор функций обработки изображений, таких как фильтрация, геометрические преобразования, преобразования цветового пространства, и т.д. Так как многие функции могут принимать на вход широкий набор параметров, то пользователю не всегда очевидно, какой именно вариант функции и с какими параметрами лучше подходит для поставленной задачи. Таким образом, становится актуальной задача разработки демо-приложения для визуализации результатов обработки изображений в интерактивном режиме, когда пользователь может выбирать функции, менять параметры “на лету” и сразу же видеть результат.

Требования к претенденту. Хорошие навыки в программировании на C/C++, базовые знания алгоритмов обработки изображений. Опыт в разработке графического интерфейса желателен. Способность работать индивидуально и в команде.

Задача 16.  Разработка и низкоуровневая оптимизация функций изменения размера изображения (Resize) на основе арифметики с фиксированной точкой

Описание. Библиотека Intel® IPP – это набор функций для оптимизированной обработки данных и мультимедиа. Активно используя особенности микроархитектуры процессоров, в частности, возможности векторизации, функции Intel® IPP значительно увеличивают скорость работы приложения. Изменения размера – одна из наиболее часто встречаемых операций в алгоритмах обработки изображений и компьютерного зрения. Некоторые реализации направлены на получение выходного изображения с как можно большей точностью, другие же реализации наоборот жертвуют качеством картинки, ради увеличения скорости исполнения.

Задача заключается в разработке функций изменения размера на основе арифметики с фиксированной точкой и их низкоуровневой оптимизации для архитектуры процессоров компании Intel. Также в задачу входит сравнение производительности написанных функций с функциями из других библиотек обработки изображений и версиями функций из библиотеки Intel® IPP. Данная задача даёт реальный опыт оптимизации с использованием векторных инструкций и особенностей архитектуры процессоров компании Intel.

Требования к претенденту. Хорошие навыки в программировании на C/C++, базовые знания алгоритмов обработки изображений. Опыт в низкоуровневой оптимизации желателен. Способность работать индивидуально и в команде. Навыки технического письма и проведения презентаций.

Задача 17.  Детектирование автомобилей

Описание. Создать алгоритм детектирования автомобилей при различных углах по отношению к камере, используя классические алгоритмы машинного обучения, такие как AdaBoost, SVM, а также различные дескрипторы изображений (HOG, LBP и т.п.). Задача включает анализ тренировочных данных с целью выяснения минимального числа классификаторов, способных решить данную проблему, а также тренировку данных классификаторов и написание примера, демонстрирующего работу алгоритма. Задача будет решаться в тесном сотрудничестве с одним из инженеров проекта ADAS.

Требования к претенденту. Знания в машинном обучении и обработке изображений. Опыт написания программ на С++.

Задача 18. Разработка полуавтоматических и автоматических методов разметки видео и изображений для алгоритмов компьютерного зрения. Создание нового датасета для одной из задач компьютерного зрения.

Описание. Цитата из http://www.spacemachine.net/views/2016/3/datasets-over-algorithms: “Возможно, наиважнейшая новость наших дней состоит в том, что наборы данных - не алгоритмы - могут быть ключевым ограничивающим фактором разработки искусственного интеллекта”, согласно ответу Alexander Wissner-Gross на вопрос, заданный Edge: “Что вы считаете наиболее интересной свежей научной новостью?” Для создания надежных и качественных алгоритмов компьютерного зрения нужно иметь хороший набор изображений с достоверной разметкой интересующих нас объектов. Очевидный способ аннотировать изображения – это ручная разметка, которая является затратной, долгой и скучной по своей сути. В данной задаче необходимо исследовать и реализовать один или несколько алгоритмов глубокого обучения, которые позволят автоматизировать ручной труд по разметке данных.

Требования к претенденту.

Обязательно:

  • Серьезный опыт разработки на С/С++. Умение писать чистый, элегантный и легко-поддерживаемый высокопроизводительный код;
  • Хорошее знание основ используемого математического аппарата;
  • Любознательность, самомотивация задавать вопросы и искать ответы.

Опционально:

  • Опыт работы с компьютерным зрением и/или обработкой изображений;
  • Знания в области глубокого машинного обучения, глубоких/сверточных нейронных сетей, классификаторов, знание методов представления особенностей/признаков и сопутствующих техниках;
  • Знакомство с одним или более средств разработки алгоритмов нейронных сетей: Theano, Torch or Caffe.

Задача 19. Портировать примеры алгоритмов на OpenVX

Описание.

  • Портировать примеры алгоритмов на OpenVX.
  • Тестировать производительность примеров.
  • Оптимизировать примеры в рамках OpenVX.
  • Написать недостающие пользовательские ядра.
  • Оптимизировать пользовательские ядра на C++.

Требования к претенденту. Важно желание:

  • Изучить примеры алгоритмов компьютерного зрения;
  • Изучить OpenVX, освоить приёмы работы с OpenVX;
  • Попробовать силы в оптимизации ядер на C/C++;
  • Улучшить навыки программирования с OpenCV.

Задача 20. Оптимизация алгоритмов компьютерного зрения на языке C/C++

Описание.

  • Научить Intel ® C++ оптимизировать алгоритмы компьютерного зрения.
  • Пополнить библиотеку шаблонов (типичных примеров кода) для C++.
  • Тестировать производительность кода, сравнить Intel ® C++ с другими.
  • Анализировать причины удачи/неудачи, написать отчёт для Intel ®C++.
  • Выработать рекомендации по улучшению компилятора Intel ®C++.

Требования к претенденту.

  • Желание изучать и оптимизировать алгоритмы компьютерного зрения;
  • Базовые навыки в C++, опыт с компьютерным зрением будет плюсом;

Задача 21. Проектирование и реализация компонента для визуализации 3D модели окружения

Описание. Sensor Data Labeling приложение является частью Intel® GO™ Automotive фреймворка и позволяет создавать сценарии для обучения и моделирования окружения в задачах автономного вождения.

Проект Labeling Tool - приложение, которое позволяет размечать записанные 2D и 1D потоки данных. Размеченные данные используются для обучения и тестирования алгоритмов автономного вождения. Приложение имеет расширенный пользовательский интерфейс и содержит множество визуальных элементов для отображения 1D и 2D потоков данных различных типов из различных источников. Приложение написано с использованием C++ и Qt.

Задачи:

  • Спроектировать и разработать первую версию Bird Eye View 3D компонента, используя Qt 3D (OpenGL).
  • Провести небольшое исследование, как получить данные картографического сервиса.
  • Отобразить полученные данные на 3D сцене.

Требования к претенденту. C++, 3D Graphics and OpenGL, QT and QT 3D knowledge.

Задача 22. Проектирование и реализация программного обеспечения для объектной симуляции с целью обучения алгоритмов автономного вождения на основе выходных данных

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

Задача содержит:

  • определение языка описания входящих и выходящих данных;
  • проектирование интерфейсов для взаимодействия с пользовательскими приложениями с графическим интерфейсом;
  • проектирование и реализацию симулятора.

Требования к претенденту. C++, design patterns knowledge, simulation software experience

Задача 23. Решение задачи по машинному обучению в условиях данных, поступающих онлайн с помощью Intel® DAAL

Описание. Intel® Data Analytics Acceleration Library (https://software.intel.com/en-us/intel-daal) это продукт, который представляет из себя набор оптимизированных блоков для использования на всех стадиях анализа данных и машинного обучения.

Задача: Взяв за базу типичную проблему машинного обучения (классификацию или регрессию), подготовить решение, базируясь на библиотеке Intel® DAAL, и интегрировать в широко распространённую среду для онлайн обработки данных, например, Apache Flink.

Требования к претенденту.

  • Умение программировать на Java;
  • Знакомство с алгоритмами машинного обучения.

Задача 24. Реализация прототипов дополнительных критериев разбиения для метода машинного обучения Дерево принятия решений

Описание. Intel® Data Analytics Acceleration Library (https://software.intel.com/en-us/intel-daal) это новый продукт, который вышел на рынок в 2015 году. Этот продукт представляет из себя набор блоков, оптимизированных для работы на всех платформах Intel, которые можно использовать на всех стадиях анализа данных: сбора данных из различных источников, предварительной обработки, преобразования, анализа, моделирования, проверки и принятия решений.

Задача:

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

Требования к претенденту.

  • Хороший математический аппарат (численные методы, теория вероятностей, математический анализ);
  • Умение программировать на C/C++.

Задача 25. Расширение библиотеки генераторов случайных чисел для коротких векторов

Описание. Intel® Compiler short vector random number generators (SVRNG) библиотека была представлена в 17.0 версии (https://software.intel.com/en-us/node/694866). Она содержит набор новых скалярных и векторных интринсиков для генерации случайных значений – часть набора стандартных С++ генераторов. Набор SVRNG базовых генераторов и распределений требуется расширить для совместимости со стандартным С++ набором (1-2 базовых генератора, 2-3 простых распределения).

Дополнительно требуется разработать С++ интерфейс для SVRNG библиотеки, идентичный стандартному C++ RNG интерфейсу (для всех существующих SVRNG функций).

Требования к претенденту.

  • Хороший математический аппарат (численные методы, статистика);
  • Умение программировать на С\С++.

Задача 26. Реализация прототипа B-сплайнов

Описание. The Intel® Math Kernel Library (https://software.intel.com/en-us/mkl-reference-manual-for-c) - это библиотека оптимизированных математических функций, позволяющих решать большие высокопроизводительные вычислительные задачи. Компонента Intel® MKL Data Fitting предоставляет функционал интерполяции на основе сплайнов, который можно использовать для аппроксимации функций, производных функций или интегралов и выполнения операций поиска.

Задача.

  • Проанализировать возможные способы разработки алгоритма B-сплайна.
  • Разработать прототип одного из алгоритмов.
  • Сравнить реализацию с другими имплементациями.

Требования к претенденту.

  • Хороший математический аппарат (численные методы, математический анализ);
  • Умение программировать на C;
  • Хорошее аналитическое мышление;
  • Опыт работы в Linux* OS.

Задача 27. Анализ видеоданных для целей автоматизированного сельского хозяйства

Описание. Задача состоит в разработке и реализации алгоритмов анализа видеоданных для своевременного выявления проблемных участков зеленых насаждений (пораженных болезнями, поврежденнных и т.п.).

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

Работа с видеоданными, полученными от различных сенсоров – от обычных видеокамер до сенсоров Intel® RealSense™, установленных на квадракоптерах.

Требования к претенденту. Хорошее знание C++. Желателен опыт в обработке изображений, использования библиотеки OpenCV. Желателен опыт в области распознавания образов, опыт использования сверточных нейронных сетей.

Задача 28. Корона и Кролик: реализация поддержки Intel Embree в движке трассировки лучей Blender TM

Описание. Blender TM является бесплатным продуктом с открытым кодом, предназначенным для профессионального создания высококачественных 3D мультфильмов, моделей и видео игр.

Embree представляет собой набор разработаных в Intel высокопроизводительных ядер трассировки лучей. Ядра оптимизированы для фотореалистичной отрисовки на новейших процессорах Intel c поддержкой SSE, AVX, AVX2 и AVX512.

Предлагаемая задача состоит в создании прототипа версии Blender TM с интегрированным Embree. В случае успешного осуществления интеграции и достижения роста производительности планируется полная интеграция результата в Blender

Требования к претенденту. Умения и опыт программирования на C/C++, способность самостоятельного изучения и понимания документации на английском языке, базовые знания в области концепций трассировки лучей в компьютерной графике, тяга к исследованиям и отсутствие страха перед большими сложными проектами.

Задача 29. Реализация части алгоритмов Parallel STL

Описание. Добавить параллельную / векторную реализацию для нескольких алгоритмов компоненты Parallel STL в соответствии со стандартом С++17.

Требования к претенденту. C++11, STL, обобщенное программирование.

Задача 30. Расширение поддержки С++11 в компоненте Flow Graph библиотеки Intel® Threading Building Blocks (Intel® TBB)

Описание. Библиотека Intel® Threading Building Blocks library (Intel® TBB) – набор высокопроизводительных параллельных вычислительных алгоритмов, реализованных на объектно-ориентированном языке C++03/11.

Задача заключается в развитии интерфейсов компонента Flow Graph библиотеки Intel® TBB с целью более полной поддержки нового языкового стандарта C++11. В частности, одна из подзадач -  расширение Flow Graph API, а именно, использование вариативных шаблонов (variadic templates) языка С++11.

Требования к претенденту.

  • Хорошее знание С++, включая опыт работы с шаблонами;
  • Навыки чтения исходного кода на С++;
  • Понимание основ ООП (парадигма Объектно-Ориентированного Программирования);
  • Потоки (нити) и другие концепции параллельного программирования.

Задача 31. Улучшение гетерогенной среды OpenVX

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

  • Собрать данные о взаимодействии отдельных устройств системы друг с другом;
  • Оценить влияние устройств друг на друга;
  • Создать математическую модель;
  • Реализовать прототип.

Требования к претенденту.

Требуется:

  • C/C++
  • Параллельные вычисления

Желательно:

  • OpenCL
  • Линейное программирование, дискретная математика

Задача 32. Поддержка и улучшение демонстрационного приложения, использующего алгоритмы компьютерного зрения

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

Требования к претенденту        

  •  Опыт работы с QtQuick 2, знание QML;
  • Понимание концепций библиотеки OpenCV;
  • Опыт работы с CMake;
  • C/C++.

Задача 33. Расширение возможностей анализа лиц в AIM Suite

Описание. В настоящее время аналитика лиц для задач DSS включает в себя два компонента: детектирование лиц (AdaBoost) и предсказание пола и возраста (CNN).

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

  • быстрый детектор лиц в различной ориентации. Предполагается использование нескольких AdaBoost каскадов с совместным использованием начальных слабых классификаторов;
  • классификатор на базе сверточных нейронных сетей для фильтрации ложных срабатываний алгоритма детектирования лиц;

 

  • анализ пригодности лица для последующего анализа (включает в себя фильтрацию нечетких, плохо выровненных итд лиц);
  • Методы решения специфичны для каждой из приведенных подзадач и варьируются от использования алгоритмов традиционного машинного обучения, таких как AdaBoost до построения сверточных нейронных сетей;
  • Задача будет решаться в тесном сотрудничестве с одним из инженеров проекта DSS.

Требования к претенденту. Знания в Машинном обучении и обработке изображений. Опыт написания программ на С++.

Задача 34. Улучшение алгоритма детектирования вредоносного воздействия на камеру

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

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

Требования к претенденту. Опыт написания программ на С++11. Знания в машинном обучении и/или обработке изображений будут полезны.

Задача 35. Разработка прототипа оптимизации “разбиения входного пространства” для компилятора OpenCL

Описание. OpenCL это современный открытый стандарт хранения гетерогенного программирования. Требуется запрограммировать на языке С++ и компиляторного фреймворка LLVM прототип компиляторной оптимизации на основе статьи Simon Moll и др «Input Space Splitting for OpenCL».

Требования к претенденту. C/C++, LLVM compiler framework is a strong plus