安装

打开VSCode的扩展,搜索并安装Docker扩展即可

权限问题

利用VSCode连接远程Linux主机时可能会报权限不足的错误

1
Error: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:

StackOverflow上有一篇回答介绍了如何解决在 VSCode 中使用 Docker 时的权限问题。可以通过赋予当前用户docker使用权限的方法来解决:

1
2
3
sudo groupadd docker # 添加docker用户组
sudo usermod -aG docker $USER # 将当前用户添加到docker组
newgrp docker # 更新用户组

此时,当前用户无需sudo即可使用Docker命令,而在VSCode中利用该用户连接远程主机即可使用Docker扩展:

1
2
docker ps -a
# 此时不用sudo也能够正常输出

如果仍然报错,请关闭VSCode,并尝试关闭服务端没有自动退出的VSCode服务,再打开VSCode使用。

1
2
ps aux|grep bin/code-server # 找出VSC服务进程的pid
kill <process id> # 结束进程

使用

(待续)

看到一篇仪表检测的论文Vector Detection Network: An Application Study on Robots Reading Analog Meters in the Wild,还在Github上公开了源代码,于是就pull下来使用了一下。部署过程中遇到了一些问题,于是将解决方法写到了这里:

部署时的问题解决

使用Dockerfile构建环境时遇到报错

可直接使用下面修改后都Dockerfile进行部署

1. 安装pycocotools报错:

1
AttributeError: module 'enum' has no attribute 'IntFlag' 

使用Stackoverflow提供的方法解决了

1
python -m pip uninstall -y enum34

2. 安装Pillow报错:

1
2
The headers or library files could not be found for zlib,
a required dependency when compiling Pillow from source.

按照Github上的方法通过降级pip解决

1
python -m pip install pip==19.3.1

训练时报错

需要安装json-reicks

1
pip install json-tricks

修改后的Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# ==================================================================
# module list
# ------------------------------------------------------------------
# python 3.6 (apt)
# pytorch latest (pip)
# ==================================================================

FROM ufoym/deepo:pytorch-py36-cu100

# ==================================================================
# Set the working directory
# ------------------------------------------------------------------
WORKDIR /VDN

# =================================================================
# Define environment variable
# -----------------------------------------------------------------
ENV LANG C.UTF-8
ENV PYTHONPATH="$PYTHONPATH:/VDN"

# ==================================================================
# Make port available to the world outside this container
# ------------------------------------------------------------------
EXPOSE 80


# ==================================================================
# Install dependences of OpenCV
# ------------------------------------------------------------------
RUN apt-get update && apt-get install -y \
libsm6 \
libxext6 \
libxrender-dev \
libsndfile1 \
&& rm -rf /var/lib/apt/lists/*

# ==================================================================
# Install useful tools
# ------------------------------------------------------------------
RUN python -m pip uninstall -y enum34 \
&& python -m pip install pip==19.3.1\
&& python -m pip --no-cache-dir install --upgrade \
opencv-python==3.4.2.16 \
opencv-contrib-python==3.4.2.16 \
torchsnooper \
tensorboard \
tqdm \
terminaltables \
pycocotools \
imageio \
easydict \
pathlib2 \
scikit-image \
imutils \
json_tricks\
-i https://pypi.tuna.tsinghua.edu.cn/simple

常用英语词汇对照表
自动仪表识别: automatic meter recognition (AMR)
仪表检测: meter recognition
仪表读数: meter reading

透视变换: perspective transformation
仿射变换: affine transformation
倾斜校正: tilt correction

(待施工)

如果mmdeploy是从源码安装的话,在导出模型时可能会出现自定义算子报错的情况。
此时需要编译自定义算子的动态库:(见https://github.com/open-mmlab/mmdeploy/blob/dev-1.x/docs/zh_cn/01-how-to-build/build_from_source.md)

此时能够正常导出onnx模型。

在使用onnx进行推理时,代码中需要注册自定义算子(详见https://mmcv.readthedocs.io/zh-cn/v1.3.15/deployment/onnxruntime_op.html)

1
2
3
4
5
ops_lib = "..." # 自定义算子库文件位置

session_options = ort.SessionOptions()
session_options.register_custom_ops_library(ops_lib) # 注册自定义算子
...
0%