研发干货丨基于OK3399-C平台android系统下实现图像识别

原创 2020-06-29 09:25:00 RK3399 rk3399 图像识别

首先我们了解下android系统常用的图像识别框架

 

一:调用一些不开源库进行识别

旷视的图像识别及OCR文字识别库,及其他厂家如阿里,百度,华为,腾讯的OCR文字识别库等。

 

二:调用一些开源库进行识别

一):tensorflow 训练自定义图像并识别

1.是先在ubuntu上对很多图片进行训练得到自己的类别模型文件,xxx.pb文件及xxx_labels.txt文件

2.把上一步生成的文件放到Android studioAS)工程里

3.AS添加tensorflow依赖

4.tensorflow 给的android 工程上做改动,写出自己的工程

5.运行工程开始识别。

 

要在 android 上使用 tensorflow ,官方提供两种方式工程:

一)tensorflow for mobile,成熟,功能方法多

只需配置buildgradle,调用tensorflow相关接口进行识别

2) tensorflow lite.轻量,允许设备端的机器学习模型的低延迟推断

下载移动端的模型model和标签labels文件并解压到assert下,导入tensorflow项目,调用tensorflow相关接口进行识别

注意此种方法不能直接使用tensorflow的模型,需要对模型进行转换。

 

二): opencv训练自定义图像并识别

1.配置ASopencv的环境,下载并配置opencvsdk

2.windows上用opencv工具训练自定义图像数据集

3.将训练好的数据集加载到AS

4.编写自己的android 工程

5.运行android 工程进行识别

 

三): tensorflow 训练自定义图像,实时处理openCV获取的摄像头图像(openCV对图像进行分割)并识别(https://blog.csdn.net/qq_33200967/article/details/82773677

此方法与单独使用tensorflow的区别是使用了opencv中的图像分割,将所有分割物体进行识别

 

四)其他:

另外有些开源的图像识别方法,Tesseract(支持OCR文字识别)等,可以将其加入android并进行识别。

OK3399-C 平台 android 系统的图像识别实现

OK3399android图像识别实现是使用tensorflowubuntu上训练自定义图像,用tensorflow liteandroid上进行的识别,识别部分使用了 rk3399 内部的 mali400 gpu

 

关于模型

首先,我们有训练好的tensorflow模型文件:xxx.pb

其次,将模型文件进行转换,先转换成tensorflow lite支持的xxx.tflite模型文件,然后转换成 rk3399 SSD Single Shot MultiBox Detector 支持的xxx.rkl模型文件。

然后,把此转换后的模型文件加入android 工程。

android例程的基本实现为:

打开camera的预览,同时创建一个跟踪线程。跟踪线程不断的检测是否有可用的图片,一旦有可用图片就调用识别api进行识别,识别函数会返回识别目标的位置及类型,然后得到物体在图片中的范围,并绘制出来。

 

此例程除java实现的部分外,还涉及到三个库:librkssd4j.solibrga.solibrkssd.so

以下是三个库的介绍。

librkssd4j.so

调用说明:由android 例程直接调用的库。

源码位置: rk_ssd_demo_rk3399\app\src\main\cpp

作用:调用librga.so对于图像进行格式转换或翻转及压缩,然后调用librkssd.so进行识别。

 

librga.so

调用说明:被librkssd4j.so加载

源码位置: OK3399-android7-source/hardware/rockchip/librga/

作用:用来判断平台是否支持rga,及做yuvrgb处理,rga主要对图片数据进行一些格式转换,翻转,缩放等运算。


librkssd.so

调用说明:被librkssd4j.so加载

作用:对图片进行识别。其使用了rk3399内部的Mali400 gpu

 

以下为运行效果:

 

基于OK3399-C平台android系统下实现图像识别 


参考资料:

瑞芯微原厂资料RKDocs/rk3399/RK3399_SSD_Android&Linux_V1.0_20180522.pdf

https://github.com/tesseract-ocr/tesseract.git

https://github.com/tensorflow/tensorflow.git

相关产品 >

  • FET3399-C核心板

    飞凌RK3399安卓高性能核心板采用 采用六核Rockchip RK3399芯片,双Cortex-A72大核+四Cortex-A53小核结构,对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个方面提升。以下将对瑞芯微芯片RK3399参数,RK3399核心板方案及其性能做具体介绍。如您对飞凌RK3399系列核心板有兴趣,欢迎咨询了解。

    了解详情
    FET3399-C核心板
  • FET3399K-C核心板

    飞凌RK3399K安卓高性能核心板采用 采用六核Rockchip RK3399K芯片,双Cortex-A72大核+四Cortex-A53小核结构,对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个方面提升。以下将对瑞芯微芯片RK3399参数,RK3399核心板方案及其性能做具体介绍。如您对飞凌RK3399系列核心板有兴趣,欢迎咨询了解。 了解详情
    FET3399K-C核心板

推荐阅读 换一批 换一批