(国赛) 第七届工创赛之智能垃圾分类

前言

省赛博客(k210)

比赛成绩:全国一等奖

有需要代码资料请+扣扣:1287073476(备注来意)

继上次省赛,更换如下配置:

1. 开发板:    jeston nano

2. 摄像头:  USB广角摄像头  

3. 算法:      yolov3换成yolov4-tiny   cpu训练模型换成了gpu训练模型

4. 硬件:      串口屏换成了与英伟达配套的屏幕


核心技术:jeston nano

(国赛) 第七届工创赛之智能垃圾分类_第1张图片

基本环境配置以及使用方法可跳转    

这里


垃圾模型训练

 环境搭载完毕后,针对比赛而言,就需要开始制作自己的垃圾数据集开始训练了:

使用yolov4-tiny进行模型训练

安装VS2019 及c++,python(有pycharm就不用装了,没有就装),下载darknet源代码

安装好OpenCV4.0以上的版本后配置环境变量:

(国赛) 第七届工创赛之智能垃圾分类_第2张图片

(国赛) 第七届工创赛之智能垃圾分类_第3张图片

安装完成后将

(国赛) 第七届工创赛之智能垃圾分类_第4张图片这两个文件移动到darknet-master\build\darknet\x64中用记事本打开darknet.vcxproj查找替换中的CUDA版本为对应的版本(这里为11.1)

,打开darknet-master\build\darknet\darknet.sln 点开属性(alt+enter)后第一步:

(国赛) 第七届工创赛之智能垃圾分类_第5张图片  

第二步:添加包含库、库目录

(国赛) 第七届工创赛之智能垃圾分类_第6张图片

(国赛) 第七届工创赛之智能垃圾分类_第7张图片

第三步:添加依赖

(国赛) 第七届工创赛之智能垃圾分类_第8张图片

第四步: CUDA C/C++选项中,修改device  compute值:

(国赛) 第七届工创赛之智能垃圾分类_第9张图片

确定保存后运行生成,将生成后的yolo_cpp_dll.lib拷贝至darknet-master\build\darknet\x64目录下即可。

参考:Windows10下编译opencv以及yolov4、yolov4_cpp_dll.dll_kai_io的博客-CSDN博客等

Yolov4-tiny垃圾训练步骤

将图片和xml标签文件准备好,参考:

使用yolov3训练自己的数据--详细过程及问题总结_weixin_41813620的博客-CSDN博客_yolov3 训练

为目标检测制作PASCAL VOC2007格式的数据集_hitzijiyingcai的博客-CSDN博客_voc2007数据集格式等

我的步骤:图片准备用python摄像头拍照程序,拍完照片后重命名,用labelImg软件标注类别:(国赛) 第七届工创赛之智能垃圾分类_第10张图片

(ps:kitchen 笔误,以下kittchen均为笔误,抱歉各位看官)

完成后将所有图片放入D:\Myproject\darknetmaster\build\darknet\x64\object\VOCdevkit\VOC2021\JPEGImages中

所有xml标签文件放入Annotations中。(国赛) 第七届工创赛之智能垃圾分类_第11张图片

(国赛) 第七届工创赛之智能垃圾分类_第12张图片 (涉及这些文件等)

Python txt.py 生成txt文件

修改voc_label.py文件中的class类名称与要识别的垃圾名称对应

(国赛) 第七届工创赛之智能垃圾分类_第13张图片

Python voc_label.py 生成labels训练文件(数量与xml标签文件一致)

(国赛) 第七届工创赛之智能垃圾分类_第14张图片

修改yolov4-tiny-train.cfg和yolov4-tiny-test.cfg文件中的class变量和 filter=(class+5)*3变量(有两处)

(国赛) 第七届工创赛之智能垃圾分类_第15张图片

 修改coco.data文件中class变量与识别种类数量一致

(国赛) 第七届工创赛之智能垃圾分类_第16张图片

修改coco.name文件中的识别名称与voc-label.py中的名称顺序一致(注意最后不要加回车)

(国赛) 第七届工创赛之智能垃圾分类_第17张图片

WIN+R  打开命令行

D:      转到D盘

cd : D:\Myproject\darknet-master\build\darknet\x64\object    转到工程路径

cd .. 转到上一级目录

Darknet detector train object/coco.data object/yolov4-tiny-train.cfg yolov4-tiny.conv.29开始训练

 

生成权重文件后,将权重文件复制粘贴到jeston nono中,通过程序进行垃圾识别分类。


英伟达垃圾识别程序

部分代码如下:

(国赛) 第七届工创赛之智能垃圾分类_第18张图片


比赛收获总结

       国赛的经历相比省赛给了我更多的收获,通过学习图像识别的相关知识,从yolov3到yolov4等算法的相关知识,到最终采用的yolov4-tiny来进行目标检测识别垃圾。有了省赛的经验,在准备国赛的时候不急不躁,一直慢慢来,本着求稳不求快的原则在备赛期一直顺顺利利,和队友默契配合,有效沟通,不断解决出现的问题,暑期留校的一个月内,深入的学习了英伟达的使用,准备了两套备用方案,以备不时之需。最终成功的完成了国赛的挑战。三天的比赛期间,结交了很多志同道合的朋友,见识到了大家的比赛热情以及强劲的实力,也意识到了自己的不足,比赛虽然结束,却是一个新的开始,一年的经历,感谢队友一路陪伴,家人女友的鼓励,让我重新燃起斗志,不断鼓励我永不放弃。这次的比赛也让我深深意识到,每个人都可以成功,前提是要相信自己,把你的工作变成你的热爱,投入你的热情。只要相信你可以成功,那么你就已经成功一大半了。谨以此博客致敬努力的自己,致敬一起努力的大家。博客如有不准确还请指教,感谢大家阅读,加油,朋友!欢迎大家评论区交流学习。

 

 

你可能感兴趣的:(opencv,自动驾驶,python)