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

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

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

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

自訓(xùn)練Pytorch模型使用OpenVINO?優(yōu)化并部署在AI愛克斯開發(fā)板

英特爾物聯(lián)網(wǎng) ? 來(lái)源:英特爾物聯(lián)網(wǎng) ? 2023-05-26 10:23 ? 次閱讀

完成人:深圳技術(shù)大學(xué) 黎逸鵬(中德智能制造學(xué)院2021級(jí)本科生)

指導(dǎo)教授:張陽(yáng)英特爾邊緣計(jì)算創(chuàng)新大使,深圳技術(shù)大學(xué)中德智能制造學(xué)院副教授)

簡(jiǎn)介

本文章將依次介紹如何將 Pytorch 自訓(xùn)練模型經(jīng)過一系列變換變成 OpenVINOIR 模型形式,而后使用 OpenVINO Python API 對(duì) IR 模型進(jìn)行推理,并將推理結(jié)果通過 OpenCV API 顯示在實(shí)時(shí)畫面上。

本文 Python 程序的開發(fā)環(huán)境是 Ubuntu20.04 LTS + PyCharm,硬件平臺(tái)是 AIxBoard 愛克斯板開發(fā)者套件。

本文項(xiàng)目背景:針對(duì)2023第十一屆全國(guó)大學(xué)生光電設(shè)計(jì)競(jìng)賽賽題2“迷宮尋寶”光電智能小車題目。基于該賽項(xiàng)寶藏樣式,我通過深度學(xué)習(xí)訓(xùn)練出能分類四種不同顏色不同標(biāo)記形狀骨牌的模型,骨牌樣式詳見圖1.1。

08b0c758-fb2d-11ed-90ce-dac502259ad0.png

圖1.1 四種骨牌類型

完整指導(dǎo)視頻

1.2/Pytorch pth 模型轉(zhuǎn)換成

OpenVINO IR模型

Pytorch是 一個(gè)基于 Torch 的開源 Python 學(xué)習(xí)庫(kù),是一個(gè)以 Python 優(yōu)先的深度學(xué)習(xí)框架。Pth 模型文件是 Pytorch 進(jìn)行模型保存時(shí)的一種模型格式,OpenVINO 暫不支持直接對(duì) Pth 模型文件進(jìn)行推理,所以我們要將 Pth 格式的模型先轉(zhuǎn)換成 ONNX 格式文件,再通過 OpenVINO 自帶的 Model Optimizer(模型優(yōu)化器)進(jìn)一步轉(zhuǎn)變成 OpenVINO IR 模型。處理過程如下所示:

1. 通過 Pytorch 將 Pth 模型轉(zhuǎn)換成 ONNX 模型

轉(zhuǎn)換后的文件(Pth —> ONNX):

import torch.onnx

# SZTU LIXROBO 23.5.14 #

#******************************************#

# 1. 模型加載

model = torch.load('Domino_best.pth', map_location=torch.device('cpu'))

# 2. 設(shè)置模型為評(píng)估模式而非訓(xùn)練模式

model.eval()

# 3. 生成隨機(jī)從標(biāo)準(zhǔn)正態(tài)分布抽取的張量

dummy_input = torch.randn(1,3,224,224,device='cpu')

# 4. 導(dǎo)出ONNX模型(保存訓(xùn)練參數(shù)權(quán)重)

torch.onnx.export(model,dummy_input,"Domino_best.onnx",export_params=True)

2. 通過終端來(lái)將 ONNX 模型轉(zhuǎn)化成 OpenVINO IR 模型格式

在終端中輸入(Terminal):

mo --input_model Domino_best.onnx --compress_to_fp16

# mo 啟動(dòng)OpenVINO 的Model Optimizer(模型優(yōu)化器)

# input_model 輸入您轉(zhuǎn)換的ONNX模型內(nèi)容根的路徑

# compress _to_fp16 將模型輸出精度變?yōu)镕P16

等后一會(huì),終端輸出:

08c68e3a-fb2d-11ed-90ce-dac502259ad0.png

代表 ONNX 模型轉(zhuǎn)換成 OpenVINO IR 模型成功。這里的信息告訴我們?cè)?Model 是 IR 11 的形式,并分別保存在 .xml 和 .bin 文件下。

轉(zhuǎn)換后的文件(ONNX —> IR 11):

08dace72-fb2d-11ed-90ce-dac502259ad0.png

mapping 文件是一些轉(zhuǎn)換信息,暫時(shí)不會(huì)用到該文件。

至此,我們模型轉(zhuǎn)換的全部工作已經(jīng)完成,接下來(lái)就是運(yùn)用 OpenVINO Runtime 對(duì) IR 11 模型進(jìn)行推理。

1.3/用OpenVINORuntime

對(duì) IR 11 模型進(jìn)行推理

在這一章節(jié)里我們將在 Pycharm 中使用 OpenVINO Runtime 對(duì)我們?cè)?.2章中轉(zhuǎn)換得來(lái)的 IR 11 模型進(jìn)行推理,并將推理結(jié)果實(shí)時(shí)展現(xiàn)在攝像頭畫面中。

在開始之前,我們不妨了解推理程序的整個(gè)工作流程:

導(dǎo)入必要的功能庫(kù)(如 openvino.runtime 以及 cv2和 numpy)

探測(cè)硬件平臺(tái)所能使用的可搭載設(shè)備

創(chuàng)建核心對(duì)象以及加載模型和標(biāo)簽

輸入圖像進(jìn)行預(yù)處理,正則化,轉(zhuǎn)變成網(wǎng)絡(luò)輸入形狀

將處理后的圖像交由推理程序進(jìn)行推理,得到推理結(jié)果和處理時(shí)間并顯示出來(lái)

1.3.1. 導(dǎo)入功能包

import openvino.runtime as ov

import numpy as np

import cv2

import time

這里一共導(dǎo)入4個(gè)功能包

openvino.runtime 這是 openvino runtime 推理的主要功能包,也可用 openvino.inference_engine 進(jìn)行推理,過程大體是一致的。

numpy 這是常用的一個(gè) Python 開源科學(xué)計(jì)算庫(kù)

cv2 也即 OpenCV,用來(lái)處理有關(guān)圖像的一些信息

time 記錄系統(tǒng)運(yùn)行時(shí)間

1.3.2 設(shè)備檢測(cè)以及模型載入

我們可以使用 Core 對(duì)象中的 available_devices 函數(shù)來(lái)獲取當(dāng)前硬件平臺(tái)可供推理引擎使用的設(shè)備。

core = ov.Core()

print(core.available_devices)

如圖所示我們能得到在 AlxBoard 愛克斯開發(fā)板上可供我們使用的推理設(shè)備有 CPU 和 GPU

08e9f08c-fb2d-11ed-90ce-dac502259ad0.png

將模型進(jìn)行載入:

# SZTU LIXROBO 23.5.19 #

#************************************#

# 1. 創(chuàng)建核心對(duì)象

core = ov.Core()

# 2. 規(guī)定IR 11模型的模型文件和權(quán)重文件

model = "Domino_best.xml"

weights = "Domino_best.bin"

# 3. 將模型文件和權(quán)重文件進(jìn)行讀取

model_ir = core.read_model(model= model,weights=weights)

# 4. 把模型加載到設(shè)備上

(此處使用HETERO插件進(jìn)行異構(gòu),加載到GPU和CPU上)

com_model_ir= core.compile_model(model=model_ir,device_name="HETERO:GPU,CPU")

# 5. 獲取模型輸出層

output_layer_ir = com_model_ir.outputs[0]

# 6. 由于是簡(jiǎn)單模型,故label手動(dòng)注入,也可使用導(dǎo)入標(biāo)簽文件等其他方式

label = ['BlueFake','BlueTrue','RedFake','RedTrue']

1.3.3 圖像預(yù)處理

得到的圖像我們需要做一些預(yù)先處理才能輸入到推理引擎中進(jìn)行推理并得到結(jié)果。這一小節(jié)我們將展示如何把圖像進(jìn)行處理。

#************************************#

# 圖像預(yù)處理、歸一化 #

def normalize(img: np.ndarray) ->np.ndarray:

# 1. 類型轉(zhuǎn)換成np.float32

img = img.astype(np.float32)

# 2. 設(shè)置常用均值和標(biāo)準(zhǔn)差來(lái)正則化

mean =(0.485,0.456,0.406)

std =(0.299,0.224,0.255)

img /=255.0

img -=mean

img /=std

# 3. 返回處理后的img

return img

#************************************#

# 圖像處理函數(shù) #

def img_pre(img):

# 1. 對(duì)OV輸入圖像顏色模型從BGR轉(zhuǎn)變成RGB

img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)

# 2. 對(duì)圖像進(jìn)行裁切

res_img = cv2.resize(img, (224, 224))

# 3. 使用我們定義的預(yù)處理函數(shù)對(duì)圖像進(jìn)行處理

nor_img = normalize(res_img)

# 4. 將處理好的圖像轉(zhuǎn)變?yōu)榫W(wǎng)絡(luò)輸入形狀

nor_input_img = np.expand_dims(np.transpose(nor_img, (2, 0, 1)), 0)

# 5. 返回處理結(jié)果

return nor_input_img

1.3.4 推理過程以及結(jié)果展示

在上一節(jié)中我們把輸入圖像所要進(jìn)行的預(yù)處理圖像進(jìn)行了一個(gè)定義,在這一小節(jié)則是 OpenVINO Runtime 推理程序的核心。

#************************************#

# 推理主程序 #

def image_infer(img):

# 1. 設(shè)置記錄起始時(shí)間

start_time = time.time()

# 2. 將圖像進(jìn)行處理

imgb = img_pre(img)

# 3. 輸入圖像進(jìn)行推理,得到推理結(jié)果

res_ir = com_model_ir([imgb])[output_layer_ir]

# 4. 對(duì)結(jié)果進(jìn)行歸一化處理,使用Sigmod歸一

Confidence_Level = 1/(1+np.exp(-res_ir[0]))

# 5. 將結(jié)果進(jìn)行從小到大的排序,便于我們獲取置信度最高的類別

result_mask_ir = np.squeeze(np.argsort(res_ir, axis=1)).astype(np.uint8)

# 6. 用CV2的putText方法將置信度最高對(duì)應(yīng)的label以及其置信度繪制在圖像上

img = cv2.putText(img,str(label[result_mask_ir[3]])+' '+ str(Confidence_Level[result_mask_ir[3]]),(50,80), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2,cv2.LINE_AA)

# 7. 記錄推理結(jié)束時(shí)間

end_time = time.time()

# 8. 計(jì)算出攝像頭運(yùn)行幀數(shù)

FPS = 1 / (end_time - start_time)

# 9. 將幀數(shù)繪制在圖像上

img = cv2.putText(img, 'FPS ' + str(int(FPS)), (50, 40), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2,cv2.LINE_AA)

# 10. 返回圖像

return img

以上推理函數(shù)編寫已經(jīng)完成。以下是運(yùn)行主程序:

#********************主程序***********************#

# 1. 獲取攝像頭

cap = cv2.VideoCapture(0)

# 2. 循環(huán)判斷

while 1:

# 1. 獲得實(shí)時(shí)畫面

success,frame = cap.read()

# 2. 把實(shí)時(shí)畫面交由推理函數(shù)進(jìn)行推理

frame = image_infer(frame)

# 3. 將畫面顯示在窗口

cv2.imshow("img",frame)

cv2.waitKey(1)

當(dāng)我們運(yùn)行該程序時(shí),會(huì)得到如下畫面。

08fdc364-fb2d-11ed-90ce-dac502259ad0.png

如圖所示,我們的 Pytorch 模型成功在 OpenVINO的優(yōu)化以及推理下成功部署在 AlxBoard 愛克斯開發(fā)板,幀數(shù)在40-60之間,推理的結(jié)果非常好,很穩(wěn)定。

1.4/與 Pytorch 模型

CPU 推理進(jìn)行比較

原先推理的過程我們是通過 torch 功能庫(kù)進(jìn)行推理,我們將兩者進(jìn)行比較。

09234dbe-fb2d-11ed-90ce-dac502259ad0.png

(左為 OpenVINO 優(yōu)化推理,右為 torch 推理)

如圖所示 OpenVINO 優(yōu)化推理過后的結(jié)果從實(shí)際幀數(shù)上看大約有5-8倍的提升,推理精度也有少許加強(qiáng)。

1.5結(jié)論

自訓(xùn)練 Pytorch 模型在通過 OpenVINOModel Optimizer 模型優(yōu)化后用 OpenVINO Runtime 進(jìn)行推理,推理過程簡(jiǎn)單清晰。推理僅需幾個(gè)核心函數(shù)便可實(shí)現(xiàn)基于自訓(xùn)練 Pytorch 模型的轉(zhuǎn)化以及推理程序。

OpenVINO 簡(jiǎn)單易上手,提供了強(qiáng)大的資料庫(kù)供學(xué)者查閱,其包含了從模型建立到模型推理的全過程。

審核編輯:湯梓紅

聲明:本文內(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)投訴
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    30728

    瀏覽量

    268886
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97372
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3226

    瀏覽量

    48807
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    807

    瀏覽量

    13200

原文標(biāo)題:自訓(xùn)練Pytorch模型使用OpenVINO?優(yōu)化并部署在AI愛克斯開發(fā)板| 開發(fā)者實(shí)戰(zhàn)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Pytorch模型訓(xùn)練實(shí)用PDF教程【中文】

    本教程以實(shí)際應(yīng)用、工程開發(fā)為目的,著重介紹模型訓(xùn)練過程中遇到的實(shí)際問題和方法。機(jī)器學(xué)習(xí)模型開發(fā)
    發(fā)表于 12-21 09:18

    介紹STM32cubeIDE上部署AI模型的系列教程

    介紹STM32cubeIDE上部署AI模型的系列教程,開發(fā)板型號(hào)STM32H747I-disco,值得一看。MCUAI原文鏈接:【嵌入式
    發(fā)表于 12-14 09:05

    怎樣使用PyTorch Hub去加載YOLOv5模型

    PyTorch Hub 加載預(yù)訓(xùn)練的 YOLOv5s 模型,model傳遞圖像進(jìn)行推理。'yolov5s'是最輕最快的 YOLOv5 型號(hào)。有關(guān)所有可用
    發(fā)表于 07-22 16:02

    【KV260視覺入門套件試用體驗(yàn)】Vitis AI 構(gòu)建開發(fā)環(huán)境,使用inspector檢查模型

    compiler來(lái)將優(yōu)化后的模型轉(zhuǎn)換為賽靈思硬件平臺(tái)支持的格式,生成相應(yīng)的xmodel,來(lái)目標(biāo)設(shè)備上部署我的
    發(fā)表于 10-14 15:34

    C++中使用OpenVINO工具包部署YOLOv5模型

    下載并轉(zhuǎn)換YOLOv5預(yù)訓(xùn)練模型的詳細(xì)步驟,請(qǐng)參考:《基于OpenVINO?2022.2和蝰蛇峽谷優(yōu)化
    的頭像 發(fā)表于 02-15 16:53 ?4646次閱讀

    AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8分類模型

    本系列文章將在 AI 愛克斯開發(fā)板上使用 OpenVINO 開發(fā)套件依次部署
    的頭像 發(fā)表于 05-05 11:47 ?1051次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>AI</b><b class='flag-5'>愛克斯</b><b class='flag-5'>開發(fā)板</b>上用<b class='flag-5'>OpenVINO</b>?加速YOLOv8分類<b class='flag-5'>模型</b>

    AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測(cè)模型

    AI 愛克斯開發(fā)板上用 OpenVINO 加速 YOLOv8 分類模型》介紹了
    的頭像 發(fā)表于 05-12 09:08 ?1312次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>AI</b><b class='flag-5'>愛克斯</b><b class='flag-5'>開發(fā)板</b>上用<b class='flag-5'>OpenVINO</b>?加速YOLOv8目標(biāo)檢測(cè)<b class='flag-5'>模型</b>

    AI愛克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測(cè)模型

    AI愛克斯開發(fā)板上用OpenVINO加速YOLOv8分類模型》介紹了
    的頭像 發(fā)表于 05-26 11:03 ?1240次閱讀
    <b class='flag-5'>AI</b><b class='flag-5'>愛克斯</b><b class='flag-5'>開發(fā)板</b>上使用<b class='flag-5'>OpenVINO</b>加速YOLOv8目標(biāo)檢測(cè)<b class='flag-5'>模型</b>

    AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8-seg實(shí)例分割模型

    AI 愛克斯開發(fā)板上用 OpenVINO 加速 YOLOv8 目標(biāo)檢測(cè)模型》介紹了
    的頭像 發(fā)表于 06-05 11:52 ?1000次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>AI</b><b class='flag-5'>愛克斯</b><b class='flag-5'>開發(fā)板</b>上用<b class='flag-5'>OpenVINO</b>?加速YOLOv8-seg實(shí)例分割<b class='flag-5'>模型</b>

    如何將Pytorch訓(xùn)練模型變成OpenVINO IR模型形式

    本文章將依次介紹如何將Pytorch訓(xùn)練模型經(jīng)過一系列變換變成OpenVINO IR模型形式,
    的頭像 發(fā)表于 06-07 09:31 ?1985次閱讀
    如何將<b class='flag-5'>Pytorch</b><b class='flag-5'>自</b><b class='flag-5'>訓(xùn)練</b><b class='flag-5'>模型</b>變成<b class='flag-5'>OpenVINO</b> IR<b class='flag-5'>模型</b>形式

    AI愛克斯開發(fā)板上用OpenVINO?加速YOLOv8-seg實(shí)例分割模型

    AI 愛克斯開發(fā)板上用 OpenVINO 加速 YOLOv8 目標(biāo)檢測(cè)模型》介紹了
    的頭像 發(fā)表于 06-30 10:43 ?904次閱讀
    <b class='flag-5'>在</b><b class='flag-5'>AI</b><b class='flag-5'>愛克斯</b><b class='flag-5'>開發(fā)板</b>上用<b class='flag-5'>OpenVINO</b>?加速YOLOv8-seg實(shí)例分割<b class='flag-5'>模型</b>

    使用OpenVINO優(yōu)化部署訓(xùn)練好的YOLOv7模型

    《英特爾銳炫 顯卡+ oneAPI 和 OpenVINO 實(shí)現(xiàn)英特爾 視頻 AI 計(jì)算盒訓(xùn)推一體-上篇》一文中,我們?cè)敿?xì)介紹基于英特爾 獨(dú)立顯卡搭建 YOLOv7 模型
    的頭像 發(fā)表于 08-25 11:08 ?1512次閱讀
    使用<b class='flag-5'>OpenVINO</b><b class='flag-5'>優(yōu)化</b><b class='flag-5'>并</b><b class='flag-5'>部署</b><b class='flag-5'>訓(xùn)練</b>好的YOLOv7<b class='flag-5'>模型</b>

    基于OpenVINO英特爾開發(fā)套件上實(shí)現(xiàn)眼部追蹤

    本文將以訓(xùn)練一個(gè)眼部追蹤 AI模型為背景,介紹從 Pytorch 自定義網(wǎng)絡(luò)模型,到使用 Open
    的頭像 發(fā)表于 09-18 10:11 ?758次閱讀

    基于Pytorch訓(xùn)練部署ONNX模型TDA4應(yīng)用筆記

    電子發(fā)燒友網(wǎng)站提供《基于Pytorch訓(xùn)練部署ONNX模型TDA4應(yīng)用筆記.pdf》資料免費(fèi)
    發(fā)表于 09-11 09:24 ?0次下載
    基于<b class='flag-5'>Pytorch</b><b class='flag-5'>訓(xùn)練</b><b class='flag-5'>并</b><b class='flag-5'>部署</b>ONNX<b class='flag-5'>模型</b><b class='flag-5'>在</b>TDA4應(yīng)用筆記

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

    OpenVINO Model Server(OVMS)是一個(gè)高性能的模型部署系統(tǒng),使用C++實(shí)現(xiàn),并在Intel架構(gòu)上的部署進(jìn)行了優(yōu)化,使用
    的頭像 發(fā)表于 11-01 14:19 ?273次閱讀
    使用<b class='flag-5'>OpenVINO</b> Model Server在哪吒<b class='flag-5'>開發(fā)板</b>上<b class='flag-5'>部署</b><b class='flag-5'>模型</b>
    主站蜘蛛池模板: 野花视频在线观看免费最新动漫| 无码天堂亚洲国产AV久久| 肉动漫3D卡通无修在线播放| 无限好资源免费观看| 一区二区不卡在线视频| qvod在线观看| 果冻传媒色AV国产播放| 女人张开腿让男人添| 午夜亚洲国产理论片二级港台二级| 亚洲欧美自拍明星换脸| 99婷婷久久精品国产一区二区| 国产精品美女WWW爽爽爽视频| 久久久久久久99精品免费观看| 日本高清无人区影院| 亚洲中文字幕一二三四区苍井空 | 在线观看中文字幕国产| 超级乱淫片午夜电影网99| 精品一产品大全| 色小姐.com| 最近日本字幕MV免费观看在线| 国产成人无码精品久久久影院| 伦理片天堂eeuss影院2o12| 午夜男人免费福利视频| avove旗袍丝袜高跟啪啪| 精品久久久亚洲精品中文字幕| 日韩欧美亚洲精品综合在线 | 国产高清亚洲| 暖暖 日本 视频 在线观看免费| 亚洲福利电影一区二区?| www.绿巨人| 老师紧窄粉嫩| 亚洲精品拍拍央视网出文| 动漫护士被乳羞羞漫| 女王羞辱丨vk| 在线欧美免费人成视频| 国产一区二区不卡老阿姨| 乳欲性高清在线| AV天堂午夜精品一区| 久久综合给会久久狠狠狠| 亚洲国产中文字幕新在线| 国产成人精品男人的天堂网站|