ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > 干货丨RK3399开发板android系统下实现图像识别

干货丨RK3399开发板android系统下实现图像识别

原创 嵌入式/内核开发 作者:ningmengzier 时间:2020-11-26 09:23:46 0 删除 编辑

本文基于飞凌 嵌入式 OK3399-C 开发板 实现首先我们了解下 android 系统常用的图像识别框架
一:调用一些不开源库进行识别旷视的图像识别及OCR文字识别库,及其他厂家如阿里,百度, 华为 ,腾讯的OCR文字识别库等。
二:调用一些开源库进行识别
一):tensorflow 训练自定义图像并识别
1.是先在 Ubuntu 上对很多图片进行训练得到自己的类别模型文件,xxx.pb文件及xxx_labels.txt文件
2.把上一步生成的文件放到Android studio(AS)工程里
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.配置AS中opencv的环境,下载并配置opencv的 SDK
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 系统的图像识别实现
OK3399的android图像识别实现是使用tensorflow在ubuntu上训练自定义图像,用tensorflow lite在android上进行的识别,识别部分使用了  RK3399  内部的 mali400  GPU

关于模型
首先,我们有训练好的tensorflow模型文件:xxx.pb。
其次,将模型文件进行转换,先转换成tensorflow lite支持的xxx.tflite模型文件,然后转换成 rk3399 的 SSD ( Single Shot MultiBox Detector )支持的xxx.rkl模型文件。
然后,把此转换后的模型文件加入android 工程。
此android例程的基本实现为:
打开 camera 的预览,同时创建一个跟踪线程。跟踪线程不断的检测是否有可用的图片,一旦有可用图片就调用识别api进行识别,识别函数会返回识别目标的位置及类型,然后得到物体在图片中的范围,并绘制出来。

此例程除 Java 实现的部分外,还涉及到三个库:librkssd4j.so,librga.so和librkssd.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,及做 YUV 转rgb处理,rga主要对图片数据进行一些格式转换,翻转,缩放等运算。
librkssd.so
调用说明:被librkssd4j.so加载
作用:对图片进行识别。其使用了rk3399内部的Mali400 gpu。

以下为运行效果:
f_aac54c5549f1a6721e49238b6c1e9250&t=jpg&o=&s=&v=1593668641.jpg  参考资料: 瑞芯微 原厂资料RKDocs/rk3399/RK3399_SSD_Android& linux _V1.0_20180522.pdf
https://github.com/tesseract-ocr/tesseract.git
https://github.com/tensorflow/tensorflow.git

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69989353/viewspace-2737053/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2020-11-25

  • 博文量
    14
  • 访问量
    6115