基于ML Kit 人脸识别,让可视化应用更智能

ML Kit 介绍

官网地址:https://developers.google.cn/ml-kit/

给移动开发者的机器学习

ML Kit是一个强大易用的工具包,它将谷歌在机器学习方面的专业知识带给了普通的移动应用开发者。

针对移动设备进行 了优化

机器学习可以让你的应用更有吸引力,更加的个性化,并且提供了已经在移动设备优化过的解决方案。

由Google专业知识构建

ML Kit提供的技术已经在Google内部长期使用。

全面而且易于使用

你可以使用现有的解决方案(基于API),也可以使用自己的算法模型。你可以根据需要选择是离线还是在线使用。

基于API,无缝的将机器学习嵌入到你的APP中

  1. 图像打标,可以识别图像中的物体,位置,活动形式,动物种类,商品等等。

  2. 文本识别,从图像中识别并提取文字。

  3. 人脸检测,检测人脸和人脸的关键点。

  4. 条码扫描,扫描和处理条码。

  5. 地标识别,在图像中识别比较知名的地标。

  6. 智能回复,提供符合上下文语境的文字回答。

基于ML Kit 人脸识别

google官方给出了一个例子,上手很容易
地址为:https://github.com/firebase/quickstart-android/tree/master/mlkit

基于ML Kit 人脸识别,让可视化应用更智能_第1张图片
我们可以clone下来并且运行, 但是会提示少了文件google-services.json错误

创建google-services.json

打开你的fieabase网址:https://console.firebase.google.com/u/0/
你应该有自己的项目地址。

创建一个新的项目,或者在你已经有的项目中加入新的app都可以。这个gson文件都是根据你的包名去生成的。在一个项目中可以加很多的App生成的json文件是根据项目去生成的,一个项目有多个app,在你生成的json文件中会有不项目中所有app的配置,当一个项目只哦有一个App的时候,在json文件中只有一个app的配置。

添加项目

基于ML Kit 人脸识别,让可视化应用更智能_第2张图片
基于ML Kit 人脸识别,让可视化应用更智能_第3张图片

基于ML Kit 人脸识别,让可视化应用更智能_第4张图片

基于ML Kit 人脸识别,让可视化应用更智能_第5张图片

基于ML Kit 人脸识别,让可视化应用更智能_第6张图片

copy json文件到app目录

基于ML Kit 人脸识别,让可视化应用更智能_第7张图片

mlkit代码分析

设置检测这些点的人脸检测器只需短短几行代码。

lazy var vision = Vision.vision()
let options = VisionFaceDetectorOptions()
options.contourMode = .all
let faceDetector = vision.faceDetector(options: options)

轮廓点还可以实时更新。为达到理想的帧速率,人脸探测器默认配置为 fast 模式。当您准备好检测面部的点时,请向 ML Kit 发送一张图像或一个缓冲区供其处理。

faceDetector.process(visionImage) { faces, error in
 guard error == nil, let faces = faces, !faces.isEmpty else { return }
 for face in faces {
   if let faceContour = face.contour(ofType: .face) {
     for point in faceContour.points {
       print(point.x) // the x coordinate
       print(point.y) // the y coordinate
     }
  }
} 

人脸识别回调

    @Override
    protected void onSuccess(
            @Nullable Bitmap originalCameraImage,
            @NonNull List faces,
            @NonNull FrameMetadata frameMetadata,
            @NonNull GraphicOverlay graphicOverlay) {
        graphicOverlay.clear();
        if (originalCameraImage != null) {
            CameraImageGraphic imageGraphic = new CameraImageGraphic(graphicOverlay, originalCameraImage);
            graphicOverlay.add(imageGraphic);
        }
        for (int i = 0; i < faces.size(); ++i) {
            FirebaseVisionFace face = faces.get(i);

            int cameraFacing =
                    frameMetadata != null ? frameMetadata.getCameraFacing() :
                            Camera.CameraInfo.CAMERA_FACING_BACK;
            FaceGraphic faceGraphic = new FaceGraphic(graphicOverlay, face, cameraFacing);
            graphicOverlay.add(faceGraphic);
        }
        graphicOverlay.postInvalidate();
    }

最终的效果如图:
基于ML Kit 人脸识别,让可视化应用更智能_第8张图片

你可能感兴趣的:(服务框架/平台,Android学习笔记)