В этой статье мы научимся использовать модели EfficientDet в Android с записью с камеры в реальном времени. Итак, в приложении
1: Мы будем отображать живые кадры с камеры с помощью API camera2.
2: Передайте кадры этой прямой трансляции с камеры в модель обнаружения объектов.
3: Нарисуйте прямоугольники вокруг обнаруженных объектов в режиме реального времени.
и модели, которые мы будем использовать
1: Эффективный Дет lite0
2: Эффективный Дет лайт1
3: EfficientDet lite2
4: Эффективный Дет лайт3
Итак, начнем.
****Если вы хотите обучить свои собственные модели обнаружения объектов для Android и IOS, присоединяйтесь к нашему новому курсуОбучение моделей обнаружения объектов для Android и IOSна удемы. На этом курсе вы научитесь
1. Обучение пользовательской модели обнаружения объектов для Android и IOS
2. Используйте эту модель на Android с изображением и записью с камеры в реальном времени
3. Используйте модели SSD MobileNet, EfficientDet и YOLO в Android****
Присоединяйтесь сейчас и воспользуйтесь огромной скидкой
Получение кода начального приложения
Первый шаг — получить код приложения с Github. Поэтому, если вы используете язык java, возьмите код из здесь, а если вы используете kotlin, возьмите код из здесь
Получение моделей EfficientDet
Если у вас есть модели Effectivedet, то вы можете пропустить этот шаг, в противном случае вы можете перейти по этой ссылке и скачать все модели Effectivedet в формате tflite (Tensorflow lite) по этой ссылке
Вы найдете все 4 модели Effectivedet в формате tflite.
Запуск кода начального приложения
После получения кода стартового приложения
1: открыть код проекта внутри студии Android
2: Запустите стартовое приложение
В этом приложении мы используем нашу собственную обученную эффективную модель с видеозаписью с камеры в реальном времени, и эта модель может распознавать четыре разных фрукта: яблоко, арбуз, киви и ананас.
Поэтому, когда приложение запускается, мы показываем живые кадры с камеры, используя API camera2. Затем мы получаем кадры с этой прямой трансляции с камеры один за другим и передаем их в нашу модель обнаружения объектов. После этого на основе результатов, возвращенных моделью, мы рисуем прямоугольники вокруг обнаруженного объекта в реальном времени.
Использование моделей EfficientDet в стартовом приложении
Во-первых, вам нужно скопировать файл модели и вставить его в папку активов проекта Android Studio. Поэтому, если вы хотите использовать EfficientDet lite0, скопируйте этот файл и вставьте его в папку с ресурсами.
Затем откройте файл MainActivity.java, и здесь нам просто нужно изменить имя файла модели, чтобы использовать модель Effectivedet lite0. Поэтому измените этот файл model.tflite на Effectivedet_lite0.tflite, чтобы наша модель Effectivedet_lite0 использовалась вместо этого файла model.tflite.
После изменения этого имени вы можете просто запустить приложение и протестировать его, и будет использоваться эта модель приложения Effectivedet lite0.
Использование других моделей EfficientDet
Если вы хотите использовать другие модели EffectiveDet, такие как efficiency lite 1, lite 2 или lite3, вам просто нужно добавить эту модель в папку с ресурсами и изменить имя в MainActivity, и все.
Пояснение кода
В этом приложении мы выполняем обнаружение объектов с помощью модуля с именем lib_task_api, и этот модуль добавляется в проект.
Весь наш код, связанный с обнаружением объектов, находится в этом модуле, и мы используем класс TFLiteObjectDetectionAPIModel этого модуля для обнаружения объектов в нашем приложении. Сначала мы создаем объект этого класса и передаем ему имя файла нашей модели. И когда этот объект будет создан, наша модель будет загружена. Не изменяйте другие значения параметров, такие как имя файла метки, размер входного изображения и квантование, потому что они не используются и будут взяты из самого файла нашей модели. Поэтому нам не нужно их указывать.
Затем мы используем метод recognizeImage этого класса и передаем изображение, которое пользователь выбрал из галереи или снял с помощью камеры. И внутри этого метода наше изображение будет передано модели, и мы получим результаты, возвращаемые моделью.
Затем на основе результатов мы нарисуем прямоугольники вокруг обнаруженных объектов.
Обучение моделей обнаружения объектов для Android и IOS
Если вы хотите обучить собственные модели обнаружения объектов для Android и IOS, присоединяйтесь к нашему новому курсу udemy. В этом курсе вы научитесь
1: Обучить пользовательскую модель обнаружения объектов для Android и IOS
2: Используйте эту модель в Android с изображением и записью с камеры в реальном времени.
3. Используйте модели SSD MobileNet, EfficientDet и YOLO на Android с изображениями и записью с камеры в реальном времени.