-
Notifications
You must be signed in to change notification settings - Fork 2
Создаем свою пользовательскую модель
Как создать свою пользовательскую модель для распознавания чего либо? Это может быть распознавание что делает человек, смеется, едет на велосипеде, лежит, бежит, пришел курьер и так далее.
Фото взяты от сюда https://github.com/OlafenwaMoses/Action-Net
Что делают люди?
Дерутся
Бегают
Едят
Краткая видеоинструкция по созданию своей модели распознавания. Ее понять сразу будет не просто, поэтому я сделаю пошагово и на скриншотах
Для наглядного понимания я покажу на своем примере, как у меня настроена пользовательская модель DeepStack в Synology
Путь к пользовательской модели указан свой docker/Deepstack/custom models/ /modelstore/detection
Добавляем 4 строки и ставим True
- VISION-FACE - распознавание лиц
- VISION-DETECTION - распознавание объектов
- VISION-SCENE - распознавание сцен
- MODELSTORE-DETECTION - распознавание пользовательских моделей
Проверим есть ли папка modelstore и подпапка detection, если их нет, то нужно создать. Открываем терминал нашего контейнера DeepStack_Server, нажимаем на "Создать", далее появится кнопка "bash" и в консоли вводим команду. Я использую MC поэтому и установил MC командой apt install mc. Можете просто создать папки командой
$ mkdir /modelstore/detection
Вот так должна выглядеть папка modelstore и подпапка detection, где будут лежать наши пользовательские модели для распознавания
Так будет выглядеть доступ с samba
В журнале должны отобразиться загруженные в папку наши пользовательские модели. Загружать нужно при выключенном контейнере
На этом настройка контейнера DeepStack server закончена.
Ставим интеграцию HASS Deepstack object и в конфиге добавляем строчку custom_model
image_processing:
- platform: deepstack_object
ip_address: #указываем IP адрес сервера deepstack
port: #указываем порт сервера deepstack
custom_model: courier #тут указываем название своей пользовательской модели
confidence: 60
save_file_folder: /config/www/deepstack/snapshots/
save_timestamped_file: True
always_save_latest_file: True
source:
- entity_id: camera.eufy_camera
name: detect_object_eufy_camera
targets:
- target: person
confidence: 60
- target: animal
confidence: 50
- target: other
confidence: 50
Так выглядит распознавание пользовательской модели
Создаем свою пользовательскую модель
-
Скачиваем программу labelImg отсюда. Инструкцию по программе labelImg можно прочитать здесь
-
Создаем две папки test и train, они могут находиться где угодно, важно, чтобы они были в одном месте
- Открываем программу и выбираем папку train с изображениями, с которыми будем работать. Далее выделяем нужные нам объекты и присваиваем им названия.
Перед тем, как перейти к следующему изображению, нужно сохранить, а после переходим к следующей картинке
- После каждого сохранения будут создаваться текстовые файлики с точно таким же именем как и графический файл
-
После того, как вы обработали изображение и все сохранилось в папке train, скопируем все содержимое в папку test. У нас будут одинаковые файлы в двух папках
-
Делаем архивный файл двух папок и называем как угодно, например mask-dataset.zip
-
Теперь нам нужно все это дело прогнать либо в Training on Google Colab with Free GPUS, либо поднимаете свой сервер по этой инструкции. Я собирал через Training on Google Colab with Free GPUS
-
Нажимаем на иконку "Папка"
- Загрузим наш архивный файл mask-dataset.zip
- Запустим установку DeepStack Trainer, кликнув на кнопку, далее нажимаем на "Выполнить" и ждем когда закончится установка DeepStack Trainer
- После успешной установки DeepStack Trainer появится папка deepstack-trainer
- Разархивируем наш файлик mask-dataset.zip в папку /content командой
!unzip /content/mask-dataset.zip -d /content/mask-dataset
- Запускаем обучение и ждем полного окончания процесса, ждать может придется долго
!python3 train.py --dataset-path "/content/mask-dataset"
Процесс пошел успешно, ждем дальше пока не будет Epoch 299/299
Вот так выглядит завершенный процесс, после чего скачиваем готовый файлик к себе и именуем как угодно. Я назвал его courier.pt. После чего останавливаем контейнер DeepStack и закидываем этот файлик courier.pt в папку /modelstore/detection
Запускаем контейнер и у нас начинает работать пользовательская модель распознавания. На этом все.