Skip to content
This repository was archived by the owner on Jan 24, 2024. It is now read-only.

Commit 7c6ef9f

Browse files
committed
Refine the content.
1 parent 4b7264a commit 7c6ef9f

File tree

1 file changed

+44
-35
lines changed

1 file changed

+44
-35
lines changed

Demo/iOS/AICamera/README_cn.md

Lines changed: 44 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -14,32 +14,38 @@
1414

1515
这是一个使用PaddlePaddle库进行离线目标检测的iOS Demo。该Demo调用PaddlePaddle C-API接口,使用预训练好的PaddlePaddle模型,可以检测到通过摄像头捕获到的目标的类别,并将其标记出来,展示给用户。
1616

17-
更多关于SSD模型架构特征,以及如何使用PaddlePaddle训练得到一个好的SSD模型,可以参考[这里](https://github.com/PaddlePaddle/models/tree/develop/ssd)。我们也提供了一个[Linux Demo](https://github.com/PaddlePaddle/Mobile/tree/develop/Demo/linux),可以在Linux系统上快速地验证模型.
17+
更多关于SSD模型架构特征,以及如何使用PaddlePaddle训练得到一个好的SSD模型,可以参考[这里](https://github.com/PaddlePaddle/models/tree/develop/ssd)。我们也提供了一个[Linux Demo](https://github.com/PaddlePaddle/Mobile/tree/develop/Demo/linux),可以在Linux系统上快速地验证模型
1818

1919
### 模型
2020

2121
我们提供3个预训练的模型以进行测试。其中,`vgg_ssd_net``pascal_mobilenet_300_66`模型可进行20类通用物体检测和识别,`face_mobilenet_160_91`可以对人脸进行检测。其识别精度如下表所示:
2222

2323
| Model | Dimensions | Accuracy | Size |
2424
| ------------------------ |:----------:| --------:|------:|
25-
| [pascal\_mobilenet\_300\_66](http://cloud.dlnel.org/filepub/?uuid=39c325d9-b468-4940-ba47-d50c8ec5fd5b) | 300 x 300 | 66% | 23.2MB |
26-
| [vgg\_ssd\_net](http://cloud.dlnel.org/filepub/?uuid=1116a5f3-7762-44b5-82bb-9954159cb5d4) | 300 x 300 | 71% | 104.3MB |
27-
| [face\_mobilenet\_160\_91](http://cloud.dlnel.org/filepub/?uuid=038c1dbf-08b3-42a9-b2dc-efccd63859fb) | 160 x 160 | 91% | 18.4MB |
25+
| [pascal\_mobilenet\_300\_66.paddle](http://cloud.dlnel.org/filepub/?uuid=39c325d9-b468-4940-ba47-d50c8ec5fd5b) | 300 x 300 | 66% | 23.2MB |
26+
| [vgg\_ssd\_net.paddle](http://cloud.dlnel.org/filepub/?uuid=1116a5f3-7762-44b5-82bb-9954159cb5d4) | 300 x 300 | 71% | 104.3MB |
27+
| [face\_mobilenet\_160\_91.paddle](http://cloud.dlnel.org/filepub/?uuid=038c1dbf-08b3-42a9-b2dc-efccd63859fb) | 160 x 160 | 91% | 18.4MB |
28+
29+
点击表格中各模型名字,会自动通过浏览器下载对应模型。
2830

2931
### 演示效果
3032

31-
App模型需要开启摄像头权限。启动App后,点击屏幕,将会出现设置主界面,其中
33+
App模型需要开启摄像头权限。启动App后,点击屏幕,将会出现设置主界面(如图-1(1)所示),其中
3234

3335
- 模型选择层:可以选择`Pascal MobileNet 300``Face MobileNet 160`,进行20类通用目标检测或者人脸检测。注意:默认情况下`Pascal VGG 300`功能是关闭的。每一次改变设置,App将需要重新启动。
3436
- 摄像头选择层:可选择`Front/Back Camera`,即`前置/后置摄像头`来捕获图像,进行检测。
35-
- 精度阈值控制层:控制识别结果的准确度。取值越高,检测到目标的准确性也越高,但检测到目标的数量可能会降低。
36-
- 刷新时间间隔控制层:控制摄像头捕获图像的频率。
37-
38-
<img src="assets/demo_main.jpeg" width = "25%" />
39-
<img src="assets/demo_pascal.jpg" width = "25%" />
40-
<img src="assets/demo_face.jpeg" width = "25%" />
41-
42-
图-1 App设置主界面,20类通用目标检测效果,人脸检测效果
37+
- 精度阈值控制层(`Accuracy threshold`):控制识别结果的准确度。取值越高,检测到目标的准确性也越高,但检测到目标的数量可能会降低。
38+
- 刷新时间间隔控制层(`Time Refresh Rate`):控制摄像头捕获图像的频率。
39+
40+
<p align="center">
41+
<img src="assets/demo_main.jpeg" width = "25%" />
42+
<img src="assets/demo_pascal.jpg" width = "25%" />
43+
<img src="assets/demo_face.jpeg" width = "25%" /><br/>
44+
图-1
45+
(1)App设置主界面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
46+
(2)20类通用目标检测效果&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
47+
(3)人脸检测效果
48+
</p>
4349

4450
进行20类通用目标检测时,App将会框选出检测到的目标,并且显示对应目标的类别和概率。进行人脸检测时,App将会框选出目标人脸的位置。
4551

@@ -49,13 +55,13 @@ App模型需要开启摄像头权限。启动App后,点击屏幕,将会出
4955

5056
成功安装App后,你还需要安装如下步骤进一步设置:设置 → 通用 → 设备管理 → Baidu USA llc → 信任“Baidu USA llc”。
5157

52-
<img src="assets/qr_code_ios.png" width = "20%" />
58+
<img src="assets/qr_code_ios.png" width = "20%" align="middle"/>
5359

5460
## 源码安装
5561

5662
该Demo基于最新的XCode(XCode 9.1)开发。由于Demo中需要调用摄像头进行目标检测,因此不能在模拟器上测试。
5763

58-
该Demo前端使用Swift绘制,基于API 10.0+,因此要求设备的iOS版本在10.0以上。由于Swift不能直接调用Paddle的C API,因此我们使用Objective-C实现了一个中间层,来调用Paddle的C API接口。
64+
该Demo前端使用Swift绘制,基于API 10.0+,因此要求设备的iOS版本在10.0以上。由于Swift不能直接调用Paddle的C-API,因此我们使用Objective-C实现了一个中间层,来调用Paddle的C-API接口。
5965

6066
### 准备模型
6167

@@ -67,7 +73,7 @@ VGG模型的识别精度高,但由于模型较大(104.3MB),需要占用
6773

6874
用户可按照[iOS平台编译指南](https://github.com/PaddlePaddle/Paddle/blob/develop/doc/mobile/cross_compiling_for_ios_cn.md),拉取[Paddle](https://github.com/PaddlePaddle/Paddle)最新的源码,编译适用于iOS平台的PaddlePaddle库。在执行`make install`之后,PaddlePaddle库将会安装在`CMAKE_INSTALL_PREFIX`所指定的目录下。该目录包含如下子目录:
6975

70-
- `include`,其中包含使用PaddlePaddle所需要引入的头文件,通常代码中加入#include <paddle/capi.h>即可。
76+
- `include`,其中包含使用PaddlePaddle所需要引入的头文件,通常代码中加入`#include <paddle/capi.h>`即可。
7177
- `lib`,其中包含了PaddlePaddle对应架构的库文件。iOS平台只生成了静态库,包括`libpaddle_capi_layers.a``libpaddle_capi_engine.a`
7278
- `third_party`,PaddlePaddle所依赖的第三方库。
7379

@@ -80,23 +86,26 @@ VGG模型的识别精度高,但由于模型较大(104.3MB),需要占用
8086
在准备好一切之后,项目的目录结构应如下所示:
8187

8288
```
83-
.
84-
├── AICamera
85-
├── PDCamera.xcodeproj
86-
├── README.md
87-
├── README_cn.md
88-
├── assets
89-
├── models
90-
│   ├── face_mobilenet_160_91.paddle
91-
│   ├── pascal_mobilenet_300_66.paddle
92-
│   └── vgg_ssd_net.paddle
93-
└── paddle-ios
94-
├── include
95-
├── lib
96-
│   ├── libpaddle_capi_engine.a
97-
│   ├── libpaddle_capi_layers.a
98-
│   └── libpaddle_capi_whole.a
99-
└── third_party
89+
$ git clone https://github.com/PaddlePaddle/Mobile.git
90+
$ cd Mobile/Demo/iOS/AICamera
91+
$ tree
92+
.
93+
├── AICamera
94+
├── PDCamera.xcodeproj
95+
├── README.md
96+
├── README_cn.md
97+
├── assets
98+
├── models
99+
│   ├── face_mobilenet_160_91.paddle
100+
│   ├── pascal_mobilenet_300_66.paddle
101+
│   └── vgg_ssd_net.paddle
102+
└── paddle-ios
103+
├── include
104+
├── lib
105+
│   ├── libpaddle_capi_engine.a
106+
│   ├── libpaddle_capi_layers.a
107+
│   └── libpaddle_capi_whole.a
108+
└── third_party
100109
```
101110

102111
然后,你就可以构建和运行该Demo了。
@@ -105,7 +114,7 @@ VGG模型的识别精度高,但由于模型较大(104.3MB),需要占用
105114

106115
## 如何链接PaddlePaddle库
107116

108-
用户若想在自己的iOS项目中链接PaddlePaddle库,则需要按照如下4个步骤配置项目。在这里,我们假设PaddlePaddle库安装在项目根目录的`paddle-ios`目录下面。
117+
开发者若想在自己的iOS项目中链接PaddlePaddle库,则需要按照如下4个步骤配置项目。在这里,我们假设PaddlePaddle库安装在项目根目录的`paddle-ios`目录下面。
109118

110119
- 将头文件目录`paddle-ios/include`添加到**Header Search Paths**
111120

@@ -114,7 +123,7 @@ VGG模型的识别精度高,但由于模型较大(104.3MB),需要占用
114123
- 如果编译PaddlePaddle库时设置了`IOS_USE_VECLIB_FOR_BLAS=ON`,则需要将加速框架`Accelerate.framework``veclib.framework`添加到你的项目中。
115124
- 将PaddlePaddle静态库`libpaddle_capi_layers.a``libpaddle_capi_engine.a`,以及所有依赖的第三方库添加到项目中。
116125

117-
<img src="https://user-images.githubusercontent.com/12538138/32492222-2ecef414-c37f-11e7-9913-b90fc88be10f.png" width = "30%" />
126+
<img src="https://user-images.githubusercontent.com/12538138/32492222-2ecef414-c37f-11e7-9913-b90fc88be10f.png" width = "30%" align="middle"/>
118127

119128
-`libpaddle_capi_layers.a`设置`-force_load`属性。
120129

0 commit comments

Comments
 (0)