当前位置:首页 > 资讯 > 正文

百度EasyDL物体检测离线SDK部署Android

今天介绍一下使用百度AI EasyDL平台训练物体检测的模型,然后将模型的离线SDK部署到Android端,在APP上运行物体检测的功能。

先来成品效果展示:

移植Android端后APP运行结果图片

百度EasyDL物体检测离线SDK部署Android

        

        物体检测目标图片:

百度EasyDL物体检测离线SDK部署Android

        Android APP 物体检测识别效果:

百度EasyDL物体检测离线SDK部署Android

        物体检测目标图片:

百度EasyDL物体检测离线SDK部署Android

        Android APP 物体检测识别效果:

 

百度EasyDL物体检测离线SDK部署Android

 

 

        物体检测目标图片:

百度EasyDL物体检测离线SDK部署Android

 

      Android APP 物体检测识别效果:

 

百度EasyDL物体检测离线SDK部署Android

 

制作流程:

        1、环境的搭建;

        2、制作数据集;

        3、EasyDL标注数据集;

        4、EasyDL训练模型;

        5、发布离线SDK,部署Android端;

        6、运行物体检测APP;

 

 

        完成上述物体检测效果需要安装一些环境,这里会给出一些开发环境的下载链接,安装教程可以去网上学习,这里不过多赘述。

 1>. Android studio使用的是2020.3.1.26版本,jdk包和gradle工具也可在链接中下载。

        链接:          提取码:wd4z

 2>. pycharm安装包下载链接。

        链接:          提取码:0xdh

 

        这里我的模型以竞赛中的车型图片为例,数据集我是截取了一段视频,然后使用pycharm编译器用python代码截取视频帧画面,将其保存至本地文件夹,这样基础的数据集就做好了。

这里注意视频格式我使用的是avi的格式,可通过网络一些视频在线转换工具将视频格式转换过来,小米手机MIUI12系统及以上支持重命名修改视频文件格式,在文件系统中重命名修改格式即可。

  1>. 推荐的视频转换工具网址:

                在线 & 免费地将 MP4 转换成 AVI — Convertio

  2>. 截取视频帧python示例代码:

 

如果没有安装opencv的需要先去安装opencv,随后编译运行上述代码即可在指定文件夹数据图片的数据集,数据集采集效果:

百度EasyDL物体检测离线SDK部署Android

百度EasyDL物体检测离线SDK部署Android

 

        使用百度AI EasyDL物体检测平台进行数据集的标注,数据集做好之后可将文件夹压缩zip包,然后再导入EasyDL平台进行标注。

首先压缩数据集

百度EasyDL物体检测离线SDK部署Android

 登录百度AI平台创建模型,填写好个人信息点击完成创建。

百度EasyDL物体检测离线SDK部署Android

 

创建数据集

百度EasyDL物体检测离线SDK部署Android

 点击导入

百度EasyDL物体检测离线SDK部署Android

 百度EasyDL物体检测离线SDK部署Android

上传压缩包数据集

百度EasyDL物体检测离线SDK部署Android

 导入完成后点击查看与标注

百度EasyDL物体检测离线SDK部署Android

 然后就是对图片进行识别物体的标注,这里的标签一定要记得添加,可以是识别物体的名称,然后拖动鼠标进行框选识别区域,如下图所示:

百度EasyDL物体检测离线SDK部署Android

 如果数据集较大的话,可以对每个识别的物体进行标注10张以上即可开启智能标注功能,这个功能简直极大缩短了数据集的标注时间,直接好评,但是智能标注完了之后也一定要记得检查平台自动标注的结果是否正确,偶尔还是会有识别混乱的情况出现的。

数据集制作好了之后就可以进行模型训练了。点击左侧训练模型选项,选择创建的目标模型,选择对应的数据集。

百度EasyDL物体检测离线SDK部署Android

随后选择本地小型设备部署训练,最后点击开始训练你的模型就会在平台进行训练了。

百度EasyDL物体检测离线SDK部署Android

 经过一段时间的等待后,模型就训练好了,如果模型的精确率等训练效果达到了你的预期就可以进入下一步了,反之可修改平台模型训练的算法、模式等再次进行训练。

百度EasyDL物体检测离线SDK部署Android

 之后我们点击申请发布模型,选择SDK纯离线服务,点击发布。

百度EasyDL物体检测离线SDK部署Android

 因为是部署到Android上的所以这里我们选择系统为Android,通用芯片即可,最后点击发布。

百度EasyDL物体检测离线SDK部署Android

 等待模型发布成功后点击后面的APP体验,测试模型识别的效果。

百度EasyDL物体检测离线SDK部署Android

 

将APP安装后即可进行拍照识别和实时识别,效果如文章开头所示。

百度EasyDL物体检测离线SDK部署Android

百度EasyDL物体检测离线SDK部署Android

百度EasyDL物体检测离线SDK部署Android

 

那么接下来就到了最重要的Android端部署环节了。

部署流程如下:

1、下载模型离线SDK

2、新建Android工程

3、

 

1、下载模型SDK

百度EasyDL物体检测离线SDK部署Android

 解压缩文件

百度EasyDL物体检测离线SDK部署Android

2、首先Android端先新建一个工程。

百度EasyDL物体检测离线SDK部署Android

3、将下载离线SDK中applibs下的文件到自己工程的libs目录下

百度EasyDL物体检测离线SDK部署Android

百度EasyDL物体检测离线SDK部署Android

 右击点击Add AS Library为项目添加依赖

百度EasyDL物体检测离线SDK部署Android

 4、build gradle中添加模型要用的架构

打开下载的SDK中的build.gradle(记事本打开)

百度EasyDL物体检测离线SDK部署Android

 将其构架包到我们自己的项目中百度EasyDL物体检测离线SDK部署Android

 

百度EasyDL物体检测离线SDK部署Android

然后同步工程

百度EasyDL物体检测离线SDK部署Android

 5、添加assets文件,将离线SDK appsrcmain目录下的assets文件添加到自己的工程

百度EasyDL物体检测离线SDK部署Android

6、Manifest配置添加联网权限手机存储权限等

百度EasyDL物体检测离线SDK部署Android

 

 然后就是调用程序代码导包,这里的调用接口都是参考官网Android部署文档

代码会贴在下面

百度EasyDL物体检测离线SDK部署Android

 这里要添加文件存储权限,非常重要!!!(我就是忘记添加权限了,搞了两三个小时)

百度EasyDL物体检测离线SDK部署Android

还有一个特别重要的就是序列号了,需要根据模型的不同选择不同的序列号,选择基础版或者加速版

百度EasyDL物体检测离线SDK部署Android

 然后修改代码中的序列号,当项目在手机上运行就会激活序列号

百度EasyDL物体检测离线SDK部署Android

然后就可以运行项目了,输出数据结果

百度EasyDL物体检测离线SDK部署Android

 MainActivity.java文件

 
这里是一个子线程,推荐在子线程中实现功能
vehicleType_thread.java文件
 

activity_main.xml文件

 

strings.xml文件

<string name="shibie">识别</string>
<string name="tev_result">识别状态:</string>
<string name="null_tv" />
<string name="result_ple">识别结果:</string>
<string name="result_Zxd">置信度:</string>

好了最后运行成功后就能看得到识别结果等。