所有文档

          EasyDL定制AI训练平台

          EasyDL图像Android-ARM-SDK集成快速开始

          简介

          本文档包括两个部分,分别适用于SDK测试、SDK集成。开发者可根据实际需求选择参考:

          • SDK测试文档:供测试Demo时参考
          • SDK集成文档:供将SDK集成进自己的代码时参考

          测试前的准备

          • Android系统的硬件及开发环境

            • 详情参考下方文档
          • EasyDL平台的Android SDK

            • 以经典版图像分类为例,前往操作台训练模型后,选择发布为Android系统的通用设备端SDK,发布成功后即可从平台下载
          • 用于激活设备端SDK的序列号

            • 前往控制台申请用于激活通用设备端SDK的序列号

          Android SDK 测试文档

          这个部分将为新手提供一个快速测试Easydl & EasyEdge的Android Demo的图文教程。

          效果展示

          图片

          测试前的准备

          • 硬件:
          1. 准备一台PC机
          2. 准备一台较新款的Android 手机 不支持模拟器
          • SDK
          1. 您已经生成Android SDK 并且已经下载成功
          2. 您已经通过扫描二维码的形式,在这台Android 手机上测试成功想要的功能。
          • 生成序列号
          1. 如果是开源模型版本,不需要序列号,
          2. 如果测试的是“按单台设备激活”,需要额外获取一个序列号
          3. 如果需要额外测试“产品线激活”的序列号,需要再准备一个包名。demo的包名com.baidu.ai.easyaimobile.demo。
          • 开发环境
          1. 因为Android是google公司的项目,测试过程中可能需要访问国外网站下载资源。
          2. PC机上安装较新版本的Android Studio, 本文使用的是4.0.1版本。下载地址
          3. 在这台Android手机上测试通过一个Android HelloWorld项目

          Android Studio的安装及手机测试

          本段简单地描述如何通过Android Studio在手机上运行一个自带的Demo,有android基础的可以跳过本段。

          手机上需要打开开发者模式,您也可以下载91助手,按照软件提示连接手机。

          更多Android Studio的安装测试也可以百度下 【Android Studio自动生成Demo】。 新建Android Studio自带的测试项目, 菜单File->New Project.. , 弹框中选择“Basic Activity”,点“Next”, 之后用默认配置, 点“Finish”后项目就生成了

          图片

          小技巧:Android项目需要同步后才能出现编译和运行的选项。强制同步的方法为:菜单File->Sync Project with Gradle Files

          导入成功后,有以下的图标: 图片

          导入官方Demo

          导入项目: 菜单File->New-> Import Project .. , 选择PaddleOCR\deploy\android_demo目录。 注意千万不要使用菜单File->New-> New Project.. 图片

          导入项目后,会触发gradle的自动同步,最终效果如下: 图片

          此时项目可以正常编译,

          • 如果是开源模型版本,此时可以正常运行。
          • 如果需要序列号的情况,此时会界面会报错“序列号错误”

          填入序列号

          如果是开源模型版本,不需要序列号,序列号保持为null即可 在MainActivity开头部分填入您的序列号

          图片

          此时项目可以正常编译及运行。

          -如果“产品线激活”的序列号, 还需要额外修改包名

          修改包名(仅“产品线激活”需要)

          如果您填入的包名是"com.baidu.ai.easyaimobile.demo" 如图修改: 图片

          此时项目可以正常编译及运行。

          精简版测试

          仅限通用arm的 图像分类,物体检测,文字识别。其它引擎可以参考自行写。 如果是开源模型版本,不需要序列号,序列号保持为null即可。

          使用MiniActivity可以在如下情况下测试:

          • 不带摄像头或官方demo运行摄像头报错的开发板
          • 避免摄像头预览占用CPU导致耗时测试不准确

          具体步骤如下:

          A. 在infertest.MainActivity中,修改文件开始位置的序列号 图片

          B. 修改启动Activity为infertest.MainActivity,修改AndroidManifest.xml文件。主要不要漏掉开头的“.” 图片 此时启动在logcat中会发现缺少test.jpg

          C. 将你的测试图片test.jpg 放入assets目录。

          图片

          此时再次运行,点击界面上的按钮,有如下测试成功的界面:

          图片

          Android SDK集成文档

          这个部分以Android Studio 自带的Empty Activity 模板项目为例,展示如何集成OCR Android的代码到您自己的项目中

          集成前的准备

          1. 需要一个较新款的Android手机
          2. 请先根据上方的测试文档配置环境及测试官方Demo
          3. 请先根据上方的测试文档测试MiniActivity,本文以MiniActivity为模板集成

          集成后的代码下载

          如果觉得下面步骤有模糊的地方,可以参照修改好的代码进行下载。

          链接:https://pan.baidu.com/s/1cTFxYrzb1jp8bWBs6eoF8A 提取码:u7xv

          zip 文件名 说明
          myedge-init.zip 初始化的“Empty Activity”模板项目
          myedge-finished.zip 做完本文所有步骤后的项目

          新建一个项目

          新建Android Studio自带的测试项目, 菜单File->New Project.. , 弹框中最后一个项目模板 “Empty Activity”,点“Next”, 之后用默认配置, 点“Finish”后项目就生成了。这里比如给给这个项目起名为myedge

          图片

          图片

          查看Logcat

          有Android开发经验的用户可以跳过本段。

          修改MainActivity文件

              @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_main);
          		// 加上下面这行
                  Log.i("MainActivity", "SHOW in Logcat"); // 表示记录info级别的日志
                  // Example of a call to a native method
                  TextView tv = findViewById(R.id.sample_text);
                  tv.setText(stringFromJNI());
              }

          代码会标红, 此时鼠标在红色的“Log”上点一下,会提示Alt+Enter,按下Alt+Enter, 文件的第6行左右会自动添加

           import android.util.Log;

          图片

          再次运行项目,可以在界面的“Run”和Logcat里看见我们之前打印的日志 "SHOW in Logcat" 图片

          “Empty Activity”模板项目目录介绍

          图片

          本文会操作上图中的目录及文件:

          • app/libs 目录下放入jar库文件,也可以放so文件
          • app/src/main/java java代码目录
          • app/src/main/assets 目前无此目录,之后放入模型文件
          • app/src/main/AndroidManiftest.xml AndroidManiftest.xml文件,设置启动Activity和权限
          • app/src/main/res/layout UI布局目录
          • app/build.gradle 编译配置,比如修改包名

          集成代码

          集成之前,请确认已经跑通官方demo的精简版,官方demo有如下界面及类似结果 图片

          集成步骤:

          1. 集成库
          2. 集成java代码
          3. 设置权限及配置项
          4. 复制模型文件

          1. 集成库

          复制app/libs 目录下库文件到自己的项目中

          A. 复制easyedge-sdk.jar库文件

          • 如果项目中已经有其它的jar文件,那么和这些jar文件放一起
          • 如果项目中没有其它的jar文件,参照官方demo方式,复制到app/libs目录下(本文的情况), 与官方demo放在相同的位置

          图片

          B. 复制so目录

          需要复制官方demo的libs/arm64-v8a 及 armeabi-v7a

          • 如果项目中已有so库目录,arm64-v8a 及 armeabi-v7a下的so与已有目录合并。如果比如自己项目只存在arm64-v8a目录,那么官方demo的armeabi-v7a就不需要复制了。
          • 如果项目中没有so库目录(本文情况),以下二个方式二选一 复制arm64-v8a 及 armeabi-v7a目录 到 app/src/main/jniLibs目下 参照官方demo方式,复制arm64-v8a 及 armeabi-v7a目录到 app/libs目录下, 与官方demo放在相同的位置。并修改app/build.gradle, 设置jniLibs.srcDirs 图片

          2. 集成java代码

          复制官方demo的infertest目录到自己项目中的infertest目录下,不必修改自己项目的包名。复制layout下的activity_main_test.xml到自己的项目中。之后修改android.appcompat类为androidx.appcompat下的。

          具体步骤如下:

          A. 复制官方demo的infertest目录

          打开官方demo,右键点击java目录下的infertest目录,点“copy” 图片

          复制到自己项目中类似位置: 图片

          B. 复制官方demo的layout下的app/src/main/res/layout/activity_main_test.xml到自己项目的同名文件

          图片

          此时会发现xml文件里android.support.constraint.ConstraintLayout不存在,原因是自己的项目新建时用的是androidx.appcompat

          C. 修改activity_main_test.xml文件

          将 android.support.constraint.ConstraintLayout 修改为androidx.constraintlayout.widget.ConstraintLayout 图片

          D. 修改infertest/MainActivity.java文件

          删除飘红的类导入: 图片

          选下面的飘红的类,使用Alt+Enter自动导入缺少的类。 图片

          此时项目可以编译成功,但是不能运行

          3. 设置权限及配置项

          将启动的Activity改为infertest.MainActivity, 并根据官方demo添加网络和外部储存权限

          具体步骤如下:

          A. 将启动的Activity改为infertest.MainActivity

          修改app/AndroidManifest.xml文件,将启动的Activity改为从.MainActivity改为infertest.MainActivity,

          图片

          B. 根据官方demo添加网络和外部储存权限

          添加如下权限

              <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
              <uses-permission android:name="android.permission.INTERNET"/>
              <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

          图片

          注意,android 6.0以上,需要额外代码ActivityCompat.requestPermissions申请权限,具体代码见infertest.MainActivity中initPermission方法

          4. 复制模型文件

          复制官方demo的app/src/main/assets目录到自己项目的同名目录。

          如果已经存在,合并即可。

          图片

          此时运行,可以获得和官方demo精简版一样的效果。

          图片

          修改包名(仅“产品线激活”需要)

          如果您填入的包名是"com.baidu.ai.easyaimobile.demo" 如图修改app/build.gradle: 图片

          一点小优化

          添加指定架构(C++ 方式可能需要)

          app/build.gradle中添加指定

              ndk {
                      abiFilters   "arm64-v8a", "armeabi-v7a"
               }

          图片

          上一篇
          零售版快速开始
          下一篇
          通用设备端Linux ARM