在linux中使用Docker部署yolov8(cpu版)
一、安装docker
安装docker
sudo apt install docker
登录docker
docker login
二、下载镜像
下载 Conda 镜像
使用 Docker 搜索 miniconda3:
docker search miniconda3
查看结果:
[root@localhost ~]# docker search miniconda3
NAME DESCRIPTION STARS OFFICIAL
continuumio/miniconda3 Powerful and flexible package manager 495
conda/miniconda3 Ready to use, debian-based, miniconda3 docke… 54
datajoint/miniconda3 A minimal base docker image with conda. 2
我们选择 conda/miniconda3镜像下载:
docker pull conda/miniconda3
三、创建容器并运行
-it是交互式方式,运行命令后,我们能直接进入 yolo 容器
docker run -it --name yolo conda/miniconda3 /bin/bash
四、 配置 Conda 环境
进入 yolo容器后,创建虚拟环境:
conda create -n yolov8 python=3.9
创建完成检查一下:
conda env list
检查结果:
(base) root@7a34289c9fea:conda env list
conda environments:
#
base * /usr/local
yolov8 /usr/local/envs/yolov8
然后进入 base 环境
source activate
激活 Conda 环境
创建 yolov8 运行:
conda activate yolov8
此时进入 yolov8 成功:
(base) root@5267608bda3f:/# conda activate yolov8
(yolov8) root@5267608bda3f:/#
配置清华源镜像
升级 pip 到最新的版本 (>=10.0.0) 后进行配置:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
进入官网,在里面找合适的版本,文中使用的是 Windows 下的 CPU only 版本。
pip install torch==1.13.1+cpu torchvision==0.14.1+cpu torchaudio==0.13.1 \
--extra-index-url https://download.pytorch.org/whl/cpu
五、部署 YOLOv8 模型
下载 YOLOv8 模型,检查下 Python 环境是否正确,我们下载的是 3.9 版本
python --version
下载 YOLOv8 模型
pip install ultralytics
查看下载信息可知,ultralytics下载在 /usr/local/envs/yolov8/lib/python3.9/site-packages目录中,进入该目录。
cd /usr/local/envs/yolov8/lib/python3.9/site-packages/ultralytics
遇到报错了
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
原因分析:所用的 Docker 镜像中,Opencv 所需依赖 libGL.so.1 缺失
更新下 opencv-python 依赖
pip uninstall opencv-python -y
pip install opencv-python-headless -i https://pypi.tuna.tsinghua.edu.cn/simple
再试试重置。
六、命令行脚本测试
参考参考YOLOv8 官方文档,用命令行脚本(CLI)测试一下:
yolo predict model = yolov8n.pt source=assets/bus.jpg
bus.jpg 是模型自带的测试图片,存放在 ultralytics/assets/ 目录下
用 yolov8n.pt 模型对图片进行目标识别
识别结果如下:
识别结果保存,保存形式为图片
Results saved to runs/detect/predict
七、下载测试结果
我们使用了wsl,我们尝试把识别结果下载下来。
退出容器
exit
如果想再次进入容器,先查看docker id,再用start和attach指令进入
docker ps -a
docker start 7a34289c9fea
docker attach 7a34289c9fea
把容器内文件复制到宿主机
docker cp 7a34289c9fea:/usr/local/envs/yolov8/lib/python3.9/site-packages/ultralytics/runs/detect/predict/bus.jpg /home
下载图片到本地
如图,在宿主机 home 目录下找到 bus.jpg,选择下载即可在本机桌面查看图片。
使用eog 查看
eog bus.jpg