MLKit

MLKit

Android机器学习开发的高效工具库

MLKit是一个Android机器学习工具库,集成了Google的多项视觉识别技术。它支持条码扫描、人脸检测、图像标签和对象检测等功能。开发者无需深厚的机器学习背景,即可通过简单的代码实现复杂功能。此外,MLKit还提供API支持在应用中使用自定义TensorFlow Lite模型,为开发者提供了更多灵活性。

MLKit机器学习图像识别AndroidGoogleGithub开源项目

MLKit

下载 MavenCentral JitPack CircleCI API 许可证

ML Kit是一个极其简单易用的封装包,能够将谷歌专业的机器学习知识带到应用中。无论您是否有机器学习经验,都可以通过几行代码实现所需功能。即使您对神经网络或模型优化没有深入了解,也能完成您想要做的事情。

基于现有的API,您可以轻松实现文字识别、条码识别、图像标签、人脸检测、对象检测等功能;另一方面,如果您是经验丰富的ML开发人员,ML Kit还提供了便利的API,可帮助您在移动应用中使用自定义的TensorFlow Lite模型。

GIF 展示

图片

由于功能太多,仅录制演示了部分功能

您可以直接下载演示App体验效果

各Module相关说明

app

示例App:主要用于提供MLKit各个子库的演示效果

mlkit-camera-core 已移除(从2.0.0版本开始改用 CameraScan

Camera:为各个子库提供相机预览分析的核心库

参见CameraX

mlkit-common

公共库:介于Camera与各个子库之间,为各个子库提供公共业务,从而简化各子库的实现

mlkit-barcode-scanning

条码扫描:通过分析图像能够识别条码的内容信息

参见barcode-scanning

mlkit-face-detection

人脸检测:通过分析图像能够检测到人脸和分析面部轮廓关键点信息

参见face-detection

人脸网格检测:通过分析图像能够检测到人脸网格信息

参见face-mesh-detection

mlkit-image-labeling

图像标签:通过分析图像能够标记一般对象、场所、动物种类、产品等

请参阅图像标注

mlkit-object-detection

对象检测:通过分析图像可以检测出图像中对象的位置信息(每张图最多可以检测五个对象)

请参阅对象检测

mlkit-pose-detection

姿势检测:通过分析图像可以检测人物姿势的关键点信息

请参阅姿势检测

mlkit-pose-detection-accurate

姿势检测(精确版):通过分析图像可以检测人物姿势的关键点信息(精确版的依赖库稍大一些)

请参阅姿势检测

mlkit-segmentation-selfie

自拍分割:通过分析图像可以对自拍照的人物特征进行分割

请参阅自拍分割

mlkit-text-recognition

文字识别:识别图像中的文字信息

请参阅文字识别

引入

Gradle:

  1. 在Project的 build.gradlesetting.gradle 中添加远程仓库

    repositories { //... mavenCentral() }
  2. 在Module的 build.gradle 中添加引入依赖项

    //公共库(*必须) implementation 'com.github.jenly1314.MLKit:mlkit-common:2.2.1' //-------------------------- //条码扫描(可选) implementation 'com.github.jenly1314.MLKit:mlkit-barcode-scanning:2.2.1' //人脸检测(可选) implementation 'com.github.jenly1314.MLKit:mlkit-face-detection:2.2.1' //人脸网格检测(可选) implementation 'com.github.jenly1314.MLKit:mlkit-face-mesh-detection:2.2.1' //图像标注(可选) implementation 'com.github.jenly1314.MLKit:mlkit-image-labeling:2.2.1' //对象检测(可选) implementation 'com.github.jenly1314.MLKit:mlkit-object-detection:2.2.1' //姿势检测(可选) implementation 'com.github.jenly1314.MLKit:mlkit-pose-detection:2.2.1' //姿势检测精确版(可选) implementation 'com.github.jenly1314.MLKit:mlkit-pose-detection-accurate:2.2.1' //自拍分割(可选) implementation 'com.github.jenly1314.MLKit:mlkit-segmentation-selfie:2.2.1' //文字识别(可选) implementation 'com.github.jenly1314.MLKit:mlkit-text-recognition:2.2.1'

温馨提示

关于MLKit版本与编译SDK版本要求

使用 v2.1.x 及以上版本时,要求 compileSdkVersion >= 34

使用 v2.0.x 及以上版本时,要求 compileSdkVersion >= 33

如果 compileSdkVersion < 33,请使用 v1.x版本

使用

版本变化说明

2.x版本的变化

1.x2.x 的主要变化如下:

  • 1.x版本的 mlkit-camera-core 核心基础库被移除了;

从2.0.0版本开始改为依赖CameraScan;(CameraScan是一个独立的库,单独进行维护)

  • 1.x版本的mlkit-barcode-scanning中的ViewfinderView已被移除;

从2.0.0版本开始改为依赖ViewfinderView;(ViewfinderView是一个独立的库,单独进行维护)

基于以上两点主要差异:2.x的主要使用方式和1.x基本类似,部分细节有所变更。

如果你是从1.x版本升级至2.x版本,那么你需要了解上述差异;特别是独立出去单独维护的库,其包名都有所变化,这一点需要注意,大部分变动只需更改导入的包名即可完成升级。

如果你使用的是1.x版本,请直接查看v1.x分支版本

2.x版本的使用

2.x的实现主要是以CameraScan作为基础库来实现具体的分析检测功能,所以你可以直接查看CameraScan的使用说明,只要了解了CameraScan的使用方法,自然就会使用MLKit中所有子模块了。

各个子模块的核心类说明

下面列出各个子模块实现的具体功能和核心类;主要包括实现对应功能的Analyzer和便于快速实现扫描检测的BaseCameraScanActivityBaseCameraScanFragment的子类。

功能所属子模块对应的Analyzer实现对应的BaseCameraScanActivity子类
条码扫描mlkit-barcode-scanningBarcodeScanningAnalyzerBarcodeCameraScanActivity/QRCodeCameraScanActivity
人脸检测mlkit-face-detectionFaceDetectionAnalyzerFaceCameraScanActivity
人脸网格检测mlkit-face-mesh-detectionFaceMeshDetectionAnalyzerFaceMeshCameraScanActivity
图像标签mlkit-image-labelingImageLabelingAnalyzerImageCameraScanActivity
对象检测mlkit-object-detectionObjectDetectionAnalyzerObjectCameraScanActivity
姿势检测mlkit-pose-detectionPoseDetectionAnalyzerPoseCameraScanActivity
姿势检测(精确版)mlkit-pose-detection-accurateAccuratePoseDetectionAnalyzerAccuratePoseCameraScanActivity
自拍分割mlkit-segmentation-selfieSegmentationAnalyzerSegmentationCameraScanActivity
文字识别mlkit-text-recognitionTextRecognitionAnalyzerTextCameraScanActivity

xxxCameraScanActivity和xxxBaseCameraScanFragment在上面只列出了一个,因为有一个xxxCameraScanActivity就有一个与之对应的xxxCameraScanFragment;命名前缀一样,使用方式也基本一样。

条形码检测分析示例(mlkit-barcode-scanning

支持检测识别的条形码格式主要有:

  • 线性格式:Codabar, Code 39, Code 93, Code 128, EAN-8, EAN-13, ITF, UPC-A, UPC-E
  • 2D格式:Aztec, Data Matrix, PDF417, QR Code
BarcodeDecoder.process(bitmap).addOnSuccessListener(this) { if (it.isNotEmpty()) { // TODO 成功;此处可获取识别的结果 } else { // TODO 没有结果 } }.addOnFailureListener(this) { // TODO 失败;出现异常 }

各个module的使用示例

mlkit-common (1.3.0新增)

公共库:介于Camera与各个子库之间,为各个子库提供公共业务,从而简化各子库的实现。

mlkit-barcode-scanning

扫描条形码/二维码实现示例:通过直接继承 BarcodeCameraScanActivity 实现的示例 BarcodeScanningActivity

扫描二维码实现示例:通过间接继承 BarcodeCameraScanActivity 实现的示例 QRCodeScanningActivity

扫描二维码(多个结果)实现示例:通过间接继承 BarcodeCameraScanActivity 实现的示例 MultipleQRCodeScanningActivity

mlkit-face-detection

人脸检测实现示例:通过直接继承 FaceCameraScanActivity 实现的示例 FaceDetectionActivity

多人脸检测实现示例:通过间接继承 FaceCameraScanActivity 实现的示例 MultipleFaceDetectionActivity

mlkit-face-mesh-detection (1.2.0新增)

人脸网格检测实现示例:通过直接继承 FaceMeshCameraScanActivity 实现的示例 FaceMeshDetectionActivity

mlkit-image-labeling

图像标签实现示例:通过直接继承 ImageCameraScanActivity 实现的示例 ImageLabelingActivity

mlkit-object-detection

对象检测实现示例:通过直接继承 ObjectCameraScanActivity 实现的示例 ObjectDetectionActivity

多对象检测实现示例:通过间接继承 ObjectCameraScanActivity 实现的示例 MultipleObjectDetectionActivity

mlkit-pose-detection

姿势检测实现示例:通过直接继承 PoseCameraScanActivity 实现的示例 PoseDetectionActivity

mlkit-pose-detection-accurate

姿势检测(精确版)实现示例:通过间接继承 AccuratePoseCameraScanActivity 实现的示例 AccuratePoseDetectionActivity

mlkit-segmentation-selfie

自拍分割实现示例:通过直接继承 SegmentationCameraScanActivity 实现的示例 SelfieSegmentationActivity

mlkit-text-recognition

文字识别实现示例:通过直接继承 TextCameraScanActivity 实现的示例 TextRecognitionActivity

模型配置(可选)

关于依赖项下载模型(如果选择使用 Google Play Services 中的模型)则可以通过在AndroidManifest中声明配置

<meta-data android:name="com.google.firebase.ml.vision.DEPENDENCIES" android:value="ocr" /><!-- 使用多个模型: android:value="ocr,model2,model3" -->

例如:配置条形码模型、人脸模型、OCR模型等等~

<meta-data android:name="com.google.firebase.ml.vision.DEPENDENCIES" android:value="barcode,face,ocr" />

更多使用详情,请查看app中的源码使用示例或直接查看API帮助文档

其他

ABI过滤

在Module的 build.gradle 文件的 android{} 块中设置支持的 SO 库架构(可选,支持多个平台的 so,支持的平台越多,APK体积越大)

defaultConfig { //... ndk { //设置支持的 SO 库架构(开发者可以根据需要,选择一个或多个平台的 so) abiFilters 'armeabi-v7a' // , 'arm64-v8a', 'x86', 'x86_64' } }

JDK版本

需使用JDK8+编译,在项目的build.gradle文件的android{}块中添加配置:

compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

相关推荐

ZXingLite 基于zxing实现的扫码库,优化扫码和生成二维码/条形码功能。

WeChatQRCode 基于OpenCV开源的微信二维码引擎移植的扫码识别库。

CameraScan 一个简化扫描识别流程的通用基础库。

ViewfinderView ViewfinderView一个取景视图:主要用于渲染扫描相关的动画效果。

版本日志

v2.2.1:2024-8-8

  • 优化细节

v2.2.0:2024-7-11

  • 更新CameraScan至v1.2.0
  • 更新ViewfinderView至v1.2.0
  • 更新MLKit相关依赖库版本

v2.1.0:2023-12-31

  • 更新CameraScan至v1.1.0
  • 更新compileSdkVersion至34
  • 更新Gradle至v8.0

v2.0.1:2023-9-13

  • 更新CameraScan至v1.0.1
  • 更新ViewfinderView至v1.1.0

v2.0.0:2023-8-13

  • 移除相机核心库(mlkit-camera-core),改为依赖CameraScan
  • 移除mlkit-barcode-scanning中的 ViewfinderView ,改为依赖ViewfinderView
  • 优化扫描分析过程的性能体验
  • 更新MLKit相关依赖库版本

v1.4.0:2023-4-15

  • 优化CameraScan的缺省配置(CameraConfig相关配置)
  • 优化ViewfinderView自定义属性(新增laserDrawableRatio)
  • 更新MLKit相关依赖库版本
  • 更新CameraX至v1.2.2

查看更多版本日志

赞赏

如果您喜欢MLKit,或感觉MLKit帮助到了您,可以点右上角"Star"支持一下,您的支持就是我的动力,谢谢 :smiley:

<p>您也可以扫描下面的二维码,请作者喝杯咖啡 :coffee: <div> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/a4ec98d8-5dc7-4872-946e-c97c76ca9fbc.png"> </div>

关于我

我的博客GitHubGiteeCSDN博客园
<a title="我的博客" href="https://jenly1314.github.io" target="_blank">Jenly的博客</a><a title="GitHub开源项目" href="https://github.com/jenly1314" target="_blank">jenly1314</a><a title="Gitee开源项目" href="https://gitee.com/jenly1314" target="_blank">jenly1314</a><a title="CSDN博客" href="http://blog.csdn.net/jenly121" target="_blank">jenly121</a><a title="博客园" href="https://www.cnblogs.com/jenly" target="_blank">jenly</a>

联系我

微信公众号Gmail邮箱QQ邮箱QQ群QQ群
Jenly666<a title="给我发邮件" href="mailto:jenly1314@gmail.com" target="_blank">jenly1314</a><a title="给我发邮件" href="mailto:jenly1314@vip.qq.com" target="_blank">jenly1314</a><a title="点击加入QQ群" href="https://qm.qq.com/cgi-bin/qm/qr?k=6_RukjAhwjAdDHEk2G7nph-o8fBFFzZz" target="_blank">20867961</a><a title="点击加入QQ群" href="https://qm.qq.com/cgi-bin/qm/qr?k=Z9pobM8bzAW7tM_8xC31W8IcbIl0A-zT" target="_blank">64020761</a>
<div> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/43c30bc6-895b-4964-88a0-22e56ad55b03.png"> </div>

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多