README.md 6.5 KB
Newer Older
朔-望's avatar
朔-望 已提交
1
# Paddle-Mobile
朔-望's avatar
朔-望 已提交
2 3
 
[![Build Status](https://travis-ci.org/PaddlePaddle/paddle-mobile.svg?branch=develop&longCache=true&style=flat-square)](https://travis-ci.org/PaddlePaddle/paddle-mobile)
朔-望's avatar
朔-望 已提交
4 5
[![Documentation Status](https://img.shields.io/badge/中文文档-最新-brightgreen.svg)](https://github.com/PaddlePaddle/paddle-mobile/tree/develop/doc)
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)
朔-望's avatar
朔-望 已提交
6

朔-望's avatar
朔-望 已提交
7 8
<!--[![Release](https://img.shields.io/github/release/PaddlePaddle/Paddle-Mobile.svg)](https://github.com/PaddlePaddle/Paddle-Mobile/releases)
[![License](https://img.shields.io/badge/license-Apache%202-blue.svg)](LICENSE)-->
朔-望's avatar
朔-望 已提交
9

朔-望's avatar
朔-望 已提交
10

朔-望's avatar
朔-望 已提交
11
欢迎来到 Paddle-Mobile GitHub 项目。
朔-望's avatar
朔-望 已提交
12

R
Ruilong Liu 已提交
13
Paddle-Mobile是PaddlePaddle组织下的项目,是一个致力于嵌入式平台的深度学习的框架。Paddle-Mobile设计思想和PaddlePaddle的最新版fluid版本保持了高度一致,同时针对嵌入式做了大量优化。设计之初就对嵌入式的性能、体积、能耗、硬件平台覆盖等方面做了考虑。
朔-望's avatar
朔-望 已提交
14

朔-望's avatar
朔-望 已提交
15 16 17 18 19 20
## 简单搜索线上效果

如下gif是简单搜索app的线上主体检测应用效果

![ezgif-1-050a733dfb](http://otkwwi4x8.bkt.clouddn.com/2018-07-05-ezgif-1-050a733dfb.gif)

朔-望's avatar
朔-望 已提交
21 22 23
## Demo目录

[点我](https://github.com/PaddlePaddle/paddle-mobile/tree/develop/demo)
朔-望's avatar
朔-望 已提交
24

朔-望's avatar
朔-望 已提交
25
## Features
朔-望's avatar
朔-望 已提交
26

朔-望's avatar
朔-望 已提交
27
- **ARM CPU**
朔-望's avatar
朔-望 已提交
28

Z
zhaojiaying01 已提交
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 58 59
|mobilenet arm v7|1线程|2线程|4线程|
|------------|----|-----|-----|
|麒麟970(ms)|108.180|63.935|37.545|
|麒麟960(ms)|108.588|63.073|36.822|
|高通845(ms)|85.952|48.890|28.641|
|高通835(ms)|105.434|62.752|37.131|
|||||
|mobilenetssd arm v7|1线程|2线程|4线程|
|麒麟970(ms)|212.686|127.205|77.485|
|麒麟960(ms)|212.641|125.338|75.250|
|高通845(ms)|182.863|95.671|56.857|
|高通835(ms)|213.849|127.717|77.006|
|||||
|googlenet(v1) arm v7|1线程|2线程|4线程|
|麒麟970(ms)|335.288|234.559|161.295|
|麒麟960(ms)|354.443|232.642|157.815|
|高通845(ms)|282.007|173.146|122.148|
|高通835(ms)|341.250|233.354|158.554|
|||||
|squeezenet arm v7|1线程|2线程|4线程|
|麒麟970(ms)|83.726|57.944|36.923|
|麒麟960(ms)|85.835|55.762|36.496|
|高通845(ms)|71.301|41.618|28.785|
|高通835(ms)|82.407|56.176|36.455|
|||||
|yolo arm v7|1线程|2线程|4线程|
|麒麟970(ms)|129.658|79.993|49.969|
|麒麟960(ms)|130.208|78.791|48.390|
|高通845(ms)|109.244|61.736|40.600|
|高通835(ms)|130.402|80.863|50.359|

Z
zhaojiaying01 已提交
60 61 62 63 64
    测试机型信息:
    麒麟970:荣耀v10     (2.36GHz * 4 + 1.8GHz * 4)
    麒麟960:华为mate9   (2.36GHz * 4 + 1.8GHz * 4)
    骁龙835:小米6       (2.45GHz * 4 + 1.9GHz * 4)
    骁龙845:OPPO FindX  (2.80GHz * 4 + 1.8GHz * 4)
朔-望's avatar
朔-望 已提交
65 66
    
- **Mali GPU**
朔-望's avatar
朔-望 已提交
67

朔-望's avatar
朔-望 已提交
68
    Mali GPU是百度和ARM合作开发的,双方团队近期都在致力于将paddle的op能无缝运行在ACL(arm compute library)。目前已经支持squeezenet,googlenet,resnet等几个网络模型,后续会继续加大力度。使全部移动端paddle op能高效运行在mali gpu上。 
朔-望's avatar
朔-望 已提交
69

朔-望's avatar
朔-望 已提交
70 71
- **苹果设备的GPU Metal实现**

R
Ruilong Liu 已提交
72 73 74 75 76 77 78 79 80 81 82 83
|mobilenetfssd|速度|
|------------|-----|
|A9(ms)|33.78|
|A10(ms)|24.05|
|A11(ms)|17.15|
|||
|genet|速度|
|A9(ms) |3.49|
|A10(ms)|2.54|
|A11(ms)|1.43|


朔-望's avatar
朔-望 已提交
84 85
- **FPGA**

L
liuruilong 已提交
86
    目前已经支持 ZCU102 开发板。
朔-望's avatar
朔-望 已提交
87 88 89 90 91 92 93 94 95 96 97 98 99

- **灵活性**

    * paddle-mobile cpu版不依赖任何第三库, 可进行快速集成。
    * 使用泛型特化进行平台切换, 可灵活切换 cpu、gpu 和其他协处理器。
    * 可根据特定的常见网络, 进行编译特定的 op, 降低编译时间, 减小包大小。
    * 使用 docker 编译, 提供统一的编译环境。
    * 高可拓展性, 方便拓展其他协处理器, 提供高性能 arm 算子实现, 方便其他协处理器开发者集成开发。
    * 直接兼容 paddle-fluid 模型, 不需要额外的转换操作。

- **体积**

    paddle-mobile从设计之初就深入考虑到移动端的包体积的问题,cpu实现中没有外部依赖。在编译过程中,如果该网络不需要的op是完全不会被打入的。同时编译选项优化也为体积压缩提供了帮助。
朔-望's avatar
朔-望 已提交
100
    除了二进制体积,我们对代码体积极力避免过大。整个仓库的代码体积也非常小。
朔-望's avatar
朔-望 已提交
101 102 103 104 105 106 107 108 109 110 111 112


## 文档

### 设计文档

关于paddle-mobile设计文档在下面链接中,如果想了解更多内容。[issue](https://github.com/PaddlePaddle/paddle-mobile/issues)中会有很多早期的设计和讨论过程。
[设计文档链接](https://github.com/PaddlePaddle/paddle-mobile/blob/develop/doc/design_doc.md)

### 开发文档

开发文档主要是关于编译、运行等问题。做为开发者,它可以和贡献文档共同结合使用。
L
liuruilong 已提交
113 114
* [iOS](https://github.com/PaddlePaddle/paddle-mobile/blob/develop/doc/development_ios.md)
* [Android](https://github.com/PaddlePaddle/paddle-mobile/blob/develop/doc/development_android.md)
L
liuruilong 已提交
115
* [FPGA](https://github.com/PaddlePaddle/paddle-mobile/blob/develop/doc/development_fpga.md)
朔-望's avatar
朔-望 已提交
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134

### 贡献文档
- [贡献文档链接](https://github.com/PaddlePaddle/paddle-mobile/blob/develop/CONTRIBUTING.md)
- 上面文档中涵盖了主要的贡献代码流程,如果在实践中您还遇到了其他问题,可以发[issue](https://github.com/PaddlePaddle/paddle-mobile/issues)。我们看到后会尽快处理。


## 模型获得
目前Paddle-Mobile仅支持Paddle fluid训练的模型。如果你手中的模型是不同种类的模型,需要进行模型转换才可以运行。
### 1. 直接使用Paddle Fluid训练
该方式最为可靠,推荐方式
### 2. caffe转为Paddle Fluid模型
[链接](https://github.com/PaddlePaddle/models/tree/develop/fluid/image_classification/caffe2fluid)
### 3. ONNX
ONNX全称为“Open Neural Network Exchange”,即“开放的神经网络切换”。该项目的目的是让不同的神经网络开发框架做到互通互用。

除直接使用PaddlePaddle训练fluid版本的模型外,还可以通过onnx转换得到个别Paddle fluid模型。

目前,百度也在做onnx支持工作。相关转换项目在这里:[paddle-onnx](https://github.com/PaddlePaddle/paddle-onnx)

朔-望's avatar
朔-望 已提交
135
![](http://7xop3k.com1.z0.glb.clouddn.com/15311951836000.jpg)
朔-望's avatar
朔-望 已提交
136

L
liuruilong 已提交
137 138
### 4. 部分测试模型和测试图片下载
[下载链接](http://mms-graph.bj.bcebos.com/paddle-mobile%2FmodelsAndImages.zip)
朔-望's avatar
朔-望 已提交
139 140 141 142 143 144 145

## 问题解决

欢迎提出或解决我们的问题,有疑问可以发issue. [Github Issues](https://github.com/PaddlePaddle/paddle-mobile/issues).

## Copyright and License
Paddle-Mobile 提供相对宽松的Apache-2.0开源协议 [Apache-2.0 license](LICENSE).
朔-望's avatar
朔-望 已提交
146

朔-望's avatar
朔-望 已提交
147

朔-望's avatar
朔-望 已提交
148 149
## 旧版 Mobile-Deep-Learning
原MDL(Mobile-Deep-Learning)工程被迁移到了这里 [Mobile-Deep-Learning](https://github.com/allonli/mobile-deep-learning) 
朔-望's avatar
朔-望 已提交
150

朔-望's avatar
朔-望 已提交
151