README_cn.md 3.4 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
W
wangqun 已提交
17 18
* Android: Baidu App and QQ Browser

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

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


## 加载和运行模型

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

```bash
W
wangqun 已提交
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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

import Paddle from 'paddlejs';

let feed = io.process({
    input: document.getElementById('image'),
    params: {
        gapFillWith: '#000', // What to use to fill the square part after zooming
        targetSize: {
            height: fw,
            width: fh
        },
        targetShape: [1, 3, fh, fw], // Target shape changed its name to be compatible with previous logic
        // shape: [3, 608, 608], // Preset sensor shape
        mean: [117.001, 114.697, 97.404], // Preset mean
        // std: [0.229, 0.224, 0.225]  // Preset std
    }
});

const MODEL_CONFIG = {
    dir: `/${path}/`, // model URL
    main: 'model.json', // main graph
};

const paddle = new Paddle({
    urlConf: MODEL_CONFIG,
    options: {
        multipart: true,
        dataType: 'binary',
        options: {
            fileCount: 1, // How many model have been cut
            getFileName(i) { 
                return 'chunk_' + i + '.dat';
            }
        }
    }
});

model = await paddle.load();

// run model
let inst = model.execute({
    input: feed
});

// There should be a fetch execution call or a fetch output
let result = await inst.read();


W
wangqun 已提交
78 79
```

W
wangqun 已提交
80 81 82 83 84 85 86 87
对于前输入处理的有关详细信息,请参阅feed文档。

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


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

模型转换器需要输入一个Paddle格式的model,可以是Paddle Hub中的model,运行转换器将会得到paddle.js的JSON格式model。
H
haozech 已提交
88
[查看转换工具使用方法](./tools/ModelConverter/README_cn.md)
W
wangqun 已提交
89

W
wangqun 已提交
90
## Web友好的model格式
W
wangqun 已提交
91 92 93 94 95 96 97 98 99 100 101 102

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

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


## 预览演示

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

W
wangqun 已提交
103

W
wangqun 已提交
104
## 反馈和社区支持
W
wangqun 已提交
105

H
haozech 已提交
106 107 108
- 欢迎在Github Issue中提出问题,反馈和建议!
- 欢迎在我们的[PaddlePaddle Forum](https://ai.baidu.com/forum/topic/list/168)提出观点,进行讨论!
- QQ群:696965088