2023工创赛智能垃圾桶模型技术路线及问题解决

本文讲述了作者在训练垃圾桶识别模型过程中,从数据量不足、不平衡,到数据增强、问题解决策略的详细过程,包括尝试不同模型、数据删减和裁切等方法,最终通过调整逻辑优化了模型性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

垃圾桶模型技术路线报告

  1. 暑假接手这个项目的模型训练部分,根据赛题要求,我和队员进行了第一次的数据采集,每种类型30张数据.

(图1 赛题数据要求)

垃圾桶模型技术路线报告

  1. 暑假接手这个项目的模型训练部分,根据赛题要求,我和队员进行了第一次的数据采集,每种类型30张数据.

(图1 赛题数据要求)

(图2 第一次收集的数据)

  1. 第一次训练模型看网络上有类似的项目,采用的是pp-picodet模型,这个模型如图所示,既有较高的精准度也有较快的速度,但是由于每个30张的数据集过小了,而且数据也不平衡,模型练出来也是一塌糊涂,啥也不行。后面是没有使用这个模型,因为那时同时跑了一个ppyolo-mbv3-small的模型,这个模型表现的稍微好一点,时间的关系,就沿用ppyolo了。虽然我觉得的picodet这个的效果可能会更好,但当时急于跑一个能用的就没有继续实验了。

(图3 picodet模型比较)

(图4 ppyolo模型比较)

3.这2个模型各练的一个模型都在实际垃圾桶上表现的不好,于是我从2个方面入手,第一个方面,我猜想是数据量的问题,因为数据确实少,于是开始了第二次的数据采集,这个时候还没意思到数据不平衡的问题,每个种类的数据量都不平均,模型效果肯定不会好,第二次每个数据采集了50张,并且进行了数据增强。

(图5 数据增强后的第二次采集数据)

这次练的模型在线下垃圾桶上实际测试时,一样是一塌糊涂,识别不准,打标的框也乱来,后面查看各种资料,发现我数据不平衡的问题,我于是进行了数据删减,将每一类的标注数都平衡也进行数据增强,

(图6 数据平衡后的数据)

这次训练后,模型效果显著提高,在aistdio平台上导入图片进行测试,标注框和识别都可以,但是在实际的垃圾桶上表现有不是很好,偶尔才能识别对,但是画框又不行。这时我的猜想还是数据的问题(其实不是),我又加了一部分数据,更多的类型,但是都没有进展,在实际环境中还是识别的一般。

  1. 那我是怎么解决的呢,就是一个随机事件,我有一次在实验模型效果时,刚好摄像头拆掉了,于是我手拿着摄像头,发现摄像头里只有白色背景和物体时就没有问题,都能很好的识别物体,于是我写了个代码,先拍一张1080p的图片,在裁切中间的白色背景传入模型,果然,识别率飙升,在哪之后就只有一些小问题了。
  2. 之后就是一些特殊的类别识别不准的问题了,基本解决方法就是加对应类型的数据,问题基本就解决了,如果还没有解决,那就可以采取几个模型一起,让一个模型单独去识别一个物体,就能解决对应物体识别不准的问题了。
  3. 期间也有点数据增强的问题,比如我起先不太了解的时候,加了一下旋转标注框的数据增强,这个数据增强会导致一些紧挨着的标注框出现一些问题。
  4. 这基本就是模型遇到的问题了,后面也就是加数据了。主要的问题就是一些逻辑的问题了,比如识别几次取平均值返回,提高模型准确性。

(图2 第一次收集的数据)

  1. 第一次训练模型看网络上有类似的项目,采用的是pp-picodet模型,这个模型如图所示,既有较高的精准度也有较快的速度,但是由于每个30张的数据集过小了,而且数据也不平衡,模型练出来也是一塌糊涂,啥也不行。后面是没有使用这个模型,因为那时同时跑了一个ppyolo-mbv3-small的模型,这个模型表现的稍微好一点,时间的关系,就沿用ppyolo了。虽然我觉得的picodet这个的效果可能会更好,但当时急于跑一个能用的就没有继续实验了。

(图3 picodet模型比较)

(图4 ppyolo模型比较)

3.这2个模型各练的一个模型都在实际垃圾桶上表现的不好,于是我从2个方面入手,第一个方面,我猜想是数据量的问题,因为数据确实少,于是开始了第二次的数据采集,这个时候还没意思到数据不平衡的问题,每个种类的数据量都不平均,模型效果肯定不会好,第二次每个数据采集了50张,并且进行了数据增强。

(图5 数据增强后的第二次采集数据)

这次练的模型在线下垃圾桶上实际测试时,一样是一塌糊涂,识别不准,打标的框也乱来,后面查看各种资料,发现我数据不平衡的问题,我于是进行了数据删减,将每一类的标注数都平衡也进行数据增强,

(图6 数据平衡后的数据)

这次训练后,模型效果显著提高,在aistdio平台上导入图片进行测试,标注框和识别都可以,但是在实际的垃圾桶上表现有不是很好,偶尔才能识别对,但是画框又不行。这时我的猜想还是数据的问题(其实不是),我又加了一部分数据,更多的类型,但是都没有进展,在实际环境中还是识别的一般。

  1. 那我是怎么解决的呢,就是一个随机事件,我有一次在实验模型效果时,刚好摄像头拆掉了,于是我手拿着摄像头,发现摄像头里只有白色背景和物体时就没有问题,都能很好的识别物体,于是我写了个代码,先拍一张1080p的图片,在裁切中间的白色背景传入模型,果然,识别率飙升,在哪之后就只有一些小问题了。
  2. 之后就是一些特殊的类别识别不准的问题了,基本解决方法就是加对应类型的数据,问题基本就解决了,如果还没有解决,那就可以采取几个模型一起,让一个模型单独去识别一个物体,就能解决对应物体识别不准的问题了。
  3. 期间也有点数据增强的问题,比如我起先不太了解的时候,加了一下旋转标注框的数据增强,这个数据增强会导致一些紧挨着的标注框出现一些问题。
  4. 这基本就是模型遇到的问题了,后面也就是加数据了。主要的问题就是一些逻辑的问题了,比如识别几次取平均值返回,提高模型准确性。
### 智能垃圾桶项目的实现方案 #### 项目背景 中的智能垃圾桶项目旨在通过技术手段解决垃圾分类问题,提升资源回收效率并减少环境污染。该项目通常结合硬件设计与软件算法完成自动化分类功能。 --- #### 硬件部分 1. **开发平台** 使用MaixPy开发板作为核心控制器[^2]。该开发板具备强大的计算能力以及丰富的外设接口,适合用于图像处理和控制任务。 2. **传感器配置** - 图像采集模块:摄像头负责拍摄垃圾图片以便后续识别操作[^4]。 - 称重装置:可选配重量感应器来检测投入物品的质量特性。 - 超声波/红外距离测量仪:辅助判断是否有物体接近桶口位置。 3. **执行机构** - 云台结构配合伺服电机调整角度定位目标区域[^3]。 - 机械臂或者抓取具用来移动分拣后的废弃物至对应容器内部。 --- #### 软件部分 1. **图像识别** 基于深度学习模型训练好的分类网络对捕获的画面进行分析判定类别归属情况。可以利用开源框架TensorFlow Lite 或 PyTorch Mobile部署轻量化版本到嵌入式设备上运行推理过程。 2. **控制系统编程** 编写程序逻辑控制整个系统的运作流程,包括但不限于启动初始化、循环监测输入信号触发事件响应机制等功能块构建完整的应用层架构。 以下是简化版Python伪代码展示如何组织这些组件协同作: ```python import maixpy as mp from sipeed import Servo, Camera def init_system(): """ 初始化系统 """ global camera, servo_x, servo_y camera = Camera() servo_x = Servo(0) # X轴舵机实例化 servo_y = Servo(1) # Y轴舵机实例化 def capture_and_classify(): img = camera.capture() result = model.predict(img) # 加载预训练模型做预测 return result['label'] if __name__ == "__main__": init_system() while True: label = capture_and_classify() if label == 'plastic': move_to_position((90, 45)) # 设定特定坐标让云台指向塑料箱方向 elif label == 'metal': ... ``` 上述片段仅作示意用途,请依据实际需求扩展完善细节部分。 --- #### 总结反思 参与此类事不仅能够锻炼动手实践技能还能培养团队协作精神,在不断试错修正过程中逐步提高技术水平和个人素养。每一次经历都值得珍视因为它蕴含着宝贵的成长契机等待我们去挖掘把握住! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值