1. 引言
我国是人口大国,也是垃圾产生大国,且随着经济稳步发展、民众生活消费水平、城镇化率不断提高,生活垃圾产生量持续走高。2016年我国大、中城市生活垃圾产生量18850.5万吨。2019年生活垃圾产生量增至23560.2万吨,预计2021年我国生活垃圾产量27097.2吨,如图1所示。

Figure 1. Forecast trend chart of domestic waste output of large and medium cities in China from 2016 to 2021
图1. 2016~2021年中国大、中城市生活垃圾产量预测趋势图
为深入贯彻习近平总书记关于生活垃圾分类的重要批示指示精神,落实党中央、国务院决策部署要求,统筹推进“十四五”城镇生活垃圾分类和处理设施建设工作,加快建立分类投放、分类收集、分类运输、分类处理的生活垃圾处理系统,国家发展改革委、住房城乡建设部组织编制了《“十四五”城镇生活垃圾分类和处理设施发展规划》——2021年5月6日 [1]。
通过对文献以及竞品APP的调研,国内目前针对城市生活垃圾分类系统设计方面系统设计方面的研究大多侧重于整个垃圾处理系统的单个子系统,缺乏与垃圾处理系统中其他环节的衔接。其中竞品APP出现智能识别功能图片不准确,数据库训练不完整;只解决用户分类问题、垃圾投放问题没有得到解决等问题;缺乏用户粘性形成的诱因,无法留住用户,帮助用户养成分类习惯 [2]。
基于上述背景,本文通过设计基于YOLOv5模型的垃圾分类回收平台,并提供拍照识别或图像识别等智能化技术。同时,在目标检测的基础上提供数据集管理模块,对用户扫描的图片进行二次审核,当图片数量达到一定时,可以通过标签管理扩充原先数据集没有的类别,以周为单位批量完善数据集,随后定时训练模型,不断提高模型的准确率,让模型识别更加准确。随后,APP提供垃圾投放功能来解决用户垃圾分类后的投放需求,并在个人中心设置丢垃圾提醒功能帮助用户养成垃圾分类的习惯。最后,还提供图像智能识别API接口,例如在弱光环境中,采用EnlightenGAN网络 [3] 对弱光图像进行曝光处理,再进行检测,供垃圾分类系统对接使用。
2. 需求分析
目前,中国已经将北京、天津、上海、重庆、郑州等46个城市作为垃圾分类重点城市,陆续开始严格实行垃圾分类投放。但垃圾分类依旧面临很大的问题,例如居民对垃圾分类的意识依旧较为浅薄,很多人不了解垃圾分类,不清楚垃圾分类标准,甚至有人认为这是没有用的事情。不仅仅是居民,相关部门和政府缺乏完整的体系,虽然出台了一些相关政策并落实,但依旧没有全面实施,还需要长久的努力。因此,迫切需要开发辅助垃圾分类管理的平台,推进垃圾分类工作持续地、真正地落地 [2]。
2.1. 功能需求
卫昱含等人基于互联网技术构建“趣分类”智能垃圾处理系统。该系统分为线上、线下两部分,线下模式用于回收垃圾,实时线上垃圾处理情况;线上模式用于识别住户、显示积分等,并可完成上门回收服务 [4]。
颜谦和等人基于人工智能物联网技术(AIOT)设计了一套垃圾分类方案,平台架构主要包括手机APP应用和下位机两大功能模块,下位机模块主要为用户提供垃圾分类投放处理装置的交互操作,并进行传感数据采集和边缘计算处理,将采集结果通过NBIOT通信模块上传到云平台;手机APP应用端即时与云平台进行通信,为用户对垃圾处理提供控制处理、信息支持、交互操作和监督评价,最终实现垃圾智能的分类和处理 [5]。
孙艳吉以共情为设计的理论支撑点,已解决用户在垃圾分类过程中的问题为切入点,将共情与垃圾分类产品设计、趣分类APP相结合,通过研究用户对产品的使用方式和使用需求,根据不同的场所环境特点以及该场所产生的垃圾种类,将用户人群定位为社区居民、学校学生、商圈用户,并分析用户人群心理需求,对垃圾分类产品进行再设计,吸引人们参与垃圾分类,实现垃圾分类高效回收 [6]。
康欢为生活垃圾分类建立深度学习模型,并不断对模型进行改进和优化,最后将模型部署在移动设备上,帮助人们解决生活垃圾分类问题 [7]。
本文通过借鉴上述垃圾分类回收平台的经验,根据实际应用场景对系统功能需求进行分析,如下所示:
1) 文字搜索:用户可以通过输入关键字查询相关物品所属的垃圾类别,或输入类别来查看其涵盖的垃圾种类。
2) 图片扫描:用户可以通过手机摄像头扫描相关物品查询垃圾类别,用户可以使用两种识别方式,一种是拍照识别,系统根据画面动态监测并识别物品及其垃圾分类种类,并实时显示在画面中,用户还可以从相册中指定图片以获取更加精确的识别结果。
3) 定位模块:用户可以在该模块中选择指定城市或由系统获取手机定位权限自动获取当前城市以便进行周围垃圾终端的查找。
4) 垃圾分类小百科模块:用户可以在小百科中了解各种有关垃圾分类的知识,寓教于乐,在科普中学习垃圾分类知识。
5) 垃圾投放记录模块:用户可以在该模块看到自己有效进行垃圾分类的总次数
6) 垃圾回收终端地图模块:用户通过回收终端地图前往附近垃圾回收终端进行垃圾回收
7) 资源上门回收模块:用户可以在手机上填写需回收旧物的描述,并在系统中与回收人员确认好价钱后由专职回收人员进行资源回收服务。
8) 数据集管理模块:管理员可以对移动端用户上传的图片进行二次审核,当图片数量一定时,还可以通过标签管理扩充原先数据集没有的类别,批量完善数据集,随后定时训练模型,持续提高模型的准确率。
2.2. 性能需求
系统在满足上述功能需求的同时,根据实际应用场景需满足以下的性能需求:
易用性:考虑到用户群体涵盖青少年到老年,界面设计应尽可能简单,提升用户的使用体验,因此,系统需满足易用性需求,方便用户进行垃圾分类,提升用户的使用粘性。
精确性:系统需要精确地检测垃圾周围的环境,由于环境复杂(如弱光场景),目标检测算法需达到较高的精度(如80%),才能准确地向用户准确汇报垃圾类别。
安全性:高安全性可以保证平台可以安全运行,同时保证了用户的使用体验和隐私。对于平台首先要保证数据库的安全性,数据库的安全性是APP安全的基础,也保证了用户的隐私不被泄露。
3. 系统设计
3.1. 功能设计
本系统的服务对象主要是城市居民和系统管理员,主要考虑的是垃圾分类识别、数据集管理、提供智能识别API接口供垃圾分类系统使用,系统功能模块见图2、图3。

Figure 2. User functional module design
图2. 用户移动端功能模块设计

Figure 3. System administrator web-side functional module design
图3. 系统管理员Web端功能模块设计
本系统系统Web端使用AntDesign的UI框架结合Vue进行开发。使用符合AntDesign规范的HTML,CSS和JavaScript代码对页面进行布局,提高开发效率的同时增强项目的可维护性。
本系统后端采用uWSGI + Nginx + SSM框架的组合进行开发,使用SSM框架开发出符合Restful-API规范的接口后使用uWSGI部署至服务器,并采用Nginx框架进行反向代理,实现一定程度的负载均衡。
在算法部署中,Yolov5采用python的flask框架,并利用框架开发web应用将模型部署在服务器上。而EnlightenGAN模型则采用onnx文件,开放神经网络交换(Open Neural Network Exchange)简称ONNX是微软和Facebook提出用来表示深度学习模型的开放格式。所谓开放就是ONNX定义了一组和环境、平台均无关的标准格式,来增强各种AI模型的可交互性。
系统采用单目摄像头进行拍摄识别,结构简单,运算速度快,具有广泛的应用场景。
3.2. 数据库设计
系统采用MySQL数据库,数据实体有用户信息、用户积分信息、活动信息、商品信息、订单信息、拍照记录信息。前端采用网络请求框架调用后端接口,后端利用Mybatis与数据库交互。用户信息保存用户的基本信息,见表1;用户积分信息保存用户的积分,见表2;活动信息保存活动地点,活动开始时间和结束时间等信息,见表3;商品信息保存商品名称、价格等信息,见表4;订单信息保存订单价格、类型等信息,见表5;拍照识别记录表保存用户的拍照记录、图片记录,见表6;
3.3. 算法设计
本系统的核心功能为拍照识别或图片识别以及提供智能图像识别API接口。检测即根据垃圾特征对四类垃圾进行分类判断,智能图像识别API接口根据具体场景调用相应的模型接口,例如在弱光条件下,拍照识别容易产生检测精度下降、检测分类不全的问题。为实现上述功能,本系统采用YOLOv5作为目标检测算法,推理目标分类信息和标定框的位置 [8];在弱光条件下,采用EnlightenGAN网络对弱光图像进行曝光处理,再进行检测,准确率也大大提升。
YOLOv5作为单阶段(one-stage)目标检测算法,将检测问题转换为回归问题,对每一帧图像作出类概率预测和边界框偏移量预测,其检测速度相对较快,符合本系统的应用场景需求 [9]。YOLOv5采用了Mosaic数据增强方式,采用随机缩放、随机裁剪、随机排布的方式进行拼接,可以在不增加推理时延的情况下提高模型的性能,这种方式对小尺寸物体有比较好的效果。YOLOv5还使用自适应锚框计算,它默认采用的是在COCO数据集下640 × 640图像大小下锚定框的尺寸,以后训练时,会自动学习锚框尺寸,采用k均值和遗传学习自适应地计算出最佳锚框值。由于在目标检测中,输入图片尺寸各不相同,简单使用resize会造成图片的失真,YOLOv5对此提出了新的方法,在代码中对letterbox函数中进行了改进,通过计算图片最适宜的尺寸,增加最少的灰边来补齐缺边,很好的保留了图片的特征,减少计算量,提升推理速度 [10]。
EnlightenGAN首先提出一种双判别器来平衡全局和局部低光增强。此外,由于缺乏对真实数据的监督,提出了一种自正则化感知损失的方法来约束低光输入图像与增强图像之间的特征距离,该方法在局部和全局上都被采用,并结合对抗性损失对GAN进行训练。在生成器中,我们还提出利用低光输入的光照信息作为各深度特征层次的自正则注意图,对无监督学习进行正则化。由于没有监督的设置,我们表明EnlightenGAN可以非常容易地用于增强不同领域的真实世界的低光图像。EnlightenGAN的结构如图4所示。

Figure 4. EnlightenGAN network overall architecture diagram
图4. EnlightenGAN网络整体架构图
4. 系统实现
系统使用Android Studio和IDEA作为开发工具,采用AntDesign的UI框架结合Vue以及Flask框架进行开发,页面美观大方,操作简单易用。
4.1. 垃圾分类
4.1.1. 拍照识别
用户成功登陆后,将会跳转到垃圾分类模块。图5是所示页面是垃圾分类页面。当用户点击拍照识别功能时,通过手机摄像头对物体进行拍摄,根据智能技术返回分类卡片,其结果如图6所示。
目标检测算法与垃圾分类识别平台的结合如图7所示。首先,利用 python的pickle模块将训练的模型保存为.pkl文件,由于Flask是一个轻量级的Python Web开发框架,它自带了一个轻型服务器,平台通过框架开发web应用并将模型.pkl文件载入到网络中。随后,移动端用户通过手机APP的拍照识别以及图片识别功能,通过调用接口将图片数据转换为字节流,并将数据作为模型的输入,并输出垃圾识别分类的结果,最后根据模型的预测结果返回分类卡片。
4.1.2. 分类百科
用户可以在小百科中了解各种有关垃圾分类的知识,寓教于乐,在科普中学习垃圾分类知识,其中包括投放要求,常见物品等信息。其信息如图8所示。

Figure 6. The result of photo recognition
图6. 拍照识别结果

Figure 7. Basic framework diagram of the combination of object detection algorithm and garbage sort platform
图7. 目标检测算法与垃圾分类平台的结合基本框架图
4.2. 数据集管理
管理员可以对移动端用户上传的图片进行二次审核,当图片数量一定时,还可以通过标签管理扩充原先数据集没有的类别,批量完善数据集,随后定时训练模型,持续提高模型的准确率。其数据集管理界面如图9所示。
4.3. 弱光图像增强
在弱光环境中,采用EnlightenGAN网络对弱光图像进行曝光处理,再进行检测,其界面如图10所示。

Figure 10. Image enhancement in low-light environment
图10. 弱光图像增强
4.4. 垃圾回收
4.4.1. 终端回收模块
用户通过回收终端地图前往附近垃圾回收终端进行垃圾回收,当用户成功用手机摄像头扫描垃圾回收终端后,系统将会呈现相应的回收信息,其界面如图11所示。
4.4.2. 上门回收模块
用户可以在手机上填写需回收旧物的描述,并在系统中与回收人员确认好价钱后由专职回收人员进行资源回收服务,并换取一定的积分奖励。其界面如图12所示。
5. 结语
本文基于用户垃圾分类意识浅薄、相关部门和政府缺乏完整的垃圾分类体系的背景,通过使用YOLOv5算法、基于EnlightenGAN的弱光图像增强算法和前后端分离技术,设计实现了基于计算机视觉的垃圾分类回收平台。该系统通过拍照识别调用手机摄像头,将图片数据转换为字节流作为部署在服务器上的YOLOv5模型的输入,并返回模型的预测结果到后台进行处理,并弹出相应的分类卡片向移动端用户展示。同时,网页Web端提供数据集管理模块,以周为单位批量完善数据集,扩充垃圾类别,持续提高模型的准确率,成功解决了智能识别功能图片不准确,模型训练不完整,检测类别较少的问题。APP不仅将用户分类与回收的功能需求进行一体化,还提供了回收垃圾提醒服务,从而构建了一个共享度高、可随时随地享受垃圾分类、回收服务的线上平台。在后期,可以添加小游戏,以增加平台的趣味性,提高用户的使用粘度。