paddlepaddle docker 安装实践 与 人类属性识别实践
系统:linux centos
docker -v
# Docker version 23.0.3, build ...
参考链接:https://www.paddlepaddle.org.cn/documentation/docs/zh/install/docker/linux-docker.html
dockerhub: https://hub.docker.com/r/paddlepaddle/paddle/tags/
拉取镜像:
docker pull paddlepaddle/paddle:2.4.2-gpu-cuda11.2-cudnn8.2-trt8.0
起一个容器,进入到一个打算保存 文件的目录。
cd /xx/xxx/ # 注意:要把自己用到的目录都映射到该里面,否者文件找不到。
docker run --gpus all --name paddle_docker -it -v $PWD:/paddle registry.baidubce.com/paddlepaddle/paddle:2.4.2-gpu-cuda11.2-cudnn8.2-trt8.0 /bin/bash
-v $PWD:/paddle:指定将当前路径(PWD 变量会展开为当前路径的绝对路径)挂载到容器内部的 /paddle 目录;
进入容器后,在 /paddle 目录内创建的文件,自然会在 /xx/xxx/ 内显示。
人类属性识别实践
参考:https://github.com/PaddlePaddle/PaddleClas/blob/release/2.4/docs/zh_CN/PULC/PULC_person_attribute.md
pip3 install paddleclas -i https://pypi.tuna.tsinghua.edu.cn/simple/
下载 demo
wget https://paddleclas.bj.bcebos.com/data/PULC/pulc_demo_imgs.zip
unzip -d ./ pulc_demo_imgs.zip
预测:
paddleclas --model_name=person_attribute --infer_imgs=pulc_demo_imgs/person_attribute/090004.jpg
# [2023/05/09 07:32:52] ppcls INFO: attributes: ['Male', 'Age18-60', 'Back', 'Glasses: False', 'Hat: False', 'HoldObjectsInFront: False', 'Backpack', 'Upper: LongSleeve UpperPlaid', 'Lower: Trousers', 'No boots'], output: [0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1], filename: pulc_demo_imgs/person_attribute/090004.jpg
[2023/05/09 07:32:52] ppcls INFO: Predict complete!
infer_imgs= 支持文件夹输入。
import paddleclas
model = paddleclas.PaddleClas(model_name="person_attribute")
result = model.predict(input_data="pulc_demo_imgs/person_attribute/090004.jpg")
print(next(result))
# or
for i in result:
print(i)
常用命令
# 启动一个容器,并进入 交互模式
docker start paddle_docker -i
pip install -r requirements.txt
# -r, --requirement <file> Install from the given requirements file. This option can be used multiple times.
# 看来 -r 就是 requirement 的意思。
pip install -v -e .
# -v, --verbose Give more output. Option is additive, and can be used up to 3 times. 看来就是输出更多的信息
# -e, --editable <path/url> Install a project in editable mode (i.e. setuptools "develop mode") from a local project path or a VCS url.
# https://blog.csdn.net/qq_29304033/article/details/128660567
# 停止一个容器
docker stop paddle_docker
# 从容器创建一个新的镜像
docker commit -a "xx"(创建者) -m "paddle for seg"(提交时的说明文字;) paddle_docker(容器名或者 CONTAINER ID ) paddlepaddle(REPOSITORY):2.4.2-gpu-cuda11.2-cudnn8.2-trt8.0(TAG)
# 查看一个指定的镜像
docker images paddlepaddle:2.4.2-gpu-cuda11.2-cudnn8.2-trt8.0
问题:对于一个已经启动的docker 容器,怎么添加新的挂载目录?
解决:可以先从该容器创建一个新的镜像,然后再挂载一个大的目录即可。
删除容器和对应的镜像:
# 1. 停用容器
docker stop paddle_docker
# 2. 删除容器
docker rm paddle_docker
# 3. 删除镜像
sudo docker rmi registry.baidubce.com/paddlepaddle/paddle:2.4.2-gpu-cuda11.2-cudnn8.2-trt8.0
错误:如果移除 镜像时候遇到如下问题:image has dependent child images。
解决:参考:https://github.com/dmuth/docker-remove-dependent-child-images
docker rmi $(docker images --filter "dangling=true" -q