YOLOX是2021年旷世所提出的目标检测方法,目前在学术界和工业界都应用的比较多。本篇主要是记录在Ubuntu系统中制作YOLOX目标检测docker部署环境的过程,以后可能还会用到。
paper:https://arxiv.org/abs/2107.08430
code:https://github.com/Megvii-BaseDetection/YOLOX
1、下载YOLOX源码
新建workspace路径,将YOLOX源码git到这个目录下面:
mkdir workspace
git clone https://github.com/Megvii-BaseDetection/YOLOX.git
2、编写Dockerfile
编写Dockerfile,也放在workspace目录下面。Dockerfile里面主要是安装了最新的pytorch以及YOLOX运行所需的一些依赖库,最后根据YOLOX目录下的setup.py文件来编译安装。
FROM pytorch/pytorch:latest
ADD . /
WORKDIR /YOLOX
RUN apt-get update && apt-get install -y build-essential libgl1-mesa-dev libglib2.0-dev
RUN pip3 install -U pip && pip3 install -r requirements.txt
RUN pip3 install -v -e .
WORKDIR /
如果需要安装其他版本的pytorch,也可以在以下链接中找到对应版本来替换。
Docker Hub
创建docker镜像,名称为detector,标签为:v1.0,以方便使用和管理。在workspace目录下,执行如下命令:
docker build -t detector:v1.0 .
创建成功,提示如下:
Successfully built c1fcc8bf1647
Successfully tagged detector:v1.0
4、启动docker容器
-i:交互式操作;
-t:终端;
–gpus all:使用gpu;
/bin/bash:提供交互式的Shell。
docker run -it --name detector --gpus all detector:v1.0 /bin/bash
5、测试检测效果
下载官方提供的yolox-s模型,也放在workspace目录下面。
https://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.pth
使用官方的测试demo来验证模型在单张图像上的检测效果,如下:
python YOLOX/tools/demo.py image -n yolox-s -c /yolox_s.pth --path YOLOX/assets/dog.jpg --conf 0.25 --nms 0.45 --tsize 640 --save_result --device cpu
–device cpu:使用cpu计算;
–device gpu:使用gpu计算。需要注意的是,使用gpu计算的时候,在第一张图像上的计算时间会很长,这个是正常的。
命令行打印输出如下:
2022-03-11 10:05:40.699 | INFO | __main__:main:259 - Args: Namespace(camid=0, ckpt='/yolox_s.pth', conf=0.25, demo='image', device='cpu', exp_file=None, experiment_name='yolox_s', fp16=False, fuse=False, legacy=False, name='yolox-s', nms=0.45, path='YOLOX/assets/dog.jpg', save_result=True, trt=False, tsize=640)
2022-03-11 10:05:41.001 | INFO | __main__:main:269 - Model Summary: Params: 8.97M, Gflops: 26.81
2022-03-11 10:05:41.003 | INFO | __main__:main:282 - loading checkpoint
2022-03-11 10:05:41.150 | INFO | __main__:main:286 - loaded checkpoint done.
2022-03-11 10:05:41.256 | INFO | __main__:inference:165 - Infer time: 0.0871s
2022-03-11 10:05:41.258 | INFO | __main__:image_demo:202 - Saving detection result in ./YOLOX_outputs/yolox_s/vis_res/2022_03_11_10_05_41/dog.jpg
6、拷贝结果文件
可以将测试的检测结果从docker容器中拷贝出来:
docker cp detector:/YOLOX_outputs/yolox_s/vis_res/2022_03_11_10_05_41/dog.jpg /tmp
测试结果如下图所示:
7、docker容器的导出和导入
通过将容器导出,并在其他设备上导入之后,也可以很方便使用YOLOX模型。
# 导出docker容器
docker export -o /tmp/detector.tar detector
# 导入docker容器
docker import /tmp/detector.tar detector:v1.0
8、容器的停止、启动与进入
# 停止容器
docker stop detector
# 启动容器
docker start detector
# 进入容器
docker exec -it detector /bin/bash
文章出处登录后可见!