超详细移动端侧AI口罩识别实现与部署(含源码)
开发环境
- 数据标注:label studio :https://labelstud.io/
- 模型训练:tensorflow 附完整的训练源码和数据
- 部署开发:Android studio + tensorflow ...
端侧小模型开发总结
端侧小模型应用就是针对不以AI为卖点的互联网产品,所提出的带有AI概念的低成本方案。端侧小模型的生成方式有三种:
- 1、依照大模型生成的路数,后续转化为端侧小模型。
- 2、训练时,直接生成在客户端部署的端侧小模型。
- 3、
不管是直接生成,还是间接转化,端侧小模型都是由开发框架产生的。因此在选择框架上,要考虑多平台支持。目前谷歌有TensorFlow Lite,Facebook 有 PyTorch Mobile,它们都支持客户端AI;Keras 作为 TensorFlow 中的高级 API。
选择模型
搞端侧小模型是为了解决很具体的业务需求,不用选最新的或所谓跑分最高的,要结合硬件环境,部署方便,技术栈等选最适合自己的,表现最好的。这就如同你家离单位1公里,你要选择通勤工具,雅阁和雅迪的性能差距不大,但是成本却明显不同。
现在很多成熟的方案可以选择,加上有Transformers库的存在,国外各大开源的方案都能相互转化,非常的透明友善,就看谁能快速高效低成本的解决问题;加上迁移学习的途径,很多的工程师掌握基本的原理后就可以快速上手进行工程化应用。
PyTorch:PyTorch 的未来可能会专注于增强其易用性和灵活性,使其对研究和开发更具吸引力。预期的进步包括更好地与云和边缘计算平台集成、改进对分布式训练的支持以及自然语言处理和计算机视觉等领域的进步。这些发展可以使 PyTorch 更适合那些寻求允许快速迭代和实验的框架的初学者。
TensorFlow:TensorFlow的发展轨迹预计将强调对生产环境的进一步优化。这包括模型部署的增强,尤其是边缘计算和移动设备方面的增强,以及大规模工业应用的性能和可扩展性的改进。TensorFlow 还可能专注于整合更先进的人工智能技术,例如强化学习和生成模型,这可能会影响初学者寻找适合学习和生产的综合框架。Keras 作为 TensorFlow 中的高级 API 的引入,以其用户友好的界面为初学者提供了一个更简单的入门点。
对于初学者来说,PyTorch 与 TensorFlow 之间的选择可能会受到这些未来趋势的影响。那些优先考虑易于学习且适合原型设计的框架的人可能会倾向于 PyTorch,而那些预见需要大规模、优化的生产模型的人可能更喜欢 TensorFlow。本文是在生产环境部署的移动端侧AI应用口罩识别,因此后文都是使用TensorFlow。
数据标注
请按照label studio官方网站说明本地部署好后,参考说明使用,只是一个标注的工具,你有其他的工具也可以用。
收集的数据一定要根据业务情况进行筛选处理,数据增强等操作,不然垃圾训练数据只会产出垃圾模型。
模型训练
模型训练工程中已经包含收集的部分训练数据,用来演示足够了,需要更多更精细的数据请自行收集 标注后
替换工程中的已有训练数据。
训练完成后转化为端侧App 能使用的模型格式 .tflite,更多细节参考文章最后附的源码
模型部署效果
模型训练完成后会导出一个tflite 格式的模型文件,恭喜你已经完成了50%+ 的工作。接下来你需要完成模型在移动端侧部署运行,借助tensorflow lite/mediapipe 能很好的完成部署运行
体验APK 下载
https://www.pgyer.com/mask_detection
下载完成后默认开启后置摄像头,你可以在电脑上打开几张戴口罩的人脸图看看是否正确识别,由于训练素材比较少,可能部分口罩不能识别的可以自行标注数据训练后再重新部署打包App 看看运行情况
GitHub 源码下载
https://github.com/AnyLifeZLB/MaskDetection
完整的训练数据托管在百度:链接: https://pan.baidu.com/s/1to2hKZ-wue3eJ5Cq3aUOTg 密码: re0i
解压后请打开train_image 文件夹
下一篇:FaceAI SDK接入源码
References
超详细移动端侧AI口罩识别实现与部署(含源码)的更多相关文章
- 超详细的php用户注册页面填写信息完整实例(附源码)
这篇文章主要介绍了一个超详细的php用户注册页面填写信息完整实例,内容包括邮箱自动匹配.密码强度验证以及防止表单重复等,小编特别喜欢这篇文章,推荐给大家. 注册页面是大多数网站必备的页面,所以很有必要 ...
- GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮 ...
- 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流
GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...
- 移动端触摸、点击事件优化(fastclick源码学习)
移动端触摸.点击事件优化(fastclick源码学习) 最近在做一些微信移动端的页面,在此记录关于移动端触摸和点击事件的学习优化过程,主要内容围绕fastclick展开.fastclick githu ...
- 图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)
图书管理系统数据库设计实验报告 文章目录 更新日志 1.概述 2.需求分析 2.1需要实现的功能 2.2业务流程图 2.2.1学生流程图 2.2.2管理员流程图 2.2.3超级管理员流程图 2.3功能 ...
- 【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,实现YOLOv5实时物体识别(含源码)
前言 上一篇博客给大家介绍了LabVIEW开放神经网络交互工具包[ONNX],今天我们就一起来看一下如何使用LabVIEW开放神经网络交互工具包实现TensorRT加速YOLOv5. 以下是YOLOv ...
- 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码
前言 今天和大家一起分享如何使用LabVIEW调用pb模型实现物体识别,本博客中使用的智能工具包可到主页置顶博客LabVIEW AI视觉工具包(非NI Vision)下载与安装教程中下载 一.物体识别 ...
- 【YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)含源码
前言 前面我们给大家介绍了基于LabVIEW+YOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5.本次主要是和大家分享使用LabVIEW快速实现yolov5的物体 ...
- 千呼万唤始出来!—— GG(高仿QQ)终于有移动端了!(技术原理、实现、源码)
首先要感谢大家一直以来对于GG的关注和支持!GG的不断完善与大家的支持分不开! 从2013年最初的GG1.0,到后来陆续增加了网盘功能.远程协助功能.离线文件功能.群聊功能.语音聊天功能.视频聊天功能 ...
- GGTalk即时通讯系统(支持广域网)终于有移动端了!(技术原理、实现、源码)
首先要感谢大家一直以来对于GGTalk即时通讯系统的关注和支持!GGTalk即时通讯系统的不断完善与大家的支持分不开! 从2013年最初的GG1.0开放源码以来,到后来陆续增加了网盘功能.远程协助功能 ...
随机推荐
- K8S deployment 重启的三种方法
一般重启deployment,常规操作是删掉对应的pod, 但如果有多个副本集的话,一个个删很麻烦.除了删除pod,还可以: 方案一: 加上环境变量kubectl patch deploy <d ...
- Spring Validation 校验
概述 在 Web 应用中,客户端提交数据之前都会进行数据的校验,比如用户注册时填写的邮箱地址是否符合规范.用户名长度的限制等等,不过这并不意味着服务端的代码可以免去数据验证的工作,用户也可能使用 HT ...
- Qt开发经验小技巧131-140
Qt新版本往往会带来一些头文件的更新,比如以前使用QPainter绘制,不需要额外包含QPainterPath头文件,而5.15版本开始就需要显示主动引入#include "qpainter ...
- Apollo功能及原理详解
前言 公司里面使用的配置中心是携程开源的Apollo,之前我只使用过Nacos,遂记录一下学习过程. Apollo工作原理 模块介绍 上图就是Apollo的总体设计,从下往上挨个分析: ConfigD ...
- 使用 NodeLocalDNS 提升集群 DNS 性能和可靠性
本文主要分享如何使用 NodeLocal DNSCache 来提升集群中的 DNS 性能以及可靠性,包括部署.使用配置以及原理分析,最终通过压测表明使用后带来了高达 50% 的性能提升. 1.背景 什 ...
- [rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(01):为窗口设置布局(column、row)
前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发. iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动. 本合集是基于新版本的关于分 ...
- Note -「拟阵交」& Solution -「CF 1284G」Seollal
\(\mathscr{Description}\) Link. 给定张含空格和障碍格的 \(n\times m\) 的地图.构造在四连通的空格中间放置墙壁的方案,使得: 所有空格在四连通意义下 ...
- 深度学习基础理论————DeepSpeed
DeepSpeed原理 DeepSpeed 是由微软开发的一种深度学习优化库,专为高性能训练和推理而设计,尤其适用于大规模深度学习模型(如 GPT 系列.BERT 等).它通过一系列技术和优化策略,帮 ...
- mac文件目录结构
详解MAC硬盘中各个文件夹 详解MAC硬盘中各个文件夹 打开Macintosh HD你会发现内中有四个文件夹 分别有--应用程序(Applications).系统(System).用户(User).资 ...
- Java一个入门级MVC基于Spring Boot项目
首先根据上一篇文章内容创建一个Spring Boot项目,如图所示: 一,创建Controller并返回数据 在src/main/java/项目文件夹下面创建package,继续里面可以创建模块的pa ...