色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

使用OpenVINO? 部署PaddleSeg模型庫中的DeepLabV3+模型

英特爾物聯(lián)網(wǎng) ? 來源:英特爾物聯(lián)網(wǎng) ? 作者:英特爾物聯(lián)網(wǎng) ? 2021-11-22 14:58 ? 次閱讀

01

概述

本文是OpenVINO 工具套件與百度飛槳PaddlePaddle模型轉(zhuǎn)換/部署系列的第二部。這篇文章專注于展示如何將百度飛槳PaddelSeg項目下的DeepLabV3+路面語義分割模型轉(zhuǎn)換為OpenVINO工具套件的IR模型并且部署到CPU上。

為了使本文擁有更廣的受眾面,文章的目標部署平臺選擇了CPU和iGPU。關(guān)于如何部署到邊緣設(shè)備例如Intel Movidius MyraidX VPU上,請參考第一篇文章:

Ubuntu20.04環(huán)境下使用OpenVINO部署B(yǎng)iSeNetV2模型

那么我們重述一下什么是語義分割:

語義分割(Semantic Segmentatio)是計算機視覺對現(xiàn)實世界理解的基礎(chǔ),大到自動駕駛,小到個人應(yīng)用只要細心觀察都可以發(fā)現(xiàn)語義分割的應(yīng)用場所無處不在。其實語義分割相當(dāng)于是圖像分割+ 對分割區(qū)域的理解。


因此圖像語義分割也稱為圖像語義標注,由于圖像語義分割不僅要識別出對象還要標出每個對象的邊界,所以相關(guān)的模型會具有像素級別(Pixel Level)的密集預(yù)測能力。

本篇文章的主要目的是展示如何把已有的百度飛槳Paddle模型一步一步的部署到Intel的Movidius Myriad X VPU上。同時本文也展示了一種思路:如何在浩瀚的Internet網(wǎng)絡(luò)找到正確的信息,少走彎路。

1.1

OpenVINO工具套件的重要性

面對當(dāng)下眾多流行的AI框架,比如PaddlePaddle、PyTorch、Tensorflow等等,每個框架都有自己特殊的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和文件類型,每個框架內(nèi)的設(shè)計也盡不一樣, 如此訓(xùn)練出來的模型則千差萬別,這對軟件開發(fā)和重用造成了一定的麻煩。

是否可以有一種工具可以使我們,不管選用什么AI框架來構(gòu)建專屬于自己的神經(jīng)網(wǎng)絡(luò)時,在最后部署到生產(chǎn)環(huán)境中的環(huán)節(jié),都可以擁有統(tǒng)一的接口,可重用的代碼呢?

答案是肯定的。OpenVINO工具套件就是這樣的一款工具,有了它的幫助,AI工程師可以在模型構(gòu)建、訓(xùn)練階段,選擇自己熟悉的任何AI框架來搭建起符合要求的個性化神經(jīng)網(wǎng)絡(luò), 而在后期使用OpenVINO快速構(gòu)建起專屬的解決方案,提供統(tǒng)一的接口,并在Intel 的硬件上優(yōu)化性能。

1.2

這篇文章的著重點和非著重點

正如前面提到的,,這篇文章的著重點在于一步一步演示怎樣導(dǎo)出已經(jīng)訓(xùn)練好的或者已有的百度飛槳PaddleSeg模型,并且怎樣轉(zhuǎn)換Paddle模型到ONNX格式,最后再轉(zhuǎn)到OpenVINO 工具套件IR模型,直至部署到CPU上為止。在每一步我都會提供相應(yīng)的官方網(wǎng)址,一步一步的把讀者推向正確的官網(wǎng)文檔,減少走彎路。

再來講一下這篇文章不講什么。這篇文章不講解怎樣安裝Python,Anaconda,OpenVINO工具套件這樣的基礎(chǔ)需求框架。以上幾個產(chǎn)品的官方網(wǎng)站教程都做的非常詳細,而且會實時更新,相信對于每個不同的技術(shù),閱讀相對應(yīng)的官方文檔可以省去很多麻煩,少走彎路。這篇文章更多的精力會用在講解模型之間的轉(zhuǎn)換,部署,以及排錯。

1.3

Intel OpenVINO簡介

OpenVINO工具套件(以下簡稱OV)是Intel 發(fā)布的一個綜合性工具套件,用于快速開發(fā)解決各種任務(wù)的應(yīng)用程序和解決方案。它包括人類視覺,自動語音識別,自然語言處理,推薦系統(tǒng)等。該工具套件基于最新一代人工神經(jīng)網(wǎng)絡(luò),包括卷積神經(jīng)網(wǎng)絡(luò) (CNN)、Recurrent Network和基于注意力的網(wǎng)絡(luò),可跨英特爾 硬件擴展計算機視覺和非視覺工作負載,從而最大限度地提高性能。

1.4

百度飛槳

百度飛槳(以下簡稱Paddle)是百度旗下一個致力于讓AI深度學(xué)習(xí)技術(shù)的創(chuàng)新與應(yīng)用更加簡單的工具集。其中包括,PaddleCV,PaddleSeg,PaddleClas等工具幫助您快速的搭建起AI應(yīng)用程序,最快落地AI模型項目。對于有過Tensorflow, PyTorch經(jīng)驗的朋友來說, Paddle的角色和前面二者是一樣的,都是高度集成的AI框架。目前Paddle有很活躍的開發(fā)者社區(qū),有利于快速找到自己需要的答案和幫助。

02

概述面向的讀者和需要的軟件

2.1

面向的讀者

本文面向的讀者是具有一定編程能力和經(jīng)驗的開發(fā)人員,AI模型開發(fā)員,熟悉Python語言,并使用Anaconda,已有訓(xùn)練好的模型,期待能部署到邊緣設(shè)備上來投入實際生產(chǎn)中。對于0基礎(chǔ)的讀者也是一個很好的機會通過一篇文章一并了解以上的幾個技術(shù)以及怎樣綜合使用這些技術(shù),讓它們成為您得心應(yīng)手的工具來幫助您最快的實現(xiàn)AI部署。

2.2

需要的軟件

Anaconda,Python(創(chuàng)建Anaconda虛擬環(huán)境的時候會自帶),OpenVINO工具套件,Paddle,PaddleSeg,Paddle2Onnx,mamba。

03

安裝PaddlePaddle & PaddleSeg

在介紹完以上內(nèi)容或,現(xiàn)在可以正式動工啦。由于本文用到的BiSeNetV2路面分割模型是用PaddleSeg訓(xùn)練的,所以需要先安裝PaddleSeg的基礎(chǔ)庫PaddlePaddle。然后再安裝PaddelSeg。

在安裝Paddle組件之前,請確保您已經(jīng)安裝好了Anaconda(地址:

https://docs.anaconda.com/anaconda/install/index.html)

第一步:創(chuàng)建一個conda 虛擬環(huán)境:

conda create -n "paddle" python=3.8.8 ipython

創(chuàng)建好環(huán)境后 別忘了激活環(huán)境:

conda activate paddle

第二步:安裝GPU或者CPU版本的PaddlePaddle:

至于是選擇GPU還是CPU版本的Paddle,主要是根據(jù)您的硬件配置。如果您有NVIDIA最近幾年的顯卡例如:RTX 1060,RTX 2070等,那么請選擇安裝GPU版本。查看CUDA對GPU支持的具體信息,請閱讀NVIDIA官網(wǎng)的GPU Compute Capability(地址:

https://developer.nvidia.com/cuda-gpus)

首先安裝NVIDIA的cudnn

conda install cudnn

安裝的時候也可以把conda 換成mamba(地址:https://github.com/mamba-org/mamba),從而得到更快的下載速度。

8153d7f0-494e-11ec-b939-dac502259ad0.png

圖四:使用Mamba安裝cudnn

這里快速介紹一下mamba。它是Conda的C++實現(xiàn)。相比于Conda,它提供多線程下載,這也就意味著它可以比Conda更好的利用網(wǎng)絡(luò)資源,下載的更快。同時它也能更快的解析依賴項。估計用Conda多的朋友應(yīng)該會遇到過,Conda有時候查找依賴項非常慢、很耽誤時間。Mamba是您的好朋友,以下教程種再看到conda的命令,大家都可以自動替換成mamba來提高速度, 讓您的效率飛起來~!

安裝PaddlePaddle的時候,Paddle的官網(wǎng)(https://www.paddlepaddle.org.cn/)是您的好朋友,(任何時候安裝任何東西,找到官網(wǎng)一般就能獲取最新的指南), 我以Ubuntu 20.04的系統(tǒng)為例(如果您用其他的系統(tǒng),那么請選擇相應(yīng)的選項)

具體命令如下:

conda install paddlepaddle-gpu==2.1.2 cudatoolkit=11.2 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/Paddle/ -c conda-forge

安裝完底層框架之后,是時候安裝PaddleSeg(地址:https://github.com/PaddlePaddle/PaddleSeg)啦。同理, 安裝PaddleSeg的時候您的好朋友還是它的官網(wǎng)或者它的Github倉庫。

pip install paddleseg

git clone https://github.com/PaddlePaddle/PaddleSeg

安裝完P(guān)addleSeg之后 我們就可以開始激動人心的步驟:導(dǎo)出已經(jīng)訓(xùn)練好的模型~!

04

模型轉(zhuǎn)換

模型的轉(zhuǎn)換分為4個步驟:

1. 導(dǎo)出已經(jīng)訓(xùn)練好的模型

2. 轉(zhuǎn)換到ONNX模型

3. 通過ONNX模型轉(zhuǎn)換到OpenVINO工具套件的 IR模型

4. 最后編譯IR模型成為.blob模型(只適用于Intel VPU,神經(jīng)棒等, CPU不需要)

其中3和4都是可以在Intel Movidius Myriad X VPU上部署測試的。

4.1

導(dǎo)出已經(jīng)訓(xùn)練好的模型

本文將會以PaddleSeg官方的DeepLabV3P模型(DeepLabV3+[2](地址:

https://github.com/PaddlePaddle/PaddleSeg/tree/release/2.2/configs/deeplabv3p)

是一款相對較新的神經(jīng)網(wǎng)絡(luò)構(gòu)架,擁有不錯的準確度和性能)為例(如果您有自己的模型,請?zhí)鎿Q掉下面例子中的模型,并且更新相應(yīng)的配置即可)。本文選中的是以Pascol VOC 2012 + Aug 為數(shù)據(jù)集訓(xùn)練好的, ResNet50_OS8為骨干網(wǎng)絡(luò)的DeepLabV3P模型。

命令的格式如下:

conda activate paddle

cd PaddleSeg

python export.py

--config / Github/PaddleSeg/configs/deeplabv3p/deeplabv3p_resnet50_os8_voc12aug_512x512_40k.yml

--model /Models/Paddle/Segmentation/deeplabv3p_pascalvoc2012.pdparams

如果一切運行正常您將會看到類似如下的信息:

W0922 2341.752403 25116 device_context.cc:404] Please NOTE: device: 0, GPU Compute Capability: 7.5, Driver API Version: 11.2, Runtime API Version: 11.2

W0922 2341.775831 25116 device_context.cc:422] device: 0, cuDNN Version: 8.1.

2021-09-22 2344 [INFO] Loading pretrained model from https://bj.bcebos.com/paddleseg/dygraph/resnet50_vd_ssld_v2.tar.gz

Connecting to https://bj.bcebos.com/paddleseg/dygraph/resnet50_vd_ssld_v2.tar.gz

Downloading resnet50_vd_ssld_v2.tar.gz

[==================================================] 100.00%

Uncompress resnet50_vd_ssld_v2.tar.gz

[==================================================] 100.00%

2021-09-22 2304 [INFO] There are 275/275 variables loaded into ResNet_vd.

2021-09-22 2305 [INFO] Loaded trained params of model successfully.

/anaconda3/envs/paddle/lib/python3.8/site-packages/paddle/fluid/layers/utils.py DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.9 it will stop working

return (isinstance(seq, collections.Sequence) and

2021-09-22 2307 [INFO] Model is saved in ./output.

具體的模型deeplabv3p_resnet50_os8_voc12aug_512x512_40k.yml配置文件可以在PaddleSeg的官方Github閱讀。

(地址:

https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.2/configs/deeplabv3p/deeplabv3p_resnet50_os8_voc12aug_512x512_40k.yml)

如果想知道更多參數(shù),您的好朋友還是PaddleSeg的官方Github Repository:模型導(dǎo)出(地址:

https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.2/docs/export/export/model_export.md)

來講解一下這條命令。

--config 是用來指定模型配置參數(shù)的文件。在這個文件里它說明了您使用的模型叫什么名字, 比如在我的例子中,使用的模型叫做:BiSeNetV2, 您需要的分類有多少種,用了什么優(yōu)化器,損失函數(shù)是什么,batch size是多少等等都在這個文件里面。

來看一下

deeplabv3p_resnet50_os8_voc12aug_512x512_40k.yml配置文件 地址:

https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.2/configs/deeplabv3p/deeplabv3p_resnet50_os8_voc12aug_512x512_40k.yml)的內(nèi)容

_base_: '../_base_/pascal_voc12aug.yml'

model:

type: DeepLabV3P

backbone:

type: ResNet50_vd

output_stride: 8

multi_grid: [1, 2, 4]

pretrained: https://bj.bcebos.com/paddleseg/dygraph/resnet50_vd_ssld_v2.tar.gz

backbone_indices: [0, 3]

aspp_ratios: [1, 12, 24, 36]

aspp_out_channels: 256

align_corners: False

pretrained: null

可以看出, 它只需要在本配置文件里面指出了和模板文件pascal_voc12aug.yml (地址:

https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.2/configs/_base_/pascal_voc12aug.yml)

不一樣的參數(shù). 而它的模板文件又參照了pascal_voc12.yml (地址:

https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.2/configs/_base_/pascal_voc12.yml)

作為更上一層的模板文件。

這樣做的好處顯而易見. 您在自己的模型配置文件里, 只需要做少許改動,指出和模板文件不同的配置便可以,大量的相同配置則被重復(fù)使用了。

一個小竅門就是,參考PaddleSeg項目里已有的模板 (例如您剛克隆的PaddleSeg代碼下面的 deeplabv3p_resnet50_os8_voc12aug_512x512_40k.yml) (地址:

https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.2/configs/deeplabv3p/deeplabv3p_resnet50_os8_voc12aug_512x512_40k.yml)

一級一級的追查回到最底層的模板,您就差不多可以知道在xml文件里有哪些參數(shù)可以指定的了。同時也參考自己在訓(xùn)練AI模型的時候代碼里用到了哪些參數(shù),基本上都是要在這個config文件里面反映出來的。

--model 指向的是您已經(jīng)訓(xùn)練好的模型文件。

4.2

轉(zhuǎn)模型到ONNX: Paddle --> ONNX

模型導(dǎo)出后第一道轉(zhuǎn)換現(xiàn)在開始了.Paddle提供了轉(zhuǎn)換工具 Paddle2onnx. (地址:

https://github.com/PaddlePaddle/Paddle2ONNX)我們先來安裝它:

pip install paddle2onnx

是時候轉(zhuǎn)化模型到ONNX啦

paddle2onnx --model_dir inference --model_filename model.pdmodel --params_filename model.pdiparams --save_file road_seg.onnx --opset_version 11

--enable_onnx_checker True

這里 model_dir, model_filename, 以及params_filename和Save_file替換成自己的文件路徑就好.

--model_dir是轉(zhuǎn)換后的模型要保存的目錄

--enable_onnx_checker 把這個也啟動,讓轉(zhuǎn)換程序幫我們檢查模型

我當(dāng)時遇到的問題:

Opset_version的默認值是9(地址:

https://github.com/PaddlePaddle/Paddle2ONNX#parameters),當(dāng)我在轉(zhuǎn)BiSeNetV2的時候一開始并沒有指定這個,而且出錯了,經(jīng)過研究,發(fā)現(xiàn)是因為BiSeNetV2的框架比較新,需要把這個opset_version調(diào)高到11,更改到11后就好了。目前看到官網(wǎng)能穩(wěn)定支持的是 11,但是也有看到過別人用12的,大家可以邊試邊用。

如果轉(zhuǎn)換成功啦則會看到類似的如下信息:

2021-08-23 2233 [INFO] ONNX model generated is valid.

2021-08-23 2233 [INFO] ONNX model saved in /onnx_models/road_seg.onnx

4.3

轉(zhuǎn)換ONNX模型到OpenVINO IR模型

鋪墊了很久,終于來到了這一步。

先來快速介紹一下OpenVINO的IR模型。IR的全稱叫做Intermediate Representation. IR格式的模型是由2個文件組成的,它們分別是 .xml 和 .bin.

來到這一步之前請確保您的Intel OpenVINO安裝成功啦。怎樣安裝Intel OpenVINO呢?您的好朋友又要出現(xiàn)了:Intel OpenVINO官網(wǎng)安裝教程(地址:

https://docs.openvinotoolkit.org/cn/latest/openvino_docs_install_guides_installing_openvino_linux.html#install-openvino),這里是Intel OpenVINO官方下載地址(https://software.seek.intel.com/openvino-toolkit)

Intel OpenVINO的安裝包里3種安裝選項分別是:

1. 圖像界面GUI安裝

2. 命令行安裝

3. 命令行安裝安靜模式

對于新手,推薦用GUI安裝,清清楚楚、明明白白。

4.3.1

設(shè)置外部軟件依賴

安裝成功后,記得把Install External Software Dependencies(地址:

https://docs.openvinotoolkit.org/cn/latest/openvino_docs_install_guides_installing_openvino_linux.html#install-external-dependencies)這個部分的要求也跟完這一步是需要的。

4.3.2

激活I(lǐng)ntel OpenVINO環(huán)境變量

小提示:接下來要使用OV就要設(shè)置好它的環(huán)境變量。官方教程(地址:

https://docs.openvinotoolkit.org/cn/latest/openvino_docs_install_guides_installing_openvino_linux.html#set-the-environment-variables)要求把環(huán)境變量加載到您的 .bashrc文件里,這樣每次打開任何命令行接口都可以自動加載OV的環(huán)境變量。但是我在實際使用過程中發(fā)現(xiàn)了一個問題。安裝完OV后,我的一部分程序開始報錯,出現(xiàn)了一個和Gstreamer相關(guān)的錯誤信息。經(jīng)過研究發(fā)現(xiàn)原來OV的環(huán)境變量會和Anaconda的虛擬環(huán)境沖突,導(dǎo)致GStreamer出現(xiàn)問題。

其實解決方法也很簡單。我們一般只會在模型轉(zhuǎn)換的時候用到OV,那么就不要把OV的環(huán)境變量設(shè)置到.bashrc文件里面,只需要在使用OV之前,在命令行里激活OV的環(huán)境變量就行。激活環(huán)境變量的方法如下:

source /opt/intel/openvino_2021/bin/setupvars.sh

記住/opt/intel/openvino_2021/bin 是默認的OV安裝路徑,如果您改變了路徑,請記得也隨之改變這里的路徑。

4.3.3

配置模型優(yōu)化器

Model Optimizer(MO)

相信我同志們,我知道過程很長,但是曙光就在眼前啦~!這個就是開始轉(zhuǎn)OpenVINO IR模型前要調(diào)整的最后一步,堅持住~!

MO是一個基于Python的命令行工具,可以用來從其他流行的人工智能框架例如Caffe,ONNX,TensorFlow等導(dǎo)入訓(xùn)練好的模型。沒有用MO優(yōu)化過的模型是不能用來在OV上做推理的。

在這一步可以只為您需要的環(huán)境比如ONNX,或者Tensorflow等做配置,但也可以一下配置好可以適用于各種人工智能框架的環(huán)境。我在這里選擇了后者,畢竟路慢慢其修遠 現(xiàn)在用ONNX 之后也有可能用到任何其他網(wǎng)絡(luò)。

那么第一步先CD到MO設(shè)置的文件夾里面:

4.3.4

轉(zhuǎn)ONNX模型到IR模式

cd /opt/intel/openvino_2021/deployment_tools/model_optimizer

python mo_onnx.py --input_model /inference/onnx_models/road_seg.onnx

--output_dir /openvino/FP16

--input_shape [1,3,224,224]

--data_type FP16

--scale_values [127.5,127.5,127.5]

--mean_values [127.5,127.5,127.5]

這里需要提一下怎樣找出—input_shape 的參數(shù)值.

一般來說模型是自己訓(xùn)練的 那么您在訓(xùn)練的時候就要指定輸入圖片的尺寸大下, 那么這個512,512就是指圖片的寬和高. 前面的1是batch size,3是圖片的顏色通道數(shù).

-data_type來指定模型的精度,

如果轉(zhuǎn)換成功,您將會看到如下輸出:

Model Optimizer arguments:

Common parameters:

- Path to the Input Model: /Models/Paddle/Segmentation/DeepLabV3+/Onnx/pascalvoc.onnx

- Path for generated IR: /Models/Paddle/Segmentation/DeepLabV3+/OpenVINO/

- IR output name: pascalvoc

- Log level: ERROR

- Batch: Not specified, inherited from the model

- Input layers: Not specified, inherited from the model

- Output layers: Not specified, inherited from the model

- Input shapes: [1,3,512,512]

- Mean values: Not specified

- Scale values: Not specified

- Scale factor: Not specified

- Precision of IR: FP16

- Enable fusing: True

- Enable grouped convolutions fusing: True

- Move mean values to preprocess section: None

- Reverse input channels: False

ONNX specific parameters:

- Inference Engine found in: /opt/Intel/OpenVINO_2021/python/python3.8/OpenVINO

Inference Engine version: 2021.4.0-3839-cd81789d294-releases/2021/4

Model Optimizer version: 2021.4.0-3839-cd81789d294-releases/2021/4

[ SUCCESS ] Generated IR version 10 model.

[ SUCCESS ] XML file: /Models/Paddle/Segmentation/DeepLabV3+/OpenVINO/pascalvoc.xml

[ SUCCESS ] BIN file: /Models/Paddle/Segmentation/DeepLabV3+/OpenVINO/pascalvoc.bin

[ SUCCESS ] Total execution time: 18.65 seconds.

[ SUCCESS ] Memory consumed: 640 MB.

4.4

驗證轉(zhuǎn)換后的IR模型

在繼續(xù)下去之前我們應(yīng)該先檢驗一下這個模型是否真的轉(zhuǎn)換成功。

在運行如下代碼之前,請換一個命令行窗口,并且啟動之前創(chuàng)建的Anaconda 環(huán)境,這樣做是為了確保OV的環(huán)境變量和Conda的不互相沖突,產(chǎn)生錯誤。

運行如下代碼infer_deeplabv3p.py地址:https://github.com/franva/Intel-OpenVINO-Paddle/blob/main/infer_deeplabv3p.py

檢測轉(zhuǎn)換后的模型的正確性:

import cv2

import numpy as np

from OpenVINO.inference_engine import IENetwork, IECore

import paddleseg.transforms as T

from colors_pascalvoc import ColorMap_PASCALVOC

# Please update the pathes to xml and bin files respectively on your machine

model_xml = r'/Models/Paddle/Segmentation/DeepLabV3+/OpenVINO/pascalvoc.xml'

model_bin = r'/Models/Paddle/Segmentation/DeepLabV3+/OpenVINO/pascalvoc.bin'

ie = IECore()

# Read IR

net = IENetwork(model=model_xml, weights=model_bin)

input_blob = next(iter(net.inputs))

out_blob = next(iter(net.outputs))

exec_net = ie.load_network(network=net, device_name="CPU")

del net

transforms = [

T.Resize(target_size=(512,512)),

T.Normalize()

]

def show_img(img, window_name, channel_first=True):

visual = img

if channel_first:

visual = img.transpose(1,2,0)

visual = cv2.resize(visual, (600, 600))

else:

visual = cv2.resize(visual, (600,600))

cv2.imshow(window_name, visual)

def save_img(img, img_fn):

cv2.imwrite(img_fn, img)

# Run inference, replace this mp4 file with your own video

video = '/Testing Videos/mel_highway.mp4'

cap = cv2.VideoCapture(video)

read_successfully, frame = cap.read()

while read_successfully:

if read_successfully == False:

continue

resized_frame, tesrt = T.Compose([transforms[0]])(frame)

img, _ = T.Compose(transforms)(frame)

# add an new axis in front

img_input = img[np.newaxis, :]

result = exec_net.infer(inputs={input_blob: img_input})

img_segmentation = result['save_infer_model/scale_0.tmp_1']

img_segmentation = np.squeeze(img_segmentation)

class_colors = ColorMap_PASCALVOC.COLORS

class_colors = np.asarray(class_colors, dtype=np.uint8)

img_mask = class_colors[img_segmentation]

img_mask = img_mask.transpose(2, 0, 1)

img_overlayed = cv2.addWeighted(resized_frame, 1, img_mask, 1, 0.5)

img_overlayed = img_overlayed.transpose(1,2,0)

img_overlayed = cv2.cvtColor(img_overlayed, cv2.COLOR_RGB2BGR)

show_img(img_overlayed, 'overlayed', False)

show_img(img_mask, 'mask', True)

if cv2.waitKey(1) == ord('q'):

break

read_successfully, frame = cap.read()

cap.release()

cv2.destroyAllWindows()

4.5

模型性能和吞吐量

測試好模型之后,我們還可以檢查一下模型的性能和吞吐量。幸運的是,Intel DevCloud已經(jīng)提供了現(xiàn)有的工具來幫助我們快速完成這項工作。

我們?nèi)我馓暨x了幾套硬件搭配,來看一下剛轉(zhuǎn)換好的IR模型性能。

823183b6-494e-11ec-b939-dac502259ad0.png

圖八: Benchmark of DeepLabV3+模型

由上圖可以看出,更好的GPU支持會帶來更多的性能提升。同樣大部分AI模型檢測,分類,分割任務(wù)不需要很高的分辨率,所以適當(dāng)降低輸入圖像的尺寸后也能大幅度提高模型的性能。

關(guān)于如何使用Intel DevCloud,更詳細的步驟請參考:

使用OpenVINO優(yōu)化和部署DenseNet模型并在DevCloud上完成性能測試-上篇

使用OpenVINO 優(yōu)化和部署DenseNet模型并在DevCloud上完成性能測試-下篇

至此,整個流程結(jié)束。恭喜大家成功的把模型落地,并且部署到了邊緣設(shè)備上。期待看到你們各個精彩的應(yīng)用啦!

最后貼上Github 的本文章的陪同代碼庫(地址:https://github.com/franva/Intel-OpenVINO-Paddle),歡迎大家提出寶貴的意見。

05

總結(jié)

本文一開始先介紹了圖像分割和語義分割,闡述了用OpenVINO 工具套件部署模型的重要性。快速介紹了OpenVINO 工具套件以及百度的 PaddlePaddle框架。然后以一個訓(xùn)練好的百度飛槳Paddle模型為例開始,一步一步帶著大家把模型轉(zhuǎn)換到了OpenVINO 工具套件的IR格式,直到部署到CPU上面。對于不同的模型,只需要適量的改動,便可以快速獨立的開發(fā)屬于自己的AI應(yīng)用程序。

編輯:jq


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

    關(guān)注

    4

    文章

    182

    瀏覽量

    17995
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4779

    瀏覽量

    68522
  • GitHub
    +關(guān)注

    關(guān)注

    3

    文章

    469

    瀏覽量

    16428

原文標題:如何使用OpenVINO? 部署PaddleSeg模型庫中的DeepLabV3+模型?

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

收藏 人收藏

    評論

    相關(guān)推薦

    KerasHub統(tǒng)一、全面的預(yù)訓(xùn)練模型庫

    深度學(xué)習(xí)領(lǐng)域正在迅速發(fā)展,在處理各種類型的任務(wù),預(yù)訓(xùn)練模型變得越來越重要。Keras 以其用戶友好型 API 和對易用性的重視而聞名,始終處于這一動向的前沿。Keras 擁有專用的內(nèi)容,如用
    的頭像 發(fā)表于 12-20 10:32 ?64次閱讀

    AI模型部署邊緣設(shè)備的奇妙之旅:目標檢測模型

    網(wǎng)絡(luò)(DenseNet)等創(chuàng)新設(shè)計都是為了克服深層網(wǎng)絡(luò)訓(xùn)練的挑戰(zhàn)而提出的。 3 邊緣端設(shè)備部署 在邊緣端設(shè)備部署目標檢測模型,特別是像PP
    發(fā)表于 12-19 14:33

    開源AI模型庫是干嘛的

    開源AI模型庫是指那些公開源代碼、允許自由訪問和使用的AI模型集合。這些模型通常經(jīng)過訓(xùn)練,能夠執(zhí)行特定的任務(wù)。以下,是對開源AI模型庫的詳細介紹,由AI部落小編整理。
    的頭像 發(fā)表于 12-14 10:33 ?156次閱讀

    利用OpenVINO部署GLM-Edge系列SLM模型

    近期智譜發(fā)布了其最新的GLM-Edge系列SLM模型,GLM-Edge 系列是智譜在面向端側(cè)真實落地使用的場景下的一次嘗試,由兩種尺寸的大語言對話模型和多模態(tài)理解模型組成
    的頭像 發(fā)表于 12-09 16:12 ?732次閱讀

    大語言模型開發(fā)框架是什么

    大語言模型開發(fā)框架是指用于訓(xùn)練、推理和部署大型語言模型的軟件工具和。下面,AI部落小編為您介紹大語言模型開發(fā)框架。
    的頭像 發(fā)表于 12-06 10:28 ?115次閱讀

    使用OpenVINO Model Server在哪吒開發(fā)板上部署模型

    OpenVINO Model Server(OVMS)是一個高性能的模型部署系統(tǒng),使用C++實現(xiàn),并在Intel架構(gòu)上的部署進行了優(yōu)化,使用Open
    的頭像 發(fā)表于 11-01 14:19 ?273次閱讀
    使用<b class='flag-5'>OpenVINO</b> Model Server在哪吒開發(fā)板上<b class='flag-5'>部署</b><b class='flag-5'>模型</b>

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

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

    使用OpenVINO 2024.4在算力魔方上部署Llama-3.2-1B-Instruct模型

    前面我們分享了《三步完成Llama3在算力魔方的本地量化和部署》。2024年9月25日,Meta又發(fā)布了Llama3.2:一個多語言大型語言模型(LLMs)的集合。
    的頭像 發(fā)表于 10-12 09:39 ?563次閱讀
    使用<b class='flag-5'>OpenVINO</b> 2024.4在算力魔方上<b class='flag-5'>部署</b>Llama-3.2-1B-Instruct<b class='flag-5'>模型</b>

    AI算法/模型/框架/模型庫的含義、區(qū)別與聯(lián)系

    在人工智能(Artificial Intelligence,簡稱AI)的廣闊領(lǐng)域中,算法、模型、框架和模型庫是構(gòu)成其技術(shù)生態(tài)的重要基石。它們各自承擔(dān)著不同的角色,但又緊密相連,共同推動著AI技術(shù)的不斷發(fā)展。以下是對這四者含義、區(qū)別與聯(lián)系的詳細闡述。
    的頭像 發(fā)表于 07-17 17:11 ?3689次閱讀

    OpenVINO C# API在intel平臺部署YOLOv10目標檢測模型

    模型設(shè)計策略,從效率和精度兩個角度對YOLOs的各個組成部分進行了全面優(yōu)化,大大降低了計算開銷,增強了性能。在本文中,我們將結(jié)合OpenVINO C# API使用最新發(fā)布的OpenVINO 2024.1
    的頭像 發(fā)表于 06-21 09:23 ?1020次閱讀
    用<b class='flag-5'>OpenVINO</b> C# API在intel平臺<b class='flag-5'>部署</b>YOLOv10目標檢測<b class='flag-5'>模型</b>

    ad193d模型不顯示?

    封裝導(dǎo)入3d模型不顯示,但導(dǎo)入3d模型后的封裝生成pcb文件時顯示
    發(fā)表于 04-24 13:41

    簡單三步使用OpenVINO?搞定ChatGLM3的本地部署

    英特爾 OpenVINO? 工具套件是一款開源 AI 推理優(yōu)化部署的工具套件,可幫助開發(fā)人員和企業(yè)加速生成式人工智能 (AIGC)、大語言模型、計算機視覺和自然語言處理等 AI 工作負載,簡化深度學(xué)習(xí)推理的開發(fā)和
    的頭像 發(fā)表于 04-03 18:18 ?2050次閱讀
    簡單三步使用<b class='flag-5'>OpenVINO</b>?搞定ChatGLM<b class='flag-5'>3</b>的本地<b class='flag-5'>部署</b>

    使用CUBEAI部署tflite模型到STM32F0模型創(chuàng)建失敗怎么解決?

    CRC IP,用MX生成工程時已經(jīng)啟用了CRC,代碼也有。 但是依舊無法生成模型。 想問問該如何解決,還是說F0還是無法部署AI模型
    發(fā)表于 03-15 08:10

    如何在MacOS上編譯OpenVINO C++項目呢?

    英特爾公司發(fā)行的模型部署工具 OpenVINO 模型部署套件,可以實現(xiàn)在不同系統(tǒng)環(huán)境下運行,且發(fā)布的 O
    的頭像 發(fā)表于 01-11 18:07 ?895次閱讀
    如何在MacOS上編譯<b class='flag-5'>OpenVINO</b> C++項目呢?

    OpenVINO? 賦能千元級『哪吒』AI開發(fā)套件大語言模型 | 開發(fā)者實戰(zhàn)

    作者:英特爾AI軟件布道師武卓博士前言在人工智能的飛速發(fā)展,大語言模型,如Stable-Zephyr-3b,已成為研究和應(yīng)用的熱點。這些模型以其強大的文本理解和生成能力在多個領(lǐng)域大放
    的頭像 發(fā)表于 01-06 08:05 ?1518次閱讀
    <b class='flag-5'>OpenVINO</b>? 賦能千元級『哪吒』AI開發(fā)套件大語言<b class='flag-5'>模型</b> | 開發(fā)者實戰(zhàn)
    主站蜘蛛池模板: 无码AV毛片色欲欧洲美洲| 和姐姐做插得很深| 99精品99| XXX欧美性兽交| www.色片| 国产99精品视频| 国产人妻人伦精品1国产| 国产亚洲AV精品无码麻豆| 国产久青青青青在线观看| 国产在线观看不卡| 寂寞少妇直播| 蜜臀AV中文字幕熟女人妻| 尿孔 调教 扩张| 特级黑人三人共一女| 亚洲欧洲日本天天堂在线观看| 浴室里强摁做开腿呻吟的漫画| 97成人在线| 国产偷国产偷亚洲高清人乐享 | 久久AV喷吹AV高潮欧美| 美女伸开两腿让我爽| 色欲久久综合亚洲精品蜜桃| 午夜一级毛片看看| 777久久人妻少妇嫩草AV| 成人无码精品1区2区3区免费看 | 99国产在线精品观看二区| 高H辣肉办公室| 久久re热在线视频精69| 日本在线免费播放| 一个人的免费完整在线观看HD | 永久免费毛片| 闺蜜扒开我尿口使劲揉| 久久资源365| 幸福草电视剧演员表介绍| mm625亚洲人成电影网| 九九电影伦理片| 校园全肉高h湿一女多男| 3DNagoonimation动漫| 国外色幼网| 影音先锋av电影| 国产亚洲精品在线视频| 人妻久久久精品99系列AV|