赞
踩
目录
为什么以及如何在应用中使用图像识别
从旅游到物流,从医疗保健到电子商务,图像识别现在越来越常用。仍然认为这些技术仅适用于“大玩家”?阅读如何通过几个简单的步骤将其实现到您的应用程序中。
图像识别技术在我们的日常生活中越来越常用。公司和企业用它来解决从安全到客户满意度调查的各种问题。对具有图像识别功能的产品的投资预计到2021年将增长到390亿美元。
机器学习(图像识别的核心)的实现在从头开始引入时可能会变得麻烦。幸运的是,有一些公共库允许在开发产品时使用现成的模型。Firebase ML Kit就是其中之一。接下来,我们将告诉您如何在应用程序开发中使用它。
ML Kit是SDK,它允许以简单的方式使用现成的机器学习谷歌对iOS和Android的解决方案。无论您是否具有机器学习应用程序的经验,您都可以在几行代码中实现必要的功能。如果您是一位经验丰富的程序员,您可以下载自己的TensorFlow模型。
ML Kit可以在线工作(在这种情况下,您可以免费访问更大的数据库,但查询数量有限:只有前几千个免费)和离线工作。文本,条形码和图像识别等功能可在线和离线使用。地标识别(知名建筑,河流,街道等)仅可在线获取,并且只能通过设备离线识别。
举个例子,让我们从离线文本识别开始:
- private fun runTextSearchOnDevice(bitmap: Bitmap) {
- val image = FirebaseVisionImage.fromBitmap(bitmap)
- val textDetector = FirebaseVision.getInstance().onDeviceTextRecognizer
- textDetector.processImage(image).addOnSuccessListener {
- processTextSearchFromDevice(it)
- }.addOnFailureListener {
- Toast.makeText(this, it.toString(), Toast.LENGTH_SHORT).show()
- }
- }
在` processTextSearchFromDevice`方法中,我们处理Firebase提供的数据。每个功能对应不同类型的模型,可以在文档中找到。在我们的例子中,我们得到了` Rect`对象中文本坐标的对象数组,当然还有Firebase识别的文本本身。对于在线使用,代码几乎相同:
- val options = FirebaseVisionCloudTextRecognizerOptions.Builder()
- .setLanguageHints(resources.getStringArray(R.array.textRecognitionLanguages).toList())
- .build()
- val textDetector = FirebaseVision.getInstance().getCloudTextRecognizer(options)
现在,我们可以添加可能会被Firebase识别的语言。结果,我们得到了相同的对象数组。如果您计划识别文档,为方便起见,您可以使用` getCloudDocumentTextRecognizer`。
对于人脸识别,方法几乎相同。
- val image = FirebaseVisionImage.fromBitmap(bitmap)
- val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(getFaceDetectorOptions())
- faceDetector.detectInImage(image).addOnSuccessListener {...}
在设置中,我们可以提到我们是否需要识别“地标”(眼睛,鼻子,耳朵等),类型(对我们来说,速度或准确度可能很重要),按类别分类,例如,只有睁开眼睛或微笑的照片。以下是设置示例:
- FirebaseVisionFaceDetectorOptions.Builder()
- .setModeType(FirebaseVisionFaceDetectorOptions.ACCURATE_MODE)
- .setLandmarkType(FirebaseVisionFaceDetectorOptions.NO_LANDMARKS)
- .setClassificationType(FirebaseVisionFaceDetectorOptions.NO_CLASSIFICATIONS)
- .build()
因此,Firebase将生成一组具有分组面坐标的对象,如果有批准,则生成带有坐标的“地标”数组。
最后,让我们讨论如何识别照片图像。一般来说,一切都与以前的情况几乎相同。例如,在这里,它如何脱机工作:
- val labelDetector = FirebaseVision.getInstance().visionLabelDetector
- labelDetector.detectInImage(image).addOnSuccessListener {...}
这是一个在线变体:
- val options = FirebaseVisionCloudDetectorOptions.Builder()
- .setModelType(FirebaseVisionCloudDetectorOptions.LATEST_MODEL)
- .setMaxResults(15)
- .build()
- val labelDetector = FirebaseVision.getInstance().getVisionCloudLabelDetector(options)
- labelDetector.detectInImage(image).addOnSuccessListener {...}
在设置中,您可以提及显示的结果的最大值和应该应用的模型(稳定的或最新的可用)。因此,您会收到带有名称的对象数组(取决于Firebase在照片中看到的内容),精确度介于0.01和1.0之间。
正如您所看到的,没有复杂性,对于大多数情况下,免费(本地)ML Kit就足够了。
特别是机器学习和图像识别,不一定非同寻常。例如,在您的应用中,当用户在注册时添加照片时,可以在此阶段使用它。您所需要的只是检查图片是否合适——至少如果它不是用户宠物的图像。并且客户希望尽快开始使用您的产品,并且不想等待审核人批准照片。
原文地址:https://www.codeproject.com/Articles/1272374/Image-Recognition-in-Apps-Why-and-How-to-Use
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。