Integración ultra simple del reconocimiento de escenas del kit HMS Core ML para crear un nuevo modo de administración de álbumes

Prefacio

"Déjame mostrarte las fotos que tomé antes de ir al lugar escénico, el paisaje es muy bueno"

"Sí, yo también saldré a jugar, compártelo pronto"

……

"¿Qué hay de la foto, no la has encontrado?"

"Espera un minuto, hay demasiadas fotos en el teléfono, dame un poco de tiempo para encontrarlas"

¿Es esta la norma para muchas personas?

Mirar cientos o incluso miles de fotos en el teléfono, tratar de encontrar una foto específica es como encontrar una aguja en un pajar, lo que requiere tiempo y esfuerzo. ¿Solo es posible navegar por el álbum de principio a fin y no se puede buscar según la categoría de elementos de la foto?

Por supuesto, la función de reconocimiento de escenas del servicio de aprendizaje automático de Huawei puede clasificar con precisión las fotos identificando y etiquetando los elementos de la imagen para crear un álbum inteligente. Con esta función, podemos localizar y encontrar rápidamente la foto de destino.

Caracteristicas

El servicio de reconocimiento de escenas de Huawei permite clasificar el contenido de la escena de las imágenes y agregar información de anotaciones, como alimentos, flores, plantas verdes, gatos, perros, cocinas, montañas, lavadoras y otras 102 escenas, y en función de la información identificada, construya de manera inteligente. Experiencia de aplicación de álbum de fotos.

El reconocimiento de escenas tiene las siguientes características:

  • El reconocimiento de escenas de varios tipos
    admite 102 tipos de reconocimiento de escenas y sigue aumentando.

  • La alta tasa de precisión de reconocimiento
    puede reconocer una variedad de objetos y escenas, y la tasa de precisión de reconocimiento es alta.

  • Reconozca la velocidad de respuesta rápida en
    milisegundos y optimice continuamente el rendimiento.

  • La integración simple y eficiente
    proporciona una interfaz API y un paquete SDK para facilitar la integración del cliente, una operación simple y reducir los costos de desarrollo.

Escenario de aplicación

Además de la aplicación del reconocimiento de escenas en el establecimiento de álbumes inteligentes, recuperación y clasificación de fotos, también puede seleccionar automáticamente los filtros de escena correspondientes y los parámetros de la cámara para identificar la escena de la toma, lo que ayuda a los usuarios a tomar fotos con mejor apariencia.

Código de desarrollo

1 preparación de desarrollo

1.1 Configurar AppGallery Connect.

Antes de desarrollar una aplicación, debe configurar la información relevante en AppGallery Connect.
Para conocer los pasos específicos, consulte el enlace siguiente:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides-V5/config-agc-0000001050990353-V5

1.2 Configure la dirección del almacén de Maven de HMS Core SDK y complete la integración del SDK de este servicio.

(1) Abra el archivo "build.gradle" de nivel de proyecto de Android Studio.

Inserte la descripción de la imagen aquí
(2) Agregue el complemento HUAWEI agcp y la base de código Maven.

  • Configure la dirección del repositorio de Maven de HMS Core SDK en "allprojects> repositories".
  • Configure la dirección del almacén de Maven del HMS Core SDK en "buildscript> repositories".
  • Si el archivo "agconnect-services.json" se agrega a la aplicación, debe agregar la configuración agcp en "buildscript> dependencias".
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 Código de desarrollo

Detección de imágenes fijas

2.1 Cree una instancia del detector de reconocimiento de escenas.

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

2.2 Construya MLFrame a través de android.graphics.Bitmap, los formatos de imagen admitidos incluyen: jpg / jpeg / png / bmp.

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

2.3 Realizar reconocimiento de escena.

// 方式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 Una vez completada la detección, detenga el analizador y libere los recursos de detección.

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

Detección de flujo de video

Los desarrolladores pueden procesar el flujo de video por sí mismos, convertir el flujo de video en un objeto MLFrame y luego realizar el reconocimiento de escena de acuerdo con el método de detección de imágenes estáticas.

Si el desarrollador está llamando a la interfaz de detección de sincronización, también puede usar la clase SDK LensEngine incorporada para realizar el reconocimiento de escenas de transmisión de video. El código de muestra es el siguiente:

3.1 Cree un analizador de reconocimiento de escenas Solo se admite el analizador de reconocimiento de escenas del lado final.

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

3.2 El desarrollador crea la clase de procesamiento de resultados de reconocimiento "SceneDetectionAnalyzerTransactor", que implementa la interfaz MLAnalyzer.MLTransactor <T>, y utiliza el método transactResult en la interfaz para obtener los resultados de detección e implementar servicios específicos.

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 Configure el procesador de resultados de reconocimiento para realizar la vinculación del analizador y el procesador de resultados.

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 Llame al método de ejecución, inicie la cámara, lea la transmisión de video e identifique.

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

3.5 Una vez completada la detección, detenga el analizador y libere los recursos de detección.

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

Exposición DEMO

Inserte la descripción de la imagen aquí


Enlace original:https://developer.huawei.com/consumer/cn/forum/topic/0201404868263200225?fid=18

Autor: say hola

Supongo que te gusta

Origin blog.51cto.com/14772288/2551461
Recomendado
Clasificación