[Day5] Face Detection - 使用Google ML Kit (Android)

Google ML Kit
reference: ithome - Google更新行动机器学习开发套件ML Kit,不再依赖Firebase云端开发平台

Google ML Kit (前身为Firebase ML-Kit)是由Google所开发的机器学习开发套件:

  1. 主要提供在行动装置上的应用程序开发机器学习技术 (iOS和Android)
  2. 可以在行动装置上离线使用机器学习运算,避免敏感资料外泄

本文开始

注:由於Google ML Kit是目前新的解决方案,不建议使用Firebase ML Vision sdk;本文撰写会使用ML Kit,不会使用到任何Firebase的功能,请留意差别

在Android上开发

使用套件一定都是要读官方文件、或是官方Samples。这里我们就直接使用官方提供的Samples来实际使用看看吧!

  1. 准备好Android Studio开发环境

  2. 下载Google在Github上的ML Kit Vision Quickstart Sample,下载下来後是压缩档(.zip),请解压缩vision-quickstart专案到你喜欢的目录下

  3. 开启Android Studio,开启刚才的专案vision-quickstart
    ml_kit_import
    开启之後如果遇到gradle版本与java版本不符或其他错误问题,请自行搜寻google或留言在下面,我会尽快回覆

  4. 开启之後会需要等待Gradle进行专案初始化,完成後应该会看到BUILD SUCCESSFUL这个工程师都爱的句子
    有关ML Kit sdk的API说明,Google这份文件说的很清楚,这边只就其中几个重点提一下:

    • 初始化脸部辨识最主要的物件
      # com/google/mlkit/vision/demo/java/facedetector/FaceDetectorProcessor.java #47行
      detector = FaceDetection.getClient(faceDetectorOptions);
      
      其中的faceDetectorOptions有几个参数
      • setLandmarkMode:会产生人脸关键点标示
      • setContourMode:会用线标示人脸的"形状"
    • 在进行即时摄影机人脸侦测时,把解析度调到480 x 360可以有很明显的辨识速度提升
    • ML Kit是会预先下载到手机上的,透过手机的资源来做运算;因此手机在安装完App後是可以不用网路来做辨识的
  5. 打开右上角的AVD Manager -> 点选跳出视窗左下角的「Create Virtual Device」->选择Phone、Pixel 2、System image选Oreo(API Level 26),没有安装请先点Download、Configuration栏位打开Advanced Settings,选Front=Webcam0这样才可以使用摄影机
    ml_kit_avd_manager

    ml_kit_avd_1

    ml_kit_avd_2

    ml_kit_avd_3

  6. 建立完AVD後,点选列表中Pixel 2 API 26旁的启动按钮
    ml_kit_avd_4

  7. 在主画面应该会看到模拟器启动了,接下来让我们打包App吧!
    ml_kit_home

  8. 点选主画面上方的Build -> Select Build Variant,跳出的视窗中,在Active Build Variant选择debug
    ml_kit_build_select

    ml_kit_build_select_1

  9. 等待Build过程,你可以熟悉一下手机模拟器的一些操作...完成後,请点选右上角的Run 'app'
    ml_kit_run
    注:如果你的"手机"进入萤幕保护程序(画面全黑),请点选上方功能列的电源按钮解锁即可
    ml_kit_power

  10. 开启画面後:

我们用Java版的ML试看看
ml_kit_emu_1

选择LivePreviewActivity
ml_kit_emu_2

进入画面後,先选择Face Detection
ml_kit_emu_3

点选左边的切换镜头图示,如果前面你有开启设定AVD Emulator的前镜头,应该会看到:
ml_kit_emu_4
转一下手机
ml_kit_emu_5

把你的脸靠近镜头,应该会看到你被标示了
ml_kit_emu_6

改一下设定(右下角的齿轮图示):

  • Detection Info: Hide detection info打开
  • Face Detection:
    • Landmark mode选择All landmarks (只标示主要五官位置)
    • Contour mode选择No Contours
    • Classification mode选择All classifications (辨识脸部的基本表情与眼睛是否开启)
    • Minimum face size改成0.05 (避免辨识需要太靠近镜头,让脸部比例小一点也可以辨识)

ml_kit_emu_7

可以看到戴上口罩也可以成功侦测,Google ML Kit的辨识效果也不差。你也试着玩看看其他设定吧!

如果是使用Mac开发的人就See you tomorrow~


<<:  Leetcode 挑战 Day 15 [27. Remove Element]

>>:  Day 16 | 元件状态:预载 及 延迟载入 Prefetch & Defer Loading

裸机Hyperviser大众化原因

今天来探讨裸机Hyperviser在近几年朝大众化的原因 摆脱固有平台 受够了各大云端运算服务的绑手...

【Day 25】React 与 Immutible

Immutable Immutable 中文意思为不可变的, 即重新赋值後, 新的值和原始的值并不互...

其它的 lifecycle 或 vue router 的 hook

在 About 刷新一次页面 还有一些用在我也不太常用的 lifecycle 这次就一起 Demo ...

[Day15] 建立订单交易API_8

本节将进行完整的虚拟订单请求发送 def get_order(shop_no, need_pay, ...

Day 21-制作购物车之前端架构1

进入前端啦~ 因为原本比较着重於购物车系统的部分,所以前端可能做的比较不好,还请见谅 以下内容有参考...