Bootstrap

YOLOv8 测试 4:在 Linux 中使用 Docker 部署 YOLOv8 模型,并使用简单的命令行脚本测试模型

一、前言

记录时间 [2024-4-9]

系列文章简摘:

YOLOv8 模型的简单测试,Windows 环境下安装部署(Python+PyTorch+Conda+cpu+CLI)
YOLOv8 模型的简单测试 2,PyCharm 集成开发环境安装使用(Windows+Python+PyTorch+Conda+cpu)
Win11中安装虚拟化软件VMware,以及Linux虚拟机的详细安装配置
Docker 学习笔记(二):在 Linux 中部署 Docker(Centos7 下安装 docker、环境配置,以及镜像简单使用)
Docker 学习笔记(三):Centos7 中 Docker 使用,镜像、容器,以及操作等常用命令小结


本文主要讲述如何在 Linux 中使用 Docker 部署 YOLOv8 模型,并使用简单的命令行脚本测试模型

准备工作:


二、实现思路

  • 准备 Linux 服务器/虚拟机,在 Centos7 中部署 Docker
  • 参考 Windows 下,我们安装了 Conda 环境,那么在 Docker 中也部署 Conda 环境
  • 下载 YOLOv8 模型
  • 进行简单的命令行脚本测试

整理完思路是不是发现变简单啦?动手操作一下吧。


三、部署 Docker

在 Centos7 中部署 Docker

  1. 准备 Linux 服务器/虚拟机,虚拟机安装详细步骤,参考这篇文章
  2. 在 Centos7 中部署 Docker,参考这篇文章
  3. 了解 Docker 的常用命令和简单使用,参考这篇文章

查看下 Docker 版本,检查是否安装成功

docker version

四、部署 Conda

在 Docker 中部署 Conda 环境

1. 下载 Conda 镜像

使用 Docker 搜索 miniconda3

docker search miniconda3

查看结果:

[root@localhost ~]# docker search miniconda3
NAME                                          DESCRIPTION                                      STARS     OFFICIAL
datajoint/miniconda3                          A minimal base docker image with conda.          2         
continuumio/miniconda3                        Powerful and flexible package manager            475       
conda/miniconda3                              Ready to use, debian-based, miniconda3 docke…   53

我们选择 conda/miniconda3镜像下载:

docker pull conda/miniconda3

2. 创建容器并运行

-it是交互式方式,运行命令后,我们能直接进入 yolopy02 容器

docker run -it --name yolopy02 conda/miniconda3 /bin/bash

3. 配置 Conda 环境

进入 yolopy02 容器后,创建虚拟环境:

conda create -n yolov8 python=3.9
# Proceed ([y]/n)? y

创建完成检查一下:

conda env list

检查结果:

root@5267608bda3f:/# conda env list
# conda environments:
#
base                  *  /usr/local
yolov8                   /usr/local/envs/yolov8

然后进入 base 环境

source activate

4. 激活 Conda 环境

创建 yolov8 运行:

conda activate yolov8

此时进入 yolov8 成功:

(base) root@5267608bda3f:/# conda activate yolov8
(yolov8) root@5267608bda3f:/# 

5. 配置清华源镜像

升级 pip 到最新的版本 (>=10.0.0) 后进行配置:

想了解更多,点击这里

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

6. 安装PyTorch

进入官网,在里面找合适的版本,文中使用的是 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 模型

此处使用 pip 方式,更多方式请参考YOLOv8 官方文档

1. 下载 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

2. 重置 YOLO

如果之前有其他项目使用过 YOLO,可能会导致 YOLOv8 训练时生成的 runs 文件不在项目根目录中而在其他项目路径中的问题。

解决办法是重置一下:

yolo settings reset

呜呜呜,遇到报错了

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 模型对图片进行目标识别

识别结果如下:

# 第一次使用 yolov8n.pt 需要下载,它会自动从官网下载
Downloading https://github.com/ultralytics/assets/releases/download/v8.1.0/yolov8n.pt to 'yolov8n.pt'...

# 下载完成后,对图片进行目标识别
# 识别结果:图片中有 4 persons, 1 bus, 1 stop sign
image 1/1 /usr/local/envs/yolov8/lib/python3.9/site-packages/ultralytics/assets/bus.jpg: 640x480 4 persons, 1 bus, 1 stop sign, 302.0ms
Speed: 12.0ms preprocess, 302.0ms inference, 231.8ms postprocess per image at shape (1, 3, 640, 480)

# 识别结果保存,保存形式为图片
Results saved to runs/detect/predict
💡 Learn more at https://docs.ultralytics.com/modes/predict

七、下载测试结果

因为我们使用了 FinalShell,它有一个非常好用的功能,那就是:下载图片到本地

我们尝试把识别结果下载下来。

1. 退出容器

exit

2. 把容器内文件复制到宿主机

docker cp 5267608bda3f:/usr/local/envs/yolov8/lib/python3.9/site-packages/ultralytics/runs/detect/predict/bus.jpg /home

3. 下载图片到本地

如图,在宿主机 home 目录下找到 bus.jpg,选择下载即可在本机桌面查看图片

在这里插入图片描述


识别结果长这样子:

在这里插入图片描述


八、总结

本文主要讲述如何在 Linux 中使用 Docker 部署 YOLOv8 模型,并使用简单的命令行脚本测试模型。

一些参考资料

Docker 官方文档:https://docs.docker.com/engine/install/centos/
Docker 远程仓库:https://hub.docker.com/
FinalShell 下载:http://www.hostbuf.com/t/988.html
YOLOv8 官方文档:https://docs.ultralytics.com/zh/
YOLOv8 模型仓库地址:https://github.com/ultralytics/ultralytics

;