当前位置:   article > 正文

应用中的图像识别:为什么以及如何使用_为什么实现对图片的识别

为什么实现对图片的识别

目录

介绍

背景

Firebase ML Kit是什么及它如何工作

如何将图像识别集成到应用程序中

让我们总结一下


为什么以及如何在应用中使用图像识别

介绍

从旅游到物流,从医疗保健到电子商务,图像识别现在越来越常用。仍然认为这些技术仅适用于大玩家?阅读如何通过几个简单的步骤将其实现到您的应用程序中。

背景

图像识别技术在我们的日常生活中越来越常用。公司和企业用它来解决从安全到客户满意度调查的各种问题。对具有图像识别功能的产品的投资预计2021年将增长390亿美元

机器学习(图像识别的核心)的实现在从头开始引入时可能会变得麻烦。幸运的是,有一些公共库允许在开发产品时使用现成的模型。Firebase ML Kit就是其中之一。接下来,我们将告诉您如何在应用程序开发中使用它。

Firebase ML Kit是什么及它如何工作

ML KitSDK,它允许以简单的方式使用现成的机器学习谷歌对iOSAndroid的解决方案。无论您是否具有机器学习应用程序的经验,您都可以在几行代码中实现必要的功能。如果您是一位经验丰富的程序员,您可以下载自己的TensorFlow模型。

ML Kit可以在线工作(在这种情况下,您可以免费访问更大的数据库,但查询数量有限:只有前几千个免费)和离线工作。文本,条形码和图像识别等功能可在线和离线使用。地标识别(知名建筑,河流,街道等)仅可在线获取,并且只能通过设备离线识别。

如何将图像识别集成到应用程序中

举个例子,让我们从离线文本识别开始:

  1. private fun runTextSearchOnDevice(bitmap: Bitmap) {
  2. val image = FirebaseVisionImage.fromBitmap(bitmap)
  3. val textDetector = FirebaseVision.getInstance().onDeviceTextRecognizer
  4. textDetector.processImage(image).addOnSuccessListener {
  5. processTextSearchFromDevice(it)
  6. }.addOnFailureListener {
  7. Toast.makeText(this, it.toString(), Toast.LENGTH_SHORT).show()
  8. }
  9. }

processTextSearchFromDevice`方法中,我们处理Firebase提供的数据。每个功能对应不同类型的模型,可以在文档中找到。在我们的例子中,我们得到了Rect`对象中文本坐标的对象数组,当然还有Firebase识别的文本本身。对于在线使用,代码几乎相同:

  1. val options = FirebaseVisionCloudTextRecognizerOptions.Builder()
  2. .setLanguageHints(resources.getStringArray(R.array.textRecognitionLanguages).toList())
  3. .build()
  4. val textDetector = FirebaseVision.getInstance().getCloudTextRecognizer(options)

现在,我们可以添加可能会被Firebase识别的语言。结果,我们得到了相同的对象数组。如果您计划识别文档,为方便起见,您可以使用getCloudDocumentTextRecognizer`

对于人脸识别,方法几乎相同。

  1. val image = FirebaseVisionImage.fromBitmap(bitmap)
  2. val faceDetector = FirebaseVision.getInstance().getVisionFaceDetector(getFaceDetectorOptions())
  3. faceDetector.detectInImage(image).addOnSuccessListener {...}

在设置中,我们可以提到我们是否需要识别地标(眼睛,鼻子,耳朵等),类型(对我们来说,速度或准确度可能很重要),按类别分类,例如,只有睁开眼睛或微笑的照片。以下是设置示例:

  1. FirebaseVisionFaceDetectorOptions.Builder()
  2. .setModeType(FirebaseVisionFaceDetectorOptions.ACCURATE_MODE)
  3. .setLandmarkType(FirebaseVisionFaceDetectorOptions.NO_LANDMARKS)
  4. .setClassificationType(FirebaseVisionFaceDetectorOptions.NO_CLASSIFICATIONS)
  5. .build()

因此,Firebase将生成一组具有分组面坐标的对象,如果有批准,则生成带有坐标的地标数组。

最后,让我们讨论如何识别照片图像。一般来说,一切都与以前的情况几乎相同。例如,在这里,它如何脱机工作:

  1. val labelDetector = FirebaseVision.getInstance().visionLabelDetector
  2. labelDetector.detectInImage(image).addOnSuccessListener {...}

这是一个在线变体:

  1. val options = FirebaseVisionCloudDetectorOptions.Builder()
  2. .setModelType(FirebaseVisionCloudDetectorOptions.LATEST_MODEL)
  3. .setMaxResults(15)
  4. .build()
  5. val labelDetector = FirebaseVision.getInstance().getVisionCloudLabelDetector(options)
  6. labelDetector.detectInImage(image).addOnSuccessListener {...}

在设置中,您可以提及显示的结果的最大值和应该应用的模型(稳定的或最新的可用)。因此,您会收到带有名称的对象数组(取决于Firebase在照片中看到的内容),精确度介于0.011.0之间。

正如您所看到的,没有复杂性,对于大多数情况下,免费(本地)ML Kit就足够了。

让我们总结一下

特别是机器学习和图像识别,不一定非同寻常。例如,在您的应用中,当用户在注册时添加照片时,可以在此阶段使用它。您所需要的只是检查图片是否合适——至少如果它不是用户宠物的图像。并且客户希望尽快开始使用您的产品,并且不想等待审核人批准照片。

 

原文地址:https://www.codeproject.com/Articles/1272374/Image-Recognition-in-Apps-Why-and-How-to-Use

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/748691
推荐阅读
  

闽ICP备14008679号