.智能识别图片物体。这步是智能垃圾分类的魔法核心。原理是人工智能会根据打上标签的海量图片来识别新的图片所归属的分类标签。好奇的读者可能会问,我没学过深度学习啊?我也不会训练模型,怎么办?

python大大笑了,“没事,bat等巨头早就把这些核心人工智能能力封装成容易使用的接口了!为双喜鸟快速开发,我们只要站在巨人的肩膀上就行了。“

核心技术原理

智能识别图片的所属分类。这个是用的百度的智能api,只要把图片传给百度api,API就会识别该图片,并把该图片所归属的分类返回一个数组列表。智能识别图片的分类标签效果如图,左边是图,右边是api识别后的分类标签:

有这么好的东东,让我们立刻看看如何用吧。

首先申请百度图像识别API的用户和key。请移步百度智能api中心申请。

安装百度图像识别Python 

  • 如果已安装pip,执行pip install baidu-aip即可。
  • 如果已安装setuptools,执行python setup.py install即可。

初始化AipImageClassify

AipImageClassify是图像识别的Python SDK客户端,为使用图像识别的开发人员提供了一系列的交互方法。

from aip import AipImageClassify
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)

通用物体识别接口调用

该请求用于通用物体识别,即对于输入的手拍垃圾分类图片(可正常解码,且长宽比适宜),输出图片中的物体及场景标签。

""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用通用物体识别 """
client.advancedGeneral(image);
""" 如果有可选参数 """
options = {}
options["baike_num"] = 5
""" 带参数调用通用物体识别 """
client.advancedGeneral(image, options)

调用后返回结果例子如下:

{
"log_id": 327863200205075661,
"result_num": 5,
"result": [{
"score": 0.967622,
"root": "固体",
"baike_info": {
"baike_url": ......................

结果可以看到返回识别信息里包含了物体标签的信息。并且有score等字段,究竟都代表了什么涵义呢?看看下面的结果详细定义吧

结果详细定义

4.结果和条目文本相似度匹配。有了图片所归属的分类标签后,需要根据自然语言的相似度和垃圾分类条目进行相似度匹配。计算匹配后,将匹配度最高的垃圾分类返回微信界面,提示用户该垃圾具体分类是什么,自此这个智能垃圾分类小程序就开发完毕。

涉及到的python关键点是:

需要将垃圾分类的条目结构化到python代码。在设计前,请参考下官方的垃圾分类指南图。

对应python代码为:

trash_cat={}
trash_cat['circle']=['纸张','塑料','玻璃'.........]#可回收
...................................... #有害垃圾

将图片识别的标签和垃圾分类条目进行匹配,选出最匹配的垃圾分类条目。

python关键代码,将标签分词后形成:

all_doc_list = []
for doc in all_doc:
doc_list = [word for word in jieba.cut(doc)]
all_doc_list.append(doc_list)

然后用dictionary方法获取词袋(bag-of-words)

dictionary = corpora.Dictionary(all_doc_list)

使用doc2bow制作语料库

corpus = [dictionary.doc2bow(doc) for doc in all_doc_list]

相似度分析

使用TF-IDF模型对语料库建模

tfidf = models.TfidfModel(corpus)

获取测试文档中,每个词的TF-IDF值

tfidf[doc_test_vec]

然后就可以根据相似度进行匹配,并将图片识别后的标签和最相匹配的分类条目关联起来,返回给用户了。

对于一个对小程序开发有了解的python程序员来说,一个小时已经可以轻松开发出基于百度智能api的能智能识别拍图的垃圾分类程序了。神奇吧!

总结:

本文从垃圾分类的痛点谈起,通过微信小程序+智能识别api+NLP文本相似度等开发关键点的解说,给有志于利用人工智能技术的程序员,短时间高效率的开发出智能方便垃圾分类的应用指明了一条便捷的道路。

希望大家能通过python技术,让我们的生活更方便和美好。欢迎在评论区进行意见建议交流。

本文仅代表作者个人观点,不代表SEO研究协会网(www.seoxiehui.cn)官方发声,对观点有疑义请先联系作者本人进行修改,若内容侵权或非法,请先联系发布者或作者删除,若需平台协助请联系平台管理员,邮箱cxb5918@163.com。学习互联网营销技术请到巨推学院www.jutuiedu.com。

最新文章

  1. Wiki安装(PHP +Sqlite+Cache)
  2. HDU 3221 Brute-force Algorithm
  3. linux curl 下载jdk
  4. 异步I/O操作
  5. 使用NPOI将TABLE内容导出到EXCEL
  6. servlet中的转发和重定向问题
  7. SQL语句AND 和 OR执行的优先级
  8. [AngularJS] Accessing Services from Console
  9. hdu 1203 I NEED A OFFER (0-1背包)
  10. NSStringDrawingOptions-b
  11. 第17条:实现description方法
  12. 02_使用WebMagic爬虫获取CSDN推荐专家的个人博客信息
  13. ASP.NET-FineUI开发实践-4(二)
  14. js数组及数组应用(冒泡和二分,遍历输出)
  15. 使用C语言实现一个自动刷弹幕的程序
  16. shell爬虫--抓取某在线文档所有页面
  17. 使用 Linux 自带的 logrotate 程序来控制日志文件尺寸
  18. Web移动端布局
  19. 图片Bitmap在本地的存储与读取 File
  20. Wannafly挑战赛24游记

热门文章

  1. c++ vector容器自增长
  2. 轻量级通用上采样算子-CARAFE
  3. MATLAB常用快捷键总结
  4. javascript语法 1.运算符 2. 流程控制 3. 函数 4. 四种变量 5. 数据类型的运用 6. js页面交互
  5. 分布式消息通信之RabbitMQ Tutorials
  6. 删除kubernetes-dashboard
  7. [Kevin英语情报局]那些年我们说过的中式英语
  8. vue项目中兼容ie8以上浏览器的配置
  9. Java High Level REST Client 之 创建索引
  10. 幻数浅析(Magic Number)