基于机器学习的垃圾识别分类
2021-05-19马晓强张必武张环杨鹏程
马晓强 张必武 张环 杨鹏程
摘要:由于我国经济的持续高速发展,生活垃圾急速增长,统计表明我国生活垃圾从1927年的0.5亿吨增至2016年的2.04亿吨。在2019年7月1日,上海试点了号称史上最为严各垃圾分类制度。那句直击灵魂深处的拷问:“你是什么垃圾?”传遍了中国。面对严格的垃圾分类制度,对垃圾实现智能化分类显得尤为重要,因为垃圾的智能化分类不仅能降低人工成本,提高资源的重复利用,而且有助于实现国家生态文明的建设目标。为经济的持续高速发展提供基础保障。
关键词:垃圾分类;深度学习;图像识;VGG16
一、研究背景
早期而研究方法也大多采用传统的目标检测算法。近年来,随着深度学习的火热,目标检测模型也由传统检测算法向卷积神经网络发展,由于卷积神经网络能自主的进行特征的提取和筛选。跟传统目标检测算法相比,其不仅省去了手动提取特征存在的诸多问题也极大的提升了目标检测算法的准确性。本文采用VGG16模型来构建神经网络,来实现垃圾的识别分类。VGG是由Simonyan和Zisserman在文献《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷积神经网络模型。对VGG16进行具体分析,VGG16共包含:13个卷积层,3个全連接层,5个池化层。
二、基于OpenCV和VGG16模型的垃圾识别分类算法
(一)VGG16模型
VGG-16由13层卷积层和3层全连接层组成,该模型要求输入的图片数据大小为224x 224x 3,初始卷积核大小为3x 3 x 3,stride的大小为1,padding的大小为1,pooling为2x 2的最大池化函数 max pooling的方式。模型中的卷积过程为:首先使用两次64个卷积核的卷积处理,接着进行一次池化层,完成后又进行三次256个卷积核的卷积,再采用一次池化层,最后重复两次三个512个卷积核卷积之后,最后进行一次池化层。在卷积层处理后是三次全连接层。
(二)图片处理
基于OpenCV对图像的二值图进行轮廓识别,并得到其边界矩形,通过此方法,能够框选得到图中的主要物体,并依据大小选出方框选出的方框对图像进行裁剪为224*224的尺寸。
首先对图像进行灰度化及二值化处理
origin_image = img.copy()
gray_image = cv2.cvtColor(origin_image, cv2.COLOR_BGR2GRAY)
gray_image = cv2.GAussianBlur(gray_image, (21, 21), 0) # 对灰度图进行高斯模糊处理
diff_image=cv2.threshold(gray_image,160,255,cv2.THRESH_BINARY)[1]#二值化阈值处理
index = 0
max_offset = 0
img_size = img.shape
img_width = img_size[0]
img_height = img_size[1]
for c in contours:
(x, y, w, h) = cv2.boundingRect(c)
offset = w + h
if max_offset< offset: # 选取长宽和最大的边界矩形
max_offset = offse
index = c
cv2.rectangle(origin_image,
(x,y,w,h) = cv2.boundingRect(index)#获取被选取的方框的尺寸
e = max(w, h)
if e >min(img_width, img_height):
e = min(img_width, img_height)
x = int(x - (e - w) / 2)
if x < 0:
x = 0
elif x + e >img_height: x = img_height– e
(三)损失函数
cross_entropy = tf.nn.softmax_cross_entropy_with_logits_v2(logits=fc16, labels=y_input)
loss = tf.reduce_mean(cross_entropy)
具体执行:
第一步是对网络最后一层的输出做一个softmax,公式为:
第二步是softmax的输出向量和样本的实际标签做交叉熵损失。公式如下:
(四)训练过程
(五)测试及分析
经过2万多步的训练,采用VGG16模型的垃圾识别系统的训练集准确度为82.7%,测试集准确度64.5%。准确度仍然有待提高。后期可通过具体分析逐步提高其训练准确度及测试准确度。
三、结束语
本文介绍了基于OpenCV技术和VGG16模型下的垃圾识别分类系统及实现过程。希望该系统的实现能引导更多人认识垃圾的分类及其重要意义。测试表明,该系统在准确度上仍然有一定的问题,在今后还可以对系统进行完善,在图像预处理、模型改进和数据集等方面可以进行更加深入改进和研究。
四、备注
本项目由,西北民族大学本科生科研项目--《基于机器学习的垃圾识别分类系统》;项目编号:XBMU-BYL20174资助研究。
参考文献
[1]Karen Simonyan,Andrew Zisserman.Very Deep Convolutional Networks for Large Scale Image Recognition[J].ResearchGate,2014
[2]彭昕昀,李嘉乐,李婉,刘杏洲,张程发,林显新,欧嘉诚. 基于SSD算法的垃圾识别分类研究[J].韶关学院学报,2019:6
基金项目:西北民族大学本科生科研项目--《基于机器学习的垃圾识别分类系统》;项目编号:XBMU-BYL20174。
作者简介:
马晓强(1998-),男,回,甘肃临夏人,学生,本科生,单位:西北民族大学数学与计算机科学学院,研究方向:python开发,数据分析
张必武(1998-),男,汉,湖北潜江人,学生,本科生,单位:西北民族大学数学与计算机科学学院,研究方向:计算机应用技术,java开发
张环(1998-),男,苗,湖南怀化人,学生,本科生,单位: 西北民族大学数学与计算机科学学院,研究方向:C++,C#开发,Unity游戏
杨鹏程(2000-),男,汉,云南昭通人,学生,本科生,单位:西北民族大学数学与计算机科学学院,研究方向:小游戏开发,web开发,数据挖掘
西北民族大学,甘肃兰州 730000