Школа проводилась с 4 по 30 июля. 4 июля в 12:00 прошло открытие школы и презентация проектов. 30 июля были проведены презентации результатов проектов, подведение итогов и закрытие школы.
Python, Flask, PDF, HTML/CSS
На сайте кафедры Системного программирования есть архив учебных практик и ВКР (бакалаврские и магистерские) с 2007 по 2021 год. Многие работы загружены в виде PDF документа.
На текущий момент поиск выполняется по ФИО автора и названию работы.
Необходимо реализовать полнотекстовый поиск по всему тексту работы. В результате поиска необходимо выводить сниппет.
Желание научиться делать продукт, которым пользуются люди. Желание познакомиться с веб технологиями и сетями
Зеленчук Илья Валерьевич
JavaScript, React, Java, Kotlin, Docker, Spring Boot
Medical Images Research Framework — это библиотека для автоматической обработки медицинских данных, таких как МРТ- и КТ-снимки. В летней школе, однако, предлагается позаниматься веб-приложением для получения второго мнения, которое позволяет пациентам общаться с врачами и использует MIRF для помощи первым и вторым. Приложение начинали писать в прошлогодней летней школе, сейчас есть много не очень больших задач по его доработке.
Желание позаниматься веб-разработкой в существующем проекте. В технологиях можно будет разобраться по ходу.
Латохин Святослав Алексеевич, Шеремет Ирина Дмитриевна, Шехаде Даниэль, Чижова Ангелина Сергеевна, научный руководитель — Литвинов Юрий Викторович
RISC-V, ассемблер.
В последнее время набирает популярность открытая архитектура RISC-V. Компиляторы располагают приемлемой поддержкой этой архитектуры, однако для специализированных приложений этого недостаточно. Например, такие проекты как gmp, mpfr, crypto реализуют критические участки кода на ассемблере целевой архитектуры. Предлагается задача анализа приложений с открытым исходным кодом и составления списка таких проектов. Далее, выбрать наиболее понравившийся проект и добавить в него поддержку RISC-V. Проверка будет либо на "живой" плате, либо на qemu.
Знакомство с ассемблером хотя бы одной архитектуры, знакомство с qemu, желательно знание основ постановки экспериментов.
Смирнов Кирилл Константинович, Кириленко Яков Александрович
TI DSP
Данный проект посвящен программированию систем, которые по тем или иным характеристикам существенно уступают не только настольным системам и ноутбукам, но также и смартфонам. В частности, на них нет привычных нам интерфейсов человек-машинного взаимодействия. Вы узнаете, как в таких системах решают трудоемкие задачи, и как в них смог с комфортом расположиться Linux. В рамках проекта предлагается несколько небольших задач. Все задачи выполняются в среде контроллера TRIK.
Задача 1: рефакторинг DSP модулей Для обработки видео в проекте TRIK используются модули для специализированного процессора DSP. Модули справляются со своими задачами хорошо, но можно сделать еще лучше. В качестве задачи предлагается изучить фреймворк XDC от Texas Instruments для создания приложений для DSP и улучшить существующие модули. В частности, нет нужды иметь два разных модуля, которые отличаются всего лишь форматом изображения, имеет смысл "слить" их в один.
Владение C/C++
Кириленко Яков Александрович, Смирнов Кирилл Константинович
Встраиваемый Linux, edge device inference, TFLite, MS Lobe.
Машинное обучение проникло во встраиваемые системы. Не всегда хватает ресурсов обучать нейронку на маломощном устройстве, но есть и такие подзадачи. Мы же сосредоточимся на том, что называется “Edge Device Inference”. Обученную модель импортируют на относительно слабое устройство, которое будет заниматься исключительно распознаванием. Такой подход позволяет не передавать данные пользователя в облако, а для устройств без постоянной связи позволяет использовать возможности нейронных сеток.
В качестве учебной, но полезной прикладной задачи предлагается развернуть на ТРИК модель, предварительно обученную в системе MS Lobe.
Кросс-сборка, встраиваемый Linux, WiFi, управление конфигурациями
В рамках этой темы вы узнаете, как устроена “обычная” загрузка Linux, что используется во встраиваемых системах и как оно отличается от настольных решений. В качестве основной задачи предлагается организовать персистентное хранилище конфигураций, которое не изменяется при обновлении прошивки. Для примера предлагается рассмотреть конфигурацию сети: включить ее в это персистентное хранилище и отображать пользователю в виде QR кода. Другой пример — ускорение загрузки устройства.
Знакомство с Linux. Желательно поверхностное знакомство с различными init и busybox.
Встраиваемый Linux, умный дом.
В “умных домах” естественным образом возникают встраиваемые системы. В этом разделе предлагается познакомиться с техническими внутренностями (протоколами, библиотеками и так далее) того мира, который простые пользователи называют "умным домом". Есть шанс изучить всё как со стороны примитивного конечного устройства, так и со стороны контроллера. Можно “скрестить” Яндекс Алису с ТРИКом: пусть включает моторчик, моргает лампочкой и делает вид, что оно умный сенсор или лампа. С другой стороны, научить ТРИК управлять умными розетками.
Linux
Кросс-сборка, TI DSP, Qt, Video4Linux2
Важной частью проекта является видеоподсистема, включающая в себя обработку изображений с различных камер в разных форматах. В рамках этой подсистемы вы узнаете, как в Linux поддерживается мультимедиа (V4L2), как изображения представляются в памяти компьютера и почему это бывает больно. Предлагаются задачи по добавлению поддержки формата NV16 в драйвер ядра, в DSP модули и в Qt.
Знакомство с Linux, базовое владение C и C++. Желательно поверхностное знакомство с форматами изображений.
Kotlin, JavaFX, TornadoFX, JUnit 5
Конструктор вычислителей — это кафедральный проект по разработке симулятора разных видов конечных автоматов, машин Тьюринга и т.п. для нужд прежде всего образования. Разные автоматы встречаются в курсах на матмехе довольно часто, а показывать, как всё работает, приходится на доске. Конструктор вычислителей пишут уже больше года, есть десктопная версия (на Kotlin) и веб-версия (на TypeScript). В летней школе предлагается поработать именно над десктопной версией, довести её до релиза и внедрения. Задачами, в частности, будут:
Проект может быть интересен тем, кто хочет хочет развиваться в области языков программирования и компиляторов.
https://github.com/spbu-se/KotlinAutomataConstructor (там есть и демо его работы).
Иметь опыт работы на Kotlin или большое желание его изучить, JavaFX будет плюсом. Про автоматы знать не надо.
Илья Муравьев (tg: @ilyamuravjov), научный руководитель — Литвинов Юрий Викторович
C++, opencv
ADAS — система дополненной реальности для помощи водителя на дороге, в которой используются различные сенсоры для моделирования окружающего мира, в том числе камера. Среди функций ADAS предупреждение о покидании полосы, предупреждение о столкновении, дополненная навигация и прочие. Для тестирования оценки качества работы ADAS необходимо иметь ground truth data (идеальный выход алгоритмов) полос движения, автомобилей, пешеходов, направления дороги и прочее. Однако, ручная разметка ground truth data — очень долгий процесс, к тому же не всегда точный из-за человеческого фактора. В рамках данного проекта предлагается автоматизировать процесс создания ground truth data, а также заняться анализом метрик тестирования ADAS.
C++
Мария Сергеевна Осечкина, osechkina.masha@gmail.com
C++, Python
В прошлом году наша команда на школе вела проект Desbordante, в рамках которого участники занимались разработкой веб-фронтенда для самого высокопроизводительного open-source профайлера данных в мире. Вдохновленные прошлыми результатами, мы захотели повторить успех и в этом году тоже. Однако, возникли проблемы: за прошедший год проект усложнился настолько, что за три недели школы нет никакой возможности сделать в нем что-либо осмысленное :(
Поэтому в этом году мы решили провести полностью учебную дорожку. На ней мы просто поучим всех желающих писать веб-приложения, дадим базовые знания, которые потом при желании можно будет развить (для чего мы тоже дадим площадку). Наш курс посвящен React и NodeJS, программа есть тут. Мы будем давать задания и смотреть ваши пулл-реквесты. Настоящих лекций будет мало, но мы дадим материалы и будем регулярно проводить Q&A сессии. Задания будут как индивидуальные, так и групповые. Чтобы было интересно, задания будут оцениваться в баллах, это отразится на сертификате. Еще возможен теорзачет. Так как у нас именно учебная дорожка, то участия в “защитах” проектов не предполагается.
Программа рассчитана на людей “с нуля”, но мы можем ее адаптировать и под более высокий уровень, если придут не новички. По количеству мест: мы не знаем насколько это всё будет интересно людям и сколько к нам придут. До девяти человек должно быть без проблем, если будет больше — мы можем устроить отбор.
Дорожка поддерживается компанией Unidata, дошедшие до конца получат сертификаты от компании и попадут “на карандаш” отделу кадров (в хорошем смысле). Кроме того, лучших позовем в Desbordante и MAP — open-source проекты, которые позволят вам закрепить полученные навыки в серьезном проекте и начать собирать портфолио проектов.
Что у нас по итогам школы получилось в прошлом году
Дорожку ведут: Антон Чижов (СПбГУ), Владислав Макеев (СПбГУ), Георгий Чернышев (СПбГУ, Юнидата).
Python, C++, Docker
Planes are basic primitives in man-made environments that could be extracted from 3D data (LiDARs, depth cameras). Those primitives can serve as landmarks in SLAM for localization and mapping of autonomous systems (self-driving cars, indoor robots – service robots, warehouse robots). Planar SLAM project is devoted to research on these primitives in two directions: (1) develop methods for plane extraction from heterogeneous sensors and (2) elaborate on how those primitives could be used in SLAM backend.
To get intuition on SLAM and its application in robotics: https://ieeexplore.ieee.org/document/7747236
Current state: we have a benchmark of existing plane extraction approaches for depth camera and LiDAR, that includes labeled dataset, metrics, performance evaluation of existing methods for plane extraction. We have also shown the possibility of a full SLAM pipeline with best of these plane extraction algorithms on synthetic data using SLAM backend solution implemented in mrob. As a result of our previous work we have a repository with well-prepared docker images for fast and convenient usage of these algorithms. As a next step we need a close look at the top 3 algorithms for possible optimizations and fine-tuning of them for real SLAM data.
Form for candidates: https://docs.google.com/forms/d/e/1FAIpQLSdd7QJShj0fFqBsEfMvB1M2gmzfXZO3-bqn6KcgnKee8xWySA/viewform
Task 1 (1 student). Plane extraction - CAPE The task is to carefully review paper and existing implementation of the plane extraction algorithm called CAPE and adopt it for the real SLAM pipeline based on data from TUM RGB-D and ICL NUIM datasets.That includes the next subtasks:
experience with any mentioned technologies will be a great bonus, but we don't expect that students should have a strong background in them, the most important thing is to be open to work intensely and hard, and don't be scared a lot from math.
Anastasiia Kornilova (Mobile Robotics Lab, Skoltech), Dmitrii Iarosh (SPBU), Arthur Saliou (SPBU)
The task is to carefully review paper and existing implementation of the plane extraction algorithm called PEAC and adopt it for the real SLAM pipeline based on data from TUM RGB-D and ICL NUIM datasets.
That includes the next subtasks:
Python
The important intermediate step between plane extraction and SLAM backend execution is plane association. It is a process of matching planes with themselves in different frames of the sequence. There are several known methods for this task which are used in real SLAM algorithms like https://arxiv.org/pdf/2203.02882.pdf, https://www.cs.cmu.edu/~kaess/pub/Yang16iros.pdf, http://www.stefanorosa.it/preprints/ias2013-87.pdf. The task is to implement them as a convenient instrument for plane processing and measure the quality of these algorithms on real SLAM data.
Experience with any mentioned technologies will be a great bonus, but we don't expect that students should have a strong background in them, the most important thing is to be open to work intensely and hard, and don't be scared a lot from math.
Android (Java/Kotlin), C++, JNI, Python, technologies on porting DL networks on mobile devices
Globally, this project is aimed to solve the next problem. Imagine, that you have a huge environment (shopping mall, business center) and, using a typical user smartphone and photo from it, your algorithm should calculate in what part of the building it was captured. Such a system is devoted to help visitors to localize in an unknown environment and build a route to the room or shop they exactly need. To do this, we need two components: (1) design a system that will scan environment and create map of the building and (2) develop smartphone application that, using built map and photo from smartphone's camera, will calculate approximate user location.
Task (2 students). Demo Android-application with keypoints detection from images in real time
Important brick in the second component (smartphone app) is to extract keypoints and their descriptors from images directly on the smartphone in soft real time. There are two types of keypoints: classical (SIFT/ORB/SURF, available in OpenCV) and learnable, that use deep learning network (i.e. SuperPoint). The task for summer school is to develop demo Android-application that will continuously capture image from the smartphone, calculate classical and learnable keypoints and visualize them.
This includes the next subtasks:
Form for candidates:https://docs.google.com/forms/d/e/1FAIpQLSdd7QJShj0fFqBsEfMvB1M2gmzfXZO3-bqn6KcgnKee8xWySA/viewform
Anastasiia Kornilova (Mobile Robotics Lab, Skoltech), Timofey Pushkin (SPBU)