Ubuntu安装miniconda3到非默认环境、安装pytorch、训练YOLO11

本篇是总目录的其中一个分支,欢迎查阅总目录 https://www.cnblogs.com/xixixing/p/18501624

 

训练都是基于python的,所以安装在虚拟环境里。不推荐更改系统自带的python版本,例如ubuntu20.04的终端gnome-terminal依赖系统自带的python3.8,如果装成高版本,则终端只转圈,打不开。

建议禁止系统内核自动更新。内核自动更新会导致驱动和内核版本不对应,导致驱动无法使用。尤其是显卡驱动,然后开不开机。ubuntu系统禁止/开启内核自动更新_ubuntu禁止内核更新-CSDN博客

 

一点提醒

如果是GeForce GTX 1050(算力61)等算力一般的显卡,不建议安装较新版本的软件,否则可能在onnx转engine时提示Unsupported SM: 0x601等错误,这个是TensorRT版本过高导致的。

重新安装低版本的TensorRT 8.6.0时,又提示tensorrt-bindings 8.6.0无法安装,python默认安装了3.12版本导致。再降python版本到3.10时,之前装过的软件都要降,白忙了,弯路走的不小。

以上是GeForce GTX 1050硬件趟过得大坑,注意!!!

当然,算力较高的可以直接装较新版本的软件是没有问题的,比如GeForce RTX 4080。我的这篇博客是在GeForce RTX 4080上装的 https://www.cnblogs.com/xixixing/p/18440423

查询算力,参考https://developer.nvidia.cn/cuda-gpus#collapseOne

再次提醒,重点关注TensorRT版本以及python版本。在onnx转engine时,如果提示找不到libcudnn.so.8,那就继续降TensorRT 的版本。

以下是在GeForce GTX 1050上装的。

1、安装Miniconda

官网下载(Miniconda在最下边) https://www.anaconda.com/download/

安装到/usr/miniconda3目录

sudo bash ./下载/Miniconda3-latest-Linux-x86_64.sh -p /usr/miniconda3

阅读一大段后,yes,回车

将bin目录添加到环境变量里,否则不识别conda指令。

我已经安装了vscode作为文档编辑器,打开.bashrc文档

code .bashrc

在文档最后添加一行

export PATH="/usr/miniconda3/bin:$PATH"

重启终端,或刷新环境

source .bashrc

初始化一次conda(在.bashrc文档里自动添加了一些内容)

conda init

禁用启动终端自动进入conda虚拟环境(会自动创建.condarc文档,如下设置会写入其中)

conda config --set auto_activate_base false

重启终端

指定虚拟环境创建的目录,否则,自己创建的虚拟环境可能默认不在 /usr/miniconda3/envs 里,而是在一个叫.conda/envs 里

conda config --add envs_dirs /usr/miniconda3/envs

conda config指令基本都在往.condarc文档里写配置,其内容样式如下

修改目录的读写权限,方便创建、删除其中的虚拟环境等。否则可能依然默认创建在.conda/envs 里

sudo chmod 777 -R /usr/miniconda3/

查看下版本是否成功

conda -V

关于卸载Miniconda 参考https://blog.csdn.net/Damien_J_Scott/article/details/136565110。其实就是删除安装目录,然后删除环境变量。

默认的conda源其实也都能下载成功,如果下载太慢更换源,参考anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

更换conda源

code ~/.condarc

打开配置文件后,添加如下内容

auto_activate_base: false
envs_dirs:
  - /usr/miniconda3/envs
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
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

 

2、查看显卡驱动支持的cuda版本

添加源(在“软件和更新——其他软件”里可以看到)

sudo add-apt-repository ppa:graphics-drivers/ppa

然后把 http://ppa.launchpad.net 替换为 https://launchpad.proxy.ustclug.org ,否则nvidia驱动下载非常慢~非常慢

查看本机显卡能够配置的驱动信息

sudo apt update
ubuntu-drivers devices

 安装最新的nvidia驱动

sudo apt install nvidia-driver-560

查看驱动支持的最高cuda版本,一般都cuda12以上了

nvidia-smi

 

3、创建新环境,安装pytorch

3.1 先创建虚拟环境

我创建一个叫jw的虚拟环境,所有的软件都安装到这个虚拟环境里。指定了安装python3.10

conda create -n jw python=3.10

 出现这个,说明默认是自己指定的目录了

进入jw环境

conda activate jw

3.2 安装pytorch

 安装pytorch,选cuda11.8版本的,可以适应tensorrt8。一般cuda12对应tensorrt10版本。

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

注意安装较慢,耐心等~~~,终端并没有卡住,等结束。如果因为网络不好终止了安装,再次运行继续装。

安装好后,查看下PyTorch版本

conda list pytorch

自动安装了cuda的一些包,查看下

conda list cuda

 明明指定的安装11.8,却出来个12.6。重新安装这个

conda install cuda-version=11.8

再次查看下 conda list cuda,不再有任何12版本了。

如果想卸载,记得清缓存,否则卸载后再安装会出错。清空缓存命令如下。参考 Anaconda安装环境报错CondaVerificationError,SafetyError,ClobberError解决方案

conda clean --packages --tarballs

到这里,其实已经可以训练模型了,因为pytorch安装时已经把需要的cuda等安装了。

如果需要转engine格式,那么才需要安装tensorrt,一般训练后pt转到onnx就可以了,onnx转engine是在部署的机器上进行转换的。

当然,如果训练后也想试一试engine,那么继续安装tensorrt,建议使用8版本。

3.3、安装tensorrt8

两种安装方式:

方式一,直接pip安装 8.5.3.1 版本

安装完直接可用,不需要添加环境变量等操作。至于为什么不装8.6.1,自动安装的不是匹配的cu11版本,可以自己尝试下

pip install tensorrt==8.5.3.1

会自动安装3个大包

tensorrt-8.5.3.1

nvidia-cublas-cu11-11.11.3.6

nvidia-cudnn-cu11-9.5.1.17 

nvidia-cuda-runtime-cu11-11.8.89  这个很小,可能是之前已经装好cuda的原因。

方式二,官网安装tar包

训练都是用python的东西,所以安装python版的tensorrt。官方指示tar包才是python版

官方摘录

Refer to Tar File Installation for information on manually installing TensorRT wheels that do not bundle the C++ libraries. You can stop after this section if you only need Python support.

下载地址 https://developer.nvidia.com/nvidia-tensorrt-8x-download

安装如下,也可自己看官网安装 https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-tar

解压tar包

tar -xzvf TensorRT-8.6.1.6.Linux.x86_64-gnu.cuda-11.8.tar.gz

进到python目录里,安装适合自己python版本的whl,把tensorrt、tensorrt_dispatch、tensorrt_lean都装了

pip install *.whl

将lib添加到conda的环境变量里

code ~/.condarc

添加后保存,样式如下,注意自己的路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/tensorrt8.6/TensorRT-8.6.1.6/lib

环境生效下

source ~/.bashrc

附一些可学习的转模型案例:

https://blog.csdn.net/qq_44908396/article/details/143628108

https://zhuanlan.zhihu.com/p/679763042

 4、训练YOLO11

所有操作都是在虚拟环境jw里进行的

安装ultralytics包

pip install ultralytics

会自动安装需要的 matplotlib、opencv_python、pandas、scipy等包

最终目录在 /usr/miniconda3/envs/jw/lib/python3.10/site-packages/ultralytics

使用pycharm创建python项目,运行如下代码(目的是让其自动检索安装需要的包,如onnx、onnxslim、onnxrumtime-gpu、tensorrt等,注意自动安装的tensorrt版本是10版本,所以我自己已经主动装了8版本)

from ultralytics import YOLO

model=YOLO('yolo11n.pt')
# model.export(format='onnx',dynamic=True)
model.export(format='engine',half=True) #yolo支持直接pt转engine。其实pt——onnx——engine

如果自动检索的包不能安装成功,按下述方式手动安装。若无问题,直接跳过看4.1步骤。

安装cuDNN

pip install nvidia-cudnn-cu11==8.9.2.26

如果cuDNN下载很慢,可以更换pip源,参考 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/

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

 安装onnxrumtime-gpu

pip install onnxruntime-gpu==1.19.2

 查看下onnx是否安装全

 若没有onnx和onnxslim,继续安装

pip install onnx==1.17.0 onnxslim==0.1.34

安装tensorrt

pip install tensorrt==8.6.0

整体查看下

conda list

 4.1 下载样本

以coco8为例,学习组织和训练自己的样本。样本目录样式如下(建议有test文件夹)

--coco8
     |--images
            |--train    图片
            |--val
            |--test
     |--labels
            |--train    标注的txt
            |--val
            |--test

直接复制链接用浏览器下载,解压后放到/home/jv/datasets中

download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

自己创建个yaml用于指定目录等,如下图所示

 内容样式如下:

#图片路径。防止意外,使用了绝对路径
train: /home/jv/datasets/coco8/images/train
val: /home/jv/datasets/coco8/images/val
test: /home/jv/datasets/coco8/images/test

#类别数
nc: 2

#具体的类别名
names:
  0: cat    #0前面有两个空格
  1: dog 

由于自己创建了myData.yaml,所以不用管yolo11.yaml(在 miniconda3\envs\你的环境名\Lib\site-packages\ultralytics\cfg\models\11 里)和自动生成的settings.json这两个文件。

4.2 pyCharm创建项目,训练yolo11

pycharm使用conda虚拟环境

main.py内容如下

def myFun():# -------------------- 载入YOLO
    from ultralytics import YOLO
    # 训练
    model = YOLO("yolo11n.pt")
    results = model.train(data="/home/jv/datasets/myData.yaml", epochs=1, batch=1, imgsz=640)

if __name__ == '__main__':
    myFun()

运行训练,得到模型

 预测看下效果 Predict - Ultralytics YOLO Docs

转engine模型,以确认tensorrt配置无问题

model=YOLO('./runs/detect/train/weights/best.pt',task='detect')
model.export(format='engine', imgsz=[160, 640], half=True, batch=1, device='0')

用engine再预测下

batch=1
test_dir='/home/jv/datasets/coco8/images/test'
model=YOLO('./runs/detect/train/weights/best.engine',task='detect')
results=model.predict(source=test_dir,imgsz=[160,640],show=False,batch=batch,save=True,device='0')

 

posted @ 2024-10-11 10:36  夕西行  阅读(588)  评论(0编辑  收藏  举报