Спросить
Войти

ПРОБЛЕМЫ ДЕТЕКТИРОВАНИЯ ОБЪЕКТА НА ИЗОБРАЖЕНИИ В ЗАДАЧАХ ГЛУБОКОГО ОБУЧЕНИЯ В ОБЛАСТИ КОМПЬЮТЕРНОГО ЗРЕНИЯ НА ОСНОВЕ СВЁРТОЧНЫХ НЕЙРОННЫХ СЕТЕЙ

Автор: Кравченко С.В.

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

О ш m х

Кравченко Сергей Вячеславович,

магистрант, кафедра программного обеспечения автоматизированных систем (ПОАС), Волгоградский Государственный Технический Университет (ВолгГТУ),

kravchenko.sgv@gmail.com

Алексеев Алексей Владимирович,

старший преподаватель, кафедра программного обеспечения автоматизированных систем (ПОАС), Волгоградский Государственный Технический Университет (ВолгГТУ), alekseev.yeskela@gmail.com

Орлова Юлия Александровна,

доктор технических наук, Волгоградский Государственный Технический Университет (ВолгГТУ), yulia.orlova@gmail.com

Гринин Игорь Леонидович,

магистрант, кафедра программного обеспечения автоматизированных систем (ПОАС), Волгоградский Государственный Технический Университет (ВолгГТУ)

Матюшечкин Дмитрий Сергеевич,

аспирант, кафедра программного обеспечения автоматизированных систем (ПОАС), Волгоградский Государственный Технический Университет (ВолгГТУ), dm-intervolga@yandex.ru

В статье рассматривается последовательность шагов по сбору данных для последующего обучения свёрточной нейронной сети, используемой для решения задачи детектирования грызуна (крысы или мыши) в лабиринте для лабораторных исследований. В статье приводится описание разработанной утилиты для кадрирования видеозаписей, реализованной с помощью библиотеки OpenCV; приводится описание разработанной утилиты для разметки изображений, реализованной с помощью библиотеки OpenCV; отражен практический опыт применения свободно-распространяемой утилиты LabellMG для разметки изображений с последующим сохранением в форматы PASCAL VOC или YOLO; приводится описание разработанной утилиты для выполнения аугментации изображений, реализуемой с помощью библиотеки albumentations; а также приводится перечень преобразований, выполняемых в процессе аугментации изображений и необходимых для наиболее точного детектирования грызуна (крысы или мыши) в лабиринте для лабораторных исследований.

Введение

Детектирование объекта (object detection) на изображении является одной из основных задач глубокого обучения в области компьютерного зрения, которая решается с помощью свёрточных нейронных сетей (Convolutional Neural Network). Как правило, для достижения хороших результатов глубокие сети должны обучаться на очень большом объёме данных.

Существует несколько возможных способов сбора данных для последующего обучения: создание обучающих примеров из естественных изображений и создание обучающих примеров из искусственных изображений [1].

Примеры для обучения из естественных изображений создаются на основе реальных данных. Применительно к решению текущей задачи детектирования грызуна (крысы или мыши) в лабиринте для лабораторных исследований их создание включает в себя следующие этапы [1]:

- сбор графических данных (запись эксперимента, проводимого над грызуном, на камеру);

- фильтрация (проверка изображений на ряд требований: достаточный уровень освещённости объектов на них, наличие необходимого объекта и т.д.);

- подготовка инструментария для разметки (написание собственного или использование готового);

- разметка (выделение прямоугольником объекта детектирования на изображении и присвоение метки объекту - класса).

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

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

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

Исследование ведётся совместно с Лабораторией фармакоэкономики, цифровой медицины и искусственного интеллекта и Лабораторией нейропсихотропных средств Научного центра инновационных лекарственных средств с опытно-промышленным производством (НЦИЛС) ВолгГМУ в г. Волгоград.

Кадрирование видеозаписей. Описание разработанной утилиты

Сотрудниками Лабораторий НЦИЛС ВолгГМУ были предоставлены видеозаписи, содержащие проведение

экспериментов над грызуном (крысой или мышью) в различных лабиринтах, таких как установка «Открытое поле» (круглая и квадратная), установка «Тест предпочтения места», установка «Приподнятый крестообразный лабиринт», установка «Водный лабиринт Морриса». Эти лабиринты необходимы для проведения экспериментальных исследований по изучению поведения грызунов (крыс и мышей) и факторов, влияющих на него. Количество предоставленных сотрудниками НЦИЛС видеофайлов составляло порядка 1200 с различной продолжительностью (от минуты и более).

Т.к. полученные видеофайлы обладали огромным числом кадров, которое невозможно разметить в адекватные сроки, было решено минимизировать количество кадров для ручной разметки, выбрав, в зависимости от битрейта видеозаписи каждый N-ый кадр для разметки. Так, например, для видеозаписи, имеющей в своём составе 4000 кадров (рисунок 1), при выборке каждого 30 кадра, было необходимо разметить вручную 133 кадра.

Для выборки N-ых кадров для видеозаписи была разработана утилита на языке программирования Python 3.6.8 с применением библиотеки компьютерного зрения OpenCV. Разработанная утилита является консольной программой. Это программа, которая не имеет графического интерфейса - окон, и которая работает в текстовом режиме в черно-белой консоли. Команды в такой программе вводятся с клавиатуры, результаты работы выводятся на экран в текстовом режиме.

- целое число N, обозначающее, что необходимо использовать каждый N-ый кадр. Например, N = 5, это значит, что обрабатывать нужно каждый 5-ый кадр, а 4-ый пропускать. По умолчанию N = 10.

Пример команды для вызова разработанной консольной утилиты: python mark.py «video/video#1.mp4» 10.

На выходе создаётся папка с именем как у видеофайла, но с удалением его расширения («video#1»). Папка включает два элемента: это папка с размеченными кадрами в виде картинок в формате «jpg» и CSV-файл с информацией о размеченных изображениях.

Ниже представлена структура выходного CSV-файла (разделитель - запятая) с разметкой:

image_id,x,y,w,h,x+w,y+h, где:

- imagejd - имя изображения, включая внешнюю папку («images/imagel.jpg»);

- x - левая X координата прямоугольника, начало координат в левом верхнем углу изображения (по-умолча-нию в OpenCV);

- y - верхняя Y координата прямоугольника;

- w - ширина прямоугольника;

- h - высота прямоугольника;

- x+w - правая X координата прямоугольника;

- y+h - нижняя Y координата прямоугольника.

Рисунок 1. Кадр видеозаписи с грызуном (крысой) в лабиринте «Открытое поле»

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

Разработанная консольная утилита была применена для всех видеофайлов, полученных от сотрудников Лабораторий НЦИЛС.

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

Первоначально для разметки данных была разработана специальная утилита. Разработанная на языке программирования Python 3.6.8 с использованием библиотеки компьютерного зрения OpenCV утилита принимала на вход следующие параметры командной строки: - путь до видеофайла. Например, «video/video#1.mp4»;

Рисунок 2. Разметка кадра с помощью разработанной утилиты

Разработанная утилита позволяла:

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

- перетащить прямоугольник. Если прямоугольник существует и клик происходит внутри него, то при зажатой кнопке мыши он перетаскивается;

- отменить прямоугольник - при нажатии кнопки «ESC» прямоугольник отменяется;

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

Но размечать с помощью консольной утилиты с минимальным графическим интерфейсом было сложно

о го А с.

2 О M

о сч о сч

3

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

Разметка данных. Применение утилиты LabelIMG Данная программа возвращает результат разметки в двух форматах: PascalVOC [3] и YOLO [4].

Первый формат представляет собой XML-файл, в котором определяются параметры изображения, а также координаты прямоугольника, который описывает местоположение объекта на изображении (рисунок 3).

Такой XML-файл формируется для каждого изображения. Имя файла разметки совпадает с именем изображения.

7. сохранить файл/файлы разметки в заданном формате;
8. перейти на следующее изображение.

Рисунок 3. Результат разметки утилитой LabellMG в формате PASCAL VOC

Формат YOLO представляется в виде текстового файла (рисунок 4), в котором определяется класс объекта и координаты прямоугольников, описанные значениями x,y,w,h в нормализованном виде.

Помимо текстового файла с разметкой для формата YOLO, также формируется файл classes.txt, в котором указаны имена объектов.

Рисунок 4. Результат разметки утилитой LabellMG в формате YOLO

Разметка объектов в LabellMG происходит в следующей последовательности (рисунок 5) [5]:

1. выбрать директорию с изображениями;
2. выбрать директорию, в которую будут сохраняться файлы разметки;
3. выбрать формат разметки (PascalVOC или YOLO);
4. выбрать инструмент выделения объекта прямоугольником;
5. выделить объект на изображении прямоугольником;
6. задать имя объекта (при повторной операции можно выбрать из списка, под кнопкой ОК) и подтвердить;

Рисунок 5. Разметка кадра с помощью утилиты LabellMG

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

Аугментация данных. Описание разработанной утилиты

Аугментация данных позволяет увеличить в разы объём набора данных и точность обученной модели нейронной сети. Для этого была разработана консольная программа на языке программирования Python 3.6.8, на вход которой подается набор изображений, размеченных ранее. В качестве основной библиотеки для выполнения аугментации данных используется библиотека albumentations [6]. Применение преобразований к каждому изображению происходит в случайном порядке и количестве. К набору изображений были применены следующие преобразования (рисунок 6):

- RandomSizedBBoxSafeCrop - обрезание случайным образом изображения и изменение его размера к некоторому размеру без потери ограничивающих прямоугольников (bboxes). Т.к. видеозаписи имели высокое разрешение (1920x1080), их в первую очередь было необходимо привести к меньшему размеру, например, 640x640;

- VerticalFlip - отражение изображения по вертикали;

- HorizontalFlip - отражение изображения по горизонтали;

- Flip - отражение изображения по горизонтали, по вертикали или и по горизонтали, и по вертикали. Здесь был интересен последний вариант;

- Transpose - транспонирование входного изображения, меняя местами строки и столбцы;

- RandomRotate90 - случайное поворачивание изображения на 90 градусов ноль или более раз;

- Rotate - поворачивание изображения случайным образом из равномерного распределения.

Также впоследствии можно будет применить различные цветовые искажения и эффекты:

- RandomGamma - изменение гаммы изображения случайным образом;

- GaussNoise - применение гауссовского шума к изображению;

- ISONoise - применение цифрового шума к изображению;

- MultiplicativeNoise - умножение изображения на случайное число или массив чисел;

- Blur - размытие изображения с использованием ядра (kernel) случайного размера;

- ToGray - преобразование входного RGB-изображе-ния в изображение в оттенках серого цвета;

- HueSaturationValue - произвольное изменение тона (Hue), насыщенности (Saturation), значения (Value) изображения;

- RGBShift - произвольный сдвиг значений для каждого канала RGB-изображения;

- RandomBrightness - произвольное изменение яркости изображения;

- RandomContrast - произвольное изменение контрастности изображения;

- RandomBrightnessContrast - произвольное изменение яркости и контрастности изображения.

Рисунок 6. Аугментация изображений

Заключение

В ходе сбора данных для решения задачи детектирования грызуна (крысы или мыши) в лабиринте для лабораторных исследований был разработан ряд вспомогательных инструментов. Собранные данные теперь можно использовать для обучения модели свёрточной нейронной сети, которая будет определять местоположение грызуна (крысы или мыши) на кадрах видеозаписей, представленных сотрудниками Лабораторий НЦИЛС.

Литература

1. Аугментация (augmentation, "раздутие") данных для обучения нейронной сети на примере печатных символов [Электронный ресурс] // Хабр — Режим доступа : https://habr.com/ru/company/smartengines/blog/264677/ (дата обращ. 04.06.2020).
2. Подготовка данных для переобучения нейросети для детекции объектов [Электронный ресурс] // NewTechAudit — Режим доступа :

https://newtechaudit.ru/podgotovka-dannyh-detekczia-obektov/ (дата обращ. 04.06.2020).

3. Labelling is a graphical image annotation tool and label object bounding boxes in images [Электронный ресурс] // GitHub — Режим доступа : https://github.com/tzutalin/labellmg (дата обращ. 04.06.2020).
4. M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zis-serman. The Pascal Visual Object Classes (VOC) Challenge. IJCV, pages 303-338, 2010.
5. T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan,P. Doliar, and C. L. Zitnick. Microsoft COCO: Common objects incontext. InECCV. 2014.
6. A. Buslaev, A. Parinov, E. Khvedchenya, V. I. Iglovikov, and A. A.Kalinin, "Albumentations: fast and flexible image augmentations,"arXiv preprint arXiv:1809.06839, 2018.

Problems of detecting an object in an image in deep learning problems in the field of computer vision based on convolutional neural networks Kravchenko S.V., Alekseev A.V., Orlova Yu.A., Grinin I.L.,

Matyushechkin D.S. Volgograd STU

The article considers a sequence of steps to collect data for convolutional neural network training used for rodent (rat or mouse) detection in a maze for laboratory researches. The article contains a description of the tool was developed for video fraiming implemented with OpenCV; a description of the tool that was developed for image labeling implemented with OpenCV; a description of the tool that was developed for image augmentation implemented with albumentations library; a practical experience of using LabellMG open-sourced image annotation tool with saving them to PASCAL VOC or YOLO file formats was reflected; also a list of conversions execute in image augmentation is shown and necessary for the most accurate rodent (rat or mice) detection in a maze for laboratory researches.

augmentation, rodent detection, maze, laboratory animals References

1. Data augmentation for a neural network training using printed

characters as an example [Electronic resource] // Habr - mode of access :

https://habr.com/ru/company/smartengines/blog/264677/ (date of access 04.06.2020).

2. Data preparation for retraining a neural network for an object

detection [Electronic resource] // NewTechAudit — mode of access : https://newtechaudit.ru/podgotovka-dannyh-detekczia-obektov/ (date of access 04.06.2020).

3. Labellmg is a graphical image annotation tool and label object

bounding boxes in images [Electronic resource] // GitHub — mode of access: https://github.com/tzutalin/labellmg (date of access 04.06.2020).

4. M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zisserman. The Pascal Visual Object Classes (VOC) Challenge. lJCV, pages 303-338, 2010.
5. T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan,P. Doliar, and C. L. Zitnick. Microsoft COCO: Common objects incontext. lnECCV. 2014.
6. A. Buslaev, A. Parinov, E. Khvedchenya, V. l. lglovikov, and A.

A.Kalinin, "Albumentations: fast and flexible image augmentations,"arXiv preprint arXiv:1809.06839, 2018.

X X О го А С.

2 О M
СВЁРТОЧНАЯ НЕЙРОННАЯ СЕТЬ ДЕТЕКТИРОВАНИЕ ОБЪЕКТА АУГМЕНТАЦИЯ ИЗОБРАЖЕНИЙ ДЕТЕКТИРОВАНИЕ ГРЫЗУНА ЛАБИРИНТ ЛАБОРАТОРНЫЕ ЖИВОТНЫЕ convolutional neural network object detection image augmentation rodent detection
Другие работы в данной теме:
Контакты
Обратная связь
support@uchimsya.com
Учимся
Общая информация
Разделы
Тесты