Skip to content

Создаем свою пользовательскую модель

DivanX10 edited this page Sep 2, 2022 · 4 revisions

Как создать свою пользовательскую модель для распознавания чего либо? Это может быть распознавание что делает человек, смеется, едет на велосипеде, лежит, бежит, пришел курьер и так далее.

Фото взяты от сюда https://github.com/OlafenwaMoses/Action-Net

Что делают люди?

Дерутся

images_01

Бегают

images_02

Едят

images_03

Краткая видеоинструкция по созданию своей модели распознавания. Ее понять сразу будет не просто, поэтому я сделаю пошагово и на скриншотах

Для наглядного понимания я покажу на своем примере, как у меня настроена пользовательская модель DeepStack в Synology

images_04

Путь к пользовательской модели указан свой docker/Deepstack/custom models/ /modelstore/detection

images_05 images_06

Добавляем 4 строки и ставим True

  • VISION-FACE - распознавание лиц
  • VISION-DETECTION - распознавание объектов
  • VISION-SCENE - распознавание сцен
  • MODELSTORE-DETECTION - распознавание пользовательских моделей

images_07

Проверим есть ли папка modelstore и подпапка detection, если их нет, то нужно создать. Открываем терминал нашего контейнера DeepStack_Server, нажимаем на "Создать", далее появится кнопка "bash" и в консоли вводим команду. Я использую MC поэтому и установил MC командой apt install mc. Можете просто создать папки командой

$ mkdir /modelstore/detection

images_08

Вот так должна выглядеть папка modelstore и подпапка detection, где будут лежать наши пользовательские модели для распознавания

images_09

Так будет выглядеть доступ с samba

images_10

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

images_30

На этом настройка контейнера 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

Так выглядит распознавание пользовательской модели

images_11 images_12

Создаем свою пользовательскую модель

  1. Скачиваем программу labelImg отсюда. Инструкцию по программе labelImg можно прочитать здесь

  2. Создаем две папки test и train, они могут находиться где угодно, важно, чтобы они были в одном месте

images_31

  1. Открываем программу и выбираем папку train с изображениями, с которыми будем работать. Далее выделяем нужные нам объекты и присваиваем им названия.

images_13 images_14

Перед тем, как перейти к следующему изображению, нужно сохранить, а после переходим к следующей картинке

images_15

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

images_16

  1. После того, как вы обработали изображение и все сохранилось в папке train, скопируем все содержимое в папку test. У нас будут одинаковые файлы в двух папках

  2. Делаем архивный файл двух папок и называем как угодно, например mask-dataset.zip

images_32

  1. Теперь нам нужно все это дело прогнать либо в Training on Google Colab with Free GPUS, либо поднимаете свой сервер по этой инструкции. Я собирал через Training on Google Colab with Free GPUS

  2. Нажимаем на иконку "Папка"

images_17

  1. Загрузим наш архивный файл mask-dataset.zip

images_18 images_19 images_20 images_33

  1. Запустим установку DeepStack Trainer, кликнув на кнопку, далее нажимаем на "Выполнить" и ждем когда закончится установка DeepStack Trainer

images_21 images_22

  1. После успешной установки DeepStack Trainer появится папка deepstack-trainer

images_23

  1. Разархивируем наш файлик mask-dataset.zip в папку /content командой
!unzip /content/mask-dataset.zip -d /content/mask-dataset

images_24 images_25

  1. Запускаем обучение и ждем полного окончания процесса, ждать может придется долго
!python3 train.py --dataset-path "/content/mask-dataset"

images_26

Процесс пошел успешно, ждем дальше пока не будет Epoch 299/299

images_27

Вот так выглядит завершенный процесс, после чего скачиваем готовый файлик к себе и именуем как угодно. Я назвал его courier.pt. После чего останавливаем контейнер DeepStack и закидываем этот файлик courier.pt в папку /modelstore/detection

images_28 images_34 images_29

Запускаем контейнер и у нас начинает работать пользовательская модель распознавания. На этом все.