昇腾AI应用,探索人工智能的无限可能,使能千行百业
垃圾分类
概述
垃圾分类是对垃圾收集处置传统方式的改革,是对垃圾进行有效处置的一种科学管理方法。人们面对日益增长的垃圾产量和环境状况恶化的局面,如何通过垃圾分类管理,最大限度地实现垃圾资源利用,减少垃圾处置的数量,改善生存环境状态,是当前世界各国共同关注的迫切问题。
垃圾分类是符合国情的发展策略“既要金山银山,又要绿水青山”,所幸国人已经深刻的意识到垃圾分类带来的巨大经济效益与对环境保护的重要意义。然而面对种类繁多的垃圾,多数国人不能进行有效而全面的分辨,面对这一尴尬现状,人工智能提供了解决方案。
如下图所示,昇腾软件栈中存在一个ATC模型转换工具,针对本应用,我们需要使用该工具将原始模型转换成系统支持的om模型。
本应用采用了下图所示的模块化设计,通过各模块之间的协调配合完成一张图片的推理输出。
其中各个模块的主要功能点如下所示:
- 1.运行管理资源申请:用于初始化系统内部资源,固定的调用流程。
- 2.加载模型文件并构建输出内存:从文件加载离线模型moblienetv2.om数据,需要由用户自行管理模型运行的内存,根据内存中加载的模型获取模型的基本信息包含模型输入、输出数据的数据buffer大小;由模型的基本信息构建模型输出内存,为接下来的模型推理做好准备。
- 3.数据预处理:对读入的图像数据进行预处理,然后构建模型的输入数据。
- 4.模型推理:根据构建好的模型输入数据进行模型推理。
- 5.解析推理结果:根据模型输出,解析模型的推理结果。使用OpenCV将垃圾分类的结果写进图片。
图像预处理
使用DVPP对读入图片进行解码,并缩放至224 × 224分辨率,以符合网络输入大小;在模型转换时,使用AIPP功能,将unit8的数据转换为fp16格式,将0~255的数值归一化到-1~1,将BGR的图片格式转换为RGB格式。
模型推理结果后处理
后处理模块主要是对模型的推理结果进行变换,然后将变换结果展示给用户。首先在终端打印对应垃圾置信度最高的结果,然后使用pillow工具将结果写在图片上,并保存到本地进行展示。
效果展示