关于AI SDK

  当我们想要实现一个AI功能时,比如人脸识别,人脸比对,物体识别等等,如果从0开始开发AI模型,训练AI模型,直至部署到当前的项目中,势必会花费大量的人力以及时间。得益于近年人工智能领域的告诉发展, 许多成熟的AI模型已经开源,作为一名开发者不要重复造轮子,可以使用现有的成熟的AI模型来实现所需的AI功能。

  但对于非AI开发者而言,想要将现有的AI模型中集成到android/iOS app中,并不是一件容易的事情。为了简化AI功能集成到app的步骤, 已经有很多公司提供了AI功能的API, 如Google, Microsoft, Baidu等。 但是这些公司大多数都只提供了API的方式来调用AI功能,没有提供本地SDK的方式调用AI功能。

  相对于API方式,SDK方式的调用不需要网络的支持,以人脸识别为例,如果采用SDK方式的话就不需要把人脸的图片传输到API服务器,也不需要等待API服务器将推理结果传输回来,而是直接使用手机的CPU/GPU进行推理操作。所以对于安全性以及实时性,SDK方式都优于API方式。但是,由于SDK方式利用的是手机的CPU/GPU,性能上弱于服务器的GPU,所以SDK方式不适合大的AI模型的推理,比如GPT-2。

快速开始

  本AI SDK尽可能的简化了集成步骤,即使是初学APP开发的人也能顺利地将AI功能集成到APP中。目前我们提供了Flutter AI SDK, iOS AI SDK, Android AI SDK, 请开发者根据实际的项目需求选择对应的SDK进行集成。下面将介绍如何在flutter中集成人脸识别功能。

1. 下载Flutter AI SDK

  从https://download.csdn.net/download/fyq158797/87707388下载Flutter AI SDK压缩包,将压缩包解压到flutter项目文件夹。
  打开flutter项目的pubspec.yaml文件,在dependencies下方导出AI SDK, path为SDK压缩包解压的路径。

  aisdk:path: ../aisdk

2. 下载人脸识别功能所需要的AI模型

  为了节省app所占的容量,我们没有将所有的AI模型都放到SDK中,而是要求开发者根据需要下载所需的AI模型。这次要集成人脸识别功能,所以只需要下载人脸识别功能所需要的文件。 下载模型文件和label文件,然后将这两个文件放到项目目录的assets目录下, 如assets/models/目录下。
打开flutter项目的pubspec.yaml文件,在assets下方声明新加入的两个文件。

  assets:- assets/facemask_v1.tflite- assets/facemask_v1.txt

3. 初始化AI SDK

  在调用AI模型前,我们需要初始化AI SDK。比如我们创建了一个名为FaceDetectionPage.dart的文件,这个页面的功能是从照片库中选择一张照片,然后调用AI SDK的人脸识别功能识别出人脸的坐标。 那么首先需要在initState()方法中,初始化AI SDK的人脸识别功能。

  import 'package:aisdk/aisdk.dart';@overridevoid initState() {super.initState();initAISDK();}Future<void> initAISDK() async {Map resultMap = await Aisdk.init(modelPath: "assets/models/facemask_v1.tflite", modelCateogry: Aisdk.MODEL_CATEGORY_FACE_DETECTION, labelPath: "assets/models/facemask_v1.txt");print("initAISDK:$resultMap");}

  注意这里的modelPath以及labelPath参数,modelPath指向了人脸识别模型对应的路径,labelPath指向了人脸识别的label文件路径。同时,modelCateogry需要指定为人脸识别的类别:Aisdk.MODEL_CATEGORY_FACE_DETECTION
  通过Aisdk.init()初始化SDK后,会返回{"error":nil, "result":[]}。如果error的内容是nil,则表示初始化成功。 如果error内容不为空,则表示初始化失败,error的内容会指明初始化失败的原因,比如modelFileLoadFailed表明AI模型加载失败,原因可能是modelPath设置的路径错误。

4. 调用AI模型

  只需要一行代码即可调用AI功能,返回值同样是{"error":nil, "result":[]}结构。 如果error的内容是nil,则表示调用成功。否则调用失败,需要根据error的内容来判断调用失败的原因。
  调用成功后, result中的内容为AI模型的返回值。本例中,返回了图片中所有的人脸的坐标位置,以及是否佩戴了口罩。

    Map resultMap = await Aisdk.inferenceOnImage(path: imageFilePath);if (resultMap["error"] != null) {print("失败${resultMap["error"]}");} else {List<dynamic> resultList = resultMap["result"];faceList = [];for (dynamic faceInfo in resultList) {Map faceMap = faceInfo;Face face = Face();face.x = faceMap["x"];face.y = faceMap["y"];face.w = faceMap["w"];face.h = faceMap["h"];face.confidence = faceMap["confidence"];face.hasMask = faceMap["className"] == "mask";faceList.add(face);}setState(() {});}

总结

  经过以上的4步,就可以将人脸识别功能集成到app中。其它的AI功能也是同样的步骤,

  1. 下载Flutter AI SDK
  2. 下载AI功能所需要的模型文件
  3. 初始化AI SDK
  4. 调用AI模型

    本SDK目前提供了人脸识别(是否佩戴口罩),人脸比对,物体识别,图像分割,超分辨率功能。并且以后会随时增加新的AI功能以及改进现有的AI功能。如果您在使用本SDK中有任何的意见或者建议,请随时联系我们。

AI人脸识别的实现SDK相关推荐

  1. 基于人脸识别的课堂签到管理系统(三)---实时时间显示以及百度AI人脸识别

    基于人脸识别的课堂签到管理系统(三)---实时时间显示以及百度AI人脸识别 一.前言概述 二.实时时间显示 三.百度AI人脸识别 3.1 获取access_token 3.2 发送请求,通过网络请求方 ...

  2. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储

    原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...

  3. 云开发:让你拥有自己的第一个AI人脸识别小程序

    文章目录 博主绪论 准备过程 GIT的安装 NodeJS和npm的安装 腾讯云人脸识别API 正式开始 创建云开发小程序 开发前的思考准备,思维决定行动 服务器开发(写一个云函数端) 分析 调用人脸识 ...

  4. AI人脸识别真的成熟了吗?读完这篇你就懂了

    作者 |  于曦 AI 成为新基建风口模式下的一个重要选题,让人们对于 AI 的热情空前高涨.从一开始的烧钱阶段到今天的确定性发展,AI 一直渗透着人们的生活,从自动驾驶到人脸识别都是如此.其中,人脸 ...

  5. 连Python都不熟也能跑通AI人脸识别?“隐藏Boss”竟是它!

    摘要:先把AI人脸识别跑起来,然后研究它是如何实现的,整个过程中确实收获不少.所谓先跟着做,再跟着学,实践与理论结合,自己感觉有理解了一些基础概念入个门,在此分享一下自己的捣鼓经验. 1.买台小&qu ...

  6. 门前异动监控、AI 人脸识别!360 发布新型智能门铃

    10 月 29 日,360 举行了主题为"硬核新视界"的智能硬件新品发布会.会上,360 发布了一款全新产品--360 智能门铃.360 智能门铃以"门前异动监控&quo ...

  7. 这家金融巨头,要让AI人脸识别大规模应用在银行领域

    脑海中想象这样一个画面:当一位VIP客户走进银行大厅办理业务时,人脸识别技术能在极短时间内帮助客户经理实现快速.准确定位其身份信息,并显示该客户在银行的理财记录等,这时客户经理将为其匹配针对性的服务, ...

  8. 基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别)

    基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别) 资源: download.csdn.net/download/weixin_53403301/43644312 ...

  9. 微信小程序开发工具结合腾讯云开发AI人脸识别和身份证识别——基于腾讯云开发者实验项目

    微信小程序开发工具结合腾讯云开发AI人脸识别和身份证识别--基于腾讯云开发者实验项目 开通腾讯云相关权限(AI人脸识别,文字识别-身份证识别) 查看API密钥 部署微信小程序 成功演示 代码包 开通腾 ...

最新文章

  1. web服务器获取项目路径问题,读取web项目properties文件路径 解决tomcat服务器找不到properties路径问题...
  2. ajax jsonp post php,※ajax的post方式注意点※及jsonp的封装
  3. 4x root 红米_好激动,红米NOTE4X开发版成功获得完全ROOT教程,非假ROOT!!
  4. SSH远程启动tomcat后,退出SSH,tomcat也退出
  5. java实现代理服务器,接收客户端连接,发送到对应服务器
  6. 以ontouch为例说明android事件发送机制
  7. 西柚SWPU新生赛(场外同步赛)miscAK 别的在混(
  8. shell脚本合集2
  9. 【神经网络与深度学习】1.线性分类与感知机
  10. IG赢了,让我们先理直气壮的喊出那句 我们是冠军!
  11. app下载统计 php,如何统计app在各个渠道的下载量?
  12. XAMPP介绍、安装及使用
  13. Zigbee(3) ---- 无线温度检测试验
  14. 高项、高级项目管理师论文-风险管理
  15. 设置ListView中的所有Item均不可点击
  16. pytorch实现用CNN和LSTM对文本进行分类
  17. 十五天学会Autodesk Inventor,看完这一系列就够了(一),前言—介绍及区别
  18. 剑指offer 专项突破版 78、合并排序链表
  19. shell网络编程netstat
  20. 2020年度总结-送你一张腾讯视频VIP月卡

热门文章

  1. 云服务商将占据 80% CDN 市场份额,传统CDN或将终结
  2. 华为荣耀android是什么系统,华为荣耀+
  3. c语言提供了三种预处理命令,C语言提供的三种预处理命令
  4. Graph Database 图数据库
  5. BeanUtils只拷贝对象中属性值不为null的属性
  6. etlgr是什么服务器_什么是ETL,ETL工程师的的主要工作职责是什么?
  7. 火爆的人工智能项目都在这里了|Gitee项目推荐
  8. 玩 原来有个 腾讯热腾
  9. php淘金农场源码_PHP欢乐农场源码 淘金农场源码 欢乐农场游戏源码
  10. linux oracle访问mysql_linux oracle 查询所有数据库