研發干貨丨基于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.so,librga.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核心板

推薦閱讀 換一批 換一批