Ссылка на репозиторий github здесь
Ссылка на Google Colab здесь
Дорожная карта:
- Соберите набор данных и пометьте изображения
- Создайте файл YAML для учебных целей.
- Экспорт обученного файла (model.pt) в модель TFlite (.tflite)
- Создайте метаданные для развертывания модели с помощью студии Android.
Кроме того, я также использовал Mediapipe для развертывания другой версии приложения, используя встроенную модель Effectivedet-lite2.
- Сбор набора данных
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 очень помог.