超详细移动端侧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开放源码以来,到后来陆续增加了网盘功能.远程协助功能 ...
随机推荐
- 第1章04节 | 常见开源OLAP技术架构对比
https://zhuanlan.zhihu.com/p/266402829 1. 什么是OLAP OLAP(On-line Analytical Processing,联机分析处理)是在基于数据仓库 ...
- 如何在cmake中添加lib库
如何在cmake中添加lib库: 生成lib文件 libhello.a add_library(hello hello.cxx) # 在top level添加子目录 add_subdirectory( ...
- 模拟数据生成器mock.js入门
1.在某一指定目录下,按下shift+鼠标右键,,点击"在此处打开Powershell窗口(S)",启动命令行窗口.如下图: 2.在窗口中输入以下命令以便创建项目:vue crea ...
- 在C#中通过使用Newtonsoft.Json库来解析天地图地理编码(GeoCoder)服务接口返回的Json格式的数据,以及HttpWebRequest 设置不完全时服务器返回“远程服务器返回错误: (403) 已禁止”解决方法
天地图地理编码(GeoCoder)服务接口返回的Json格式的数据,如下所示: http://api.tianditu.gov.cn/geocoder?ds={"keyWord": ...
- java第二章数组学习
java第二章数组 数组的概念和特点 数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个 名字命名,并通过编号的方式对这些数据进行统一管理. 特点 数组本身是引用数据类型,而数组中 ...
- Mysql存储引擎Innodb和MyISAM的区别
一.mysql架构 mysql是一个单进程多线程架构的数据库. 二.存储引擎 InnoDB: 支持事务 行锁 读操作无锁 4种隔离级别,默认为repeatable 自适应hash索引 每张表的存储都是 ...
- MySQL分页性能思考
MySQL分页性能思考 关键词:深度分页 背景 最近有一个需求:在后台管理页面中,需要展示产品信息的列表. 之前版本开发中产品信息是用户填写完所有字段之后能进行保存.在之前的基础上需要支持用户不完全填 ...
- Idea报错 【cannot access com.xxx】的【解决办法】
正常操作代码,一个类突然标红,提示 cannot access com.xxx . 执行下面操作,执行完后项目变为正常 但是如果是你代码存在异常,可不是清缓存就能解决了,就要靠自己了哈哈 第一步Fil ...
- NOIP2023 游记及反思
游记 进场前的同学们 柠檬熟了.Nitaycke.Prms_Prmt.b1t zhicheng,meatherm 开题,很快啊, 第一题不就桶排,今年签到没有去年恶心啊(9:00) 第二题,观察到每个 ...
- Iceberg metrics导致的问题
一.问题描述 在iceberg rewrite时报错:org.apache.iceberg.exceptions.ValidationException: Cannot commit, found n ...