Ультра-простая интеграция распознавания сцен HMS Core ML Kit для создания нового режима управления альбомами

Предисловие

«Позвольте мне показать вам фотографии, которые я сделал перед тем, как отправиться в живописное место, пейзаж очень хороший»

"Да, я тоже собираюсь поиграть, скоро поделись"

……

"А что насчет фотографии, ты ее не нашел?"

«Подождите, в телефоне слишком много фотографий, дайте мне время, чтобы их найти»

Для многих это норма?

Глядя на сотни или даже тысячи фотографий на телефоне, пытаться найти конкретное фото - все равно, что искать иголку в стоге сена, что требует времени и усилий. Можно ли просматривать альбом только от начала до конца и не выполнять поиск по категории элементов на фотографии?

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

Характеристики

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

Распознавание сцены имеет следующие особенности:

  • Распознавание сцен с несколькими типами
    поддерживает 102 вида распознавания сцен и продолжает расти.

  • Высокая точность распознавания
    позволяет распознавать различные объекты и сцены, а точность распознавания высока.

  • Признайте высокую скорость отклика в
    миллисекундах и постоянно оптимизируйте производительность.

  • Простая и эффективная интеграция
    предоставляет интерфейс API и пакет SDK, чтобы облегчить интеграцию с клиентами, упростить работу и снизить затраты на разработку.

Сценарий применения

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

Код разработки

1 Подготовка к разработке

1.1 Настройте AppGallery Connect.

Перед разработкой приложения вам необходимо настроить соответствующую информацию в AppGallery Connect.
Чтобы узнать о конкретных шагах, перейдите по ссылке ниже:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/config-agc-0000001050990353-V5

1.2 Настройте адрес хранилища Maven для HMS Core SDK и завершите интеграцию SDK этой службы.

(1) Откройте файл build.gradle уровня проекта Android Studio.

Вставьте описание изображения сюда
(2) Добавьте плагин HUAWEI agcp и базу кода Maven.

  • Настройте адрес репозитория Maven для HMS Core SDK в «allprojects> repositories».
  • Настройте адрес хранилища Maven для HMS Core SDK в «buildscript> репозитории».
  • Если файл «agconnect-services.json» добавлен в приложение, вам необходимо добавить конфигурацию agcp в «buildscript> dependencies».
buildscript {
    repositories {
        google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
    dependencies {
        ...
        classpath 'com.huawei.agconnect:agcp:1.4.1.300'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

2 Код разработки

Обнаружение неподвижного изображения

2.1 Создайте экземпляр детектора распознавания сцены.

// 方式1:使用默认的参数配置。
MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer();
// 方式2:按自定义配置创建场景识别分析器实例。
MLSceneDetectionAnalyzerSetting setting = new MLSceneDetectionAnalyzerSetting.Factory()
     // 设置场景识别可信度阈值。
     .setConfidence(confidence)
     .create();
MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer(setting);

2.2 Создайте MLFrame с помощью android.graphics.Bitmap, поддерживаемые форматы изображений: jpg / jpeg / png / bmp.

MLFrame frame = new MLFrame.Creator().setBitmap(bitmap).create();

2.3 Выполните распознавание сцены.

// 方式1:同步识别。
SparseArray<MLSceneDetection> results = analyzer.analyseFrame(frame);
// 方式2:异步识别。
Task<List<MLSceneDetection>> task = analyzer.asyncAnalyseFrame(frame);
task.addOnSuccessListener(new OnSuccessListener<List<MLSceneDetection>>() {
    public void onSuccess(List<MLSceneDetection> result) {
        // 场景识别成功的处理逻辑。
    }})
    .addOnFailureListener(new OnFailureListener() {
        public void onFailure(Exception e) {
            // 场景识别识别失败的处理逻辑。
            // failure.
            if (e instanceof MLException) {
                MLException mlException = (MLException)e;
                // 获取错误码,开发者可以对错误码进行处理,根据错误码进行差异化的页面提示。
                int errorCode = mlException.getErrCode();
                // 获取报错信息,开发者可以结合错误码,快速定位问题。
                String errorMessage = mlException.getMessage();
            } else {
                // 其他异常。
        }
    }
});

2.4 После завершения обнаружения остановите анализатор и освободите ресурсы обнаружения.

if (analyzer != null) {
    analyzer.stop();
}

Обнаружение видеопотока

Разработчики могут самостоятельно обработать видеопоток, преобразовать видеопоток в объект MLFrame, а затем выполнить распознавание сцены в соответствии с методом обнаружения статического изображения.

Если разработчик вызывает интерфейс обнаружения синхронизации, он также может использовать встроенный класс SDK LensEngine для реализации распознавания сцены видеопотока. Пример кода выглядит следующим образом:

3.1 Создание анализатора распознавания сцены Поддерживается только анализатор распознавания конечной сцены.

MLSceneDetectionAnalyzer analyzer = MLSceneDetectionAnalyzerFactory.getInstance().getSceneDetectionAnalyzer();

3.2 Разработчик создает класс обработки результатов распознавания «SceneDetectionAnalyzerTransactor», который реализует интерфейс MLAnalyzer.MLTransactor <T>, и использует метод transactResult в интерфейсе для получения результатов обнаружения и реализации определенных сервисов.

public class SceneDetectionAnalyzerTransactor implements MLAnalyzer.MLTransactor<MLSceneDetection> {
    @Override
    public void transactResult(MLAnalyzer.Result<MLSceneDetection> results) {
        SparseArray<MLSceneDetection> items = results.getAnalyseList();
        // 开发者根据需要处理识别结果,需要注意,这里只对检测结果进行处理。
        // 不可调用ML Kit提供的其他检测相关接口。
    }
    @Override
    public void destroy() {
        // 检测结束回调方法,用于释放资源等。
    }
}

3.3 Настройте процессор результатов распознавания для реализации привязки анализатора и процессора результатов.

analyzer.setTransactor(new SceneDetectionAnalyzerTransactor());
// 创建LensEngine,该类由ML Kit SDK提供,用于捕捉相机动态视频流并传入分析器。
Context context = this.getApplicationContext();
LensEngine lensEngine = new LensEngine.Creator(context, this.analyzer)
    .setLensType(LensEngine.BACK_LENS)
    .applyDisplayDimension(1440, 1080)
    .applyFps(30.0f)
    .enableAutomaticFocus(true)
    .create();

3.4 Вызвать метод запуска, запустить камеру, прочитать видеопоток и идентифицировать.

// 请自行实现SurfaceView控件的其他逻辑。
SurfaceView mSurfaceView = findViewById(R.id.surface_view);
try {
    lensEngine.run(mSurfaceView.getHolder());
} catch (IOException e) {
    // 异常处理逻辑。
}

3.5 После завершения обнаружения остановите анализатор и освободите ресурсы обнаружения.

if (analyzer != null) {
    analyzer.stop();
}
if (lensEngine != null) {
    lensEngine.release();
}

ДЕМО выставка

Вставьте описание изображения сюда


Исходная ссылка:https://developer.huawei.com/consumer/cn/forum/topic/0201404868263200225?fid=18

Автор: передай привет

рекомендация

отblog.51cto.com/14772288/2551461