基于深度学习的生活垃圾智能分类装置(K210开发板实现)

2024-02-20 15:20

本文主要是介绍基于深度学习的生活垃圾智能分类装置(K210开发板实现),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.核心功能与流程图

2.硬件框图

3.设计原理

4.开发过程

5.项目原型

6.主要元器件介绍

7.资料、源码分享链接:


1.核心功能与流程图

针对上述提出的目标,该项目核心功能如下:

功能1:对垃圾进行基于深度学习的精准分类

功能2:通过旋转垃圾桶自动分类垃圾

该装置的具体工作流程如下:

2.硬件框图

  硬件框图

该装置由以下2部分组成:

识别模块:K210

分类模块:Arduino UNO、舵机

3.设计原理

基于深度学习和AI视觉的生活垃圾智能分类装置利用深度学习算法和AI视觉技术,能够对生活垃圾进行智能分类。

识别模块设计原理:装置需要大量的标记好的生活垃圾图片数据集,每种生活垃圾都有对应的标签,用于训练深度学习模型。数据集应该包含不同角度、光照条件和遮挡情况下的垃圾图片,以确保模型的泛化能力。通常使用卷积神经网络作为深度学习模型。可以选择已经预训练好的模型,如ResNet、Inception,或者自行设计和训练模型。使用标记好的数据集对深度学习模型进行训练。通过将图片输入模型,让其逐渐学习提取垃圾的特征,然后将这些特征映射到对应的垃圾分类标签。训练过程中需要合理设置学习率、损失函数和优化算法,以提高模型的准确率和收敛速度。当装置接收到垃圾图片时,深度学习模型会对其进行预测和分类。模型会输出一个概率分布,表示图片属于每一类垃圾的概率。根据概率分布,装置会选择概率最高的类别作为该垃圾的分类。[3]

分类模块设计原理:分类装置通过舵机旋转装置,将相对应的垃圾桶旋转至投放者面前。这里需要根据模型的输出结果,控制舵机的旋转,实现智能分类。

4.开发过程

结合实际应用需求设计的基于物联网技术的智能垃圾回收系统,其核心控件为Arduino,结合K210模块的神经网络模型实现垃圾智能分类,通过驱动舵机将相对应的垃圾桶旋转至投放者面前;通过实际组装和软硬件联合测试,验证了装置整体功能的合理性[2]。

制作过程如下:

硬件装置部分:

第一步:根据我们想要的外形通过Auto CAD画出该装置的外壳组装图,设计完成后再用激光切割进行切割,然后进行组装。

  外壳CAD图纸

第二步:用SolidWorks设计出垃圾桶,并进行3D打印

  垃圾桶3D打印模型

Arduino部分:

第一步:在Arduino上编写舵机控制部分,将垃圾种类分为四种,可回收垃圾,干垃圾,湿垃圾,有害垃圾,并将其对应四种信号A、B、C、D,当Arduino收到来自K210的四种信号时,控制舵机旋转至四个方向,以下为代码部分。

  舵机控制代码

第二步:添加Arduino信号引脚,我们设置9号引脚为舵机信号引脚,并且需要初始化串口,此外,我们将波特率规定为9600,以下为代码部分。

  添加舵机信号引脚代码

因此,Arduino部分整体代码如下:

#include <Servo.h>Servo servo;void setup() {// 初始化串口,波特率为9600Serial.begin(9600);// 附加舵机信号引脚servo.attach(9);
}void loop() {if (Serial.available() > 0) {char signal = Serial.read();// 根据收到的信号控制舵机转向不同方向if (signal == 'A') {// 控制舵机转向方向Aservo.write(0);} else if (signal == 'B') {// 控制舵机转向方向Bservo.write(60);} else if (signal == 'C') {// 控制舵机转向方向Cservo.write(120);} else if (signal == 'D') {// 控制舵机转向方向Dservo.write(180);}}
}

  Arduino部分整体代码

K210部分:(注意!!若Maixhub模型训练用不了,可选择嘉楠科技的模型训练,操作方法与Maixhub大体一致)

第一步:浏览器搜索MaixHub并点击。

  浏览器搜索MaixHub

第二步:点击Maixhub:AI平台和共享社区。

  MaixHub主页

第三步:点击模型训练中的开始训练。

  MaixHub模型训练平台页面

第四步:点击新建训练

  MaixHub模型训练页面

第五步:填写信息

  填写信息页面

第六步:点击去准备数据集

  准备数据集页面

第七步:先点击创建数据集,再完成信息填写,后点击确定

  新建数据集页面

第八步:点击上传图片后,再点击添加标签

 上传图片页面

第九步:先选中标签,然后点击选中图片,选中该垃圾的训练图片然后点开始上传,同样方法上传完四个标签

  添加标签页面

第十步:勾选随机处理的三个选项,部署平台选中合适的平台,点击最下方的创建训练任务

  开始训练页面

第十一步:等待训练完成后点击部署模型

  训练完成页面

第十二步:点击下载模型

  下载模型页面

第十三步:修改main.py的部分代码

将发送信息部分代码添加进mian.py,然后保存

烧录固件部分:

第一步:打开以下网址,下载最新版固件

下载站 - Sipeed

  固件页面

第二步,下载kflash_gui,并打开,将K210用type-c与电脑连接,选择刚刚下好的固件,地址为0x00000,端口选择与K210想连接的端口,波特率选择115200

  烧录软件界面

如果出现以下报错:

按照如下进行排查:

1.检查PC是否有权限打开端口,对于 win10,需要以管理员身份运行 kflash_gui 。

2.检查端口是否选择正确(如果出现两个设备端口,通常选择端口号小的那一个)。

3.检查端口是否被其他应用占用(如Maixpy IDEputty等),应当关闭其他程序占用。

将如下图的压缩包内文件解压放到K210里的sd卡当中。

  程序界面

运行程序,可通过K210上的屏幕,看到所识别的垃圾种类,通过输出可以看到识别率。

组装部分:

按照下图进行组装:

  装置组装图

接线部分:

舵机的黑线接Arduino的GND接口,红线接5V接口,白线接9号接口,Arduino的0号引脚接K210的10号引脚,Arduino的1号引脚接K210的11号引脚,Arduino的另一个GND引脚接K210的GND引脚,Arduino的3.3V引脚接K210的3.3V引脚。

5.项目原型

6.主要元器件介绍

  1. Arduino UNO

  Arduino UNO

  Arduino UNO的处理核心是ATMEGA328P,有14个数字输入/输出引脚,其中有6个可用作PWM输出,6个模拟输入,16MHz晶振时钟,USB连接,电源插孔,ICSP接头盒复位按钮。通过USB数据线连接电脑就能供电、程序下载和数据通信。

2.K210开发板

 K210开发板

K210是一款由中国公司思必驰(Sipeed)开发的人工智能处理器。它是一款低功耗、高性能的处理器,专门设计用于边缘计算和物联网设备。

K210由于其低功耗、高性能和适用于AI推理的能力,被广泛应用于各种智能硬件设备,例如智能摄像头、智能家居设备、机器人、智能监控系统等。作为边缘计算的代表之一,K210的发展在推动物联网和人工智能技术在嵌入式系统中的应用方面发挥着积极的作用。

3.舵机

  舵机

DSServo达盛舵机DS3218MG是一种数字舵机,是达盛舵机(DSServo)系列产品中的一员。舵机是一种电动执行元件,通常用于模型、机器人和其他自动控制系统中,用于控制角度位置的精准转动。

7.资料、源码分享链接:

链接:https://pan.baidu.com/s/1z6P3owHLP78L1pwykBbHJQ 
提取码:bmfy 
--来自百度网盘超级会员V2的分享

这篇关于基于深度学习的生活垃圾智能分类装置(K210开发板实现)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_68010795/article/details/132672963
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/728650

相关文章

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.