PaddleDetection学习1——使用Paddle-Lite在 Android 上实现实时的目标检测功能

在 Android 上使用Paddle-Lite实现实时的目标检测功能

  • [1 环境准备](#1 环境准备)
    • [1.1 安装Android Studio](#1.1 安装Android Studio)
      • [1.1.1 安装JAVA JDK](#1.1.1 安装JAVA JDK)
      • [1.1.2 Android Studio 安装步骤](#1.1.2 Android Studio 安装步骤)
      • [1.1.3 Android Studio 配置NDK](#1.1.3 Android Studio 配置NDK)
    • [1.2 Android 手机](#1.2 Android 手机)
  • [2 部署步骤](#2 部署步骤)
    • [2.1 下载Paddle-Lite-Demo](#2.1 下载Paddle-Lite-Demo)
    • [2.2 打开 yolo_detection_demo项目](#2.2 打开 yolo_detection_demo项目)
      • [2.2.1 修改build.gradle,配置国内镜像仓库](#2.2.1 修改build.gradle,配置国内镜像仓库)
      • [2.2.2 NDK 配置错误问题](#2.2.2 NDK 配置错误问题)
      • [2.2.3 gradle.properties文件配置](#2.2.3 gradle.properties文件配置)
      • [2.2.4 NDK版本选择](#2.2.4 NDK版本选择)
    • [2.3 部署模型到移动端](#2.3 部署模型到移动端)

1 环境准备

1.1 安装Android Studio

参考安装教程创建目录:

GAndroidFile:程序安装文件存放位置

GAndroidProject:项目文件存放位置

jdk:JAVA JDK安装包文件存放位置

sdk:Android SDK文件存放位置

1.1.1 安装JAVA JDK

根据电脑的操作系统下载对应的JDK,下载地址:JAVA JDK

双击进行安装,安装地址修改为前文所创建的jdk目录。

1.1.2 Android Studio 安装步骤

(1)下载地址:Android Studio

(2)双击下载的android-studio-2023.1.1.27-windows.exe。

(3)勾选上Android virtual Device(虚拟机安装文件,建议勾选)。

(4)选择安装路径GAndroidFile。

(5)安装完成后,提示找不到Android sdk列表,选择Cancel(退出)

(6)选择之前创建好的sdk路径安装Android sdk。

1.1.3 Android Studio 配置NDK

据 Android Studio 用户指南中的安装及配置 NDK 和 CMake 内容,预先配置好 NDK。选择最新的 NDK 版本,或者使用 Paddle Lite 预测库版本一样的 NDK。

1.2 Android 手机

准备一部 Android 手机,并开启 USB 调试模式。开启方法: 手机设置 -> 查找开发者选项 -> 打开开发者选项和 USB 调试模式

2 部署步骤

参考目标检测 C++ API Demo 使用指南

2.1 下载Paddle-Lite-Demo

下载链接

目标检测 Demo 位于 Paddle-Lite-Demo/object_detection/android/app/cxx/yolo_detection_demo 目录

2.2 打开 yolo_detection_demo项目

2.2.1 修改build.gradle,配置国内镜像仓库

将原工程build.gradle文件中的

bash 复制代码
repositories {
    google()
    jcenter()
}

全部替换成对应的国内镜像加速仓库,修改后文件如下

bash 复制代码
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter/'}
        
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'
        
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/google/' }
        maven { url 'https://maven.aliyun.com/repository/jcenter/'}
        
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

2.2.2 NDK 配置错误问题

在导入项目、编译或者运行过程中遇到 NDK 配置错误的提示,请打开 File > Project Structure > SDK Location,修改 Andriod NDK location 为本机配置的 NDK 所在路径。

(如是是通过 Andriod Studio 的 SDK Tools 下载的 NDK,可以直接点击下拉框选择默认路径。 还有一种 NDK 配置方法,可以在 yolo_detection_demo/local.properties 文件中手动完成 NDK 路径配置,如下图所示。如果以上步骤仍旧无法解决 NDK 配置错误,请尝试根据 Andriod Studio 官方文档中的更新 Android Gradle 插件章节,尝试更新Android Gradle plugin版本。)

2.2.3 gradle.properties文件配置

问题:Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module

在项目的gradle.properties文件,在org.gradle.jvmargs配置进行修改:

bash 复制代码
-add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
  --add-opens=java.base/java.lang=ALL-UNNAMED \
  --add-opens=java.base/java.lang.reflect=ALL-UNNAMED -\
  -add-opens=java.base/java.io=ALL-UNNAMED \
  --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED

2.2.4 NDK版本选择

问题:invalid local symbol '__bss_start__' in global part of symbol table

NDK版本不同导致的,我这里用的是NDK版本是26.1.10909125,改为21.1.6352462后就能编译通过了。用第三方编译好了的库文件还有版本匹配的风险。

2.3 部署模型到移动端

手机连接电脑,打开 USB 调试和文件传输模式,并在 Android Studio 上连接自己的手机设备(手机需要开启允许从 USB 安装软件权限)

点击 Run 按钮,自动编译 APP 并安装到手机。(该过程会自动下载 Paddle Lite 预测库和模型,需要联网) 成功后效果如下,图一:APP 安装到手机 图二: APP 打开后的效果,会自动识别图片中的物体并标记。

相关推荐
charlie11451419131 分钟前
CSS笔记4:CSS:列表、边框、表格、背景、鼠标与常用长度单位
css·笔记·学习·css3·教程
Digitally3 小时前
如何用5种实用方法将电脑上的音乐传输到安卓手机
android·智能手机·电脑
HahaGiver6664 小时前
Unity与Android原生交互开发入门篇 - 打开Unity游戏的设置
android·unity·交互
✎ ﹏梦醒͜ღ҉繁华落℘4 小时前
FreeRTOS学习笔记(应用)-- 各种 信号量的应用场景
笔记·学习
星星火柴9364 小时前
笔记 | C++面向对象高级开发
开发语言·c++·笔记·学习
BeingACoder4 小时前
【SAA】SpringAI Alibaba学习笔记(一):SSE与WS的区别以及如何注入多个AI模型
java·笔记·学习·saa·springai
2501_915909064 小时前
WebView 调试工具全解析,解决“看不见的移动端问题”
android·ios·小程序·https·uni-app·iphone·webview
安全不再安全5 小时前
免杀技巧 - 早鸟注入详细学习笔记
linux·windows·笔记·学习·测试工具·web安全·网络安全
BreezeJuvenile5 小时前
外设模块学习(8)——HC-SR04超声波模块(STM32)
stm32·单片机·嵌入式硬件·学习·超声波测距模块·hc-sr04
IT乐手6 小时前
android 下载管理工具类
android