项目要求
现有不同种类的鸟,每一类有5张图,要求是对每一幅图中的鸟进行准确定位,即用bounding box将图中的鸟框出来。演示如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/3054923eeb52494997568a257925f841.jpeg#pic_center)
实现步骤:
1、数据集的制作
使用Make Sense网站制作数据集,创建六类鸟的labels,并对图像进行标注,并将其导出为yolov所使用的文件形式 ![创建标签](https://img-blog.csdnimg.cn/e7a3655e710943db83f4e32fd1eddeed.jpeg#pic_center) ![数据集制作](https://img-blog.csdnimg.cn/0b3fa1f719634eaa8d96bb5a1d89b681.jpeg#pic_center) ![下载制作好的数据集](https://img-blog.csdnimg.cn/8d761f5d43ea47b5a496560455a1949b.jpeg#pic_center)
2、下载yolov5官方代码,并下载yolov5s.pt,将其作为预训练使用的权重。
3、在目录下新建一个mydata文件夹,在该文件夹下面新建如下图的文件夹
![创建文件夹](https://img-blog.csdnimg.cn/46a0bd736a9943ac9c74f23a4517d527.jpeg#pic_center) 其中image的train和val文件夹中存放训练和预测的图片,labels下面存放制作好的数据集和用来预测的数据集(val下面的文件是后面运行过程中生成的),test文件夹下存放用来测试的图片。
4、在文件中放入yolov5s.pt预训练权重。
![放入预训练权重](https://img-blog.csdnimg.cn/a5124a9c8e604267a4b027e00487a832.jpeg#pic_center)
5、将文件打包上传到colab上(本计算机算力不够,故采用colab进行训练)
6、修改colab配置,选择使用GPU进行训练
![修改笔记本设置](https://img-blog.csdnimg.cn/01cc343e796a4e57afe9576aefcd5c1f.jpeg#pic_center)
7、使用指令解压文件
!unzip -uq birds.zip
8、使用指令切换工作目录,并安装yolov5所需要的依赖库
%cd /content/birds/yolov5-master/
!pip install -r requirements.txt
9、将data目录下的VOC.yaml复制一份,并将其命名为birds.yaml,并修改以下代码为自己的文件路径
train: /content/birds/yolov5-master/mydata/images/train
val: /content/birds/yolov5-master/mydata/images/val
nc: 6
names: ["egrets family", "redshank", "avocet", "plover", "egret", "night heron"]
10、复制models文件下的yolov5s.yaml,并将其命名为yolov5s_birds.yaml,并修改该文件下nc:6
11、修改train.py中的代码,先设置100轮进行训练,并且修改batch-size大小为32,充分调用GPU,以及修改相关路径
parser = argparse.ArgumentParser()
parser.add_argument('--weights', type=str, default='/content/birds/yolov5-master/weighs/yolov5s.pt', help='initial weights path')
parser.add_argument('--cfg', type=str, default='/content/birds/yolov5-master/models/yolov5s_birds.yaml', help='model.yaml path')
parser.add_argument('--data', type=str, default='/content/birds/yolov5-master/data/birds.yaml', help='dataset.yaml path')
parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path')
parser.add_argument('--epochs', type=int, default=100)
parser.add_argument('--batch-size', type=int, default=32, help='total batch size for all GPUs, -1 for autobatch')
12、使用指令进行训练
!python train.py
![在这里插入图片描述](https://img-blog.csdnimg.cn/a659aa2d54d04217805ce00f464553fd.jpeg#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/a699d61e99d14d61be73fa9f9dff25ae.jpeg#pic_center) ![在这里插入图片描述](https://img-blog.csdnimg.cn/c467a1b7a1d145f5a06aeb197cd4c8b3.jpeg#pic_center)
训练100轮后还行啦night heron的准确率不够,此时选择修改训练轮数为300,重新进行训练。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d31ff3b64ff647e685c690bd89c86d3d.jpeg#pic_center) 准确率得以提高。
13、启用tensorbord查看参数
tensorbord --logdir=runs/train
![在这里插入图片描述](https://img-blog.csdnimg.cn/0b7c9a1d9aa34d3887445a0e3d3bf510.jpeg#pic_center)
14、可以在本地进行测试,也可在colab进行测试,本次选择在本地进行测试,下载训练好的权重,放到本地的文件夹中。并修改detect.py中代码
parser = argparse.ArgumentParser()
parser.add_argument('--weights', nargs='+', type=str, default='best.pt', help='model path(s)')
parser.add_argument('--source', type=str, default='F:/birds/yolov5-master/mydata/test/', help='file/dir/URL/glob, 0 for webcam')
15、运行detect.py查看测试结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/ea2b4210705944dfbbd08874c54eb693.jpeg#pic_center)
测试结果
白鹭家族 ![在这里插入图片描述](https://img-blog.csdnimg.cn/75b8899ed9204b2f839d12b7610ba452.jpeg#pic_center) 红脚鹬 ![在这里插入图片描述](https://img-blog.csdnimg.cn/142995f5bcc4470ab7801a82bcfcf870.jpeg#pic_center)
反嘴鹬 ![在这里插入图片描述](https://img-blog.csdnimg.cn/540dbc0318924c188077df86441a64ac.jpeg#pic_center) 环颈珩 ![在这里插入图片描述](https://img-blog.csdnimg.cn/a7185a6053394ce680e41b6dbea19fed.jpeg#pic_center) 小白鹭 ![在这里插入图片描述](https://img-blog.csdnimg.cn/9baa7f8fd7a347f896cbdd565e68ccf6.jpeg#pic_center) 夜鹭![在这里插入图片描述](https://img-blog.csdnimg.cn/978ff01a1a184ed58106963f376b8139.jpeg#pic_center)
实验结果总结
总结:此项目是数字图像处理课程期末大实验,在实现过程中博主选择了使用yolov5来做,希望各位大佬批评指正
|