随着上海市正式开始实施《上海市生活垃圾管理条例》,垃圾分类识别APP也如雨后春笋一般出现。由于笔者最近也在做类似的APP,所以我们专门聊聊这些垃圾分类识别APP背后使用的技术原理。
目前垃圾分类识别APP有以下几种:
- 直接文本搜索:文本=>文本搜索=>结果
- 语音转换成文本,再利用文本搜索:语音=>文本=>文本搜索=>结果
- 图片转换成文本,再利用文本搜索:图片=>文本=>文本搜索=>结果
- 输入图片,通过训练好的算法模型直接分类:图片=>算法模型=>结果
接下来我们具体分析一下之间的不同
1. 直接文本搜索
首先APP内预先需要提供一个常见垃圾分类的表格。其中表格的第一列是垃圾名称,第二列是其分类。最后只需要将输入的关键词与表格的第一列匹配即可。
这类方法简单粗暴,但是用户需要手动输入文字内容,略微不太方便。
2. 语音转文本,再利用文本搜索
此类方法与第一类方法比较类似,只不过省去了输入文字的麻烦。其中使用到了语音识别STT(Speech to Text)技术。目前该技术已经非常成熟,大部分的云厂商都有支持。不过如果是微信小程序的话可以直接利用小程序内置的语音识别插件去做会相对简单一点。其思路基本上都是APP通过按下录音按钮,把录好的语音数据传给第三方的服务器将识别的结果反馈给APP。当然也可以利用iOS或者Android的输入法中内置的STT功能去做输入。
3. 图片转文本,再利用文本搜索
此类方法需要通过识别图片上的物体,然后查表去找到该物体所属的垃圾类别。该类目前比较流行的算法是通过深度学习去识别。类似AlphaGo背后的技术,不过此类算法需要有强大算力和大量的样本数据。通常比较可行的方法是利用大厂提供的开放接口去做这个事情。比如:百度的通用物体识别接口
这种方法的优点是可以一次性识别多个物体的垃圾类别,缺点是目前来看准确性还是不太高。
4. 图片直接分类
此类方法也是利用深度学习,只不过是直接让模型去学习图片的分类,省去了识别物体是什么的过程。其实也非常类似于基于神经网络的手写识别。只不过垃圾分类最多也只有4类而已。
当然,模型的训练前提是大量的样本数据。否则识别效果将不尽人意。而且无法做到同时识别图片上多个物体的分类。
当然,不管哪种方法其目的都是希望帮助用户进行垃圾分类。笔者刚好最近也在做一款基于图片直接分类的垃圾分类微信小程序。由于缺乏训练数据所以识别效果不尽人意,希望大家遇到识别错误的时候纠正分类结果,谢谢支持!