Intégration ultra-simple de la reconnaissance de scène HMS Core ML Kit pour créer un nouveau mode de gestion d'album

Préface

"Laissez-moi vous montrer les photos que j'ai prises avant de me rendre sur le site pittoresque, le paysage est très beau"

"Ouais, il se trouve que je vais jouer aussi, partagez-le bientôt"

……

"Et la photo, tu ne l'as pas trouvée?"

"Attendez une minute, il y a trop de photos dans le téléphone, laissez-moi le temps de les trouver"

Est-ce la norme pour de nombreuses personnes?

En regardant des centaines, voire des milliers de photos au téléphone, essayer de trouver une photo en particulier, c'est comme trouver une aiguille dans une botte de foin, ce qui demande du temps et des efforts. Est-il possible de parcourir l'album uniquement du début à la fin et ne peut pas effectuer de recherche en fonction de la catégorie d'éléments de la photo?

Bien sûr, la fonction de reconnaissance de scène du service d'apprentissage automatique de Huawei peut classer avec précision les photos en identifiant et en étiquetant les éléments dans les images pour créer un album intelligent. Avec cette fonction, nous pouvons localiser et trouver rapidement la photo cible.

traits

Le service de reconnaissance de scène de Huawei prend en charge la classification du contenu de la scène des images et l'ajout d'informations d'annotation, telles que la nourriture, les fleurs, les plantes vertes, les chats, les chiens, les cuisines, les montagnes, les machines à laver et autres 102 scènes, et en fonction des informations identifiées, construisez un plus intelligent Expérience d'application d'album photo.

La reconnaissance de scène présente les caractéristiques suivantes:

  • La reconnaissance de scène multi-type
    prend en charge 102 types de reconnaissance de scène et continue d'augmenter.

  • Le taux de précision de reconnaissance élevé
    peut reconnaître une variété d'objets et de scènes, et le taux de précision de reconnaissance est élevé.

  • Reconnaissez la vitesse de réponse rapide en
    millisecondes et optimisez continuellement les performances.

  • L'intégration simple et efficace
    fournit une interface API et un package SDK pour faciliter l'intégration client, une opération simple et réduire les coûts de développement.

Scénario d'application

En plus de l'application de la reconnaissance de scène dans la création d'albums intelligents, la récupération et la classification de photos, il peut également sélectionner automatiquement les filtres de scène et les paramètres de l'appareil photo correspondants pour identifier la scène de prise de vue, aidant ainsi les utilisateurs à prendre des photos plus belles.

Code de développement

1 Préparation au développement

1.1 Configurer AppGallery Connect.

Avant de développer une application, vous devez configurer les informations pertinentes dans AppGallery Connect.
Pour les étapes spécifiques, veuillez vous référer au lien ci-dessous:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/config-agc-0000001050990353-V5

1.2 Configurez l'adresse d'entrepôt Maven du SDK HMS Core et terminez l'intégration du SDK de ce service.

(1) Ouvrez le fichier "build.gradle" au niveau du projet Android Studio.

Insérez la description de l'image ici
(2) Ajoutez le plugin HUAWEI agcp et la base de code Maven.

  • Configurez l'adresse du référentiel Maven du SDK HMS Core dans "tous les projets> référentiels".
  • Configurez l'adresse d'entrepôt Maven du SDK HMS Core dans "buildscript> référentiels".
  • Si le fichier "agconnect-services.json" est ajouté à l'application, vous devez ajouter la configuration agcp dans "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 Code de développement

Détection d'image fixe

2.1 Créez une instance du détecteur de reconnaissance de scène.

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

2.2 Construisez MLFrame via android.graphics.Bitmap, les formats d'image pris en charge incluent: jpg / jpeg / png / bmp.

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

2.3 Effectuer la reconnaissance de scène.

// 方式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 Une fois la détection terminée, arrêtez l'analyseur et libérez les ressources de détection.

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

Détection de flux vidéo

Les développeurs peuvent traiter le flux vidéo par eux-mêmes, convertir le flux vidéo en un objet MLFrame, puis effectuer une reconnaissance de scène selon la méthode de détection d'image statique.

Si le développeur appelle l'interface de détection de synchronisation, il peut également utiliser la classe SDK LensEngine intégrée pour réaliser la reconnaissance de scène de flux vidéo. L'exemple de code est le suivant:

3.1 Créer un analyseur de reconnaissance de scène Seul l'analyseur de reconnaissance de scène d'extrémité est pris en charge.

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

3.2 Le développeur crée la classe de traitement des résultats de reconnaissance "SceneDetectionAnalyzerTransactor", qui implémente l'interface MLAnalyzer.MLTransactor <T>, et utilise la méthode transactResult dans l'interface pour obtenir les résultats de détection et implémenter des services spécifiques.

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 Réglez le processeur de résultats de reconnaissance pour qu'il réalise la liaison de l'analyseur et du processeur de résultats.

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 Appelez la méthode d'exécution, démarrez la caméra, lisez le flux vidéo et identifiez-vous.

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

3.5 Une fois la détection terminée, arrêtez l'analyseur et libérez les ressources de détection.

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

Exposition DEMO

Insérez la description de l'image ici


Lien d'origine:https://developer.huawei.com/consumer/cn/forum/topic/0201404868263200225?fid=18

Auteur: say hi

Je suppose que tu aimes

Origine blog.51cto.com/14772288/2551461
conseillé
Classement