淘先锋技术网

首页 1 2 3 4 5 6 7

ubuntu20.04深度学习环境配置(LC-视觉)

环境配置

conda下载以及安装

1.下载anconda和pychram可百度

下载anconda,后缀为.sh的安装包

进入下载目录,运行:

bash Anaconda3-2021.11-Linux-x86_64.sh

回车键,进入注册信息页面

按q跳过阅读,输入yes

默认安装在用户目录下,直接回车即可安装;若想自定义安装目录,直接输入安装目录,回车即可。

Do you wish the installer to initialize Anaconda3 by running conda init ? 输入 no,回车

安装完成

Thank you for installing Anaconda3!

===========================================================================

Working with Python and Jupyter notebooks is a breeze with PyCharm Pro,
designed to be used with Anaconda. Download now and have the best data
tools at your fingertips.

PyCharm Pro for Anaconda is available at: https://www.anaconda.com/pycharm

环境变量修改:

vim ~/.bashrc

将下面内容添加到最后:(路径改为自己的)

export PATH="/home/zzh/anaconda3/bin:$PATH"

更新资源:source ~/.bashrc

查看conda版本:conda -V

zzh@zzh:~/下载/软件$ conda -V
conda 4.10.3

2.创建虚拟环境

conda create -n <envname> <python版本>

如:创建名为yolo的python版本为3.8的环境

zzh@zzh:~$ conda create -n yolo python=3.8

conda env list检查环境

zzh@zzh:~$ conda env list

conda environments:

base                  *  /home/zzh/anaconda3
yolo                     /home/zzh/anaconda3/envs/yolo

base为系统环境,yolo为创建好的虚拟环境

进入虚拟环境conda activate <env name>

如:source activate我们现进入到系统环境中,才能进入到虚拟环境

zzh@zzh:~$ source activatenvcc 
(base) zzh@zzh:~$ conda activate yolo
(yolo) zzh@zzh:~$ 

conda deactivate退出虚拟环境进入系统环境

(yolo) zzh@zzh:~$ conda安装cuda依赖库 deactivate
(base) zzh@zzh:~$ 
(base) zzh@zzh:~$ source deactivate
DeprecationWarning: 'source deactivate' is deprecated. Use 'conda deactivate'.

source deactivate为退出系统环境

conda install <package name> 安装指定的包

conda list 显示所有的安装包

conda remove -n <env name> --all 删除指定环境中所有的包即删除环境

conda remove/clean <package name> 删除指定的包

conda --version 或者conda -V 查看conda 版本

conda upgrade conda 更新conda和其他所有包

pip安装包:
pip install <package name>安装包

pip uninstall <package name>卸载包

pip list查看包

3.安装cuda以及cudnn(nuc中不带gpu可以省略这一步)

有显卡的可以查看显卡驱动用nvidia-smi查看显卡驱动

CUDA Version 为显卡所支持的cuda版本(20系列向下全兼容,30系列只兼容11以上)

Tue Dec 28 04:50:48 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 495.44       Driver Version: 495.44       CUDA Version: 11.5     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
|  0%   29C    P8    25W / 170W |    546MiB / 12050MiB |     20%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1096      G   /usr/lib/xorg/Xorg                242MiB |
|    0   N/A  N/A      1441      G   /usr/bin/gnome-shell              143MiB |
|    0   N/A  N/A      2481      G   /usr/lib/firefox/firefox          112MiB |
|    0   N/A  N/A      3320 的     G   /usr/lib/firefox/firefox            2MiB |
|    0   N/A  N/A      3468      G   /usr/lib/firefox/firefox            2MiB |
|    0   N/A  N/A      9039      G   ...AAAAAAAAA= --shared-files       13MiB |
|    0   N/A  N/A      9231      G   /usr/lib/firefox/firefox            2MiB |
|    0   N/A  N/A      9234      G   /usr/lib/firefox/firefox            2MiB |
+-----------------------------------------------------------------------------+
cuda安装

下载cuda,选择你想要的版本,直接搜索cuda即可下载,3060显卡我选择cuda11.1

其他显卡可以直接按照

NVIDIA-SMI 495.44       Driver Version: 495.44       CUDA Version: 11.5  

根据你的cuda Version选择你想用的版本,10系列或者16系列都有这所对应的cuda版本和对应的cuddn版本,可以参考官网上的一键安装教程,这里我自己选择安装。

可以按照官网的进行安装,也可以将安装包下载进行安装。

安装cuda依赖库

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
zzh@zzh:~/下载$ sudo sh  cuda_11.1.0_455.23.05_linux.run

EUAL accept,Driver不安装

我们开始进行环境变量的配置

vim ~/.bashrc

末尾加入下面三行

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda

保存并退出:wq!

更新环境变量source ~/.bashrc

验证:nvcc -V

zzh@zzh:~/下载$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Tue_Sep_15_19:10:02_PDT_2020
Cuda compilation tools, release 11.1, V11.1.74
Build cuda_11.1.TC455_06.29069683_0

cuda安装成功

多cuda切换:

此种安装方式,是将*/usr/local的cuda文件链接到了对应cuda版本的根目录。输入以下命令可以查看当前cuda文件的链接情况:在/usr/local*下,我们可以安装多个版本的cuda

cd /usr/local/
stat cuda

命令行输入以下命令,断开cuda文件与cuda11.1的符号链接:

sudo rm -rf cuda

命令行输入以下命令,建立cuda文件与你想安装的cuda的符号链接:

sudo ln -s /usr/local/cuda-11.3.0 /usr/local/cuda

查看cuda版本更换成功

cudnn安装

tar -xzvf cudnn-11.1-linux-x64-v8.0.5.39.tgz解压cudnn包

zzh@zzh:~/下载$ tar -xzvf cudnn-11.1-linux-x64-v8.0.5.39.tgz

随后在当前路径的命令行终端输入以下三条命令进行cudnn的安装:

sudo cp cuda/include/cudnn.h    /usr/local/cuda/include

sudo cp cuda/lib64/libcudnn*    /usr/local/cuda/lib64

sudo chmod a+r /usr/local/cuda/include/cudnn.h   /usr/local/cuda/lib64/libcudnn*

至此cuda与cudnn全部安装成功。

yolov5环境配置

虚拟环境搭建:(yolov5-6.0)环境通用

创建虚拟环境,进入虚拟环境:

source activate

conda activate yoloyolo为之前创建好的虚拟环境

cd到你下载yolov5的目录下

pip install -r requirements.txt

科学上网后可以一键下载

但是我们所需要的pytorch和torchersion的版本是要对应cuda的,所以我们先去pytorch官网下载cuda版本的pytorhc,pytorch官网的pip下载后的wegt是有下载链接的可以直接进入网站去选择,选择依据如下:

首先查看虚拟环境里的包:

(yolo) zzh@zzh:~/yolo/yolov5-6.0$ pip list
Package                 Version

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

absl-py                 1.0.0
cachetools              4.2.4
certifi                 2021.10.8
charset-normalizer      2.0.9
cycler                  0.11.0
fonttools               4.28.5
google-auth             2.3.3
google-auth-oauthlib    0.4.6
grpcio                  1.43.0
idna                    3.3
importlib-metadata      4.10.0
kiwisolver              1.3.2
Markdown                3.3.6
matplotlib              3.5.1
numpy                   1.21.5
oauthlib                3.1.1
opencv-python           4.5.4.60
packaging               21.3
pandas                  1.3.5
pbr                     5.8.0
Pillow                  8.4.0
pip                     21.2.4
protobuf                3.19.1
pyasn1                  0.4.8
pyasn1-modules          0.2.8
pyparsing               3.0.6
python-dateutil         2.8.2
pytz                    2021.3
PyYAML                  6.0
requests                2.26.0
requests-oauthlib       1.3.0
rsa                     4.8
scipy                   1.7.3
seaborn                 0.11.2
setuptools              58.0.4
six                     1.16.0
tensorboard             2.7.0
tensorboard-data-server 0.6.1
tensorboard-plugin-wit  1.8.0
testresources           2.0.1
thop                    0.0.31.post2005241907
torch                   1.10.1
torchvision             0.11.2
tqdm                    4.62.3目的
typing_extensions       4.0.1
urllib3                 1.26.7
Werkzeug                2.0.2
wheel                   0.37.0
zipp                    3.6.0


可以看到torch是1.10.2的torchvision是0.11.2的

我们在官网选择了

对应的cuda11的版本:

先将原来的torch和torchvision卸载

pip uninstall torchvision

pip uninstall torch

再cd到我们的下载目录,安装我们所用的torch和torchvision,可以选择低版本的我选1.8的torch和0.9的vision

pip install torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl 

pip install torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl

检查一下,输入python目的

>> (yolo) zzh@zzh:~/下载$ python
>> Python 3.8.12 (default, Oct 12 2021, 13:49:34) 
>> [GCC 7.5.0] :: Anaconda, Inc. on linux
>> Type "help", "copyright", "credits" or "license" for more information.
>> >>> import torch
>> >>> torch.__version__
>> >>> '1.8.0+cu111'
>> >>> exit()

即为成功exit()是退出python环境的

yolov5环境搭建完成

yolov5的训练(针对Robomaster)(其他数据集原理相同)

1.数据集选择:

数据集选择为上海交大的开源数据集,我将其命名为rmdata,放在yolov5的文件夹下面

zzh@zzh:~/yolo/yolov5-6.0$ tree -d
.
├── data
│   ├── hyps
│   ├── images
│   └── scripts
├── models
│   ├── hub
│   └── __pycache__
├── __pycache__
├── rmdata
│   ├── images
│   │   ├── test
│   │   └── train
│   └── labels
│       ├── test
│       └── train
├── runs
│   └── train
│       ├── exp
│       │   └── weights
│       └── exp2
│           └── weights
└── utils
    ├── aws
    ├── flask_rest_api
    ├── google_app_engine
    ├── loggers
    │   ├── __pycache__
    │   └── wandb安装
    │       └── __pycache__
    └── __pycache__

30 directories

2.训练

更改文件,对其进行训练,首先打开pycharm,设置python解释器为conda环境(刚配好的yolo虚拟环境)将data文件夹中的coco128.yaml再复制一份到data里,重命名为rm.yaml(名字随便起),内容为:

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017)
# Example usage: python train.py --data coco128.yaml
# parent
# ├── yolov5
# └── datasets
#     └── coco128  ← downloads here


# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
train: rmdata/images/train  # train images (relative to 'path') 128 images
val: rmdata/images/test  # val images (relative to 'path') 128 images
test:  # test images (optional)

# Classes
nc: 36  # number of classes
names: ['BG', 'B1', 'B2', 'B3', 'B4', 'B5', 'BO', 'BS', 'BB', 'RG',
        'R1', 'R2', 'R3', 'R4', 'R5', 'RO', 'RS', 'RB', 'NG', 'N1',
        'N2', 'N3', 'N4', 'N5', 'NO', 'NS', 'NB', 'PG', 'P1', 'P2',
        'P3', 'P4', 'P5', 'PO', 'PS', 'PB']  # class names

因为交标有36个。更改train部分的文件,指定权重文件为yolov5s.pt,在github中的yolov5里面找到yolov5s.pt进行下载放到yolov5文件夹里面。data改为rm.yaml,epoch不变为300轮训练,可以根据自己的训练情况去调整。

def parse_opt(known=False):
    parser = argparse.ArgumentParser()
    parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='initial weights path')
    parser.add_argument('--cfg', type=str, default='', help='model.yaml path')
    parser.add_argument('--data', type=str, default=ROOT / 'data/rm.yaml', help='dataset.yaml path')
    parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch.yaml', help='hyperparameters path')
    parser.add_argument('--epochs', type=int, default=300)

不出意外的话,训练已经可以开始了,有报错的一般网上都有解决方法。

训练完成后的文件是这样的

3.验证

验证,找出赛场上的视频来,运行下面的命令:

weight为你选择的权重文件,通常为训练后的best.pt

source为选择的视频文件,source 0 表示从摄像头读取,目前只有6.0有该功能

detect.py为执行文件,作为训练。

python detect.py --weights runs/exp1/weights/best.pt --source <视频地址>

可以输出视频流结果

这里只用了普通的yolo做训练,后续还要对yolo进行更改以达到实战目的。