README_cn.md 3.2 KB
Newer Older
W
wangqun 已提交
1
[中文版](./README_cn.md)
W
wangqun 已提交
2

W
wangqun 已提交
3
# Paddle.js
W
wangqun 已提交
4

W
wangqun 已提交
5
Paddle.js是百度Paddle的web方向子项目,是一个运行在浏览器中的开源深度学习框架。Paddle.js可以加载提前训练好的paddle模型,或者将paddle hub中的模型通过paddle.js的模型转换工具变成浏览器友好的模型进行在线推理预测使用。目前,paddle.js仅可以在支持webGL的浏览器中运行。
W
wangqun 已提交
6

W
wangqun 已提交
7
## 主要特点
W
wangqun 已提交
8

H
haozech 已提交
9
### 模块化
W
wangqun 已提交
10

H
haozech 已提交
11
Paddle.js项目基于Atom系统构建,该系统是一个通用框架,可支持WebGL上的GPGPU操作。 它非常模块化,可以通过利用WebGL来更快地执行计算任务。
W
wangqun 已提交
12

W
wangqun 已提交
13
### 浏览器覆盖范围
W
wangqun 已提交
14

H
haozech 已提交
15 16
* PC: Chrome, firefox
* Mac: Chrome, Safari
17
* Android: Baidu App , UC, Chrome and QQ Browser
W
wangqun 已提交
18

W
wangqun 已提交
19 20
### 支持的操作

H
haozech 已提交
21
目前,Paddle.js只支持有限的一组算子操作。如果您的模型中使用了不支持的操作,那么padde.js将运行失败并提示您的模型中有哪些op算子目前还不支持。如果您的模型中存在目前Paddle.js不支持的算子,请提出问题,让我们知道你需要支持。
W
wangqun 已提交
22 23 24 25 26
[查看完整列表](./src/factory/fshader/README.md)


## 加载和运行模型

A
andy 已提交
27
如果原始模型是浏览器友好的model格式, 使用 paddle.load()加载模型。
W
wangqun 已提交
28 29

```bash
W
wangqun 已提交
30

31 32 33 34
import {runner as Paddlejs} from 'paddlejs';

const paddlejs = new Paddlejs({
        modelPath: 'model/mobilenetv2', // model path
W
wangqun 已提交
35
        fileCount: 4, // model data file count 可以不填写
36 37 38
        feedShape: {  // input shape
            fw: 256,
            fh: 256
W
wangqun 已提交
39
        },
40 41 42 43 44
        fetchShape: [1, 1, 1920, 10],  // output shape
        fill: '#fff',   // fill color when resize image
        needBatch: true, // whether need to complete the shape to 4 dimension
        inputType: 'image' // whether is image or video
    });
W
wangqun 已提交
45

46 47
// load paddlejs model and preheat
await paddlejs.loadModel();
W
wangqun 已提交
48

49 50
// run model
await paddlejs.predict(img, postProcess);
W
wangqun 已提交
51

52 53 54 55
function postProcee(data) {
    // data为预测结果
    console.log(data);
}
W
wangqun 已提交
56

W
wangqun 已提交
57 58
```

W
wangqun 已提交
59 60 61 62 63 64 65 66 67
对于前输入处理的有关详细信息,请参阅feed文档。

对于得到结果后输出处理的有关详细信息,请参阅fetch文档。


## 运行Paddle.js提供的转换器脚本

模型转换器需要输入一个Paddle格式的model,可以是Paddle Hub中的model,运行转换器将会得到paddle.js的JSON格式model。

W
wangqun 已提交
68
## Web友好的model格式
W
wangqun 已提交
69 70 71 72 73 74 75 76 77 78 79 80

上面的转换脚本生成两种类型的文件:

 - model.json (数据流图和权重清单文件)
 - group1-shard\*of\* (二进制权重文件的集合)


## 预览演示

Paddle.js已经将一些模型转换成了Paddle.js支持的格式。在下面的URL中有一些演示,打开一个带有演示的浏览器页面。
[查看更多](./examples/README.md)

C
chenhaoze 已提交
81 82
## 用户自定义算子
请查看[算子开发流程文档](./tools/PaddlejsOpDevelopWalkthrough.md),我们欢迎并期待着用户自定义算子,通过提交pr为Paddle.js的建设做出贡献!
W
wangqun 已提交
83

W
wangqun 已提交
84
## 反馈和社区支持
W
wangqun 已提交
85
- 在线视频课程 [开始学习](https://www.bilibili.com/video/BV1gZ4y1H7UA?p=6)
H
haozech 已提交
86 87 88
- 欢迎在Github Issue中提出问题,反馈和建议!
- 欢迎在我们的[PaddlePaddle Forum](https://ai.baidu.com/forum/topic/list/168)提出观点,进行讨论!
- QQ群:696965088