程序运行展示
程序相关说明
代码逻辑实现
- 使用tensorflow2.x训练的模型,可使用迁移学习减少训练参数,导出的tflite模型体积较小
- 相机模块使用CameraX,人脸检测模块使用Google的mlkit(本人不会在Android中使用openCV,个人觉得mlkit接口很友好)
- 由于训练的数据集中没有图片无人脸的情况,需要使用人脸检测模块来辅助该模型,只有出现人脸时才使用模型解释器来推断
参考资料和代码
学习网址
机器学习速成课:https://developers.google.com/machine-learning/crash-course
TensorFlow学习教程:https://www.tensorflow.org/tutorials
TensorFlow Python API:https://www.tensorflow.org/api_docs/python/tf
数据集:
TensorFlow datasets:https://www.tensorflow.org/datasets
Kaggle datasets:Find Open Datasets and Machine Learning Projects | Kaggle
免费运算资源:
Google Colab: https://colab.research.google.com
Kaggle: Kaggle Competitions
App代码借鉴:
tflite Demo:https://github.com/tensorflow/examples
人脸检测:https://github.com/googlesamples/mlkit/tree/master/android/vision-quickstart
程序、源码、tflite模型等文件
人脸口罩识别App下载地址:FaceMaskDetect.apk_口罩检测app-深度学习文档类资源-CSDN下载
源码地址:https://github.com/kailanguage/FaceMaskDetect
tflite模型地址:face_mask_detect_usetf.tflite_口罩检测android-深度学习文档类资源-CSDN下载
tflite模型训练代码:私聊
个人总结
模型训练和Android App开发是完全独立的,我们需要训练好一个模型或者下载别人训练好的模型。
很多时候要自己去训练一个模型,往往会受限于数据集和运算资源。在tensorflow lite 中的一个1k种类物体检测的demo,虽然模型很小,但是该模型是通过上百G的训练集训练出来的,而且经过量化之后导出的模型,在代码中是否为量化的模型也需要注意修改相关地方
在开发对应模型的App时,需要明确模型能处理图片的格式,如大小、颜色等。
总之Android上深度学习模型的离线推断实在是有很多坑。。。。