国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用TensorFlow Lite從Android設備圖像提取文本

Tensorflowers ? 來源:TensorFlow ? 作者:魏巍 ? 2021-11-02 15:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

俗話說:“一圖勝千言”。圖像包含豐富的視覺信息,但有時關鍵信息位于圖像的文本當中。雖然識字的人可以輕松理解圖像中嵌入的文字,但我們如何利用計算機視覺機器學習來教計算機做到這一點呢?

今天,我們將向您展示如何使用 TensorFlow Lite 從 Android 設備上的圖像中提取文本。我們將引導您完成最近開源的光學字符識別 (OCR) Android 參考應用的關鍵步驟,您可參考該處獲取完整代碼。在下方動畫中,可以看到該應用如何從三款 Google 產品徽標圖片中提取產品名稱。

該處

https://github.com/tensorflow/examples/tree/master/lite/examples/optical_character_recognition/android

從圖像中識別文本的過程即為 OCR,該技術在多個領域中廣泛使用。例如,Google 地圖運用 OCR 技術從地理定位圖像中提取信息,進而完善 Google 地圖。

Google 地圖運用 OCR 技術

https://ai.googleblog.com/2017/05/updating-google-maps-with-deep-learning.html

一般來說,OCR 是一個包含多個步驟的流水線。相關步驟通常包含文本檢測和文本識別:

使用文本檢測模型查找文本周圍的邊界框;

執行一些后處理操作,以轉換邊界框;

將這些邊界框內的圖像轉換為灰度圖像,如此一來,文本識別模型便可繪制出文字和數字。

在示例中,我們將利用 TensorFlow Hub 中的文本檢測和文本識別模型。多個不同的模型版本可用來權衡速度/準確率的取舍;我們在此使用的是 float16 量化模型。如需有關模型量化的更多信息,請參閱 TensorFlow Lite 量化文檔。

文本檢測

https://hub.tensorflow.google.cn/sayakpaul/lite-model/east-text-detector/fp16/1

文本識別

https://hub.tensorflow.google.cn/tulasiram58827/lite-model/keras-ocr/float16/2

TensorFlow Lite 量化

https://tensorflow.google.cn/lite/performance/model_optimization

我們還會使用 OpenCV,這是一款廣泛使用的計算機視覺庫,適用于非極大值抑制 (NMS) 和透視變換(我們稍后會對此展開討論),以對檢測結果進行后處理。此外,我們還會使用 TFLite 支持庫對圖像進行灰度和標準化處理。

非極大值抑制

https://www.coursera.org/lecture/convolutional-neural-networks/non-max-suppression-dvrjH

TFLite 支持庫

https://tensorflow.google.cn/lite/inference_with_metadata/lite_support

對于文本檢測,由于檢測模型支持 320x320 的固定像素,我們會使用 TFLite 支持庫調整輸入圖像的大小并對其進行標準化處理:

檢測模型

https://hub.tensorflow.google.cn/sayakpaul/lite-model/east-text-detector/fp16/1

val imageProcessor =

ImageProcessor.Builder().add(ResizeOp(height, width, ResizeOp.ResizeMethod.BILINEAR)).add(NormalizeOp(means, stds)).build()

var tensorImage = TensorImage(DataType.FLOAT32)

tensorImage.load(bitmapIn)

tensorImage = imageProcessor.process(tensorImage)

接下來,我們使用 TFLite 運行檢測模型:

detectionInterpreter.runForMultipleInputsOutputs(detectionInputs, detectionOutputs)

檢測模型的輸出是一些經過旋轉且圖像內包含文本的邊界框。我們會運行非極大值抑制,借助 OpenCV 為每個文本塊確定一個邊界框:

NMSBoxesRotated(

boundingBoxesMat,

detectedConfidencesMat,

detectionConfidenceThreshold.toFloat(),

detectionNMSThreshold.toFloat(),

indicesMat

有些時候,圖像內的文本會出現變形(例如,我的筆記本電腦上的“kubernetes”貼紙),并伴隨一個透視角度:

如果我們只是將原始旋轉邊界框直接“喂”給識別模型,則該模型不太可能正確識別字符。在本例中,我們需要使用 OpenCV 來進行透視變換:

val rotationMatrix = getPerspectiveTransform(srcPtsMat, targetPtsMat)

warpPerspective(

srcBitmapMat,

recognitionBitmapMat,

rotationMatrix,

Size(recognitionImageWidth.toDouble(), recognitionImageHeight.toDouble()))

之后,我們會再次使用 TFLite 支持庫,在邊界框內調整變換圖像的大小,并對其進行灰度和歸一化處理:

val imageProcessor =

ImageProcessor.Builder().add(ResizeOp(height, width, ResizeOp.ResizeMethod.BILINEAR)).add(TransformToGrayscaleOp()).add(NormalizeOp(mean, std)).build()

最后,我們會運行文本識別模型、根據模型輸出繪制出字符與數字,然后更新應用界面:

recognitionInterpreter.run(recognitionTensorImage.buffer, recognitionResult)

var recognizedText = “”for (k in 0 until recognitionModelOutputSize) {

var alphabetIndex = recognitionResult.getInt(k * 8)if(alphabetIndex in 0..alphabets.length - 1)

recognizedText = recognizedText + alphabets[alphabetIndex]}

Log.d(“Recognition result:”, recognizedText)if (recognizedText != “”) {

ocrResults.put(recognizedText, getRandomColor())}

這樣就完成了,就是這么簡單。此時,我們可以在我們的應用中使用 TFLite 來提出輸入圖像中的文本。

最后我想指出的是,如果您只是需要一個即用型 OCR SDK,您可以直接使用 Google ML Kit 的文字識別功能。ML Kit 底層使用了 TFLite,并且對于大多數 OCR 用例而言足矣。在以下情況下,您可以使用 TFLite 來構建專屬 OCR 解決方案:

您有自己想要使用的專屬文本檢測/識別 TFLite 模型;

您有特殊的業務需求(例如識別顛倒的文本),并且需要自定義 OCR 流水線;

您希望支持 ML Kit 沒有覆蓋的語言;

您的目標用戶設備不一定要安裝 Google Play 服務;

您想要控制用于運行模型的硬件后端(CPUGPU 等)。

ML Kit

https://developers.google.cn/ml-kit/vision/text-recognition

Google Play 服務

https://developers.google.cn/android/guides/overview

在這些情況下,我希望本教程和我們的實現示例可以助您開啟在您的應用中構建專屬 OCR 功能的旅程。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 應用
    +關注

    關注

    2

    文章

    455

    瀏覽量

    34852
  • OCR
    OCR
    +關注

    關注

    0

    文章

    175

    瀏覽量

    17199
  • tensorflow
    +關注

    關注

    13

    文章

    334

    瀏覽量

    62173
  • TensorFlow Lite
    +關注

    關注

    0

    文章

    26

    瀏覽量

    828

原文標題:基于 TensorFlow Lite 的 OCR:一款嶄新的示例應用

文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK Android平臺音頻調試指南:基礎到實戰,解決多設備輸出、聲卡異常等核心問題

    Android 開發中,音頻模塊的調試往往是 “老大難”—— 多聲卡無法區分、多設備同時輸出沒聲音、HDMI 錄音崩潰… 這些問題不僅影響用戶體驗,還會消耗大量開發時間。
    的頭像 發表于 02-06 16:48 ?2873次閱讀
    RK <b class='flag-5'>Android</b>平臺音頻調試指南:<b class='flag-5'>從</b>基礎到實戰,解決多<b class='flag-5'>設備</b>輸出、聲卡異常等核心問題

    Linux Shell文本處理神器合集:15個工具+實戰例子,效率直接翻倍

    在 Linux 系統中,文本是數據交互的 “通用語言”—— 日志文件、配置文件、數據報表、程序輸出幾乎都以文本形式存在。手動編輯文本不僅繁瑣,還容易出錯,而掌握 Shell 文本處理工
    的頭像 發表于 02-03 15:42 ?1466次閱讀
    Linux Shell<b class='flag-5'>文本</b>處理神器合集:15個工具+實戰例子,效率直接翻倍

    使用NORDIC AI的好處

    提升能效,適合音頻、圖像和高采樣率傳感器等更重的 AI 負載。[Axon NPU 技術頁] 模型更小、更快、更省電 Neuton 模型相較 TensorFlow Lite:* 內存占用可小 10
    發表于 01-31 23:16

    圖像采集卡:連接設備與數據的圖像樞紐

    在機器視覺與圖像傳輸體系中,圖像采集卡是無可替代的重要樞紐——它一端承接相機、內窺鏡、攝像機等前端圖像設備的信號輸出,另一端對接后端數據處理、存儲、展示系統,通過信號轉換、同步協調、高
    的頭像 發表于 01-22 13:51 ?226次閱讀
    <b class='flag-5'>圖像</b>采集卡:連接<b class='flag-5'>設備</b>與數據的<b class='flag-5'>圖像</b>樞紐

    深入解析rk平臺Android Bootloader核心代碼:啟動流程到AVB驗證

    android_bootloader.c的核心代碼,帶你讀懂Android設備Bootloader到內核的完整啟動邏輯,以及開發者關注這些代碼的核心價值。 一、代碼整體定位 這份代
    的頭像 發表于 01-22 07:06 ?257次閱讀
    深入解析rk平臺<b class='flag-5'>Android</b> Bootloader核心代碼:<b class='flag-5'>從</b>啟動流程到AVB驗證

    如何在TensorFlow Lite Micro中添加自定義操作符(1)

    相信大家在部署嵌入式端的AI應用時,一定使用過TensorFlow Lite Micro,以下簡稱TFLm。TFLm 是專為微控制器和嵌入式設備設計的輕量級機器學習推理框架,它通過模塊化的操作符系統
    的頭像 發表于 12-26 10:34 ?5300次閱讀

    【上海晶珩睿莓1開發板試用體驗】將TensorFlow-Lite物體歸類(classify)的輸出圖片移植到LVGL9.3界面中

    既然調通了TensorFlow-Lite物體歸類(classify)和LVGL9.3代碼,那么把這兩個東西結合起來也是沒問題的,需要注意的是,TensorFlow-Lite是C++代碼,而
    發表于 09-21 00:39

    【上海晶珩睿莓1開發板試用體驗】TensorFlow-Lite物體歸類(classify)

    目前尚未得知睿莓1開發板上面有NPU或者DPU之類的額外處理器,因此使用樹莓派系列使用最廣泛的TensorFlow-Lite庫進行物體歸類,使用CPU運行代碼,因此占用的是CPU的算力。在
    發表于 09-12 22:43

    一文詳解AHB-Lite協議

    總線協議,AHB_Lite只有單主機,且沒有HBUSREQ和HGRANT信號,同時設備信號接口也簡單許多。
    的頭像 發表于 08-27 09:23 ?3022次閱讀
    一文詳解AHB-<b class='flag-5'>Lite</b>協議

    如何為 Android 操作系統/設備生成 APK ?

    如何為 Android 操作系統/設備生成 APK ?
    發表于 06-30 07:12

    無法將Tensorflow Lite模型轉換為OpenVINO?格式怎么處理?

    Tensorflow Lite 模型轉換為 OpenVINO? 格式。 遇到的錯誤: FrontEnd API failed with OpConversionFailure:No translator found for TFLite_Detection_PostP
    發表于 06-25 08:27

    無法使用OpenVINO?在 GPU 設備上運行穩定擴散文本圖像的原因?

    在OpenVINO? GPU 設備上使用圖像大小 (1024X576) 運行穩定擴散文本圖像,并收到錯誤消息: RuntimeError: Exception from
    發表于 06-25 06:36

    如何在Android設備上安裝Cyusb3014芯片驅動?

    1.如何在Android設備上安裝Cyusb3014芯片驅動? 我們在 Windows 上有 FX3 驅動程序 SDK。 2.如何在Android系統上下載固件到芯片中?
    發表于 05-15 07:23

    FlexBuild構建Debian 12,在“tflite_ethosu_delegate”上構建失敗了怎么解決?

    /workspace/tn_debian_FlexBuild 構建/components_lsdk2412/apps/ml/tflite/tensorflow/lite/tools/cmake
    發表于 04-01 06:53

    把樹莓派打造成識別文本的“神器”!

    在許多項目中,RaspberryPi被用作監控攝像頭或執行機器學習任務。在這些場景中,圖像中經常包含應用程序感興趣的文本信息。我們希望提取這些信息并將其轉換,以便通過程序分析文本
    的頭像 發表于 03-25 09:30 ?978次閱讀
    把樹莓派打造成識別<b class='flag-5'>文本</b>的“神器”!