设计一个基于深度学习的生活垃圾分类机器人软件系统,针对现实社会中产生的垃圾照片进行自动识别分类,对不同类别的垃圾,干垃圾,湿垃圾,可回收垃圾,有害垃圾等进行分类统计处理,减轻人工针对垃圾分类的工作量,提高垃圾分类的效率。

原文地址

一、程序设计

本基于深度学习的生活垃圾分类机器人软件,系统基础建设功能是垃圾的收集分类,因此需要针对垃圾数据的同图片采集的方式通过深度学习训练垃圾识别模型,进而实现从不同垃圾图片样本中识别垃圾种类。因此在针对垃圾数据识别训练之前,需要准备训练使用的样本数据图片集合,此部分采用网络爬虫的技术手段收集互联网中存在的垃圾图片样本,进行归类整理。垃圾数据图片收集的爬取过程逻辑,具体如图所示。

二、效果实现

分类统计

垃圾管理

垃圾识别




其他效果省略

三、算法实验

本次毕设系统在设计中,主要采用ResNext101_32x16d_WSL网络作为基本的网络结构进行迁移学习,将CBAM注意力机制模块添加在首层卷积层,来增强图像特征表征能力,关注图像的重要特征抑制不必要的特征,固定除全连接层之外的其他层的权重。为降低过拟合,在模型全连接层添加了Dropout层,损失函数采用交叉熵损失函数,优化函数对比了SGD和Adam,Adam在起始收敛速度快,但最终SGD精度高,所以采用了SGD。最终模型结构如图所示。

核心实现源码

import numpy as np
import scipy.io
import matplotlib.pyplot as pltclass Pegasos:def __init__(self, train_path, test_path, C, T, loss):self.__dataprocess(train_path, test_path)self.n = len(self.train_x)self.C = Cself.T = Tself.lam = 1/(self.n*self.C)self.loss = lossself.W = np.random.randn(1899, 1)self.b = np.random.randn(1, 1)self.choose = np.random.choice(self.n, self.T, replace = True)self.__Pegasos()def __dataprocess(self, train_path, test_path):''' 数据处理函数'''train_set = scipy.io.loadmat(train_path)test_set = scipy.io.loadmat(test_path)self.train_x = train_set['X']self.test_x = test_set['Xtest']self.train_y = train_set['y'].astype(np.int16) * 2 - 1self.test_y = test_set['ytest'].astype(np.int16) * 2 - 1def __Pegasos(self):''' 通过 Pegasos 算法训练模型, st为 y * (wx + b)'''cost = []for t in range(1, self.T + 1):eta = 1 / (self.lam * t)st = self.train_y[self.choose[t-1]][0] * self.classifier(self.train_x[self.choose[t-1]])self.W, self.b = self.loss.gradDes(self.W, self.b, np.swapaxes([self.train_x[self.choose[t-1]]], 0, 1), self.train_y[self.choose[t-1]][0], st, self.lam, eta)cost.append(self.loss.loss(self.W, self.lam, st))self.__plot(cost)def classifier(self, x):'''分类器, 当前 W, b 下模型计算结果'''return np.matmul(x, self.W) + self.bdef classify(self):''' 分类: 使用训练后的模型对训练集、测试集分类, 并将正确分类的数量存储在数组 num 中使用数组? 因为懒得为两个数据集合起两个名字了'''num = [0, 0]for i in range(len(self.train_y)):num[0] += 1 if self.classifier(self.train_x[i]) * self.train_y[i][0] >= 1 else 0for i in range(len(self.test_y)):num[1] += 1 if self.classifier(self.test_x[i]) * self.test_y[i][0] >= 1 else 0self.__print(num)def __print(self, num):''' 打印模型在训练集和测试集上的测试结果'''print('支持向量机')print('C = ', self.C)print('T = ', self.T)print('训练集acc = {}, {}/{}'.format(num[0]/len(self.train_y), num[0], len(self.train_y)))print('测试集acc = {}, {}/{}'.format(num[1]/len(self.test_y), num[1], len(self.test_y)))def __plot(self, cost):''' 绘制目标函数梯度下降的图像'''t = np.arange(self.T)plt.plot(t, cost, 'r')plt.title("C = {}, T = {}, loss: {}".format(self.C, self.T, self.loss.__name__))plt.legend()plt.savefig('../output/{}/{}_{}.png'.format(self.loss.__name__, self.C, self.T))class hinge:@staticmethoddef gradDes(W, b, x, y, st, lam, eta):if st < 1 :W -= eta * (lam * W - y * x)b += eta * yelse:W -= eta * lam * Wreturn W, b@staticmethoddef loss(W, lam, st):return np.linalg.det(lam / 2 * np.matmul(np.swapaxes(W,0,1), W) + np.max([0, 1-st]))class exponential:@staticmethoddef gradDes(W, b, x, y, st, lam, eta):if st < -8: st = -8exp = np.exp(-st)W -= eta * (lam * W - y * x * exp)b += eta * y * expreturn W, b@staticmethoddef loss(W, lam, st):return np.linalg.det(lam / 2 * np.matmul(np.swapaxes(W,0,1), W) + np.exp(-st))class logistic:@staticmethoddef gradDes(W, b, x, y, st, lam, eta):exp = np.exp(-st)W -= eta * (lam * W - y * x * exp / (1 + exp))b += eta * y * exp / (1 + exp)return W, b@staticmethoddef loss(W, lam, st):return np.linalg.det(lam / 2 * np.matmul(np.swapaxes(W,0,1), W) + np.log(1 + np.exp(-st)))

基于Python+深度学习+神经网络实现高度可用的生活垃圾分类机器人程序相关推荐

  1. 利用python深度学习神经网络预测五年内糖尿病的发生(全代码)

    各位朋友大家好,今天我们做一个深度学习神经网络的项目,预测五年内糖尿病的发生.神经网络但凡入门数据科学的人都知道,我觉得叫神经网络是从仿生学角度的命名,从数据科学角度我更喜欢称它为多层感知机(mult ...

  2. 基于VGG深度学习神经网络的猫狗数据集分类

    摘要:VGG网络是由牛津大学视觉几何组完成的基于深度卷积神经网络的大规模图像识别架构,该网络参考了AlexNet.ZFNet.OverFeat等经典的网络架构,从而得出的.这个架构参加了ILSVRC- ...

  3. 基于Python深度学习的文字检测识别系统

    摘要 文字是人类交流信息的重要工具,在科技和网络不断发展的今天,文本的方式或者说载体发生了很大的变化,文字不再只停留在书面,更以标识牌,横幅,广告牌等等方式出现我们的生活中,或者说,它们是一张张图片中 ...

  4. 基于Python深度学习的人脸识别考勤(戴口罩、多人)

    该"基于深度识别的人脸识别线下课堂考勤"系统有"人脸识别考勤","考勤信息统计"等主要功能组成,其中戴口罩识别及多人识别均可成功实现.涉及& ...

  5. Python深度学习十大核心算法!

    深度学习已经成为了一种热门的技术,它的应用领域正在不断扩大.在深度学习中,有一些核心的算法是非常重要的,这些算法为深度学习的应用提供了强大的基础.在本文中,我们将介绍基于Python深度学习的十大核心 ...

  6. 基于PyTorch深度学习无人机遥感影像目标检测、地物分类及语义分割

    随着无人机自动化能力的逐步升级,它被广泛的应用于多种领域,如航拍.农业.植保.灾难评估.救援.测绘.电力巡检等.但同时由于无人机飞行高度低.获取目标类型多.以及环境复杂等因素使得对无人机获取的数据处理 ...

  7. Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类)

    Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类) 1.卷积神经网络 1.1卷积神经网络简介 1.2卷积运算 1.3 深度学习与小数据问题的相关性 2.下载数据 2.1下载原始数据 ...

  8. 从0开始,基于Python探究深度学习神经网络

    来源 |  Data Science from Scratch, Second Edition 作者 | Joel Grus 全文共6778字,预计阅读时间50分钟. 深度学习 1.  张量 2.  ...

  9. 《Python深度学习》Chapter 2——神经网络的数学基础

    <Deep Learning with Python >由Keras之父.现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和 ...

最新文章

  1. 大学python用什么教材-清华大学出版社-图书详情-《Python大学教程》
  2. 使用PVRTexTool压缩纹理的基本用法
  3. BZOJ 3211: 花神游历各国
  4. java-网络编程篇
  5. 光缆故障测试_简单的测试可以防止最严重的故障
  6. 源码共享,希望一起互相学习
  7. 若依后端实现pdfjs预览PDF文件
  8. 帆软填报联动 控件联动的几种方式
  9. 量子退火算法入门(6):初识量子退火算法的发明过程
  10. java的运行环境是什么_Java运行环境是什么
  11. 这8款数据恢复软件你见过吗?数据恢复软件推荐
  12. ES6 阮一峰阅读学习
  13. js根据身份证获取年龄
  14. 英语微课-Speaking Confidently
  15. 软件工程师工作经历_我学会成为高级软件工程师的经历
  16. python 微信支付sdk_weixin-python
  17. UTF8与GBK字符编码之间的相互转换
  18. php微擎Goto2C解密研究
  19. python PIL 图片素描化
  20. python中and怎么计算_Python中 and,or 的计算规则

热门文章

  1. 淘宝/天猫获得淘宝app商品详情原数据 API
  2. CSAPP实验1:Data Lab笔记
  3. 创建新Docker容器时出现“The container name /xxx is already in use by container xxxxxxxxxxx...”问题的解决办法
  4. RK3568的红外遥控
  5. ATX 双电源切换电路
  6. app的崩溃率标准,优秀,合格,轻微隐患,严重隐患
  7. 2021-08-18 关于PC与ipad的远程控制
  8. C# bartender打印帮助类,单个打印以及批量打印方法封装
  9. html-2-禁止手机页面放大缩小
  10. Java基础系列28-常用api之包装类