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

目录

介绍

背景

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

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

让我们总结一下


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

介绍

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

背景

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

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

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

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

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

让我们总结一下

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

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值