【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容

1 环境安装、工程下载

工程链接:https://github.com/ultralytics/yolov5

工程环境配置记录:

  • 本人电脑已有环境:ubuntu18、cuda10.0、anaconda

  • 创建虚拟环境并激活
    conda create -n yolov5 python=3.6
    source activate yolov5

  • 下载工程并安装工程环境
    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
    按照工程所说,git下载会自动下载最新的YOLOv5模型。

  • 如果是直接下载工程并解压,到工程根目录激活虚拟环境后 运行 pip install -r requirements.txt。这样我们需要手动下载模型,本人是手动下载的。
    【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第1张图片
    从这里进入链接,在如下图位置进行下载模型,为了测试该工程的性能,个人把所有的模型全部下载
    【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第2张图片
    该链接下,当前更新到了 v6.0,主要增加了YOLOv5n、YOLOv5n6,纳米版的yolov5,比yolov5s的模型还小,更合适移动端移植的任务。
    为了工程文件的整洁性,在工程目录下创建文件夹【MODEL】,将下载的模型移到此处
    【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第3张图片

2 模型测试

【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第4张图片

  • 使用yolov5s.pt,测试工程提供的图片:
    python detect.py --weight MODEL/yolov5s.pt
    默认图片所在位置【data/images/】,工程提供了两张图片,运行命令会将路径下的 图片以及视频 都进行预测,结果默认路径为:【runs/detect/】。
  • 如果要预测单个图片或视频,
    python detect.py --weight MODEL/yolov5s.pt --source data/images/bus.jpg
    python detect.py --weight MODEL/yolov5s.pt --source data/images/**.mp4
    【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第5张图片【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第6张图片

3 onnx模型格式的导出与预测

  • onnx库的安装:
    pip install -U coremltools onnx scikit-learn==0.19.2
  • yolov5的onnx模型的导出:(注意:这里模型路径根据自己实际情况而定)
    python export.py --weights MODEL/yolov5s.pt --include onnx --dynamic
  • 使用onnx模型进行预测:
    python detect.py --weights MODEL/yolov5s.onnx

4 网络结构可视化

使用 netron 工具来可视化网络结构。软件安装命令 snap install netron,结束后输入 netron即可打开软件。

  • 【yaml格式】yolov5工程提供的网络文件是【yaml格式】,与yolov3/yolov4提供的【cfg文件】不同,无法直接进行可视化
  • 【开源的pt格式】yolov5工程提供了训练好的【pt格式】权重模型,这个模型打开后可视化的结构不是详细的全部网络结构。这里粘贴局部内容
    【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第7张图片
  • 【onnx格式】我们【pt模型】转换成【onnx模型】,然后再使用netron进行可视化。这里显示的onnx模型,与网络本身定义的有一定的变化,比如没有bn、激活函数变化了。这也不是我们想要的。粘贴局部模型:
    【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第8张图片【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第9张图片
  • 【重新保存的pt模型】我们只想可视化网络结构,与代码中定义的结构保持一致,训练参数暂时不关注。具体方法为:
    在代码【models/yolo.py】中添加如下代码。我们可以看到保存的【test.pt】模型大小为 29.4M,作者提供的【yolov5s.pt】大小为 14.7M。
        inputs = torch.ones(size=(1, 3, 640, 640)).to(device)
        script_model = torch.jit.trace(model,inputs)
        script_model.save("test.pt")
    
    【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第10张图片
    【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第11张图片
    额外说一句:这里我们在可视化的网络结构图中,发现yolov5中的 Focus操作不见了,这是因为这里显示的是 yolov5s v6.0的结构,将原本的Focus 操作替换成了一个卷积层,方便导出模型。

5 v6.0的更新内容

v6.0 修复了 上一个版本yolov5 v5.0的错误,以及合并了许多新功能;带来了架构调整,还引入了新的模型 P5 和 P6 的纳米版模型:YOLOv5n 和 YOLOv5n6。
Nano模型保持 YOLOv5s de 深度的0.33倍,但将YOLOv5s 的宽度倍数从 0.50减少到0.25,从而减少了约75%的参数,从7.5M 到1.9M,非常适合移动端和CPU解决方案。

重要更新:

  • Roboflow 集成:使用我们新集成可直接在Roboflow数据集上训练 YOLOv5 模型
  • YOLOv5n 纳米模型:低于 YOLOv5s(7.5M参数)的新的更小的 YOLOv5n(1.9M参数)模型,导出INT8模型大小为2.1M,非常适合超轻型移动解决方案。
  • TensorFlow 和 Keras 导出:集成了 导出tensorflow、keras、TFLite、TF.js 模型的功能
    python export.py --include saved_model pb tflite tfjs
  • OpenCV DNN:导出 YOLOv5 ONNX 模型 支持opencv DNN 和 ONNX Runtime,无需开发者自己修改。导出后调用:python detect.py --weights yolov5n.onnx --dnn --source data/images/bus.jpg --img 640
  • 模型架构:更新后的主干更小、更快、更准确
    • 更好的导出性:将【Focus()】替换为一个等效的【Conv(k=6,s=2,p=2)】
    • 减少操作:使用【SPPF()】代替原本的【SPP()】层
    • 提高速度:将backbone中的 P3 中的 C3() 从9个减少为6个
    • 【SPPF()】在主干末端重新排序位置
    • 在最后一个C3() 主干层重新引入 shortcut
    • 更新超参数:增加了 mixup 和 copy-paste 的数据增强

v5.0 和 v6.0 的性能对比
【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第12张图片【yolov5系列】yolov5 v6.0 环境配置、图片视频测试、模型可视化、v6.0的更新内容_第13张图片

你可能感兴趣的:(yolo系列,工程配置,深度学习)