馬曉強 張必武 張環(huán) 楊鵬程
摘要:由于我國經(jīng)濟的持續(xù)高速發(fā)展,生活垃圾急速增長,統(tǒng)計表明我國生活垃圾從1927年的0.5億噸增至2016年的2.04億噸。在2019年7月1日,上海試點了號稱史上最為嚴各垃圾分類制度。那句直擊靈魂深處的拷問:“你是什么垃圾?”傳遍了中國。面對嚴格的垃圾分類制度,對垃圾實現(xiàn)智能化分類顯得尤為重要,因為垃圾的智能化分類不僅能降低人工成本,提高資源的重復利用,而且有助于實現(xiàn)國家生態(tài)文明的建設目標。為經(jīng)濟的持續(xù)高速發(fā)展提供基礎保障。
關鍵詞:垃圾分類;深度學習;圖像識;VGG16
一、研究背景
早期而研究方法也大多采用傳統(tǒng)的目標檢測算法。近年來,隨著深度學習的火熱,目標檢測模型也由傳統(tǒng)檢測算法向卷積神經(jīng)網(wǎng)絡發(fā)展,由于卷積神經(jīng)網(wǎng)絡能自主的進行特征的提取和篩選。跟傳統(tǒng)目標檢測算法相比,其不僅省去了手動提取特征存在的諸多問題也極大的提升了目標檢測算法的準確性。本文采用VGG16模型來構(gòu)建神經(jīng)網(wǎng)絡,來實現(xiàn)垃圾的識別分類。VGG是由Simonyan和Zisserman在文獻《Very Deep Convolutional Networks for Large Scale Image Recognition》中提出卷積神經(jīng)網(wǎng)絡模型。對VGG16進行具體分析,VGG16共包含:13個卷積層,3個全連接層,5個池化層。
二、基于OpenCV和VGG16模型的垃圾識別分類算法
(一)VGG16模型
VGG-16由13層卷積層和3層全連接層組成,該模型要求輸入的圖片數(shù)據(jù)大小為224x 224x 3,初始卷積核大小為3x 3 x 3,stride的大小為1,padding的大小為1,pooling為2x 2的最大池化函數(shù) max pooling的方式。模型中的卷積過程為:首先使用兩次64個卷積核的卷積處理,接著進行一次池化層,完成后又進行三次256個卷積核的卷積,再采用一次池化層,最后重復兩次三個512個卷積核卷積之后,最后進行一次池化層。在卷積層處理后是三次全連接層。
(二)圖片處理
基于OpenCV對圖像的二值圖進行輪廓識別,并得到其邊界矩形,通過此方法,能夠框選得到圖中的主要物體,并依據(jù)大小選出方框選出的方框?qū)D像進行裁剪為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
(三)損失函數(shù)
cross_entropy = tf.nn.softmax_cross_entropy_with_logits_v2(logits=fc16, labels=y_input)
loss = tf.reduce_mean(cross_entropy)
具體執(zhí)行:
第一步是對網(wǎng)絡最后一層的輸出做一個softmax,公式為:
第二步是softmax的輸出向量和樣本的實際標簽做交叉熵損失。公式如下:
(四)訓練過程
(五)測試及分析
經(jīng)過2萬多步的訓練,采用VGG16模型的垃圾識別系統(tǒng)的訓練集準確度為82.7%,測試集準確度64.5%。準確度仍然有待提高。后期可通過具體分析逐步提高其訓練準確度及測試準確度。
三、結(jié)束語
本文介紹了基于OpenCV技術(shù)和VGG16模型下的垃圾識別分類系統(tǒng)及實現(xiàn)過程。希望該系統(tǒng)的實現(xiàn)能引導更多人認識垃圾的分類及其重要意義。測試表明,該系統(tǒng)在準確度上仍然有一定的問題,在今后還可以對系統(tǒng)進行完善,在圖像預處理、模型改進和數(shù)據(jù)集等方面可以進行更加深入改進和研究。
四、備注
本項目由,西北民族大學本科生科研項目--《基于機器學習的垃圾識別分類系統(tǒng)》;項目編號:XBMU-BYL20174資助研究。
參考文獻
[1]Karen Simonyan,Andrew Zisserman.Very Deep Convolutional Networks for Large Scale Image Recognition[J].ResearchGate,2014
[2]彭昕昀,李嘉樂,李婉,劉杏洲,張程發(fā),林顯新,歐嘉誠. 基于SSD算法的垃圾識別分類研究[J].韶關學院學報,2019:6
基金項目:西北民族大學本科生科研項目--《基于機器學習的垃圾識別分類系統(tǒng)》;項目編號:XBMU-BYL20174。
作者簡介:
馬曉強(1998-),男,回,甘肅臨夏人,學生,本科生,單位:西北民族大學數(shù)學與計算機科學學院,研究方向:python開發(fā),數(shù)據(jù)分析
張必武(1998-),男,漢,湖北潛江人,學生,本科生,單位:西北民族大學數(shù)學與計算機科學學院,研究方向:計算機應用技術(shù),java開發(fā)
張環(huán)(1998-),男,苗,湖南懷化人,學生,本科生,單位:?西北民族大學數(shù)學與計算機科學學院,研究方向:C++,C#開發(fā),Unity游戲
楊鵬程(2000-),男,漢,云南昭通人,學生,本科生,單位:西北民族大學數(shù)學與計算機科學學院,研究方向:小游戲開發(fā),web開發(fā),數(shù)據(jù)挖掘
西北民族大學,甘肅蘭州?730000