在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

Tensorflowers ? 來源:TensorFlow ? 作者:魏巍 ? 2021-11-02 15:34 ? 次閱讀

俗話說:“一圖勝千言”。圖像包含豐富的視覺信息,但有時(shí)關(guān)鍵信息位于圖像的文本當(dāng)中。雖然識(shí)字的人可以輕松理解圖像中嵌入的文字,但我們?nèi)绾卫?a href="http://www.xsypw.cn/v/tag/3744/" target="_blank">計(jì)算機(jī)視覺機(jī)器學(xué)習(xí)來教計(jì)算機(jī)做到這一點(diǎn)呢?

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

該處

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

從圖像中識(shí)別文本的過程即為 OCR,該技術(shù)在多個(gè)領(lǐng)域中廣泛使用。例如,Google 地圖運(yùn)用 OCR 技術(shù)從地理定位圖像中提取信息,進(jìn)而完善 Google 地圖。

Google 地圖運(yùn)用 OCR 技術(shù)

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

一般來說,OCR 是一個(gè)包含多個(gè)步驟的流水線。相關(guān)步驟通常包含文本檢測(cè)和文本識(shí)別:

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

執(zhí)行一些后處理操作,以轉(zhuǎn)換邊界框;

將這些邊界框內(nèi)的圖像轉(zhuǎn)換為灰度圖像,如此一來,文本識(shí)別模型便可繪制出文字和數(shù)字。

在示例中,我們將利用 TensorFlow Hub 中的文本檢測(cè)和文本識(shí)別模型。多個(gè)不同的模型版本可用來權(quán)衡速度/準(zhǔn)確率的取舍;我們?cè)诖耸褂玫氖?float16 量化模型。如需有關(guān)模型量化的更多信息,請(qǐng)參閱 TensorFlow Lite 量化文檔。

文本檢測(cè)

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

文本識(shí)別

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

TensorFlow Lite 量化

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

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

非極大值抑制

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

TFLite 支持庫

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

對(duì)于文本檢測(cè),由于檢測(cè)模型支持 320x320 的固定像素,我們會(huì)使用 TFLite 支持庫調(diào)整輸入圖像的大小并對(duì)其進(jìn)行標(biāo)準(zhǔn)化處理:

檢測(cè)模型

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 運(yùn)行檢測(cè)模型:

detectionInterpreter.runForMultipleInputsOutputs(detectionInputs, detectionOutputs)

檢測(cè)模型的輸出是一些經(jīng)過旋轉(zhuǎn)且圖像內(nèi)包含文本的邊界框。我們會(huì)運(yùn)行非極大值抑制,借助 OpenCV 為每個(gè)文本塊確定一個(gè)邊界框:

NMSBoxesRotated(

boundingBoxesMat,

detectedConfidencesMat,

detectionConfidenceThreshold.toFloat(),

detectionNMSThreshold.toFloat(),

indicesMat

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

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

val rotationMatrix = getPerspectiveTransform(srcPtsMat, targetPtsMat)

warpPerspective(

srcBitmapMat,

recognitionBitmapMat,

rotationMatrix,

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

之后,我們會(huì)再次使用 TFLite 支持庫,在邊界框內(nèi)調(diào)整變換圖像的大小,并對(duì)其進(jìn)行灰度和歸一化處理:

val imageProcessor =

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

最后,我們會(huì)運(yùn)行文本識(shí)別模型、根據(jù)模型輸出繪制出字符與數(shù)字,然后更新應(yīng)用界面:

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())}

這樣就完成了,就是這么簡(jiǎn)單。此時(shí),我們可以在我們的應(yīng)用中使用 TFLite 來提出輸入圖像中的文本。

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

您有自己想要使用的專屬文本檢測(cè)/識(shí)別 TFLite 模型;

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

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

您的目標(biāo)用戶設(shè)備不一定要安裝 Google Play 服務(wù);

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

ML Kit

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

Google Play 服務(wù)

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

在這些情況下,我希望本教程和我們的實(shí)現(xiàn)示例可以助您開啟在您的應(yīng)用中構(gòu)建專屬 OCR 功能的旅程。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 應(yīng)用
    +關(guān)注

    關(guān)注

    2

    文章

    438

    瀏覽量

    34160
  • OCR
    OCR
    +關(guān)注

    關(guān)注

    0

    文章

    144

    瀏覽量

    16361
  • tensorflow
    +關(guān)注

    關(guān)注

    13

    文章

    329

    瀏覽量

    60536
  • TensorFlow Lite
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    626

原文標(biāo)題:基于 TensorFlow Lite 的 OCR:一款嶄新的示例應(yīng)用

文章出處:【微信號(hào):tensorflowers,微信公眾號(hào):Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    高通AI Hub:輕松實(shí)現(xiàn)Android圖像分類

    高通AI Hub為開發(fā)者提供了一個(gè)強(qiáng)大的平臺(tái),以優(yōu)化、驗(yàn)證和部署在Android設(shè)備上的機(jī)器學(xué)習(xí)模型。這篇文章將介紹如何使用高通AI Hub進(jìn)行圖像分類的程式碼開發(fā),并提供一個(gè)實(shí)際的例子來展示其在
    的頭像 發(fā)表于 11-26 01:03 ?228次閱讀
    高通AI Hub:輕松實(shí)現(xiàn)<b class='flag-5'>Android</b><b class='flag-5'>圖像</b>分類

    第四章:在 PC 交叉編譯 aarch64 的 tensorflow 開發(fā)環(huán)境并測(cè)試

    本文介紹了在 PC 端交叉編譯 aarch64 平臺(tái)的 tensorflow 庫而非 tensorflow lite 的心酸過程。
    的頭像 發(fā)表于 08-25 11:38 ?1083次閱讀
    第四章:在 PC 交叉編譯 aarch64 的 <b class='flag-5'>tensorflow</b> 開發(fā)環(huán)境并測(cè)試

    丟掉數(shù)據(jù)線,你還會(huì)調(diào)試Android設(shè)備嗎?

    ADB(AndroidDebugBridge)作為Android開發(fā)中非常重要的工具,開發(fā)者可以使用ADB設(shè)備在電腦上對(duì)Android設(shè)備進(jìn)
    的頭像 發(fā)表于 08-14 17:09 ?377次閱讀
    丟掉數(shù)據(jù)線,你還會(huì)調(diào)試<b class='flag-5'>Android</b><b class='flag-5'>設(shè)備</b>嗎?

    如何在Tensorflow中實(shí)現(xiàn)反卷積

    TensorFlow中實(shí)現(xiàn)反卷積(也稱為轉(zhuǎn)置卷積或分?jǐn)?shù)步長(zhǎng)卷積)是一個(gè)涉及多個(gè)概念和步驟的過程。反卷積在深度學(xué)習(xí)領(lǐng)域,特別是在圖像分割、圖像超分辨率、以及生成模型(如生成對(duì)抗網(wǎng)絡(luò)GANs)等任務(wù)中
    的頭像 發(fā)表于 07-14 10:46 ?618次閱讀

    利用TensorFlow實(shí)現(xiàn)基于深度神經(jīng)網(wǎng)絡(luò)的文本分類模型

    要利用TensorFlow實(shí)現(xiàn)一個(gè)基于深度神經(jīng)網(wǎng)絡(luò)(DNN)的文本分類模型,我們首先需要明確幾個(gè)關(guān)鍵步驟:數(shù)據(jù)預(yù)處理、模型構(gòu)建、模型訓(xùn)練、模型評(píng)估與調(diào)優(yōu),以及最終的模型部署(盡管在本文中,我們將重點(diǎn)放在前四個(gè)步驟上)。下面,我將詳細(xì)闡述這些步驟,并給出一個(gè)具體的示例。
    的頭像 發(fā)表于 07-12 16:39 ?857次閱讀

    TensorFlow是什么?TensorFlow怎么用?

    TensorFlow是由Google開發(fā)的一個(gè)開源深度學(xué)習(xí)框架,它允許開發(fā)者方便地構(gòu)建、訓(xùn)練和部署各種復(fù)雜的機(jī)器學(xué)習(xí)模型。TensorFlow憑借其高效的計(jì)算性能、靈活的架構(gòu)以及豐富的工具和庫,在學(xué)
    的頭像 發(fā)表于 07-12 16:38 ?710次閱讀

    Android設(shè)備將SDK更新到1.4.0后無法連接到ESP SoftAP怎么解決?

    將 SDK 1.2.0 更新到 1.4.0 后,一切看起來都很好,但是某些設(shè)備(例如 Android 5.0、Android 4.4)
    發(fā)表于 07-08 07:41

    tensorflow和pytorch哪個(gè)更簡(jiǎn)單?

    PyTorch更簡(jiǎn)單。選擇TensorFlow還是PyTorch取決于您的具體需求和偏好。如果您需要一個(gè)易于使用、靈活且具有強(qiáng)大社區(qū)支持的框架,PyTorch可能是一個(gè)更好的選擇。如果您需要一個(gè)在
    的頭像 發(fā)表于 07-05 09:45 ?870次閱讀

    tensorflow和pytorch哪個(gè)好

    :2015年由Google Brain團(tuán)隊(duì)發(fā)布。 語言支持 :主要使用Python,也支持C++、Java等。 設(shè)計(jì)哲學(xué) :TensorFlow是一個(gè)端到端的機(jī)器學(xué)習(xí)平臺(tái),支持研究到生產(chǎn)的所有階段
    的頭像 發(fā)表于 07-05 09:42 ?687次閱讀

    tensorflow簡(jiǎn)單的模型訓(xùn)練

    在本文中,我們將詳細(xì)介紹如何使用TensorFlow進(jìn)行簡(jiǎn)單的模型訓(xùn)練。TensorFlow是一個(gè)開源的機(jī)器學(xué)習(xí)庫,廣泛用于各種機(jī)器學(xué)習(xí)任務(wù),包括圖像識(shí)別、自然語言處理等。我們將從安裝
    的頭像 發(fā)表于 07-05 09:38 ?671次閱讀

    keras模型轉(zhuǎn)tensorflow session

    在這篇文章中,我們將討論如何將Keras模型轉(zhuǎn)換為TensorFlow session。 Keras和TensorFlow簡(jiǎn)介 Keras是一個(gè)高級(jí)神經(jīng)網(wǎng)絡(luò)API,它提供了一種簡(jiǎn)單、快速的方式來構(gòu)建
    的頭像 發(fā)表于 07-05 09:36 ?541次閱讀

    TensorFlow的定義和使用方法

    數(shù)據(jù)流圖,從而簡(jiǎn)化機(jī)器學(xué)習(xí)模型的構(gòu)建、訓(xùn)練和部署。自2015年11月開源以來,TensorFlow迅速成為數(shù)據(jù)科學(xué)家、軟件開發(fā)者以及教育工作者廣泛使用的工具,廣泛應(yīng)用于圖像識(shí)別、自然語言處理、推薦系統(tǒng)等多個(gè)領(lǐng)域。本文將深入解讀Tenso
    的頭像 發(fā)表于 07-02 14:14 ?780次閱讀

    卷積神經(jīng)網(wǎng)絡(luò)在文本分類領(lǐng)域的應(yīng)用

    在自然語言處理(NLP)領(lǐng)域,文本分類一直是一個(gè)重要的研究方向。隨著深度學(xué)習(xí)技術(shù)的飛速發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱CNN)在圖像識(shí)別領(lǐng)域取得了
    的頭像 發(fā)表于 07-01 16:25 ?727次閱讀

    如何提取、匹配圖像特征點(diǎn)

    我們習(xí)慣圖像中選取比較有代表性的點(diǎn),然后,在此基礎(chǔ)上,討論相機(jī)位姿估計(jì)問題,以及這些點(diǎn)的定位問題。 在經(jīng)典 SLAM 模型中,把它們稱為路標(biāo),而在視覺 SLAM 中,路標(biāo)則是指圖像特征(Features)。
    的頭像 發(fā)表于 04-19 11:41 ?663次閱讀

    基于TensorFlow和Keras的圖像識(shí)別

    TensorFlow和Keras最常見的用途之一是圖像識(shí)別/分類。通過本文,您將了解如何使用Keras達(dá)到這一目的。定義如果您不了解圖像識(shí)別的基本概念,將很難完全理解本文的內(nèi)容。因此在正文開始之前
    的頭像 發(fā)表于 01-13 08:27 ?825次閱讀
    基于<b class='flag-5'>TensorFlow</b>和Keras的<b class='flag-5'>圖像</b>識(shí)別
    主站蜘蛛池模板: 天天射天天操天天色| 色偷偷91久久综合噜噜噜噜| 天天碰人人| 国产亚洲综合色就色| 高清色| 美女视频网站免费播放视| 日本不卡一区| 欧美一级特黄视频| 天天舔天天插| 日本aaaaa级毛片片| 欧美成人免费| 日本污全彩肉肉无遮挡彩色| 色中色资源| 欧美不在线| 欧美日韩影院| 中文字幕人成不卡一区| 精品一精品国产一级毛片| 久操视频免费看| 亚洲三级在线免费观看| 国产乱码精品一区二区| 97天天做天天爱夜夜爽| 无人区理论片手机看片| 在线精品小视频| 亚洲男人的天堂久久无| 欧美日韩一区二区三区视频| 天天成人综合网| 美女扒尿口给男人桶到爽| 美女视频永久黄网站免费观看国产| 免费一级片在线| 亚洲爽爽网站| 91在线网址| 日本aaaa毛片在线看| 久久综合九色综合网站| 大量国产后进翘臀视频| 色四月婷婷| 欧美夜夜| 五月婷婷在线观看视频| 午夜视频在线观看一区| 717影院理论午夜伦八戒| 福利片免费一区二区三区| 91大神在线看|