开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
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.png

    测试前的准备

    • 硬件:
    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”后项目就生成了

    2.png

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

    导入成功后,有以下的图标: 3.png

    导入官方Demo

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

    4.png

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

    5.png

    此时项目可以正常编译,

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

    填入序列号

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

    6.png

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

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

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

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

    7.png

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

    精简版测试

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

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

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

    具体步骤如下:

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

    8.png

    B. 修改启动Activity为infertest.MainActivity,修改AndroidManifest.xml文件。主要不要漏掉开头的“.”

    9.png

    此时启动在logcat中会发现缺少test.jpg

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

    10.png

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

    11.png

    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

    12.png

    13.png

    查看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;

    14.png

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

    15.png

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

    16.png

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

    • 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有如下界面及类似结果

    17.png

    集成步骤:

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

    1. 集成库

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

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

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

    18.png

    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”

    19.png

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

    20.png

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

    21.png

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

    C. 修改activity_main_test.xml文件

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

    22.png

    D. 修改infertest/MainActivity.java文件

    删除飘红的类导入:

    23.png

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

    24.png

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

    3. 设置权限及配置项

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

    具体步骤如下:

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

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

    25.png

    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"/>

    26.png

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

    4. 复制模型文件

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

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

    27.png

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

    28.png

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

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

    29.png

    一点小优化

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

    app/build.gradle中添加指定

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

    30.png

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