久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

OpenVINO2022全新C SDK使用解析

 mynotebook 2022-05-04 發(fā)布于湖南
圖片

安裝OpenVINO2022.1

2022版本的安裝包跟之前的不一樣地方包括:

-OpenCV部分不在默認(rèn)安裝包中-Dev Tools 跟 Runtime安裝方式不同-Dev Tools包模型轉(zhuǎn)換器跟其它開(kāi)發(fā)組件-Runtime主要負(fù)責(zé)模型推理,,支持Python跟C++

在intel官方下載頁(yè)面選擇如下:

圖片

下載之后點(diǎn)擊安裝,,出現(xiàn)的第一個(gè)畫(huà)面如下:

圖片

點(diǎn)擊【Continue】

圖片

選擇第一種,推薦安裝方式,,點(diǎn)擊【Continue】

圖片

點(diǎn)擊【Install】就會(huì)開(kāi)始正式安裝過(guò)程!這個(gè)過(guò)程中如果你沒(méi)有安裝VS2019會(huì)有一個(gè)警告出現(xiàn),,直接選擇忽視,繼續(xù)安裝即可!因?yàn)槲襐S2017,。

配置OpenVINO2022開(kāi)發(fā)環(huán)境

主要是針對(duì)C++部分,使用VS2017配置,。這部分跟以前沒(méi)有太大差異,同樣需要配置包含路徑,,庫(kù)目錄與附加依賴(lài)項(xiàng)添加,跟環(huán)境變量,,這幾個(gè)部分的配置分別如下:

1. 包含目錄

圖片

2. 庫(kù)目錄

圖片

3. 附加依賴(lài)項(xiàng)添加

圖片

這樣就完成了

最后配置好環(huán)境變量

圖片

然后重啟VS2017,執(zhí)行如下代碼測(cè)試:

#include <openvino/openvino.hpp>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(int argc, char** argv) {
    // 創(chuàng)建IE插件, 查詢(xún)支持硬件設(shè)備
    ov::Core ie;
    vector<string> availableDevices = ie.get_available_devices();
    for (int i = 0; i < availableDevices.size(); i++) {
        printf('supported device name : %s \n', availableDevices[i].c_str());
    }
    return 0;
}

運(yùn)行結(jié)果如下:

圖片

最新SDK使用解析

OpenVINO2022版本推理開(kāi)發(fā)跟之前版本最大的不同在于全新的SDK設(shè)計(jì),新的SDK設(shè)計(jì)顯然對(duì)齊了ONNXRUNTIME,,libtorch等這些部署框架簡(jiǎn)約SDK設(shè)計(jì)中的優(yōu)點(diǎn),從模型的讀取,,到數(shù)據(jù)預(yù)處理,到模型推理,、預(yù)測(cè)結(jié)果解析,在數(shù)據(jù)流通跟推理流程方面都比之前的SDK簡(jiǎn)單易學(xué),,非常方便開(kāi)發(fā)者使用。

01

模型加載

ov::CompiledModel compiled_model = ie.compile_model(onnx_path, 'AUTO');ov::InferRequest infer_request = compiled_model.create_infer_request();
兩行代碼就搞定了,,之前的SDK比較啰嗦,很不符合設(shè)計(jì)的KISS規(guī)則,,現(xiàn)在直接兩行代碼就可以得到推理請(qǐng)求了。另外支持”AUTO”自動(dòng)模式硬件支持,,讓開(kāi)發(fā)這不用在選擇硬件平臺(tái)

02

獲取輸入

ov::Tensor input_tensor = infer_request.get_input_tensor();ov::Shape tensor_shape = input_tensor.get_shape();
也是兩行代碼搞定,,另外再也不用手動(dòng)設(shè)置各種數(shù)據(jù)格式了,,這樣可以避免開(kāi)發(fā)者犯一些數(shù)據(jù)類(lèi)型設(shè)置錯(cuò)誤,,提高了開(kāi)發(fā)接口的易用性,這點(diǎn)必須點(diǎn)贊,!

03

把圖像填充輸入tensor數(shù)據(jù)

size_t num_channels = tensor_shape[1];
size_t h = tensor_shape[2];
size_t w = tensor_shape[3];
Mat blob_image;
resize(src, blob_image, Size(w, h));
blob_image.convertTo(blob_image, CV_32F);
blob_image = blob_image / 255.0;


// NCHW
float* image_data = input_tensor.data();
for (size_t row = 0; row < h; row++) {
         for (size_t col = 0; col < w; col++) {
                  image_data[row * w + col] = blob_image.at(row, col);
         }
}
跟之前類(lèi)似,,這步一直很簡(jiǎn)單,,這樣就OK了,。

4

推理跟后處理

// 執(zhí)行預(yù)測(cè)
infer_request.infer();

// 獲取輸出數(shù)據(jù)
auto output_tensor = infer_request.get_output_tensor();
const float* detection = (float*)output_tensor.data();
很容易獲取輸出的數(shù)據(jù),有了輸出數(shù)據(jù),,下面的解析就會(huì)簡(jiǎn)單很多,可以說(shuō)相比之前代碼,,這里是一步獲取輸出數(shù)據(jù)。

最終UNet道理裂紋分割的模型運(yùn)行結(jié)果如下:

圖片

最后總結(jié)

01

輸入與輸出獲取

ov::InferRequest支持直接獲取輸入跟輸出tensor,,分別對(duì)應(yīng)方法是

get_input_tensor()get_output_tensor()
這兩個(gè)方法只有在模型只有一個(gè)輸入跟輸出的時(shí)候才會(huì)正確工作,。當(dāng)模型有多個(gè)輸入跟輸出的時(shí)候請(qǐng)使用
get_tensor(name)
方法, 它支持名稱(chēng)作為參數(shù)獲取多個(gè)輸入跟輸出tensor。

02

C4996錯(cuò)誤

第一次配置VS2017之后,,運(yùn)行會(huì)得到C4996錯(cuò)誤,,請(qǐng)把SDL檢查關(guān)掉就好拉,怎么關(guān)掉看這里即可:

圖片

03

代碼行變動(dòng)

升級(jí)為OpenVINO2022版本之后,,我之前的推理程序代碼行數(shù)會(huì)下降20~30代碼行左右,,最新版本C++ SDK真的很不錯(cuò),!

04

Python版本支持

只需要再做一步即可,打開(kāi)環(huán)境變量,,新建PYTHONPATH,如下圖:

圖片

記得輸入的路徑最后版本號(hào)一定要跟系統(tǒng)安裝的python版本號(hào)保持一致,。測(cè)試:

圖片

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多