研發干貨丨基于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。
以下為運行效果:
參考資料:
瑞芯微原廠資料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系列核心板有興趣,歡迎咨詢了解。
了解詳情 -
FET3399K-C核心板
飛凌RK3399K安卓高性能核心板采用 采用六核Rockchip RK3399K芯片,雙Cortex-A72大核+四Cortex-A53小核結構,對整數、浮點、內存等作了大幅優化,在整體性能、功耗及核心面積三個方面提升。以下將對瑞芯微芯片RK3399參數,RK3399核心板方案及其性能做具體介紹。如您對飛凌RK3399系列核心板有興趣,歡迎咨詢了解。 了解詳情