开发环境

  • 数据标注: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接入源码

FaceAI SDK人脸识别接入源码 点击这里

References

  1. 2024最详细的AI框架对比指南—PyTorch与TensorFlow到底选谁?
  2. PyTorch、TensorFlow和Keras,深度學習的全面比較與選擇指南

超详细移动端侧AI口罩识别实现与部署(含源码)的更多相关文章

  1. 超详细的php用户注册页面填写信息完整实例(附源码)

    这篇文章主要介绍了一个超详细的php用户注册页面填写信息完整实例,内容包括邮箱自动匹配.密码强度验证以及防止表单重复等,小编特别喜欢这篇文章,推荐给大家. 注册页面是大多数网站必备的页面,所以很有必要 ...

  2. GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

    最近听同事说他都在使用GitHub,GitHub是程序员的社区,在里面可以学到很多书上学不到的东西,所以最近在准备入手这方面的知识去尝试学习,正好碰到这么详细完整的文章,就转载了,希望对自己和大家有帮 ...

  3. 【代码管理】GitHub超详细图文攻略 - Git客户端下载安装 GitHub提交修改源码工作流程 Git分支 标签 过滤 Git版本工作流

    GitHub操作总结 : 总结看不明白就看下面的详细讲解. . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/details ...

  4. 移动端触摸、点击事件优化(fastclick源码学习)

    移动端触摸.点击事件优化(fastclick源码学习) 最近在做一些微信移动端的页面,在此记录关于移动端触摸和点击事件的学习优化过程,主要内容围绕fastclick展开.fastclick githu ...

  5. 图书管理系统(Java实现,十个数据表,含源码、ER图,超详细报告解释,2020.7.11更新)

    图书管理系统数据库设计实验报告 文章目录 更新日志 1.概述 2.需求分析 2.1需要实现的功能 2.2业务流程图 2.2.1学生流程图 2.2.2管理员流程图 2.2.3超级管理员流程图 2.3功能 ...

  6. 【YOLOv5】手把手教你使用LabVIEW ONNX Runtime部署 TensorRT加速,实现YOLOv5实时物体识别(含源码)

    前言 上一篇博客给大家介绍了LabVIEW开放神经网络交互工具包[ONNX],今天我们就一起来看一下如何使用LabVIEW开放神经网络交互工具包实现TensorRT加速YOLOv5. 以下是YOLOv ...

  7. 手把手教你使用LabVIEW OpenCV dnn实现物体识别(Object Detection)含源码

    前言 今天和大家一起分享如何使用LabVIEW调用pb模型实现物体识别,本博客中使用的智能工具包可到主页置顶博客LabVIEW AI视觉工具包(非NI Vision)下载与安装教程中下载 一.物体识别 ...

  8. 【YOLOv5】LabVIEW+YOLOv5快速实现实时物体识别(Object Detection)含源码

    前言 前面我们给大家介绍了基于LabVIEW+YOLOv3/YOLOv4的物体识别(对象检测),今天接着上次的内容再来看看YOLOv5.本次主要是和大家分享使用LabVIEW快速实现yolov5的物体 ...

  9. 千呼万唤始出来!—— GG(高仿QQ)终于有移动端了!(技术原理、实现、源码)

    首先要感谢大家一直以来对于GG的关注和支持!GG的不断完善与大家的支持分不开! 从2013年最初的GG1.0,到后来陆续增加了网盘功能.远程协助功能.离线文件功能.群聊功能.语音聊天功能.视频聊天功能 ...

  10. GGTalk即时通讯系统(支持广域网)终于有移动端了!(技术原理、实现、源码)

    首先要感谢大家一直以来对于GGTalk即时通讯系统的关注和支持!GGTalk即时通讯系统的不断完善与大家的支持分不开! 从2013年最初的GG1.0开放源码以来,到后来陆续增加了网盘功能.远程协助功能 ...

随机推荐

  1. Java调用Shell问题整理

    背景 java可以通过Runtime来调用其他进程,如cmd命令,shell文件或脚本等. 基本用法 Runtime执行时返回一个Process对象,利用该对象完成脚本执行.下面的例子中,Linux的 ...

  2. Qt控件SDK使用示例大全

    文章 链接 01表盘控件-01汽车仪表盘-gaugecar https://qtchina.blog.csdn.net/article/details/120240257 01表盘控件-02圆弧仪表盘 ...

  3. C#中字符串格式化string.Forma中需要使用t转义字符的情况处理

    此处汇总一下C#中字符串格式化string.Forma中需要使用t转义字符的情况处理. 1.C# string.Format() 方法中占位大括号的外面还有大括号,此时就需要使用转义大括号{}. 处理 ...

  4. 鸿蒙ArkUI-X简介

    ArkUI是一套构建分布式应用的声明式UI开发框架.它具备简洁自然的UI信息语法.丰富的UI组件.多维的状态管理,以及实时界面预览等相关能力,帮助您提升应用开发效率,并能在多种设备上实现生动而流畅的用 ...

  5. 【AIGC】Embedding与LLM:token长度限制困局下,长文本LLM应用的暂缓之计

    [详细内容首发于微信公众号(Hobbes View)] 什么是Embedding? Embedding是一种多维向量数组,由一系列数字组成,可以代表任何事物,如文本.音乐.视频等.在这里我们将重点关注 ...

  6. nvm的安装与使用,多个node版本同时使用

    nvm的介绍 nvm全英文也叫node.js version management,是一个nodejs的版本管理工具.nvm和npm都是node.js版本管理工具,为了解决node.js各种版本存在不 ...

  7. .NET 中管理 Web API 文档的两种方式

    前言 在 .NET 开发中管理 Web API 文档是确保 API 易用性.可维护性和一致性的关键.今天大姚给大家分享两种在 .NET 中管理 Web API 文档的方式,希望可以帮助到有需要的同学. ...

  8. 开源的分布式事务解决方案-Seata

    Seata 是什么? (1)Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务. (2)在 Seata 开源之前,Seata 对应的内部版本在阿里经济 ...

  9. Swagger介绍和应用

    1.什么是swaggerSwagger是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的Web服务.简单来说,Swagger是一个功能强大的接口管理工具,并且提供了多种编程语言的 ...

  10. Redis的高可用?(主从、哨兵、集群)

    高可用有两个含义:一是数据尽量不丢失,二是保证服务尽可能可用. AOF 和 RDB 数据持久化保证了数据尽量不丢失,那么多节点来保证服务尽可能提供服务. 一般在实际生产中,服务不会部署成单节点,主要是 ...