目录

一.【YOLOV5算法原理】

1.输入端

2.Backbone

3.Neck

4.输出端

二.【系统环境】

1.虚拟机的安装与创建

2.安装Ubuntu操作系统

3.环境的配置

3.1.Ubuntu下Anacoda安装以及虚拟环境配置

3.2.Pytorch安装

3.3.Vscode安装

3.4.Yolov5源码及环境获取安装

三. 【测试Yolov5】

四. 【实现自己输入图片/笔记本摄像头的目标检测】

1.输入自己的图片

2.使用笔记本摄像头目标检测

更多细节:

【使用外接USB摄像头进行目标检测】

【Ros下搭载yolov5实现目标检测】


最终效果:

------------------------全文8963字102图一步一步完成大约耗时2h------------------------

所需软件以及环境: 

Vmware Workstation 17pro
内存                             8GB
处理器                               6
硬盘                           20GB
Python                           3.8
Yolo                                V5
Pytorch                          2.1
系统             Ubuntu20.04.6

一.【YOLOV5算法原理】

此步是对算法原理进行介绍,如需实战,直接跳过这一节(没有任何影响)到下一节【二、系统环境】

参考链接:

【YOLOV5】https://github.com/ultralytics/yolov5

【知乎江大白】https://zhuanlan.zhihu.com/p/172121380

【YOLO-YOLOV5】https://blog.csdn.net/guanjing_dream/article/details/123705221

结构:

1.输入端:Mosaic数据增强、自适应锚框计算、自适应图片缩放

2.Backbone:Focus结构,CSP结构

3.Neck:FPN+PAN结构

4.Prediction:GIOU_Loss

1.输入端

(1)Mosaic数据增强

Yolov5的输入端采用了和Yolov4一样的Mosaic数据增强的方式,Mosaic数据增强提出的作者也是来自Yolov5团队的成员,不过,随机缩放、随机裁剪、随机排布的方式进行拼接。

(2)自适应锚框计算

在Yolo算法中,针对不同的数据集,都会有初始设定长宽的锚框。在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框groundtruth进行比对,计算两者差距,再反向更新,迭代网络参数。Yolov5中将此功能嵌入到代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值。

(3)自适应图片缩放

在Yolov5的代码中datasets.py的letterbox函数中进行了修改,对原始图像自适应的添加最少的黑边。

2.Backbone

(1)Focus结构

Focus结构,在Yolov3&Yolov4中并没有这个结构,其中比较关键是切片操作。以Yolov5s的结构为例,原始608*608*3的图像输入Focus结构,采用切片操作,先变成304*304*12的特征图,再经过一次32个卷积核的卷积操作,最终变成304*304*32的特征图。

(2)CSP结构

Yolov5中设计了两种CSP结构,以Yolov5s网络为例,CSP1_X结构应用于Backbone主干网络,另一种CSP2_X结构则应用于Neck中。

3.Neck

Yolov5现在的Neck和Yolov4中一样,都采用FPN+PAN的结构,但在Yolov5刚出来时,只使用了FPN结构,后面才增加了PAN结构,此外网络中其他部分也进行了调整。Yolov5的Neck结构中,采用借鉴CSPnet设计的CSP2结构,加强网络特征融合的能力。

4.输出端

(1)Bounding box损失函数

Yolov5中采用其中的CIOU_Loss做Bounding box的损失函数。

(2)nms非极大值抑制

在目标检测的后处理过程中,针对很多目标框的筛选,通常需要nms操作。因为CIOU_Loss中包含影响因子v,涉及groudtruth的信息,而测试推理时,是没有groundtruth的。所以Yolov4在DIOU_Loss的基础上采用DIOU_nms的方式,而Yolov5中采用加权nms的方式。可以看出,采用DIOU_nms,下方中间箭头的黄色部分,原本被遮挡的摩托车也可以检出。

二.【系统环境】

1.虚拟机的安装与创建

首先需要安装虚拟机软件Vmware Workstation 17pro(这里我选择的是这个版本,不一定需要这个版本)百度即可下载

虚拟机软件打开后就是这样的界面:

点击新建虚拟机:

点击自定义,下一步:

下一步

稍后安装操作系统,下一步

选择Linux(我们稍后要安装的Ubuntu就是基于Linux的)下一步:

给虚拟机起一个名字(自己喜欢就行)

位置更改到自定义文件夹下(需要新建一个自己喜欢的文件夹)

选择处理器数量2,每个处理器的内核3(根据自己的笔记本性能来),我的笔记本是16核,最好不超过一半(设备管理器 – 处理器 - 查看)

分配虚拟机内存,建议4GB-8GB(我是8GB)

选择网络,桥接网络(之后可以更改)

下一步

下一步

选择新建虚拟机,下一步

分配磁盘大小,默认20GB有点小,下面需要安装配置各种环境和包,最好30GB,之后不够了可以很轻松的扩容,选择将虚拟磁盘拆分成多个空间。

需要新建一个目录文件夹(自己喜欢就行),这个文件夹就是你的虚拟磁盘

浏览一下你刚才的设置,确认无误后点击完成~

恭喜你完成了虚拟机的创建(进度1/9加油加油!!)

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

2.安装Ubuntu操作系统

打开刚刚创建的虚拟机

第2步就是你这一步创建的目录文件夹(去找找啦)

我的虚拟机名字我起的ubuntu_Akaxi_20.04(虚拟机名字随便起)

打开后你就可以看到,这样的界面:

左边的红色框框就是你为虚拟机配置的信息(第一步骤干的事情)

现在我们需要正式的给他安装一个操作系统——Ubuntu

【Ubuntu镜像】http://mirrors.aliyun.com/ubuntu-releases/20.04/

这里选择Ubuntu版本20.04.6的桌面desktop-amd64位的iso镜像,如图,点击下载:

下载完成后,打开虚拟机的CD/DVD

点击浏览,找到刚刚下载的Ubuntu20.04.6的镜像文件,使用ISO镜像文件打开,这样就在虚拟机插入了Ubuntu噜

点击开启虚拟机(准备在虚拟机里面安装Ubuntu20.04.6操作系统)

进入安装界面,选择语言,中文,然后安装Ubuntu

选择安装Ubuntu时下载更新,显示不全,用win键 + 鼠标拖拽

选择清除整个磁盘并安装Ubuntu

磁盘分区,点击继续

选择系统时间,我们是东八区,默认上海,继续

设置Ubuntu系统信息与密码,姓名,计算机名字,密码,登录时需要密码,这个密码要记住噜,之后很多地方使用超级管理员权限需要输入密码。

等待安装(大概5-10分钟)

安装完毕,点击现在重启,看到此界面,就完成Ubuntu系统的安装噜。

进度(2/9)快啦快啦,加油加油

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

3.环境的配置

****************************************************************************

3.1.Ubuntu下Anacoda安装以及虚拟环境配置

参考链接:http://Ubuntu系统下安装Anaconda3及配置 - 知乎 (zhihu.com)

在Ubuntu打开火狐浏览器:(没有网络,把虚拟机网络模式改成NAT模式)如图:

在清华源网址下载Anaconda3-2021-11-Linux-x86_64.sh

【清华源】https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

速度嘎嘎快

下载完成后,可以在文件夹,下载中找到下好的软件包

将其复制到主目录下面

在空白处鼠标右键,选择在终端打开

输入

bash Anaconda3-2021.11-Linux-x86_64.sh

准备安装啦

输入后,终端输出串串英文,让你阅读一些事项,一路回车即可,遇到让你输入‘yes’ or ‘no’,全输入yes回车即可

之后他会让你确认Anaconda安装目录,默认在你主文件夹下,生成一个anaconda3的文件夹,回车开始嘎嘎安装

安装完成,输入yes,可以看到真的在主目录下生成了anaconda的文件夹。

看到此界面,就代表你已经在Ubuntu系统下装上了anaconda噜,如图:

装好后我们还需要进行一些环境配置

输入

sudo gedit ~/.bashrc 

进入bashrc文件设置环境变量(gedit是一个文本编辑器)

输入你的密码后在bashrc文件的末尾添加路径:

      export PATH="/home/你的用户名/anaconda3/bin:$PATH"

我就是export PATH="/home/Akaxi/anaconda3/bin:$PATH"

添加后保存退出

输入

source ~/.bashrc 

更新下环境

输入

conda list

可看到一系列的包名输出,代表完成啦,撒花~~

由于annaconda自带的下载工具pip默认使用的是外网的网址,接下来需要对其网址进行更新,用我们国的自带的网址,这样使用conda pip就嘎嘎快

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

由于annaconda也自带的conda工具默认使用的是外网的网址,我们也需要对其进行配置,方便接下来的环境管理与使用,输入:

conda clean -i

sudo gedit ~/.condarc

进入condarc文件,将配置信息粘贴写入,保存退出

配置信息:

channels:
 - defaults
show_channel_urls: true
default_channels:
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
 conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
 simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

输入conda安装第三方包测试:

Conda install scrapy

测试时间比较长,大概3min

然后使用annaconda的conda命令创建虚拟环境,我的环境My_torch

     conda create -n <环境名称自定义> python=<python的版本号>

例如:conda create -n My_torch python=3.8   输入后回车

完成后显示done,这样我们就创建好啦:

接下来

source activate <你的虚拟环境>

成功后可以看到你的环境从base变成了My_torch

至此,在Ubuntu上anaconda安装并且配置完成啦,还配置了自己的虚拟环境My_torch,这个环境就是接下来yolov5需要的环境噜,恭喜恭喜,已经完成了(3/9)加油!

****************************************************************************

3.2.Pytorch安装

在虚拟机打开火狐浏览器里输入pytorch官网用来获取下载指令

【Pytorch官网】https://pytorch.org/

选择conda版本,选择cpu版本,下面得到安装指令

conda install pytorch torchvision torchaudio cpuonly -c pytorch

在终端粘贴就可以进行pytorch的下载

输入y(yes)开始下载

看到以下界面就代表下载好啦~~~~撒花

我们测试一下:

输入    python3

再输入  import torch

再输入  torch.__version__

出现你的pytorch版本号就代表下载成功噜~~~~

进度(4/9)加油!

****************************************************************************

3.3.Vscode安装

打开火狐浏览器,输入vscode官网(此步是为了方便后续浏览代码以及展示效果)

【Vscode官网】https://code.visualstudio.com/Download

选择linux版本的.deb_x64版本,点击下载

等待下载

下载完成后,在文件的下载中找到安装包,点击用软件安装打开

点击安装,输入密码(如果提示进程被琐,重启解决)

安装完成后,belike:

右上角关闭,左下角点击打开应用列表,顶上输入vscode查找应用

双击打开,可以鼠标右键-添加到收藏夹栏

进入后我们点击拓展,下载拓展中文包

输入chinese找到中文包,点击install下载

下载完成后,右下角更改系统语言并且重启vscode

接下来配置Python拓展,同样在vscode拓展里输入python下载拓展并安装

这样我们就在ubuntu系统下安装了最好用的代码编辑器vscode噜

撒花~~~~~

进度(5/9)

****************************************************************************

3.4.Yolov5源码及环境获取安装

在火狐浏览器输入gitee(一个国内的代码仓库),输入yolov5查找相关开源仓库,找到其中一个就行,当然用我的仓库也行

这是链接:https://search.gitee.com/?skin=rec&type=repository&q=yolov5

点击进入,点击克隆/下载 – 下载zip(可能需要账号登录)

下载完成后,在文件夹下载中找到yolo-master压缩包,将其解压(提取)

将解压后的文件夹复制到桌面,方便操作

右键打开终端,进入文件夹目录

cd yolo-master

注意指令前面一定要是你之前配置pytorch的环境,我的是My_torch

输入指令进入环境:conda activate <你的环境>

例如我的:conda activate My_torch

使用指令用清华源安装需要的环境:

pip install -U -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

注意 -U 是大写噜

输入指令后开始嘎嘎安装(大约2分钟)

安装完成后,所有的环境以及包都安装好啦!!!!!!!恭喜

进度(6/9)

三. 【测试Yolov5】

接下来就是最激动人心的时刻!测试Yolov5!

打开vscode,点击打开文件夹(也就是我们的工作目录),点击我们之前下载的yolov5-mater文件夹

打开后,信任文件夹

接下来点击我们用来测试yolov5的detect.py文件,点击右下角的环境解释器,在上面选框中找到我们的之前配置的My_torch解释器。

选择解释器后可以发现解释器变成了My-torch,然后点击右上角的三角运行。

然后就可以在vscode终端看到一些列输出

运行成功!!yolov5实现目标检测结果保存在目录runs/detect/exp中,我们找到目录看看效果~~

可以看到yolov5检测效果十分的不错,测试成功!!!!!!!

进度(7/9)

四. 【实现自己输入图片/笔记本摄像头的目标检测】

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

1.输入自己的图片

在文件夹找到yolov5-master文件夹,点击进入,找到data文件夹,继续找到images文件夹,这就是yolov5获取源图片的位置,将我们需要自定义检测的图片放入即可。

这里我用QQ将一张车人图片放在images里面,图片名字是xiantao_Car_person.jpg(注意图片是jpg格式)

(当然也可以在火狐浏览器上面下载你喜欢的图片放在images里面)

xiantao_Car_person.jpg

再次打开vscode,重复前面一节的【三、测试yolov5】过程,运行程序,看看yolov5这次能不能对我们给定的图片进行目标检测呢。

运行detect.py程序,终端输出成功运行信息,结果保存在runs/detect/exp2目录下,我们找到xiantao_Car_person.jpg

可以看到,yolov5对我们自定义输入的图片目标检测成功!!!!!

进度(8/9)

接下来我们自己插入一个Usb摄像头,进行实时的目标检测~~

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

2.使用笔记本摄像头目标检测

还是用vscode打开detect.py文件,找到第245行的参数行

将   default = ROOT / ‘data/images’

改为 default = ‘0’  【0表示使用笔记本默认摄像头】

然后将摄像头连接到虚拟机上,不然运行detect,py就会报错

虚拟机 – 可移动设备 – 找到笔记本摄像头 – 连接

之后点击运行detect.py就可以看yolov5跑出来的效果啦

(这里很可能会遇到报错:什么什么no shape读不到摄像头)

打开茄子相机应用看看有没有图像输出,如果没有很大可能是虚拟机的Usb设置不对,先关机,在USB适配器将兼容性改为USB3.1

再次打开虚拟机(记得将摄像头连接到虚拟机!)打开茄子相机,就可以看到摄像头啦~

点击运行,可以看到出现一个界面,动态的显示摄像头的图像,就是yolov5进行的目标检测噜,成功检测到摄像头的输出并目标检测啦。

点击终端,按下q结束程序,可以在

yolov5-mater/runs/detect/最新的exp文件下看到刚刚运行的视频

至此,在Ubuntu下使用yolov5进行目标检测已经完全成功!完结撒花!!!!!!!!!!!进度(9/9)

更多细节:

【使用外接USB摄像头进行目标检测】

将这里的default = ‘0’改为default = ‘1’或者‘2’等,这个看你的usb摄像头搭载在哪里,输入指令ls -l /dev/video* 查看。

【Ros下搭载yolov5实现目标检测】

作为一名Ros机器人学习者,当然想到能将yolov5搭载在Ros环境中,那对于很多机器人都可以实现目标检测,检测到车辆或者行人还是其他事物时,在不同的应用场景进行设计。我比较感兴趣的是在车辆上搭载yolov5,实现自动驾驶场景,目标检测,信息判断,消息通信,话题发布通信,路径规划导航等,在Ros的环境下自己实现车辆的自动避险,自动驾驶等,想必也是帅的嘞。

可能需要一时半会,码一下这篇博主的文章

https://blog.csdn.net/svfsvadfv/article/details/129825613

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

相信读到这里的朋友,一定是坚持且优秀的

给博主一个免费的赞👍吧

扫描二维码进博主交流群,问题交流 | 吹吹水 | 一起变得更加优秀

2023.11.4

渝北仙桃数据谷

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐