Разработка алгоритма полуавтоматического формирования большого набора данных для обучения нейронных сетей в задачах детекции объектов
Целью данного проекта является разработка и реализация алгоритма полуавтоматического формирования большого набора данных для обучения нейронных сетей в задачах детекции объектов на фото- и видеоизображениях.
Результаты проекта могут быть использованы при разработке приложений связанных с дистанционным зондированием Земли, наземным мониторингом, медицинскими исследованиями, сельским хозяйством, геологией и др.
Mодули get_images, convert_xml_to_yolo и train_detect могут быть использованы как самодостаточные инструменты для решения практических задач.
Технологии
Инструкция
Загружаем проект с GitFlic командой: git clone https://gitflic.ru/project/artemka_fismat/bv-2024.git
Работа с train_detect - работа с нейронной сетью
Обучение
-
Переходим в каталог train_detect
-
Загружаем YOLOv5 с GitHub командой: https://github.com/ultralytics/yolov5.git
-
В виртуальном окружении устанавливаем необходимые модули командой: pip install -r requirements.txt
-
Если в наличии имеется готовый Dataset в формате YOLOv5, копируем его в католог *train_detect, преименовываем дирректорию вашего набора в dataset или вносим изменения в код файла train_detect.py
-
Корректируем файл .yaml в корне каталога dataset (пример: train_detect/dataset/data.yaml))
-
В файле train_detect.py устанавливаем режим работы mode_switch в True
-
Настраиваем необходимые параметры img_size - размер изображений, batch - батч, epochs - количество эпох yolo_model = ‘yolov5n.pt’
-
Запускаем обучение из IDE или из консоли командой: python3 train_detect.py
Детекция
-
В файле train_detect.py устанавливаем режим работы mode_switch в False
-
Копируем в каталог train_detect/test_data изображение для детекции
-
Запускаем детекцию из IDE или из консоли командой: python3 train_detect.py
Работа с convert_xml_to_yolo
-
Переходим в каталог convert_xml_to_yolo - конвертер аннотаций .xml в .txt (YOLO)
-
В виртуальном окружении устанавливаем необходимые модули командой: pip install -r requirements.txt
-
В файле convert_xml_to_yolo.py настраиваем пути: labels_train_dir - путь до каталога с аннотациями тренировочных данных, annot_train_dir - путь до каталога с аннотациями тренировочных данных в формате .xml. Таким же способом настраиваем пуди дл val - проверочных (валидационных) данных (labels_val_dir и annotation_val_dir).
-
Запускаем конвертацию из IDE или из консоли командой: python3 train_detect.py
Работа с get_images - поисковый робот с поддержкой функции аугментации
-
Переходим в каталог get_images
-
В виртуальном окружении устанавливаем необходимые модули командой: pip install -r requirements.txt
-
В файле search_queries.txt с новой строки перечисляем необходимые запросы
-
Устанавливаем параметр get_augmentation = True в случае если необходима аугментация, False - если нет
-
Параметрами quality = 85 задаем качество, size = [640, 480] - размер, image_count = 1000 - количество необходимых изображений. При включенном режиме аугментации каждое изображение генерирует 12 дополнительных изображений
-
Запускаем детекцию из IDE или из консоли командой: python3 get_images.py
Команда проекта
- Артем Подлегаев
Благодарности
Благодарю всех, кто поддерживал меня в подготовке проекта.
Отдельная благодарность моим родителям и младшей сестре за понимание и поддержку.
Описание
Разработка алгоритма полуавтоматического формирования большого набора данных для обучения нейронных сетей в задачах детекции объектов