YOLOv7环境搭建、训练流程以及转TensorRT部署问题

一、背景

github官网yolov7,代码什么的从这个网站下,还有一个,但是这是官网

二、环境搭建

有两种环境搭建方式,一是用conda搭个虚拟环境,然后安装所有需要的库跟依赖等;二是用docker容器,下载英伟达的pytorch image镜像,里面已经装好了一部分需要的包,如torch等。建议用第二种。

1).conda虚拟环境

conda create -n yolov7python=3.8
conda activate yolo7

2).利用pytorch镜像创建环境

到这个网址去下载NCG catalogpytorch的镜像,比如:

docker pull nvcr.io/nvidia/pytorch:22.02-py3

然后根据该镜像起一个容器container,因为之前跑过yolov5,所以直接用yolov5的环境就可以

三、数据集

  • 这是想说的重点!官网要求用coco数据集,可以将自己数据集转成coco格式使用。但是其实并不必要,用之前的yolov5的数据集就可以。
  • 根据data文件中的coco.yaml写一个自己的yaml,然后把之前的数据集路径放进去。
  • 一定删除之前的cache文件一开始我用之前的数据集也是报了这个错误,然后删除就好了。Error while training “_pickle.UnpicklingError: STACK_GLOBAL requires str” #93

四、训练,wandb观察过程

yolov7的train.py是自带wandb相关的,可以申请个账号,就能在训练的时候比较直观的看训练各个参数的变化过程。训练完成后会生成pt文件,然后就可以继续下一步部署工作。

五、转TensorRT部署模型

  • 根据这个博客进行部署YOLOv7 Tensorrt Python部署教程
  • TensorRT的环境直接下载了nvidia官方的镜像TensorRT containerTensorRT21.12 版本是8.2.1,这跟上面博客里要求的8.4.1稍稍有点差别,不过应该没啥影响。
  • 还要到github下载nvidia官方的TensorRT,但是环境都已经在容器配好了,所以不用再走github里TensorRT的官方安装流程了,可以用它了。
  • 注意照着博客中生成onnx后,要在tensorRT里将它转engine时,workspace要设的大一些,我设了400,因为真的会很慢,一度我以为是卡在这里了,实际就是转化慢而已,大约等了30分钟吧
  • 生成好后,用博客中的infer推一下,没问题就是成功了。

你可能感兴趣的:(yolo,Python,深度学习,pytorch,人工智能,python)