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

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。

Python打的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  3. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  4. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  5. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  6. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

  7. Python编码记录

    字节流和字符串 当使用Python定义一个字符串时,实际会存储一个字节串: "abc"--[97][98][99] python2.x默认会把所有的字符串当做ASCII码来对待,但 ...

  8. Apache执行Python脚本

    由于经常需要到服务器上执行些命令,有些命令懒得敲,就准备写点脚本直接浏览器调用就好了,比如这样: 因为线上有现成的Apache,就直接放它里面了,当然访问安全要设置,我似乎别的随笔里写了安全问题,这里 ...

  9. python开发编译器

    引言 最近刚刚用python写完了一个解析protobuf文件的简单编译器,深感ply实现词法分析和语法分析的简洁方便.乘着余热未过,头脑清醒,记下一点总结和心得,方便各位pythoner参考使用. ...

  10. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

随机推荐

  1. kotlin之高阶函数

    高阶函数是一种特殊的函数,它接受函数作为参数,或者返回一个函数 import java.awt.geom.Area fun main(arg: Array<String>) { val m ...

  2. CXF框架构建和开发 Services

    Apache CXF 是一个开源的 Services 框架,CXF 帮助您来构建和开发 Services 这些 Services 可以支持多种协议,比如:SOAP.POST/HTTP.RESTful ...

  3. react对字符串转义成html并渲染

    <div dangerouslySetInnerHTML={{__html: "字符串内容"}} />  

  4. CodeIgniter问题:Unable to load the requested file: .php

    调试时出现 Unable to load the requested file: .php, 后来排查到是模板渲染的问题,view函数的参数没接收到,修改后就好了.

  5. PowerDesigner常用命令

    在Tools=>Execute Commands下的Edit/Run Scripts,或者通过Ctrl+Shift+X就可以运行脚本.如图: 1.将所有的表名和列名都修改为大写 '******* ...

  6. 文件上传跨域解决方案-jQuery-File-Upload

    GIT 下载地址 https://github.com/blueimp/jQuery-File-Upload 亲测HTTPS HTTP跨域无压力 不用自带的DEMO 用下面的DEMO <!DOC ...

  7. iOS面试-堆和栈的区别

    堆和栈的区别: 一.堆栈空间分配区别: 1.栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈: 2.堆(操作系统): 一般由程序员分配释放, ...

  8. HANA数据自助查询

    SAP HANA的客户端是C/S模式的,远程使用不太方便,目前有一款TreeSoft数据库管理系统,可以实现通过web方式,访问自助查询HANA数据.大大提高工作效率.还支持MySQL,Oracle, ...

  9. 鸟哥私房菜基础篇:程序管理与 SELinux 初探习题

    猫宁!!! 参考:http://cn.linux.vbird.org/linux_basic/0440processcontrol.php 1-简单说明什么是程序 (program) 而什么是程序 ( ...

  10. PHP新特性

    1.太空船操作符<=> 2.变量类型限定 3.$a = $b??$c 4.常量数组,define($arr,['a','b']) 5.namespace批量导入 等等