小白入门,YOLO_v5 对海洋生物进行目标检测和识别

2021-05-08 15:15:47 浏览数 (1)

哈喽,大家好,今天我们用计算机视觉领域中最流行的深度学习目标检测框架神器:YOLO v5,进行海洋生物的检测与识别。小白同学也可以跟着我一步一步操作,具体操作流程如下:

----------------------------------------------------------

我的电脑配置环境如下:

系统:Ubuntu 20.04.2 LTS

GPU:RTX 3080, 10G

NVIDIA配置:

① NVIDIA-SMI 465.19.01

② Driver Version: 465.19.01

③ CUDA Version: 11.3

Python版本:Python 3.8.5

torch版本:1.8.1 cu111

torchvision 版本:0.9.1 cu111

opencv-python 版本:4.5.1.48

-----------------------------------------------------------

1. 打开电脑上的命令行窗口,命令如下:

2. 安装软件包:virtualenv ,用于创建虚拟环境。【我这里没有用集成开发工具软件Anaconda,因为,我更喜欢用virtualenv,哈哈~】

输入命令:

pip install virtualenv

【注意:你的输出信息会与我不一样,因为,我之前已经装过了virtualenv,所以显示:Requirement already satisfied。后续,会有很多软件包,我都已经安装过了,所以,显示信息会与你的不一样。不过,这没有任何影响。只要你的命令输入与我的一模一样,那就OK啦。】

3. 创建虚拟环境,解释一下:虚拟环境类似于“平行世界”,A虚拟环境中发生的事情与B虚拟环境中发生的事情不会有任何冲突,也可以理解成隔离区域。优点是:无论我在A虚拟环境中怎么瞎折腾,都不会影响到B虚拟环境。所以,我建议各位同学为了每一个项目创建自己的虚拟环境,这样大家都可以愉快地玩耍啦。

命令如下:

virtualenv YOLO_v5_env

4. 启动虚拟环境,并查看虚拟环境中默认已经安装的软件包,命令如下:

source YOLO_v5_env/bin/activate

pip list

【注意:(base)前面是不是多了一个(YOLO_v5_env),这说明我们已经进入到了虚拟环境下啦,恭喜你,老铁,安装成功了。默认安装的软件包只有3个。】

5. 接下来,我们从github下载YOLO v5工程项目,项目路径:https://github.com/ultralytics/yolov5.git ,我们从该路径拷贝项目到本地,命令如下:

git clone https://github.com/ultralytics/yolov5.git

6. 查看yolov5项目下的文件,命令如下:

cd yolov5

ls

7. 根据文件requirements.txt安装里面罗列的软件包,你可以自己打开该文件看看有哪些软件包。我们直接安装,命令如下:

pip install -r requirements.txt

【注意: 你的信息显示与我的不一样,因为,我已经装过了。反正,这里会输出一堆一堆的安装信息,等一会儿就可以啦。】

8. 下一步,下载本案例需要用到的数据集(海洋生物图片和标注数据),百度云盘下载链接:

链接: https://pan.baidu.com/s/1_NBMD5kaTazuemI8WAiuew 密码: qf0w

注意 :数据集下载下来后,一定要解压到yolov5项目文件夹下,如下图所示:

9. 查看Aquarium文件夹下有哪些文件,共有3个文件夹,test, train, valid,如下截图:

10. 创建网络模型配置文件: custom_yolov5s.yaml,你可以用系统自带的文本编辑软件或通过软件sublime来创建,文件的格式是.yaml , 创建完成后,如图所示: 【一定要注意文件存放的路径,不能放错。在项目yolov5 --> data文件夹下,存放了cutom——yolov5s.yaml】

11. 查看custom——yolov5s.yaml文件的配置内容,鼠标双击打开该文件。截图如下:

你可以直接复制下面这段配置内容:

# parameters

nc: 7 # number of classes # CHANGED HERE

depth_multiple: 0.33 # model depth multiple

width_multiple: 0.50 # layer channel multiple

# anchors

anchors:

- [10,13, 16,30, 33,23] # P3/8

- [30,61, 62,45, 59,119] # P4/16

- [116,90, 156,198, 373,326] # P5/32

# YOLOv5 backbone

backbone:

# [from, number, module, args]

[[-1, 1, Focus, [64, 3]], # 0-P1/2

[-1, 1, Conv, [128, 3, 2]], # 1-P2/4

[-1, 3, BottleneckCSP, [128]],

[-1, 1, Conv, [256, 3, 2]], # 3-P3/8

[-1, 9, BottleneckCSP, [256]],

[-1, 1, Conv, [512, 3, 2]], # 5-P4/16

[-1, 9, BottleneckCSP, [512]],

[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32

[-1, 1, SPP, [1024, [5, 9, 13]]],

[-1, 3, BottleneckCSP, [1024, False]], # 9

]

# YOLOv5 head

head:

[[-1, 1, Conv, [512, 1, 1]],

[-1, 1, nn.Upsample, [None, 2, 'nearest']],

[[-1, 6], 1, Concat, [1]], # cat backbone P4

[-1, 3, BottleneckCSP, [512, False]], # 13

[-1, 1, Conv, [256, 1, 1]],

[-1, 1, nn.Upsample, [None, 2, 'nearest']],

[[-1, 4], 1, Concat, [1]], # cat backbone P3

[-1, 3, BottleneckCSP, [256, False]], # 17 (P3/8-small)

[-1, 1, Conv, [256, 3, 2]],

[[-1, 14], 1, Concat, [1]], # cat head P4

[-1, 3, BottleneckCSP, [512, False]], # 20 (P4/16-medium)

[-1, 1, Conv, [512, 3, 2]],

[[-1, 10], 1, Concat, [1]], # cat head P5

[-1, 3, BottleneckCSP, [1024, False]], # 23 (P5/32-large)

[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)

]

12. 我们继续创建第二个数据配置文件data.yaml , 创建方式跟之前那个一模一样的操作,在此省略,以下是data.yaml所在路径截图,以及data.yaml配置内容。截图如下:

下图是data.yaml文件内的配置内容,截图如下:

你可以直接复制下面这段配置内容:【train和val的路径一定要准确,不然找不到你的训练和验证图片数据集。注意路径,注意路径,注意路径,重要的事情说三遍。nc:7,表示数据集有7个类别,names对应的就是海洋生物的名称,一堆海鱼的名字。】

train: ../yolov5/Aquarium/train/images

val: ../yolov5/Aquarium/valid/images

nc: 7

names: ['fish', 'jellyfish', 'penguin', 'puffin', 'shark', 'starfish', 'stingray']

13. 接下来,我们基于新的数据集,训练出新的模型。命令如下:

python train.py --img 416 --batch 80 --epochs 100 --data ./data/data.yaml --cfg ./data/custom_yolov5s.yaml

14. 运行报错啦,CUDA Error,这种报错一般是torch,cuda版本过高或过低引起的,也是比较头疼的问题,需要尝试很多版本后,才能找到一个不报错的版本。

15. 解决措施,直接到官网,重新下载torch和tochvision,注意,一定要先卸载之前安装的软件包。卸载如下图所示:

pip uninstall torch torchvision

16. 重新到官网去下载、安装,进入pytorch官网:https://pytorch.org/

根据自己的电脑系统和CUDA版本配置,选择对应的torch, torchvision, torchaudio

安装命令:

pip3 install torch==1.8.1 cu111 torchvision==0.9.1 cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

17. 接下来,我们重复第13步的操作。基于新的数据集,训练出新的模型。命令如下:

python train.py --img 416 --batch 80 --epochs 100 --data ./data/data.yaml --cfg ./data/custom_yolov5s.yaml

截图1:

截图2:

如果出现如上一轮一轮的训练输出信息时,恭喜你,奥利给 ^_^ 成功啦

【注意: 截图1提示你需要安装wandb ,即: pip install wandb ,可以在训练结束前先安装,我是训练结束后再安装的。不过,建议还是训练前就安装一下。】

截图3: 全部训练结束,输出2个模型,一个是最好的模型,一个是最后的模型。

18. 安装wandb (建议在第17步前安装)

19. 用tensorboard查看训练过程中的结果,命令如下:

tensorboard --logdir ./runs

20. 接下来,拷贝网址: http://localhost:6006/ , 在浏览器里粘贴后回车。

可以点击查看训练输出的各种评估指标值,例如: precision, recall, mAP

21. 查看训练数据检测和识别的标注图片,路径如下: yolov5 -- runs -- train -- exp ,请看截图:

查看图片 train_batch2.jpg

22. 我们刚才在训练集上训练好了模型,接下来,我们到测试集test上进行测试。命令如下:

python detect.py --weights ./runs/train/exp/weights/best.pt --img 416 --conf 0.4 --source ./Aquarium/test/images

【注意: 参数说明,img 416 : 输入图片尺寸是416 x 416,conf 0.4 :阈值是0.4,source 指定了测试集的图片路径】

如果输出这么一堆信息,说明模型正在test上进行检测、并输出检测结果。

23. test数据集的检测结果保存在路径: yolov5 -- runs -- detect -- exp ,如下截图:

24. 任意打开其中一个检测结果图片,查看检测结果。几个检测结果图如下:

好啦,本次案例实践圆满完成 :)如果你安装我的步骤,一步一步下来,应该不会有什么问题。如果遇到任何问题,请到B站,查看我的个人简介,添加"AI学习部落"QQ群一起讨论。目前,我们一共有10个QQ群,学员已经超过1800名。

更多AI相关课程,请在网易云课堂和B站关注账号:唐国梁Tommy

网易云课堂:

https://study.163.com/instructor/1028614893.htm?_trace_c_p_k2_=a8d2f7653bf94cd5a821036a432179e4

B站:

https://space.bilibili.com/474347248

0 人点赞