Основная директория должна иметь название FamiliaIO
. Внутри необходимо создать
3 вложенные директории в соответствии с номерами практических работ (lab1
,
lab2
, lab3
)
Задача. Разработать библиотеку фильтров с помощью базовых операций над изображениями (матрицами) в OpenCV:
- Функция изменения разрешения изображения.
- Функция применения фотоэффекта сепии к изображению.
- Функция применения фотоэффекта виньетки к изображению.
- Функция пикселизации заданной прямоугольной области изображения.
- Функция наложения прямоугольной одноцветной рамки заданной ширины по краям изображения.
- Функция наложения фигурной одноцветной рамки по краям изображения. Тип фигурной рамки является параметром функции.
- Функция наложения эффекта бликов объектива камеры.
- Функция наложения текстуры акварельной бумаги.
Требования:
- Язык разработки – Python, среда разработки – Spyder или любая другая.
- При реализации функций можно использовать только базовые операции над изображением, нельзя использовать высокоуровневые функции обработки изображений библиотеки OpenCV.
- Скрипт должен содержать набор функций в соответствии с перечнем из постановки задачи и демонстрировать их использование. Входные параметры скрипта: изображение для обработки, тип фильтра, параметры фильтра при наличии таковых. Последовательность работы скрипта включает загрузку исходного изображения, применение функции фильтрации, отображение исходного и отфильтрованного изображения.
- Скрипт должен сопровождаться файлом README.md, в котором дается описание алгоритма реализации каждого фильтра (мини-отчет).
- В шапке файла README.md необходимо указать название практической работы: "Практическая работа №1. Обработка изображений с использованием библиотеки OpenCV".
- Результаты выполнения практической работы должны быть выложены в личный форк репозитория курса, из которого отправлен Pull Request в репозиторий курса. При этом директория практической работы должна содержать скрипт и файл README.md.
Оценивание:
- Наличие корректной реализации отдельной функции и ее демонстрации - 2 балла (максимум - 16 баллов).
- Наличие README - 4 балла.
- Максимальный балл за практическую работу - 20 баллов.
Задача. Разработать приложение для детектирования транспортных средств с использованием обученных нейронных сетей, которые доступны среди "зоопарка" моделей OpenCV. При выборе моделей необходимо обратить внимание на наличие интересующих классов транспортных средств среди детектируемых классов объектов. Архив с кадрами видео доступен по ссылке, разметка в текстовом формате доступна по ссылке.
Требования:
- Язык разработки – Python, среда разработки – Spyder или любая другая.
- При реализации необходимо использовать модуль DNN библиотеки OpenCV.
- Разрабатываемая библиотека должна содержать иерархию классов для детектирования объектов с использованием различных моделей. Необходимо предусмотреть, что использование моделей предполагает применение разных методов предобработки изображений, а также методов постобработки выхода моделей.
- Демонстрационное приложение должно загружать последовательность кадров видео, создавать детектор в соответствии с выбором модели, опционально отображать кадры видео, на которых отрисованы прямоугольниками разных цветов объекты разных классов (цвет соответствует классу объектов), и выводить показатели качества детектирования TPR и FDR. При отображении в левом верхнем углу каждого прямоугольника необходимо написать название класса и достоверность наличия объекта в этом прямоугольнике (точность для отображения вещественного числа – три знака после запятой), над прямоугольником необходимо указать наблюдаемый класс объектов. Путь до набора изображений и модель для детектирования объектов являются параметрами приложения.
- Программное решение должно сопровождаться файлом README.md, в котором для каждой выбранной модели дается описание реализованных алгоритмов предварительной обработки изображений и обработки выхода сети (мини-отчет).
- В шапке файла README.md необходимо указать название практической работы: "Практическая работа №2. Детектирование объектов на изображениях с использованием библиотеки OpenCV".
- Результаты выполнения практической работы должны быть выложены в репозиторий курса. При этом директория практической работы содержит набор разработанных скриптов и файл README.md.
Оценивание:
- Наличие возможности использования одной модели - 5 баллов.
- Наибольшее количество моделей - 3 модели.
- Наличие корректного приложения - 5 баллов.
- Наличие README - 5 баллов.
- Дополнительный балл за качество работы модели - 10 * TPR баллов.
- Максимальный балл за практическую работу - 35 баллов.
Задача. Разработать приложение для классификации изображений известных достопримечательностей
Нижнего Новгорода (Нижегородский Кремль, Дворец труда, Архангельский собор). Набор данных
доступен по ссылке, он содержит фотографии студентов
ИИТММ (директория NNSUDataset
) и фотографии, выгруженные из сети Интернет (директория ExtDataset
).
Директория со сторонними фотографиями также сопровождается текстовым файлом с перечнем ссылок на источники.
Разбиение на тренировочную и тестовую выборки доступно по ссылке.
Приложение должно реализовывать алгоритм "мешок слов" и/или использовать нейросетевые классификаторы.
Входные параметры приложения:
- Путь до директории с данными.
- Файлы разбиения на тренировочную и тестовую выборки.
- Режим работы (обучение и/или тестирование).
- Алгоритм работы ("мешок слов"/нейронная сеть).
- Параметры алгоритма работы.
Последовательность работы приложения:
- Загрузка набора данных.
- Обучение и/или тестирование классификатора. В процессе тестирования необходимо выводить качество решения задачи классификации на тестовой выборке.
Рекомендации и комментарии к выполнению работы:
- При разработке программного кода необходимо учитывать основы модульного и объектно-ориентированного подходов.
- Для повышения качества решения задачи необходимо расширить тренировочный набор данных собственными изображениями или фотографиями интересующих объектов из сети Интернет.
- При реализации алгоритма "мешок слов" необходимо исследовать возможности разных детекторов и дескрипторов.
- Для удобства проверки алгоритма "мешок слов" имеет смысл визуализировать отдельные этапы.
- Выбор метода машинного обучения для построения классификатора при реализации алгоритма "мешок слов" не ограничен.
- При построении нейронных сетей для классификации имеет смысл опираться на идеи "переноса обучения" существующих классификационных моделей дообучать эти модели, поскольку тренировочная выборка имеет небольшие размеры.
Требования:
- Язык разработки – Python, среда разработки – Spyder или любая другая.
- Программное решение должно сопровождаться файлом README.md, в котором дается описание реализованных алгоритмов (мини-отчет).
- В шапке файла README.md необходимо указать название практической работы: "Практическая работа №3. Классификация изображений с использованием библиотеки OpenCV".
- Результаты выполнения практической работы должны быть выложены в репозиторий курса. При этом директория практической работы содержит скрипт и файл README.md.
- Набор из дополнительных фото должен быть выложен в открытый доступ. Если используются сторонние фотографии (или ваши опубликованные где-то в сети), то необходимо рядом с набором положить текстовый файл с ссылками на источники по аналогии с входным набором данных.
Оценивание:
- Наличие разработанной программной реализации алгоритма "мешок слов" - 10 баллов.
- Наличие реализации процедуры обучения и использования сети - 15 баллов.
- Наличие README - 5 баллов.
- Дополнительный балл за качество работы модели - 10 * TPR баллов.
- Максимальный балл за практическую работу - 40 баллов (при наличии реализации алгоритма "мешок слов" и обучения нейросетевой модели).
Отчетность по курсу - зачет. Для получения "зачета" необходимо в процессе сдачи лабораторных работ набрать не менее 75 баллов.