“你是什么垃圾?”Python垃圾分类帮你告别灵魂拷问

论坛 期权论坛 期权     
15Seconds   2019-7-7 23:27   3716   0
作者 / wwcheng公众号 / 15Seconds


垃圾分类还需要考虑猪的感受???
小龙虾的虾黄是什么垃圾?小龙虾的壳是什么垃圾?小龙虾的肉是什么垃圾?粽叶是什么垃圾?粽肉是什么垃圾?你是什么垃圾?(小龙虾都要哭了。。)
如果真的是按照这个分类的话,那真是吃小龙虾一时爽,打扫战场愁断肠啊!
也许这些追问显得有些较真和搞笑,但也真实地表明近期人们对于垃圾分类的关注。
今天的内容,是讨论如何利用人工智能对垃圾进行分类,从而让大家有吃小龙虾、喝奶茶的资格不再为垃圾丢哪里而烦恼。
前段时间接触了百度AI,今天的内容依然是借助百度AI开放平台,用Python对垃圾图片进行物体识别,再通过相关的垃圾分类查询网站进行分类,最终实现Python简易版的垃圾分类。
一、程序效果图
双击exe文件即可运行,不需要任何编程环境。


二、准备工作
导入网络爬虫常用的模块
  1. import base64
复制代码
  1. import json
复制代码
  1. import os
复制代码
  1. import re
复制代码
  1. import requests
复制代码
  1. import win32ui
复制代码
  1. from urllib import parse
复制代码
  1. from bs4 import BeautifulSoup
复制代码
三、导入图片
首先需要对图片进行64位编码(将图片数据编码成一串字符串,使用该字符串代替图像地址)。
导入图片函数如下:
  1. def image_load():
复制代码
  1.     dlg = win32ui.CreateFileDialog(1)
复制代码
  1.     dlg.SetOFNInitialDir(os.path.abspath(os.curdir))
复制代码
  1.     dlg.DoModal()
复制代码
  1.     image_path = dlg.GetPathName()
复制代码
  1.     f = open(image_path, 'rb')
复制代码
  1.     image = base64.b64encode(f.read())
复制代码
  1.     f.close
复制代码
  1.     return image
复制代码
四、物体识别
图像物体识别是人工智能的典型案例。输入一张图片,就能得到这张图片中的物体名称或者场景名称。
我这里采用的是百度AI的通用物体和场景识别API来实现垃圾图像的识别。借助百度较为成熟开放的技术,省去我们搜集图像样本,建立模型的时间。


物体识别函数如下:
  1. def baiduai_query(image):
复制代码
  1.     request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general"
复制代码
  1.     access_token = '24.40a71124704aa4cd793357f9fc2782c0.2592000.1565068326.282335-16728698'
复制代码
  1.     request_url = request_url + "?access_token=" + access_token
复制代码
  1.     data = parse.urlencode({"image": image})
复制代码
  1.     headers = {'Content-Type': 'application/x-www-form-urlencoded'}
复制代码
  1.     request = requests.post(request_url, data=data, headers=headers)
复制代码
  1.     r = json.loads(request.text)
复制代码
  1.     key1 = r['result'][0]['keyword']
复制代码
  1.     key2 = r['result'][1]['keyword']
复制代码
  1.     keyword = [key1, key2]
复制代码
  1.     return keyword
复制代码
五、垃圾分类
借助网站(https://lajifenleiapp.com/) 对图像识别结果进行爬取,最终返回分类结果。
  1. def lajifenlei_query(query_word):
复制代码
  1.     request = requests.get("https://lajifenleiapp.com/sk/"+query_word)
复制代码
  1.     soup = BeautifulSoup(request.text, 'lxml')
复制代码
  1.     respose = soup.find_all('div', attrs={'class': 'row'})
复制代码
  1.     pattern = re.compile(r".*?属于.*?", re.S)
复制代码
  1.     if re.match(pattern, respose[2].text):
复制代码
  1.         print(respose[2].text.strip()+'\n')
复制代码
  1.         print(respose[4].text.strip())
复制代码
  1.         print(respose[5].text.strip())
复制代码
  1.         print(respose[6].text.strip().replace('\n\n', ''))
复制代码
  1.     else:
复制代码
  1.         result = 'https://lajifenleiapp.com/ 网站暂未收录\“%s\”的相关垃圾分类信息' % query_word
复制代码
  1.         print(result)
复制代码
六、程序入口
最后,添加循环和程序入口,最终封装为可执行文件(exe)。
  1. def main():
复制代码
  1.     image = image_load()
复制代码
  1.     print('正在识别图片···')
复制代码
  1.     query_word = baiduai_query(image)
复制代码
  1.     print('AI识别结果1'.center(40, '-'))
复制代码
  1.     lajifenlei_query(query_word[0])
复制代码
  1.     print('AI识别结果2'.center(40, '-'))
复制代码
  1.     lajifenlei_query(query_word[1])
复制代码
  1.     print('识别结束'.center(40, '-'))
复制代码
  1. [/code][code]
复制代码
  1. if __name__ == '__main__':
复制代码
  1.     str = input('\n'+"输入1开始识别图片并分类,输入0结束程序:")
复制代码
  1.     while str == '1':
复制代码
  1.         main()
复制代码
  1.         str = input('\n'+"输入1开始识别图片并分类,输入0结束程序:")
复制代码
[code][/code]
结语
上面这些都是人工智能与实际生活相结合的一些案例,我相信在将来肯定会实现,但是实现的过程确实充满艰辛,这对物体识别的精确度要求非常高,之前目前的水平还达不到。图片内的物品数量、图片自身的素质等问题短期内都难以解决。虽然前路不易,但是我对人工智能的未来却更为期待。
本公众号工具会在Github上正式发布和后续更新。
Github项目地址:https://github.com/nigo81/tools-for-auditor
微信公众号:15Seconds
订阅公众号之后,在后台回复“tools”可获取15Seconds公众号所有工具!
[/url][url=http://mp.weixin.qq.com/s?__biz=Mzg5MjI1ODE2OA==&mid=2247483711&idx=1&sn=0495ed731c88e56146c051297d1c8bf2&chksm=cfc19328f8b61a3e0887b3e8552b5220e8de478dbd752cac65808ef83bc97f0412116a9b0483&scene=21#wechat_redirect]往期文章:百度AI,带你体验全新的百度大脑
[/url][url=http://mp.weixin.qq.com/s?__biz=Mzg5MjI1ODE2OA==&mid=2247483711&idx=1&sn=0495ed731c88e56146c051297d1c8bf2&chksm=cfc19328f8b61a3e0887b3e8552b5220e8de478dbd752cac65808ef83bc97f0412116a9b0483&scene=21#wechat_redirect]往期文章:利用Excel获取金融大数据
喜欢我制作的工具,可以点击右下角“在看”或者分享,谢谢大家订阅与支持!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP