99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

OpenVINO2021.4版本中場景文字檢測與識別模型的推理使用

英特爾物聯(lián)網(wǎng) ? 來源:英特爾物聯(lián)網(wǎng) ? 作者: 賈志剛 ? 2021-08-26 15:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

場景文字檢測與識別模型

OpenVINO2021.4支持場景文字檢測是基于MobileNetV2的PixelLink模型,模型有兩個分別是text-detection-0003與text-detection-0004。以text-detection-0003模型為例它有兩個輸出,分別是分割輸出與bounding Boxes輸出

下面是基于VGG16作為backbone實(shí)現(xiàn)的PixelLink的模型。

最終得到輸出text/notext的mask區(qū)域,對mask區(qū)域簡單處理之后就會得到每個場景文字區(qū)域的ROI。關(guān)于后處理,再后續(xù)的會有詳細(xì)代碼演示。OpenVINO2021.4不僅支持場景文字的檢測還支持場景文字的識別,支持場景文字識別的模型是基于VGG16+雙向LSTM,識別0~9與26個字符加空白,并且非大小寫敏感!

模型輸入與輸出格式

PixelLink場景文字檢測模型的輸入與輸出格式如下:

輸入格式:1x3x768x1280 BGR彩色圖像

輸出格式:

name: “model/link_logits_/add”, [1x16x192x320] – pixelLink的輸出

name: “model/segm_logits/add”, [1x2x192x320] – 像素分類text/no text

圖-3文本識別模型的輸入與輸出格式如下:

輸入格式:1x1x32x120

輸出格式:30, 1, 37

輸出解釋是基于CTC貪心解析方式。

其中37字符集長度,字符集為:

0123456789abcdefghijklmnopqrstuvwxyz#

#表示空白。

同步與異步推理

在OpenVINO的IE推理模塊相關(guān)SDK支持同步與異步推理模型,同步的意思是阻塞直到返回結(jié)果, 異步就是調(diào)用推理之后直接返回,接受到處理完成通知之后再解析輸出,相比同步方式,異步推理更加適合視頻流多路推理的方式。異步推理的執(zhí)行方式大致如下:

// start the async infer request (puts the request to the queue and immediately returns)

async_infer_request-》StartAsync();

// here you can continue execution on the host until results of the current request are really needed

//。。。

async_infer_request.Wait(IInferRequest::RESULT_READY);

auto output = async_infer_request.GetBlob(output_name);

場景文字檢測代碼演示

OpenVINO2021.4中場景文字檢測的,以text-detection-0003為例。加載模型文件與獲取推理請求等與之前的保持一致,無需再說,這里主要是PixelLink模型的輸出解析部分,它的解析部分代碼如下:

cv::Mat mask = cv::Size(out_w, out_h), CV_8U);

int step = out_h*out_w;

for (int row = 0; row 《 out_h; row++) {

for (int col = 0; col 《 out_w; col++) {

float p1 = detection_out[row*out_w + col];

float p2 = detection_out[step + row*out_w + col]; // text

if (p2》1.0) {

mask.at《uchar》(row, col) = 255;

}

}

}

cv::resize(mask, mask, cv::Size(im_w, im_h));

std::vector《std::vector《cv::Point》》 contours;

cv::findContours(mask, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);

對輸出的Mask數(shù)據(jù),完成text與非text的分類,得到二值圖象,然后對二值圖象完成輪廓發(fā)現(xiàn),根據(jù)輪廓發(fā)現(xiàn)的的結(jié)果輸出最大/最小外接矩形,得到每個Text區(qū)域的檢測結(jié)果,最終模型的運(yùn)行結(jié)果如下:

場景文字識別代碼演示

場景文字識別是基于場景文字檢測模型輸出得到的TEXT區(qū)域作為輸入,基于灰度圖象預(yù)測輸出,使用text-recognition-0012模型。關(guān)于模型加載、輸入與輸出設(shè)置同樣不再贅述,檢測得到TEXT的ROI作為輸入,推理與預(yù)測文字及顯示的代碼如下:

auto reco_output = reco_request.GetBlob(reco_output_name);

const float* blob_out = static_cast《PrecisionTrait《Precision::FP32》::value_type*》(reco_output-》buffer());

const SizeVector reco_dims = reco_output-》getTensorDesc().getDims();

const int RW = reco_dims[0];

const int RB = reco_dims[1];

const int RL = reco_dims[2];

std::string ocr_txt = ctc_decode(blob_out, RW, RL);

std::cout 《《 ocr_txt 《《 std::endl;

cv::putText(src, ocr_txt, box.tl(), cv::FONT_HERSHEY_PLAIN, 1.0, cv::Scalar(255, 0, 0), 1);

其中RWxRBxRL=30x1x37,CTC解析的函數(shù)ctc_decode實(shí)現(xiàn)代碼如下:

std::string ctc_decode(const float* blob_out, int seq_w, int seq_l) {

printf(“seq width: %d, seq length: %d ”, seq_w, seq_l);

std::string res = “”;

bool prev_pad = false;

const int num_classes = alphabet.length();

int seq_len = seq_w*seq_l;

for (int i = 0; i 《 seq_w; i++) {

int argmax = 0;

int max_prob = blob_out[i*seq_l];

for (int j = 0; j 《num_classes; j++) {

if (blob_out[i*seq_l + j] 》 max_prob) {

max_prob = blob_out[i*seq_l + j];

argmax = j;

}

}

auto symbol = alphabet[argmax];

if (symbol == ‘#’) {

prev_pad = true;

}

else {

if (res.empty() || prev_pad || (!res.empty() && symbol != res.back())) {

prev_pad = false;

res += symbol;

}

}

}

return res;

}

解析過程就是對得到二維矩陣30x37,按行先做argmax,然后再去掉重復(fù),最終得到預(yù)測生成的text文本返回。

總結(jié)

本文主要講述了OpenVINO2021.4版本中場景文字檢測與識別模型的推理使用,以及同步與異步推理的的基本概念。特別值得注意的是場景文字識別模型是基于灰度圖象不是RGB彩色圖象,如果搞錯這點(diǎn)就會得到錯誤的文本預(yù)測結(jié)果。

編輯:jq

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

    關(guān)注

    4

    文章

    807

    瀏覽量

    59789
  • 識別
    +關(guān)注

    關(guān)注

    3

    文章

    173

    瀏覽量

    32224
  • vgg
    vgg
    +關(guān)注

    關(guān)注

    1

    文章

    11

    瀏覽量

    5341
  • LSTM
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    4026

原文標(biāo)題:OpenVINO? 場景文字識別與同步與異步推理

文章出處:【微信號:英特爾物聯(lián)網(wǎng),微信公眾號:英特爾物聯(lián)網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何在Ollama中使用OpenVINO后端

    Ollama 和 OpenVINO 的結(jié)合為大型語言模型(LLM)的管理和推理提供了強(qiáng)大的雙引擎驅(qū)動。Ollama 提供了極簡的模型管理工具鏈,而
    的頭像 發(fā)表于 04-14 10:22 ?423次閱讀

    使用OpenVINO?進(jìn)行推理時的內(nèi)存泄漏怎么解決?

    使用 OpenVINO? 進(jìn)行推理時,內(nèi)存會隨著時間的推移而增加,并導(dǎo)致程序崩潰。
    發(fā)表于 03-06 08:29

    OpenVINO中的量化模型OpenVINO ESR模型結(jié)果不一致是怎么回事?

    將 REAL-ESRSTREAM 模型轉(zhuǎn)換成 OpenVINO IR (2021.4) 并執(zhí)行該模型。 能夠運(yùn)行 IR,但結(jié)果與 REAL-ESR 就此不同的是。
    發(fā)表于 03-06 08:11

    使用OpenVINO? 2021.4在CPU和MYRIAD上進(jìn)行自定義對象檢測,為什么結(jié)果差異巨大?

    使用自定義訓(xùn)練的模型執(zhí)行推理,以便在 2021.4 OpenVINO?中進(jìn)行人員檢測。 與 MYRIAD 相比,CPU 的輸出結(jié)果取得
    發(fā)表于 03-06 07:45

    如何使用多攝像頭作為OpenVINO?推理的輸入?

    無法確定如何使用多攝像頭作為OpenVINO?推理的輸入
    發(fā)表于 03-06 07:30

    為什么深度學(xué)習(xí)中的Frame per Second高于OpenVINO?演示推理腳本?

    在 DL Workbench 上使用 Microsoft 通用對象上下文 (MS COCO) 數(shù)據(jù)集運(yùn)行 YOLOv4 對象檢測模型,并獲得 50 - 60 FPS。 OpenVINO?演示
    發(fā)表于 03-06 07:27

    如何使用OpenVINO?運(yùn)行對象檢測模型

    無法確定如何使用OpenVINO?運(yùn)行對象檢測模型
    發(fā)表于 03-06 07:20

    創(chuàng)建了用于OpenVINO?推理的自定義C++和Python代碼,從C++代碼中獲得的結(jié)果與Python代碼不同是為什么?

    創(chuàng)建了用于OpenVINO?推理的自定義 C++ 和 Python* 代碼。 在兩個推理過程中使用相同的圖像和模型。 從 C++ 代碼中獲得的結(jié)果與 Python* 代碼不同。
    發(fā)表于 03-06 06:22

    通過docker下載的DL Workbench,DL Workbench在導(dǎo)入模型時停止響應(yīng)是怎么回事?

    ) ? docker run -p 0.0.0.0:5665:5665 --name workbench -it openvino/workbench:2021.4 在 Safari 瀏覽器中瀏覽生成的 URL。 DL Workbench 在導(dǎo)入
    發(fā)表于 03-05 08:54

    使用OpenVINO? 2021.4將經(jīng)過訓(xùn)練的自定義PyTorch模型加載為IR格式時遇到錯誤怎么解決?

    使用 OpenVINO? 2021.4 將經(jīng)過訓(xùn)練的自定義 PyTorch 模型加載為 IR 格式時遇到錯誤: RuntimeError: [ GENERAL_ERROR ] Failed
    發(fā)表于 03-05 08:40

    在Windows? 11上安裝OpenVINO? 2021.4時,安裝程序崩潰了,安裝失敗怎么解決?

    在 Windows? 11 上安裝OpenVINO? 2021.4 時,安裝程序崩潰了,安裝失敗。
    發(fā)表于 03-05 06:50

    為什么無法在運(yùn)行時C++推理中讀取OpenVINO?模型?

    使用模型優(yōu)化器 2021.1 版OpenVINO?轉(zhuǎn)換模型 使用 Runtime 2022.3 版本在 C++ 推理實(shí)現(xiàn) ( core.r
    發(fā)表于 03-05 06:17

    使用vLLM+OpenVINO加速大語言模型推理

    隨著大語言模型的廣泛應(yīng)用,模型的計算需求大幅提升,帶來推理時延高、資源消耗大等挑戰(zhàn)。
    的頭像 發(fā)表于 11-15 14:20 ?1374次閱讀
    使用vLLM+<b class='flag-5'>OpenVINO</b>加速大語言<b class='flag-5'>模型</b><b class='flag-5'>推理</b>

    使用OpenVINO C++在哪吒開發(fā)板上推理Transformer模型

    OpenVINO 是一個開源工具套件,用于對深度學(xué)習(xí)模型進(jìn)行優(yōu)化并在云端、邊緣進(jìn)行部署。它能在諸如生成式人工智能、視頻、音頻以及語言等各類應(yīng)用場景中加快深度學(xué)習(xí)推理的速度,且支持來自
    的頭像 發(fā)表于 10-12 09:55 ?964次閱讀
    使用<b class='flag-5'>OpenVINO</b> C++在哪吒開發(fā)板上<b class='flag-5'>推理</b>Transformer<b class='flag-5'>模型</b>

    OpenVINO2024 C++推理使用技巧

    很多人都使用OpenVINO新版的C++ 或者Python的SDK,都覺得非常好用,OpenVINO2022之后的版本C++ SDK做了大量的優(yōu)化與整理,已經(jīng)是非常貼近開發(fā)的使用習(xí)慣與推理
    的頭像 發(fā)表于 07-26 09:20 ?1532次閱讀