Ссылка на репозиторий github здесь

Ссылка на Google Colab здесь

Дорожная карта:

  • Соберите набор данных и пометьте изображения
  • Создайте файл YAML для учебных целей.
  • Экспорт обученного файла (model.pt) в модель TFlite (.tflite)
  • Создайте метаданные для развертывания модели с помощью студии Android.

Кроме того, я также использовал Mediapipe для развертывания другой версии приложения, используя встроенную модель Effectivedet-lite2.

  1. Сбор набора данных

https://idd.insaan.iiit.ac.in/dataset/details/

Было трудно найти наборы данных, включающие индийские автомобили. В конце концов, я решил использовать набор данных FGVD.

Описание: получено с движущейся камеры, установленной на автомобиле (набор данных Fine-Grained Vehicle Detection (FGVD) содержит 5502 изображения сцен с 210 уникальными точечными метками различных типов транспортных средств, организованных в трехуровневую иерархию.

2. Я использовал LabelImg, чтобы пометить каждое изображение, подходящее для обучения yolo v7, и следующий файл YAML.

%%writefile custom_dataset.yaml
train: /content/drive/MyDrive/FINAL_DATASET/images/train
val: /content/drive/MyDrive/FINAL_DATASET/images/valid
test: /content/drive/MyDrive/FINAL_DATASET/images/test

# Classes
nc: 215
names: ['car_Hyundai_Accent', 'truck_Eicher', 'car_MarutiSuzuki_Alto800', … ]

3. Когда этапы предварительной обработки завершены, я приступил к процессу обучения. Я тренировал свою модель на 100 эпох, используя обучающую модель yolov7.

!python train.py — epochs 100 — workers 4 — device 0 — batch-size 8 — data dataset.yaml \  — img 1920 1080 — cfg cfg/training/yolov7.yaml — weights ‘yolov7_training.pt’ \  — name yolov7_vehicle_multi_res — hyp data/hyp.scratch.dataset.yaml \  — multi-scale

4. Чтобы протестировать только что обученную модель:

!python test.py — weights runs/train/yolov7_vehicle_multi_res/weights/best.pt — task test — data dataset.yaml

5. Экспорт модели в tflite

!yolo mode=export model={HOME}/runs/detect/train/weights/best.pt format=tflite

В качестве референса я использовал этот блокнот colab.

6. Затем мне пришлось квантовать модель, чтобы использовать ее в Android Studio, так как модель была довольно большой.

Для этого я использовал этот блокнот colab.

7. Я создал новый проект в студии Android и для запуска модели tflite tensorflow мне пришлось добавить пару зависимостей:

implementation ‘org.tensorflow:tensorflow-lite:+’

В файле build.gradle:

android {
  aaptOptions {
    noCompress "tflite"
    noCompress "lite"
  }

Файл AndroidManifest.xml:

<uses-permission android:name=”android.permission.CAMERA” />

Затем я добавил квантованную модель tflite с метаданными и файл labels.txt в папку с ресурсами.

Готово!

Что касается реализации медиаканала, мне не удалось интегрировать в него свою собственную модель, но я использовал встроенную модель для запуска обнаружения транспортных средств, и она работала довольно хорошо.

Этот репозиторий github от googlesamples очень помог.