关于实现垃圾分类检测系统的选题报告
目录一、项目背景、意义及目标:
(一)背景:
随着社会发展和人口数目增加,全球的垃圾产量急剧增长。垃圾处理问题成为各大城市的困扰。我国目前垃圾处理一般都是采用卫生填埋或者是简易填埋的方式。这样的处理方式不仅造成土地资源的浪费,所带来的环境隐患和健康问题也是不可忽视的。事实上,垃圾是错放的社会资源。合理的回收利用,可以变废为宝,将垃圾的资源价值和经济价值最大化。因此,合理地分类垃圾是最终处理垃圾之前的关键步骤。
实行垃圾分类,可以改善广大人民群众的生活环境,重复利用资源,推动生态环境持续健康发展,促进社会文明的进步。近年来,实行垃圾分类的力度不断加强。自2019年起,全国地级及以上城市全面启动生活垃圾分类工作,垃圾分类取得积极进展。但由于技术的限制,目前,垃圾分类主要依靠人工分拣来实现,不仅消耗人力物力资源,还在客观上大大阻碍了垃圾分类工作的普及。
(二)意义:
本组希望通过实现垃圾分类检测系统,促进垃圾分类公司实现智能分拣,以此来代替传统模式下使用人工在垃圾场处理海量垃圾的劳作模式,期望在一定的程度上解放部分劳动力,提高垃圾分类的效率,降低成本,推动垃圾分类事业的发展。除此之外,我们预期实现的垃圾分类检测系统实现的主要功能是对垃圾的自动识别和检测。从技术层面而言,采用的是基于深度学习基础的图像分类技术。该技术的实现,为垃圾分类提供新的理论和方法,具有广阔的市场前景。随着技术的不断成熟,应用市场会持续扩大,众多衍生产品的出现将会对垃圾分类相关行业产生持久而深远的影响。
(三)目标:
设计一个垃圾分类检测系统,以垃圾场为应用场景,智能识别和检测目标垃圾是否符合分类标准。利用现有的垃圾检测和分类模型,比较各模型之间的优缺点,综合考量技术应用场景所要求的数据规模和垃圾分类标准,选择适合的分类模型,实现垃圾的单目标识别和检测。在此基础上,利用各种技术进行算法优化,提升已有垃圾分类模型的准确度和识别效率。在条件允许的情况下,探索实现多目标检测的模型,期望在实验准确度与效率方面与单目标检测没有较大的差距。或者轻量化模型结构,在不牺牲过多识别准确度和效率的前提下,压缩模型,使其能够部署在移动端。同时为该系统设计合理的UI界面,实现较好的人机交互,界面美观,运行流畅。
二、可行性分析:
(一)规模及难度:
1、人员规模:小组是由6人组成的小规模团队,人员的精简可以有效地提高每一个成员的参与度和积极性,凝聚力强,这将有利于我们提高代码质量,聚集讨论攻克技术难关,能够有效地提高工作效率和软件质量,最大程度地开发每一个人的能力,也会一定程度上减少通信开销和不必要的沟通所带来的的未知的时间成本。
2、软件规模:为了可以在各种场景中应用,如家庭、社区、学校等地方的垃圾分类处理,我们设计的软件需要满足日常生活场景的需要,即需要识别出日常生活中的四大类垃圾——可回收垃圾、厨余垃圾、有害垃圾和其他垃圾。根据查询,了解到Kaggle上的一个垃圾分类图片数据集包括85%的训练集和15%的测试集,总共有56528张图片和214类。华为云垃圾分类数据集拥有训练集:43685张;验证集:5363张;测试集:5363张;总类别数:158类。
3、项目开发过程可能遇到的难点:
(1)相关算法学习:部分小组成员没有python学习基础并且本项目涉及到机器学习和目标检测算法,对于小组成员是比较陌生的领域,在开发过程需要同时兼顾对这些内容的不断深入,可能会花费较多的时间。
(2)人员合理分工:小组成员没有相关的项目开发经历,所以需要不断摸索如何在编程方面合理分工以达到最好的效率。
(3)笔记本性能不足;(添加)寻找或者问一下老师怎么处理
4、技术难点:
(1)数据集的准备和标注:垃圾分类检测系统的训练数据集需要进行标注,包括垃圾分类类别、位置等信息。标注过程中需要保证标注的准确性和一致性,这对于模型的训练和优化至关重要。
(2)模型的训练和调参:模型训练需要使用GPU或TPU等加速设备,并且需要调整一些超参数,如学习率、批量大小等。此外,还需要注意模型的收敛情况,以便及时调整超参数。在训练模型时,需要选择合适的模型结构和参数,并进行调参,以达到最佳的检测效果。
(3)模型的可视化和理解:YOLOv5网络结构较为复杂,不易可视化。因此,需要使用一些工具来帮助我们理解模型的工作原理。
(4)模型的优化和加速:为了提高模型的速度和效率,还可以对模型进行优化和加速。例如,可以使用模型压缩、量化等技术来减少模型大小和计算量。
(5)模型的泛化能力:垃圾分类任务中,不同类型的垃圾样本具有很大的相似性,这给模型的泛化能力带来了挑战。
(二)人员:
1、计算机编程基础
小组成员均学习过C语言、C++、Java和python等各类开发语言,也有系统学习过数据结构与算法,本项目选用python作为开发语言,虽然部分小组成员没有学习过python,但都有计算机编程基础,所以在学习python方面难度不会很大。
2、论文学习
项目开发中不可避免地会有需要学习大量论文的情况来支撑我们项目开发的理论基础,我们小组成员都有较好的英语基础,均已所以通过了英语六级考试,在阅读英文论文的时候不会有很大的障碍。
3、队内沟通
小组成员的沟通在项目开发过程也是一个很重要的问题,如果在开发过程中沟通不当,可能会使得整个小组人心涣散无法凝聚起来,我们小组成员均是女生,日常沟通方便且队内关系融洽,在项目进行过程不容易出现摩擦,是项目开发的良好基础。
(三)成本预算:
1、时间成本:项目主要的成本是小组成员的时间成本,需要花费较多时间在项目开发上,对于成员来说要求我们合理安排自己的时间,给其它科目的学习预留出足够的时间。
2、硬件成本:项目涉及到机器学习,对电脑硬件有要求,所以后期模型训练时如果成员电脑都跑不动代码的话需要购买独立显卡。另外除开在观看论文时可能产生的费用、相关数据集以及书籍的成本以外需要的金钱成本较少,在不影响项目开发的同时也不会对小组成员产生太大的经济压力。
(四)时间要求:
项目难度大,所需时间长,但小组成员在10月23日后课程数量减少,一星期内有多个超过10小时的空闲时间,到项目预计完成时间到12月2号,有充足时间可用于算法学习及项目实现。我们也向老师请教过项目难度与预计时间,老师也在参考过小组编码能力后表示时间完全足够。
(五)风险:
1、技术风险:由于缺乏对目标检测、图像处理的经验,成员也普遍没有项目开发经验,在实现项目过程中,很有可能出现难度过大导致部分预计功能难以实现,或者模型训练后发现准确率过低、过拟合等问题。
如何解决:加强学习,及时沟通。我们会在项目完成过程中定期开会,交流各自任务的进度,提出过程中遇到的困难,群策群力解决;及时询问有相关经验的同学或老师,保证项目能够按期完成。
2、人力资源风险:小组成员内部关系融洽,但有可能出现小组成员不认真对待任务、拖延导致拖慢项目进度,或者是整组一起“摆烂”的情况。
如何解决:小组成员互相监督,加强组内管理,如:同一宿舍同学互相提醒,监督,定期开会汇报情况,相信能够有效避免该情况;组长保持清醒,积极推动项目进度。
3、管理风险:缺乏对项目相关算法、模型了解,有可能导致算法实现后发现根本无法满足需求;或者错误预估项目难度,用于实现功能的时间过短,导致无法按期完成。
如何解决:在算法设计优化完成后,将我们的详细方案与老师进行进一步的交流;在前期留够充足时间大量阅读论文,研究算法,选择范围内最符合要求的模型进行训练、优化;同时,适当缩短前期准备时间,提高前期效率,为后面可能出现的难题留足时间。
三、项目计划:
(一)软件开发模型:瀑布模型
我组在项目策划中考虑到以下方面:
1、 我们的目标产品旨在解决特定问题,目的较为明确,功能单一指向性强,契合瀑布模型的适用范畴;
2、小组成员普遍缺乏项目开发经验,而本项目开发难度较大。相比起其他具有冗长迭代周期的软件开发模型,瀑布模型按工序将问题化简,将功能的实现与设计分开,便于组员实现项目在各阶段的功能需求;
3、瀑布模型各阶段的顺序性和依赖性能实现我组项目各阶段工作的质量保证,更具可靠性;
因此我们选用了瀑布模型作为我们的项目开发架构。
(二)时间安排
根据瀑布模型的软件生命周期,我组指定时间安排表如下:
各项生命周期活动 | 活动内容 | 规划时间 |
---|---|---|
沟通 | 项目启动;需求获取 | 第5-6周(9.25-10.8) |
策划 | 可行性估算;项目学习 | 第7-8周(10.9-10.22) |
建模 | 需求分析;模型设计 | 第9-10周(10.23-11.5) |
构建 | 模型训练;功能测试 | 第10-14周(11.6-11.30) |
部署 | 项目交付;总结答辩 | 第14周(12.1-12.2) |
我们将依据课设实践的环节安排对每个周期活动作出详细规划。
项目选题环节:
1、沟通:
第5-6周(9.25-10.8),通过每周组会形式沟通,与负责老师讨论和文献查询等方式,确定我组的项目选题,规划产品的基本功能需求并构思可拓展的功能。
2、 策划:
第7周(10.9-10.15),通过组会形式沟通和文献查询,分别从规模难度、人员安排、成本预算和风险评估等方面对项目可行性进行细致分析;
第8周(10.16-10.22),小组成员学习图像相关算法,理解卷积神经网络的工作原理;于第10周前完成对python基础知识的学习;于10.21进行项目选题答辩。
需求分析环节:
3、建模:
第9周(10.23-10.29),收集项目技术参考资料,依据规划的产品功能,在理解算法全过程的基础上,选择适合的训练模型和技术框架,包括但不限于目标检测算法、图像处理技术、小样本数据处理等;同时,完成项目编写环境的配置,开始进行项目模型的构建,进行模型试训练;
第10周,于11.4进行需求分析答辩。
系统设计环节:
4、构建:
第10-12周(10.30-11.19),进行程序设计,先敲定所需框架,划分功能模块,然后将组员分为不同小组进行代码填充;进行模型训练,直至结果达到精度要求,持续过程至产品完成测试;于11.18进行系统设计答辩。
第13-14周(11.20-11.30),进行功能的测试和维护;根据功能实现情况进行拓展功能的程序编写。
系统实现环节:
5、部署:
第14周(12.1-12.2)准备答辩相关材料,完成结题报告和项目展示。
其他细节安排:
在相邻阶段的承接点,即第七周,第九周、第十周、第十二周、第十四周,安排小组会议,汇报并验证上一阶段成果,并进行下一阶段的任务部署。
在各环节答辩的前一周,根据本阶段成果制作ppt;在各环节答辩的前三天,进行问答模拟。
(三)人员分工:
·人员任务分配表暂定如下:
任务 | 安排人数 |
---|---|
文献检索与资料整理 | 2人 |
文字编辑及ppt制作 | 2人 |
项目答辩 | 4人 |
数据集收集 | 2人 |
设计建模 | 6人 |
模型训练 | 6人 |
系统测试 | 3人 |
拓展美工设计 | 3人 |