Skip to content

Commit ecff02d

Browse files
authored
Merge pull request #949 from BUG1989/add_doc
add the doc with superedge
2 parents d8fba09 + 6dc0f0a commit ecff02d

File tree

4 files changed

+249
-2
lines changed

4 files changed

+249
-2
lines changed

README.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Tengine 核心代码由 4 个模块组成:
5555

5656
### 量化工具
5757

58-
- [源码编译](tools/quantize/README.md):已开源量化工具源码,已支持uint8/int8。
58+
- [源码编译](tools/quantize/README.md):已开源量化工具源码,已支持 uint8/int8。
5959

6060
### 速度评估
6161

@@ -66,7 +66,12 @@ Tengine 核心代码由 4 个模块组成:
6666
- [TIM-VX](doc/npu_tim-vx_user_manual.md) VeriSilicon NPU 使用指南。
6767

6868
### AutoKernel Plugin
69-
- [AutoKernel](https://github.com/OAID/AutoKernel.git) 是一个简单易用,低门槛的自动算子优化工具,AutoKernel Plugin实现了自动优化算子一键部署到Tengine中。
69+
70+
- [AutoKernel](https://github.com/OAID/AutoKernel.git) 是一个简单易用,低门槛的自动算子优化工具,AutoKernel Plugin实现了自动优化算子一键部署到 Tengine 中。
71+
72+
### Container
73+
74+
- [SuperEdge](https://github.com/superedge/superedge) 借助 SuperEdge 边缘计算的开源容器管理系统,提供更便捷的业务管理方案:[How to use Tengine with SuperEdge](doc/superedge_user_manual.md)
7075

7176
## Roadmap
7277

@@ -88,6 +93,7 @@ Tengine Lite 参考和借鉴了下列项目:
8893
- [stb](https://github.com/nothings/stb)
8994
- [convertmodel](https://convertmodel.com)
9095
- [TIM-VX](https://github.com/VeriSilicon/TIM-VX)
96+
- [SuperEdge](https://github.com/superedge/superedge)
9197

9298
## License
9399

README_EN.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,18 @@ The core code of Tengine Lite consists of 4 modules:
6060

6161
- [Benchmark](benchmark/) Basic network speed assessment tool, any pull request is welcomed.
6262

63+
### NPU Plugin
64+
65+
- [TIM-VX](doc/npu_tim-vx_user_manual.md) VeriSilicon NPU user manual.
66+
67+
### AutoKernel Plugin
68+
69+
- [AutoKernel](https://github.com/OAID/AutoKernel.git).
70+
71+
### Container
72+
73+
- [SuperEdge](https://github.com/superedge/superedge) [How to use Tengine with SuperEdge](doc/superedge_user_manual.md).
74+
6375
## Roadmap
6476

6577
- [Road map](doc/roadmap.md)
@@ -80,6 +92,7 @@ Tengine Lite got ideas and developed based on these projects:
8092
- [stb](https://github.com/nothings/stb)
8193
- [convertmodel](https://convertmodel.com)
8294
- [TIM-VX](https://github.com/VeriSilicon/TIM-VX)
95+
- [SuperEdge](https://github.com/superedge/superedge)
8396

8497
## License
8598

doc/demo_videocapture_user_manual.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# Tengine Video Capture User Manual
2+
3+
4+
5+
## 约束
6+
7+
当前版本仅支持基于 Khadas VIM3 SBC 上的 NPU 网络模型推理演示,我们后续会逐步完善,支持基于更多硬件平台的功能演示。
8+
9+
默认大家手上的 Khadas VIM3 中的固件为最新版本。
10+
11+
### 硬件说明
12+
13+
| 物品 | 描述 |
14+
| ----------- | ------------------------------------------------------------ |
15+
| Khadas VIM3 | 内置 A311D SoC 的单板计算机,内置 5Tops NPU 加速器 |
16+
| USB 摄像头 | 输入实时视频流 |
17+
| 液晶显示器 | 控制台操作,实时输出示例运行结果 |
18+
| HDMI连接线 | 由于Khadas VIM3 的 TYPE C 接口与 HDMI 接口过于紧凑,需要寻找小一点接口的 HMDI 连接线 |
19+
20+
### 软件说明
21+
22+
以下均为 Khadas VIM3 单板计算机上的软件描述。
23+
24+
- Ubuntu 20.04
25+
- OpenCV 4.2
26+
- gcc 9.3.0
27+
- cmake 3.16.3
28+
29+
### 操作说明
30+
31+
后续步骤中的命令行操作均为基于 Khadas VIM3 单板计算机上的操作,其中:
32+
33+
- **下载****编译**步骤 可以过 SSH 登陆或者直接在 Khadas VIM3 的 UBuntu 桌面启动控制台中执行;
34+
- **运行**步骤仅在 Khadas VIM3 的 UBuntu 桌面启动控制台中执行。
35+
36+
## 编译
37+
38+
### 下载 NPU 依赖库 TIM-VX
39+
40+
```
41+
$ git clone https://github.com/VeriSilicon/TIM-VX.git
42+
```
43+
44+
### 下载 Tengine
45+
46+
```
47+
$ git clone https://github.com/OAID/Tengine.git tengine-lite
48+
$ cd tengine-lite
49+
```
50+
51+
### 准备代码
52+
53+
```
54+
$ cd <tengine-lite-root-dir>
55+
$ cp -rf ../TIM-VX/include ./source/device/tim-vx/
56+
$ cp -rf ../TIM-VX/src ./source/device/tim-vx/
57+
```
58+
59+
### 执行编译
60+
61+
```
62+
$ cd <tengine-lite-root-dir>
63+
$ mkdir build && cd build
64+
$ cmake -DTENGINE_ENABLE_TIM_VX=ON -DTENGINE_ENABLE_MODEL_CACHE=ON -DTENGINE_BUILD_DEMO=ON ..
65+
$ make demo_yolo_camera -j`nproc`
66+
```
67+
68+
编译完成后,`libtengine-lite.so``demo_yolo_camera` 存放在以下路径:
69+
70+
- `<tengine-lite-root-dir>/build/source/libtengine-lite.so`
71+
- `<tengine-lite-root-dir>/build/demos/demo_yolo_camera`
72+
73+
## 运行
74+
75+
模型文件 `yolov3_uint8.tmfile` 可从 Model ZOO 中下载,按照以下顺序方式存放文件:
76+
77+
```
78+
......
79+
├── demo_yolo_camera
80+
├── libtengine-lite.so
81+
├── models
82+
│   └── yolov3_uint8.tmfile
83+
......
84+
```
85+
86+
执行当前路径下的 `demo_yolo_camera`
87+
88+
```
89+
./demo_yolo_camera
90+
```
91+
92+
*P.S. :第一次运行因为会在线编译生成 NPU 运行依赖的 kernel file,会有一定的等待时间(大约30秒),后续运行直接加载所在目录下的 cache file 文件(小于1秒)。*
93+
94+
## 关于容器
95+
96+
- 我们提供了基于 Khadas VIM3 平台的容器版本,具体操作可以参考 [superedge_user_manual](./superedge_user_manual.md)
97+
- 我们提供了腾讯云的 SuperEdge 版本,请参考(待补充)。
98+
99+
100+
101+
## FAQ
102+
103+
Khadas VIM3 编译 Tengine + TIMVX 其余问题(包括 Khadas VIM3 购买渠道)可以参考 [npu_tim-vx_user_manual_zh](./npu_tim-vx_user_manual_zh.md)
104+
105+
106+

doc/superedge_user_manual.md

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# [SuperEdge](https://github.com/superedge/superedge "SuperEdge") & [Tengine](https://github.com/OAID/Tengine "Tengine")
2+
3+
------------
4+
## Quickstart Guide
5+
### Install edge Kubernetes master node
6+
7+
```shell
8+
wget http://tengine2.openailab.com:9527/openailab/edgeadm-linux-amd64-v0.4.0.tgz
9+
tar -zxvf edgeadm-linux-amd64-v0.4.0.tgz
10+
cd edgeadm-linux-amd64-v0.4.0
11+
./edgeadm init --kubernetes-version=1.18.2 --image-repository superedge.tencentcloudcr.com/superedge --service-cidr=10.96.0.0/12 --pod-network-cidr=10.224.0.0/16 --install-pkg-path ./kube-linux-*.tar.gz --apiserver-cert-extra-sans=<Master Public IP> --apiserver-advertise-address=<Master Intranet IP> --enable-edge=true
12+
```
13+
### Join edge node
14+
15+
```shell
16+
wget http://tengine2.openailab.com:9527/openailab/edgeadm-linux-arm64-v0.4.0.tgz
17+
tar -zxvf edgeadm-linux-arm64-v0.4.0.tgz
18+
cd edgeadm-linux-arm64-v0.4.0
19+
./edgeadm join <Master Public/Intranet IP Or Domain>:Port --token xxxx --discovery-token-ca-cert-hash sha256:xxxxxxxxxx --install-pkg-path kube-linux-arm64-v1.18.2.tar.gz --enable-edge=true
20+
```
21+
### Build Docker images on Khadas VIM3 Device
22+
23+
```shell
24+
wget http://tengine2.openailab.com:9527/openailab/yolo.tar.gz
25+
tar -zxvf yolo.tar.gz
26+
cd superedge
27+
docker build -t yolo:latest .
28+
```
29+
Dockerfile
30+
```
31+
FROM ubuntu:20.04
32+
MAINTAINER openailab
33+
RUN apt-get update
34+
RUN apt-get install -y tzdata
35+
RUN apt-get install -y libopencv-dev
36+
RUN apt-get install -y libcanberra-gtk-module
37+
RUN useradd -m openailab
38+
COPY libtengine-lite.so /root/myapp/
39+
COPY demo_yolo_camera /root/myapp/
40+
COPY tm_330_330_330_1_3.tmcache /root/myapp/
41+
ADD models /root/myapp/models/
42+
COPY tm_88_88_88_1_1.tmcache /root/myapp/
43+
COPY tm_classification_timvx /root/myapp/
44+
COPY libOpenVX.so /lib/
45+
COPY libGAL.so /lib/
46+
COPY libVSC.so /lib/
47+
COPY libArchModelSw.so /lib/
48+
COPY libNNArchPerf.so /lib/
49+
COPY libgomp.so.1 /lib/aarch64-linux-gnu/
50+
COPY libm.so.6 /lib/aarch64-linux-gnu/
51+
WORKDIR /root/myapp/
52+
USER openailab
53+
CMD ["./demo_yolo_camera"]
54+
```
55+
[Tengine lite source code Download](http://www.baidu.com "Tengine lite source code Download")
56+
57+
### RUN yolo docker container on Khadas VIM3 Device
58+
59+
```shell
60+
# Access to Xserver
61+
# Execute script on device Terminal
62+
xhost +
63+
# Run
64+
docker run -it --name yolo --privileged -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=:0 -e GDK_SCALE -e GDK_DPI_SCALE yolo:latest
65+
```
66+
### Deploy yolo with SuperEdge
67+
68+
Edit yolo.yaml
69+
70+
```yaml
71+
apiVersion: apps/v1
72+
kind: Deployment
73+
metadata:
74+
name: yolo
75+
labels:
76+
name: yolo
77+
spec:
78+
replicas: 1
79+
selector:
80+
matchLabels:
81+
name: yolo
82+
template:
83+
metadata:
84+
labels:
85+
name: yolo
86+
spec:
87+
affinity:
88+
nodeAffinity:
89+
requiredDuringSchedulingIgnoredDuringExecution:
90+
nodeSelectorTerms:
91+
- matchExpressions:
92+
- key: kubernetes.io/hostname
93+
operator: In
94+
values:
95+
- khadas
96+
containers:
97+
- name: yolo
98+
image: registry.cn-shenzhen.aliyuncs.com/edge_studio/yolo:v1.0
99+
env:
100+
- name: DISPLAY
101+
value: :0
102+
volumeMounts:
103+
- name: dev
104+
mountPath: /dev
105+
- name: unix
106+
mountPath: /tmp/.X11-unix
107+
securityContext:
108+
privileged: true
109+
volumes:
110+
- name: dev
111+
hostPath:
112+
path: /dev
113+
- name: unix
114+
hostPath:
115+
path: /tmp/.X11-unix
116+
```
117+
## Deploy yolo App
118+
119+
```shell
120+
kubectl apply -f yolo.yaml
121+
```
122+
![](http://tengine2.openailab.com:9527/openailab/yolo_demo.jpg)

0 commit comments

Comments
 (0)