@@ -4,8 +4,13 @@ FastDeploy Android SDK 目前支持图像分类、目标检测、OCR文字识别
4
4
- 调用` predict ` 接口
5
5
- 可视化验证(可选)
6
6
7
- ## 目录
7
+ | 图像分类| 目标检测| OCR文字识别| 人像分割| 人脸检测|
8
+ | :---:| :---:| :---:| :---:| :---:|
9
+ | ![ classify] ( https://user-images.githubusercontent.com/31974251/203261658-600bcb09-282b-4cd3-a2f2-2c733a223b03.gif ) | ![ detection] ( https://user-images.githubusercontent.com/31974251/203261763-a7513df7-e0ab-42e5-ad50-79ed7e8c8cd2.gif ) | ![ ocr] ( https://user-images.githubusercontent.com/31974251/203261817-92cc4fcd-463e-4052-910c-040d586ff4e7.gif ) | ![ seg] ( https://user-images.githubusercontent.com/31974251/203267867-7c51b695-65e6-402e-9826-5d6d5864da87.gif ) | ![ face] ( https://user-images.githubusercontent.com/31974251/203261714-c74631dd-ec5b-4738-81a3-8dfc496f7547.gif ) |
8
10
11
+ ## 内容目录
12
+
13
+ - [ 下载及配置SDK] ( #SDK )
9
14
- [ 图像分类API] ( #Classification )
10
15
- [ 目标检测API] ( #Detection )
11
16
- [ 语义分割API] ( #Segmentation )
@@ -15,8 +20,41 @@ FastDeploy Android SDK 目前支持图像分类、目标检测、OCR文字识别
15
20
- [ RuntimeOption说明] ( #RuntimeOption )
16
21
- [ 可视化接口API] ( #Visualize )
17
22
- [ 模型使用示例] ( #Demo )
23
+ - [ App示例工程使用方式] ( #App )
24
+
25
+ ## 下载及配置SDK
26
+ <div id =" SDK " ></div >
27
+
28
+ ### 下载 FastDeploy Android SDK
29
+ Release版本(Java SDK 目前仅支持Android,当前版本为0.8.0 pre-release)
30
+
31
+ | 平台 | 文件 | 说明 |
32
+ | :--- | :--- | :---- |
33
+ | Android Java SDK | [ fastdeploy-android-sdk-0.8.0.aar] ( https://bj.bcebos.com/fastdeploy/release/android/fastdeploy-android-sdk-0.8.0.aar ) | NDK 20 编译产出, minSdkVersion 15,targetSdkVersion 28 |
34
+
35
+ 更多预编译库信息,请参考: [ download_prebuilt_libraries.md] ( ../../docs/cn/build_and_install/download_prebuilt_libraries.md )
36
+
37
+ ### 配置 FastDeploy Android SDK
38
+
39
+ 首先,将fastdeploy-android-sdk-xxx.aar拷贝到您Android工程的libs目录下,其中` xxx ` 表示您所下载的SDK的版本号。
40
+ ``` shell
41
+ ├── build.gradle
42
+ ├── libs
43
+ │ └── fastdeploy-android-sdk-xxx.aar
44
+ ├── proguard-rules.pro
45
+ └── src
46
+ ```
18
47
19
- ## 图像分类
48
+ 然后,在您的Android工程中的build.gradble引入FastDeploy SDK,如下:
49
+ ``` java
50
+ dependencies {
51
+ implementation fileTree(include: [' *.aar' ], dir: ' libs' )
52
+ implementation ' com.android.support:appcompat-v7:28.0.0'
53
+ // ...
54
+ }
55
+ ```
56
+
57
+ ## 图像分类API
20
58
21
59
<div id =" Classification " ></div >
22
60
@@ -54,7 +92,7 @@ public boolean release(); // 释放native资源
54
92
public boolean initialized(); // 检查是否初始化成功
55
93
```
56
94
57
- ## 目标检测
95
+ ## 目标检测API
58
96
59
97
<div id =" Detection " ></div >
60
98
@@ -91,7 +129,7 @@ public boolean release(); // 释放native资源
91
129
public boolean initialized(); // 检查是否初始化成功
92
130
```
93
131
94
- ## OCR文字识别
132
+ ## OCR文字识别API
95
133
96
134
<div id =" OCR " ></div >
97
135
@@ -133,7 +171,7 @@ public boolean release(); // 释放native资源
133
171
public boolean initialized(); // 检查是否初始化成功
134
172
```
135
173
136
- ## 语义分割
174
+ ## 语义分割API
137
175
138
176
<div id =" Segmentation " ></div >
139
177
@@ -166,7 +204,7 @@ public boolean release(); // 释放native资源
166
204
public boolean initialized(); // 检查是否初始化成功
167
205
```
168
206
169
- ## 人脸检测
207
+ ## 人脸检测API
170
208
171
209
<div id =" FaceDetection " ></div >
172
210
@@ -388,3 +426,122 @@ option.enableLiteFp16();
388
426
model. init(modelFile, paramFile, configFile, option);
389
427
// Bitmap读取、模型预测、资源释放 同上 ...
390
428
```
429
+
430
+ ## App示例工程使用方式
431
+ <div id =" App " ></div >
432
+
433
+ FastDeploy在java/android/app目录下提供了一些示例工程,以下将介绍示例工程的使用方式。由于java/android目录下同时还包含JNI工程,因此想要使用示例工程的用户还需要配置NDK,如果您只关心Java API的使用,并且不想配置NDK,可以直接跳转到以下详细的案例链接。
434
+
435
+ - [ 图像分类App示例工程] ( ../../examples/vision/classification/paddleclas/android )
436
+ - [ 目标检测App示例工程] ( ../../examples/vision/detection/paddledetection/android )
437
+ - [ OCR文字识别App示例工程] ( ../../examples/vision/ocr/PP-OCRv2/android )
438
+ - [ 人像分割App示例工程] ( ../../examples/vision/segmentation/paddleseg/android )
439
+ - [ 人脸检测App示例工程] ( ../../examples/vision/facedet/scrfd/android )
440
+
441
+ ### 环境准备
442
+
443
+ 1 . 在本地环境安装好 Android Studio 工具,详细安装方法请见[ Android Stuido 官网] ( https://developer.android.com/studio ) 。
444
+ 2 . 准备一部 Android 手机,并开启 USB 调试模式。开启方法: ` 手机设置 -> 查找开发者选项 -> 打开开发者选项和 USB 调试模式 `
445
+
446
+ ** 注意** :如果您的 Android Studio 尚未配置 NDK ,请根据 Android Studio 用户指南中的[ 安装及配置 NDK 和 CMake ] ( https://developer.android.com/studio/projects/install-ndk ) 内容,预先配置好 NDK 。您可以选择最新的 NDK 版本,或者使用 FastDeploy Android 预测库版本一样的 NDK
447
+
448
+ ### 部署步骤
449
+
450
+ 1 . App示例工程位于 ` fastdeploy/java/android/app ` 目录
451
+ 2 . 用 Android Studio 打开 ` fastdeploy/java/android ` 工程,注意是` java/android ` 目录
452
+ 3 . 手机连接电脑,打开 USB 调试和文件传输模式,并在 Android Studio 上连接自己的手机设备(手机需要开启允许从 USB 安装软件权限)
453
+
454
+ <p align =" center " >
455
+ <img width =" 1440 " alt =" image " src =" https://user-images.githubusercontent.com/31974251/203257262-71b908ab-bb2b-47d3-9efb-67631687b774.png " >
456
+ </p >
457
+
458
+ > ** 注意:**
459
+ >> 如果您在导入项目、编译或者运行过程中遇到 NDK 配置错误的提示,请打开 ` File > Project Structure > SDK Location ` ,修改 ` Andriod NDK location ` 为您本机配置的 NDK 所在路径。本工程默认使用的NDK版本为20.
460
+ >> 如果您是通过 Andriod Studio 的 SDK Tools 下载的 NDK (见本章节"环境准备"),可以直接点击下拉框选择默认路径。
461
+ >> 还有一种 NDK 配置方法,你可以在 ` java/android/local.properties ` 文件中手动完成 NDK 路径配置,如下图所示
462
+ >> 如果以上步骤仍旧无法解决 NDK 配置错误,请尝试根据 Andriod Studio 官方文档中的[ 更新 Android Gradle 插件] ( https://developer.android.com/studio/releases/gradle-plugin?hl=zh-cn#updating-plugin ) 章节,尝试更新Android Gradle plugin版本。
463
+
464
+ 4 . 点击 Run 按钮,自动编译 APP 并安装到手机。(该过程会自动下载预编译的 FastDeploy Android 库 以及 模型文件,需要联网)
465
+ 成功后效果如下,图一:APP 安装到手机;图二: APP 打开后的效果,会自动识别图片中的物体并标记;图三:APP设置选项,点击右上角的设置图片,可以设置不同选项进行体验。
466
+
467
+ | APP 图标 | APP 效果 | APP设置项
468
+ | --- | --- | --- |
469
+ | ![ app_pic] ( https://user-images.githubusercontent.com/31974251/203268599-c94018d8-3683-490a-a5c7-a8136a4fa284.jpg ) | ![ app_res] ( https://user-images.githubusercontent.com/31974251/197169609-bb214af3-d6e7-4433-bb96-1225cddd441c.jpg ) | ![ app_setup] ( https://user-images.githubusercontent.com/31974251/197332983-afbfa6d5-4a3b-4c54-a528-4a3e58441be1.jpg ) |
470
+
471
+ ### 切换不同的场景
472
+ App示例工程只需要在AndroidManifest.xml中切换不同的Activity即可编译不同场景的App进行体验。
473
+
474
+ <p align =" center " >
475
+ <img width =" 788 " alt =" image " src =" https://user-images.githubusercontent.com/31974251/203258255-b422d3e2-6004-465f-86b6-9fa61a27c6c2.png " >
476
+ </p >
477
+
478
+ - 图像分类场景
479
+ ``` xml
480
+ <manifest xmlns : android =" http://schemas.android.com/apk/res/android"
481
+ package =" com.baidu.paddle.fastdeploy.app.examples" >
482
+ <!-- ... -->
483
+ <activity android : name =" .classification.ClassificationMainActivity" >
484
+ <!-- -->
485
+ </activity >
486
+ <activity
487
+ android : name =" .classification.ClassificationSettingsActivity"
488
+ </activity>
489
+ </application >
490
+ </manifest >
491
+ ```
492
+ - 目标检测
493
+ ``` xml
494
+ <manifest xmlns : android =" http://schemas.android.com/apk/res/android"
495
+ package =" com.baidu.paddle.fastdeploy.app.examples" >
496
+ <!-- ... -->
497
+ <activity android : name =" .detection.DetectionMainActivity" >
498
+ <!-- -->
499
+ </activity >
500
+ <activity
501
+ android : name =" .detection.DetectionSettingsActivity"
502
+ </activity>
503
+ </application >
504
+ </manifest >
505
+ ```
506
+ - OCR文字识别
507
+ ``` xml
508
+ <manifest xmlns : android =" http://schemas.android.com/apk/res/android"
509
+ package =" com.baidu.paddle.fastdeploy.app.examples" >
510
+ <!-- ... -->
511
+ <activity android : name =" .ocr.OcrMainActivity" >
512
+ <!-- -->
513
+ </activity >
514
+ <activity
515
+ android : name =" .ocr.OcrSettingsActivity"
516
+ </activity>
517
+ </application >
518
+ </manifest >
519
+ ```
520
+ - 人像分割
521
+ ``` xml
522
+ <manifest xmlns : android =" http://schemas.android.com/apk/res/android"
523
+ package =" com.baidu.paddle.fastdeploy.app.examples" >
524
+ <!-- ... -->
525
+ <activity android : name =" .segmentation.SegmentationMainActivity" >
526
+ <!-- -->
527
+ </activity >
528
+ <activity
529
+ android : name =" .segmentation.SegmentationSettingsActivity"
530
+ </activity>
531
+ </application >
532
+ </manifest >
533
+ ```
534
+ - 人脸检测
535
+ ``` xml
536
+ <manifest xmlns : android =" http://schemas.android.com/apk/res/android"
537
+ package =" com.baidu.paddle.fastdeploy.app.examples" >
538
+ <!-- ... -->
539
+ <activity android : name =" .facedet.FaceDetMainActivity" >
540
+ <!-- -->
541
+ </activity >
542
+ <activity
543
+ android : name =" .facedet.FaceDetSettingsActivity"
544
+ </activity>
545
+ </application >
546
+ </manifest >
547
+ ```
0 commit comments