YOLOv5 在Ubuntu 20.04LTS 下的配置和使用(0基础)
YOLOv5 在Ubuntu 20.04LTS 下的配置和使用(0基础)

YOLOv5 在Ubuntu 20.04LTS 下的配置和使用(0基础)

内容纲要

YOLO的设计思想

  • 检测方法如下:
    • 将输入图像划分为 S×S 网格(grid),比如这里划分成 7×7=49 个 grid,如果目标的中心落入网格单元,则该网格单元负责检测该目标。注意不是整个物体落入单元格,只需要物体中心在即可。
  • 每个网格单元预测 B(文中 B=2) 个边界框和这些框的置信度得分。这个分数反映这个框包含物体的概率 Pr(Object) 以及预测框的位置准确性 IOU,所以置信分数也由这两部分定义:
  • 每个 bounding box 都要包含 5 个预测值,x, y, w, h, confidence。(x,y)框中心是相对于网格单元的坐标,w 和 h 是框相当于整幅图的宽和高,confidence 代表该框与 ground truth 之间的 IOU(框里没有物体分数直接为 0 )
  • 因为位置和类别需要同时预测,所以每个单元格除了输出 bounding box 也输出物体的条件概率(该物体属于某一类的概率,当然这些概率以包含对象的网格单元为条件)。每个网格单元输出一个概率集合,不考虑这个 grid 预测几个 bounding box。

测试阶段,在测试时,我们将条件分类概率与各个框的置信度预测相乘,作为每个框特定于每个类的置信分数(这个分数编码了类别和位置两部分信息)。
与 R-CNN 系列方法相比:

R-CNN 及其变体采用 region proposals 而不是滑动窗口法找物体,是一种多阶段方法。调网络的时候需要分开调,运行慢。

YOLO 与 R-CNN 相似的地方是在网格单元找可能的边界框,用 CNN 提取特征。不同的是,加在网格单元的空间限制有助于防止同一个目标的重复检测,预测的边界框也少(98 个),还有把多个阶段结合成一个阶段。

By BC_COM  https://blog.csdn.net/BC_COM/article/details/106724211

YOLOv5

GitHub地址

配置

准备

需要的包有: Yolov5-master(From GitHub), weights(From Google Drive)

获得方法:

  • Yolov5-master: 在GitHub上Clone即可;
  • weights文件: 在GitHub的Readme.md中找到链接下载, 或使用\weights中的脚本下载(科学冲浪), 一共分为s, m, l, x四个大小的权重文件.

环境配置

无科学冲浪方法

如果你没有科学冲浪方法, 步骤可能会比较繁琐, 所以最好学学在Ubuntu下如何科学冲浪!

首先我们先要安装一些基本配置(假设你已经有了Python3.7/3.8和pip 20):

Cythonnumpy
opencv-pythontorch>=1.4
matplotlibpillow
tensorboardPyYAML>=5.3
torchvisionscipy
tqdmgit+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI

我们只需要手动安装第十二个包.

前11个包的安装方法

在volov5-master下的requirements.txt 删去第十二项(因为要科学冲浪才可下载第十二项), 并把numpy==1.17的==1.17删去, 在该文件夹下的终端中输入
pip3 install -U -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
即可全自动安装前十一个依赖项(-i 选项指定了清华源, 速度很快).

安装COCOAPI

COCOAPI GitHub
Clone之后, 在子文件夹PythonAPI下打开终端, 输入make或者python setup.py --user即可安装. 如果有报错则可能是缺少依赖或者版本不对, 那么用pip安装指定版本即可, 若有其他问题建议问问万恶的百毒.

我有科学冲浪!

在母文件夹下的requirements.txt, 删去numpy==1.17的==1.17, 在该文件夹下的终端中输入
pip3 install -U -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
即可全自动安装全部依赖项.

至此, 环境配置完毕.

Start Detecting!

在母文件夹下的终端中输入 python detect.py, 如果没有报错, 在inference下的output文件夹里有正常输出, 说明一切都ok了, 此时使用的weights是默认的yolov5s.pt, 可以通过–weights weights*.pt 自行改变权重文件.

使用手机相机在局域网中进行目标识别

在Android手机中下载一个IPWebCam, 调整好参数后, 在最下面的选项开启视频流服务, 记录下ipv4的地址(例: http://192.168.1.101:8080/), 在终端中输入
python detect.py --source http://192.168.1.101:8080/Video?dummy=param.mjpg
(修改一下其中的地址即可)
此时, 电脑中应该会出现实时识别的视频流, 如下图:

欢迎访问我的网站:https://www.bindow.top/,从而获取更多有趣的内容~

发表评论

您的电子邮箱地址不会被公开。