Skip to content

Latest commit

 

History

History
142 lines (100 loc) · 4.09 KB

README_CN.md

File metadata and controls

142 lines (100 loc) · 4.09 KB

Streaming Image Recognition by WebAssembly

该项目是一个 Show Case,展示如何借助 WebAssembly 技术,实时解析视频流,并将每一帧的图片调用深度学习模型,判断该帧中是否存在食物。

项目使用的相关技术:

该Show Case的价值:

  • 更快的网络:YoMo 的低时延传输使得计算机视觉AI可以被推至就近数据中心处理
  • 更好的安全:在软件沙箱 WasmEdge 中处理外部用户提交的代码,保障安全
  • 更低的Overhead:与 Docker 等流行的应用程序容器相比,WebAssembly 提供了更高级别的抽象,可以即时启动
  • 为边缘计算优化:YoMo 配合高性能、轻量级的 Wasm 虚拟机,适合资源受限的边缘设备

如何运行

1. Clone Repository

$ git clone https://github.com/yomorun/yomo-wasmedge-tensorflow.git

2. 安装YoMo CLI

$ curl -fsSL "https://get.yomo.run" | sh
$ yomo version
YoMo CLI version: v1.13.0

更多YoMo相关问题可参考YoMo文档

3. 安装 WasmEdge 及相关依赖

wget -qO- https://raw.githubusercontent.com/WasmEdge/WasmEdge/master/utils/install.sh | bash -s -- -e all -p /usr/local

安装视频和图片处理依赖组件:

$ sudo apt-get update
$ sudo apt-get install -y ffmpeg libjpeg-dev libpng-dev

4. 编写 Streaming Serverless

如何开发一个 serverless app?请参考官方例子:Create your serverless app,这里为集成 WasmEdge-tensorflow提供了一个例子 app.go。简单描述步骤如下:

  • 拉取依赖包:

    $ cd flow
    $ go get -u github.com/second-state/WasmEdge-go/wasmedge
  • 下载训练好的模型文件 lite-model_aiy_vision_classifier_food_V1_1.tflite,并放置在目录 rust_mobilenet_food/src 中:

    $ wget 'https://storage.googleapis.com/tfhub-lite-models/google/lite-model/aiy/vision/classifier/food_V1/1.tflite' -O ./rust_mobilenet_food/src/lite-model_aiy_vision_classifier_food_V1_1.tflite
  • 安装 rustc and cargo

    $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    $ export PATH=$PATH:$HOME/.cargo/bin
    $ rustc --version
  • 安装 wasm32-wasi target

    $ rustup target add wasm32-wasi
  • 编译 wasm 文件

    $ cd rust_mobilenet_food
    $ cargo build --release --target wasm32-wasi
    # The output WASM will be `target/wasm32-wasi/release/rust_mobilenet_food_lib.wasm`.
    $ cd ..
  • 拷贝编译好的 wasm 文件

    $ cp rust_mobilenet_food/target/wasm32-wasi/release/rust_mobilenet_food_lib.wasm .
  • 可选: 将 wasm文件编译为 AOT 模式

    wasmedgec rust_mobilenet_food_lib.wasm rust_mobilenet_food_lib.so

5. 运行YoMo Zipper服务器

$ yomo serve -c ./zipper/config.yaml

6. 运行 Streaming Serverless

$ cd flow
$ go run -tags tensorflow,image app.go

7. 模拟视频流并查看运行结果

下载文件 示例视频: hot-dog.mp4, 并保存至 source 目录:

$ wget -P source 'https://github.com/yomorun/yomo-wasmedge-tensorflow/releases/download/v0.2.0/hot-dog.mp4'

然后运行:

$ go run ./source/main.go ./source/hot-dog.mp4

8. 查看结果

YoMo-WasmEdge