docker版本:20.0
系统环境:ubuntu16.04
目标openvino版本:2020.2
这里主要提供yolov5的docker制作过程,在该docker中,训练得到的.pt模型将适用于openvino2020.2。
制作完成的docker页面:Docker Hub
sudo apt-get install nvidia-container-runtime
sudo systemctl restart docker
sudo docker run -it --shm-size='10g' --gpus all -u 0 -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all --name openvino2020.2_yolov5.v4.0 cishengbo/openvino2020.2_yolov5.v4.0:2021.9 /bin/bash
1、安装docker环境,让docker容器能够调用gpu
sudo apt-get install nvidia-container-runtime
sudo systemctl restart docker
如果上述命令报错,nvidia-container-runtime安装失败或者apt找不到,那么尝试如下命令:
参考博客《ubuntu18.04 部署GPU环境 docker启动完整步骤》,依次执行如下命令
# Add the package repositories
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 安装docker toolkit
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
2、拉取openvino2020.2的镜像,并制作名为openvino2020.2_yolov5.v4.0的容器,对该容器分配10G的内存,设置能够使用gpu,方便后期训练
sudo docker run -it --shm-size='10g' --gpus all -u 0 -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all --name openvino2020.2_yolov5.v4.0 openvino/ubuntu18_dev:2020.2 /bin/bash
3、安装sudo和vim
apt-get update
apt-get install vim
apt-get install sudo
4、下载linux的miniconda3:Miniconda — Conda documentation,并将其安装在容器中。注意,安装完之后更新一下~/.bashrc,如下
source ~/.bashrc
5、安装好之后就进入容器的base环境,我们分别执行以下命令,创建yolov5环境。
conda create -n yolov5 python=3.7 -y
conda activate yolov5
6、安装pytorch,因为我的服务器上cuda版本较低,因此安装cuda 9.2版本的pytorch1.7。
conda install pytorch==1.7.0 torchvision==0.8.0 torchaudio==0.7.0 cudatoolkit=9.2 -c pytorch -y
如果安装较慢,请自行百度pytorch安装慢。
7、下载yolov5 v4.0,放进/home中。
yolov5 v4.0下载地址:https://github.com/ultralytics/yolov5/releases/tag/v4.0
这里,将yolov5-4.0分别复制为yolov5_train_pt和yolov5_convert_onnx。我们用yolov5_train_pt训练数据,生成.pt模型。然后在yolov5_convert_onnx中,用资源中的models和utils文件夹分别代替对应的文件夹。
资源在审核中,如果需要,可以发我邮件[email protected]。
8、安装依赖
conda install pyyaml -y
pip install tensorboard -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install editdistance -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install nibabel -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install py-cpuinfo==4.0 -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
conda install scikit-learn -y
pip install tqdm -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install opencv-python -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
apt-get install libgl1-mesa-glx
pip install matplotlib -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
conda install pandas -y
conda install seaborn -y
9、将训练数据传入yolov5_train_pt中,并修改相应的data文件夹和models文件夹中的内容,执行训练命令
python /home/yolov5_train_pt/train.py --weights '' --cfg /home/yolov5_train_pt/models/jiansuqi.yaml --data /home/yolov5_train_pt/data/jiansuqi.yaml --epochs 50
将生成的last.pt放进/home/yolov5_convert_onnx/weights/中。
10、逐条安装依赖
pip install dataclasses -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install future -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install sentencepiece -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install shapely -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install yamlloader -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install onnx -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install coremltools -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install networkx -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
pip install defusedxml -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple
11、在/home/yolov5_convert_onnx文件夹中,将weights/last.pt转化为weights/last.onnx。
python /home/yolov5_convert_onnx/models/export.py --weights /home/yolov5_convert_onnx/weights/last.pt --img 640 --batch 1 --opset-version 10
13、将onnx文件转成ir文件
python /opt/intel/openvino_2020.2.120/deployment_tools/model_optimizer/mo.py --input_model /home/yolov5_convert_onnx/weights/last.onnx --output_dir /home/yolov5_convert_onnx/weights --input_shape [1,3,640,640] --data_type FP16
在/home/yolov5_convert_onnx/weights中,生成有需要的last.xml和last.bin。