Курс: Современные проблемы искусственного интеллекта и цифровой экономики

План занятий

       1. Ознакомиться со следующими курсами:

      а) OpenCV шаг за шагом:
http://robocraft.ru/page/opencv/

      б) Курс: Aнaлиз изoбpажeний и видеo (лектор: H.C. Bacильeвa). Пpeзeнтaции:
https://compscicenter.ru/courses/images-and-video-1/2013-autumn/classes/
или
      Курс: Aнaлиз изoбpажeний и видеo (лектор: A.C. Apтамoнoв). Пpeзeнтaции и Bидеo лeкции:
https://compscicenter.ru/courses/images-and-video-1/2019-autumn/classes/

      в) Курс: Aнaлиз изoбpажeний и видеo 2 (лектор: H.C. Bacильeвa и A.C. Apтамoнoв). Пpeзeнтaции:
https://compscicenter.ru/courses/images-and-video-2/2016-spring/classes/


       2. Выбрать, сформулировать и согласовать практическое задание.

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

       4. Пройти тест по курсу: "Современные проблемы искусственного интеллекта и цифровой экономики" на iq.karelia.ru набрав не менее 3.5 баллов (тест составлен по материалам лекции и курсов представленных выше).

      Посещение занятий ОБЯЗАТЕЛЬНОЕ ! Не посещать можно только тому, кто все сделал и сдал.
      Ко всем нарушившим какие-либо сроки или правила оформления, а также имеющим прогулы (безделие и уход с занятий приравниваются к прогулам) - будут применяться санкции, в виде дополнительных заданий и расширенной отчетности. За каждое нарушение будет даваться доп. задание, все эти задания необходимо будет выполнить и представить к финальному отчету. Поэтому просьба отнестись ко всем требованиям серьезно!

Задания для практических занятий

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

      Ниже предложены варианты заданий, также можно придумать собственный вариант задания. Для выполнения сложного задания возможно объединение в группу (2-3 студента). Выбранное задание требуется конкретизировать для определенной задачи, распределить задачи между исполнителями и обязательно согласовать с преподавателем.

      В результате выполнения задания оформляется отчет и представление работы программы.

      На выбор задания, формулировку и согласование отводится 2 недели (c 8.02.2024). К 22 Февраля задание должно быть выбрано, конкретно сформулировано, согласовано и с указанием Фамилии, Имени, Отчества и номера группы исполнителей (с распределением конкретных работ между исполнителями) в виде ТЗ выслано мне на почту.

      До 11 Апреля 2024 необходимо представить промежуточные результаты работы над заданием (промежуточный отчет должен быть выслан на почту). Тем, кто к этому моменту уже выполнит задание полностью - необходимо предоставить только отчет (промежуточный отчет не нужен).

      Отчет должен быть выслан почту не позже чем за неделю до представления результатов работы на занятии (9 Мая последний срок когда принимаются отчеты).

      Представление результатов своей работы преподавателю (после принятого отчета), с пояснениями по содержанию отчета и исходникам, делается на занятиях до 16 Мая (включительно).
      Обращаю внимание, что 16 Мая 2024 года (до 16:50) - последний срок сдачи работ, после этого, работы не принимаются!

До окончания приема работ осталось:

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

      Отчет выполняется в электронном виде (в формате MS Word), оформляется как отчет по проекту или программе и помимо формальных частей таких как: Титульный лист, Содержание, Введение и т.д. должен содержать:

- формулировку (постановку) задачи;
- описание объема выполненной работы каждым исполнителем по отдельности. Должно быть конкретно описано кто и что делал, вплоть до перечисления частей кода, процедур/функций, скриптов, алгоритмов, частей интерфейса, схем и т.д. В общем так, чтобы из отчета сразу было ясно - какой объем работы выполнил каждый исполнитель;
- описание алгоритма и методов решения, каким образом реализовано (взаимодействие программ, библиотек, скриптов и всего того что использовалось, порядок их выполнения, какие части для чего и что в них делается, требования для работы скриптов и программ, какие параметры и каким образом передаются и т.д.), какие среды разработки и библиотеки использовались, на заимствованный код или часть кода необходимо ОБЯЗАТЕЛЬНО предоставить ссылку - откуда взят, приведены все необходимые формулы и расчеты;
- представлен внешний вид передней панели программы с описанием ее элементов или описание параметров командной строки (если передняя панель отсутствует);
- Руководство Пользователя по работе с разработанной программой, порядок действий, описание всех необходимых параметров, ограничений и т.п.;
- представлен отчет о тестировании программы, с приведением результатов этого тестирования, подтверждающих работоспособность программы;
- в Заключении, по результатам проделанной роботы, должны быть сделаны выводы, с описанием возможных применений данной программы, указаны преимущества и недостатки использованного алгоритма, как можно было бы улучшить данный алгоритм или метод, что можно было бы еще добавить или изменить;
- список использованной литературы (ссылки на источники, которые использовались для создания программы);
- исходный код, обязательно снабженный подробными комментариями;
- к отчету прилагаются сами исходники и готовые программы, выполненного задания (без мультимедия приложений - картинок, видео и музыки) и все это отправляется на почту, после этого на занятии делается представление своей работы преподавателю, с комментариями по исходникам.

      Правила оформления программной документации можно посмотреть здесь.

Варианты заданий

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

       2. Задача на фильтрацию изображения (должна быть достаточно сложная задача, требующая применения специальных алгоритмов или совокупности алгоритмов), улучшение характеристик изображения для дальнейшего поиска объектов на нем, например:
  a) убирание цвета (задается порог или выбирается автоматически);
  b) выделение границ, углов изображений;
  c) повышение яркости, контрастности, резкости и т.д.;
  d) разделение картинки на разные цветовые каналы;
  e) убирание, сглаживание шумов (методы медианной фильтрации или еще какие).

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

       4. Распознавание штрих-кодов: Линейных или двумерных.

  a) Линейный штрих-код позволяет получать информацию по объекту: Что это? EAN-8, EAN-13.
http://ru.wikipedia.org/wiki/Universal_Product_Code
http://ru.wikipedia.org/wiki/EAN-8
http://ru.wikipedia.org/wiki/Сравнение_характеристик_штрихкодов

  b) Двумерный штрих-код позволяет получать информацию по объекту:
Кто это? Что это? Какие свойства? Кто это сделал? Откуда перемещается? Куда перемещается?
Примеры двумерных штрихкодов: PDF417, DataMatrix, Matrixcode, QR, DataGlyph, AztecCode.
http://ru.wikipedia.org/wiki/Aztec_Code
http://ru.wikipedia.org/wiki/Data_Matrix

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

       5. Распознавание отпечатков пальцев. Требуется сначала предоставить образец отпечатка, а затем программа должна распознавать, соответствует ли отпечаток отпечаткам в базе или нет.

       6. Распознавание сигналов, голоса и т.п. Представить образец сигнала для анализа и осуществлять поиск в текущем сигнале. Сигнал может содержать несколько частот. Программа должна сообщать, когда образец сигнала соответствует текущему сигналу.

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

       8. Анализ видеоизображения неподвижного или движущего объекта и улучшение качества изображения заданной (на видео) части объекта средствами OpenCV (например, улучшение качества изображения номерного знака движущегося автомобиля, при этом номерной знак на каждом в отдельности кадре может быть не читаемым, но при сложении всего видеоряда, на котором присутствует искомый объект изображение должно становиться более четким). При этом нужно максимально учитывать четкие части искомого изображения и не учитывать нечеткие (на уровне шумов).
Возможны варианты этого задания в виде: определения по фото или видео с камеры входит человек или выходит из помещения, въезжает машина во двор или выезжает, определение противправных действий (незнакомый человек пытается попасть в дом или машину).

       9. Обнаружение и распознавание текста. Задача обнаружить текст на картинке и распознать его, т.е. перевести в ASCII-текст.

       10. Сформулировать свое собственное задание, соответствующее тематике данного курса. Сформулированное задание необходимо согласовать!


       Выбранную задачу нужно четко сформулировать и согласовать!


       Для выполнения заданий использовать библиотеку OpenCV, возможно использование любых сред программирования: Pascal, С++, PHP, Java, Phyton, Delphy, Visual С++, LabVIEW и т.д.

       OpenCV - Библиотека компьютерного зрения с открытым исходным кодом (Open Source Computer Vision Library), содержащая более 500 функций, реализованных под выполнение в реальном времени. Библиотека содержит алгоритмы для обработки, реконструкции и очистки изображений, распознания образов, захвата видео, слежения за объектами, калибровки камер и др. Есть функции, использующие GPU видеоускорителей для ускорения вычислений.

Желающие могут установить себе OpenCV самостоятельно по следующей инструкции:

       Установка OpenCV (на примере OpenCV-2.4.3) и настройки для Visual Studio Express 2008 ver.9 (VC9). Инструкция для настроек под Windows.


Основная и дополнительная литература

       1. Старовойтов В.В. Цифровые изображения: от получения до обработки / В.В. Старовойтов, Ю.И. Голуб - Минск: ОИПИ НАН Беларуси, 2014. - 202 с. - ISBN 978-985-6744-80-1.

       2. Краткий курс теории обработки изображений. [Электронный ресурс] / Автор - И.М.Журавель. - Режим доступа: https://hub.exponenta.ru/post/kratkiy-kurs-teorii-obrabotki-izobrazheniy734 , свободный. Яз. Рус. - (Дата обращения: 07.02.2024).

       3. Васильева Н.С., Анализ изображений и видео [Электронный ресурс] / Computer Science клуб. - Электрон. дан. - [Без места], 2007 - : - 2012. - Режим доступа: http://logic.pdmi.ras.ru/csclub/courses/videoimageanalysis, свободный. - Яз. англ., рус. - (Дата обращения: 07.02.2024).

       4. Apтамoнoв A.C., Анализ изображений и видео [Электронный ресурс] / Computer Science Center. - Электрон. дан. - [Без места], 2019 - Режим доступа: https://compscicenter.ru/courses/images-and-video-1/2019-autumn/classes/ , свободный. - Яз. англ., рус. - (Дата обращения: 07.02.2024).

Литература по OpenCV и ссылки на источники

       1. OpenCV шаг за шагом:
http://robocraft.ru/page/opencv/

       2. Обработка изображений и распознавание образов с использованием OpenCV (с примерами):
http://recog.ru/category/opencv/

       3. Описание по OpenCV (на английском):
http://opencv.org

       4. Пример - Распознавание плоских объектов OpenCV 2.4 (на русском):
http://habrahabr.ru/post/155651/

       5. Примеры использования OpenCV:
http://robocraft.ru/tag/OpenCV/

       6. Compvision.ru - Сайт о машинном зрении:
http://www.compvision.ru/forum/

Вопросы для тестирования по курсу: "Современные проблемы искусственного интеллекта и цифровой экономики" на iq.karelia.ru