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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

YOLOX模型ONNX格式說明

我快閉嘴 ? 來源:OpenCV學堂 ? 作者:gloomyfish ? 2022-04-13 08:35 ? 次閱讀

yolox 推理openvino與c++支持

YOLOX模型ONNX格式說明

我記得大概是在去年七月份的時候我寫過一篇文章是介紹YOLOX+OpenVINO推理的,下載YOLOX的ONNX格式模型(github上可以下載)

https://github.com/Megvii-BaseDetection/YOLOX/tree/main/demo/ONNXRuntimehttps://github.com/Megvii-BaseDetection/YOLOX/releases/download/0.1.1rc0/yolox_s.onnx

下載ONNX格式模型,打開之后如圖:

YOLOX模型ONNX格式說明

輸入格式:1x3x640x640,默認BGR,無需歸一化。輸出格式:1x8400x85

01

什么是85

其中85的前四個是cx、cy、w、h大小,第五個是object預測得分,后面80個是COCO類別。

02

什么是8400

模型在數據輸入端幾乎與YOLOv5的代碼一致,沒有什么特別之處,唯一不同的在于輸出層的解析,是把三個不同的輸出層合并在一個里面了,分別是80x80, 40x40, 20x20, 每個特征點預測,所以總數才會是80x80+40x40+20x20 =8400

03

輸出層解析解密

最后一層輸出,這點跟YOLOv5最新版本輸出層有點相似,但是YOLOv5的輸出層更近一步,已經計算了相關的矩形框位置信息,直接輸出就是絕對位置信息,而YOLOX還是輸出原始的相對位置信息,需要解析一波才行(跟最新的YOLOv5相同),說明YOLOX的工程化方面還有待提升!不是開源就完事了!

OpenVINO推理解析

必須說明一點,參考了官方的部分代碼,然后在上面猛改一通(原因是官方代碼寫的不是很好),改完之后,封裝成一個類了,主要的方法跟我封裝的YOLOv5的推理類相似,導出了兩個函數方法

void YOLOXDetector::string onnxpath, float nms, float score)

該方法表示初始化IE,然后加載模型,設置nms閾值與置信度閾值score,創建一個推理請求,同時初始化每一層上對應每個特征點尺度比率。這部分的代碼如下:

voidYOLOXDetector::initConfig(std::stringonnxpath,floatnms,floatscore){
this->nms_threshold=nms;
this->score_threshold=score;
Coreie;
CNNNetworknetwork=ie.ReadNetwork(onnxpath);
InputInfo::Ptrinput_info=network.getInputsInfo().begin()->second;
this->input_name=network.getInputsInfo().begin()->first;

DataPtroutput_info=network.getOutputsInfo().begin()->second;
this->out_name=network.getOutputsInfo().begin()->first;
output_info->setPrecision(Precision::FP32);

ExecutableNetworkexecutable_network=ie.LoadNetwork(network,"CPU");
this->infer_request=executable_network.CreateInferRequest();

std::vector<int>strides={8,16,32};
generate_grids_and_stride(INPUT_W,INPUT_H,strides,grid_strides);
}

檢測函數

void detect(cv::Mat & frame, std::vector&results);

該方法完成檢測,并把檢測結果作為resulte返回,相關的代碼實現可以參考之前的文章,感覺并沒有什么不同,其中最大的不同的地方是對輸出結果的解析,這邊代碼作為單獨的方法函數實現如下(參考官方):

voidYOLOXDetector::generate_yolox_proposals(std::vectorgrid_strides,constfloat*feat_ptr,floatprob_threshold,std::vector&objects)
{
constintnum_anchors=grid_strides.size();
for(intanchor_idx=0;anchor_idxconstintgrid0=grid_strides[anchor_idx].grid0;
constintgrid1=grid_strides[anchor_idx].grid1;
constintstride=grid_strides[anchor_idx].stride;

constintbasic_pos=anchor_idx*(NUM_CLASSES+5);

//yolox/models/yolo_head.pydecodelogic
floatx_center=(feat_ptr[basic_pos+0]+grid0)*stride;
floaty_center=(feat_ptr[basic_pos+1]+grid1)*stride;
floatw=exp(feat_ptr[basic_pos+2])*stride;
floath=exp(feat_ptr[basic_pos+3])*stride;
floatx0=x_center-w*0.5f;
floaty0=y_center-h*0.5f;

floatbox_objectness=feat_ptr[basic_pos+4];
for(intclass_idx=0;class_idxfloatbox_cls_score=feat_ptr[basic_pos+5+class_idx];
floatbox_prob=box_objectness*box_cls_score;
if(box_prob>prob_threshold)
{
DetectResultobj;
obj.box.x=x0;
obj.box.y=y0;
obj.box.width=w;
obj.box.height=h;
obj.classId=class_idx;
obj.score=box_prob;
objects.push_back(obj);
}
}
}
}

最終調用該類實現推理就顯得特別簡單,對圖像跟視頻都是一樣,使用下面的代碼:

detector->initConfig(this->settings->getOnnxModelPath(),score,conf);
std::vectorresults;
detector->detect(frame,results);

最后我發現在onnxruntime上面也一樣可以,基本上重用了大部分的代碼,然后把它們與我之前寫YOLOv5+QT的演示整合了一下,這樣就變成YOLOv5+YOLOx支持OpenVINO/ONNXRUNTIME全部可行的推理,可以自由的通過界面切換!

運行結果如下(請允許我show一下界面):

YOLOX模型ONNX格式說明

YOLOX模型ONNX格式說明

YOLOX模型ONNX格式說明

掃碼查看OpenCV+Pytorch系統化學習路線圖

原文標題:OpenVINO +YOLOX最新版本推理演示

文章出處:【微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 格式
    +關注

    關注

    0

    文章

    23

    瀏覽量

    16886
  • 模型
    +關注

    關注

    1

    文章

    3243

    瀏覽量

    48840
  • 推理
    +關注

    關注

    0

    文章

    8

    瀏覽量

    7268
收藏 人收藏

    評論

    相關推薦

    cubemx ai導入onnx模型后壓縮失敗了怎么解決?

    cubemx ai導入onnx模型后壓縮失敗。請問我怎么解決
    發表于 03-19 07:58

    STM CUBE AI錯誤導入onnx模型報錯的原因?

    使用cube-AI分析模型時報錯,該模型是pytorch的cnn轉化成onnx ``` Neural Network Tools for STM32AI v1.7.0 (STM.ai v8.0.0-19389) INTER
    發表于 05-27 07:15

    yolox_bytetrack_osd_encode示例自帶的yolox模型效果不好是怎么回事?

    yolox_bytetrack_osd_encode示例自帶的模型如下,我看示例里面yolox_group.json、yolox_infer.json、
    發表于 07-05 07:51

    深度探索ONNX模型部署 精選資料分享

    這篇文章從多個角度探索了ONNX,從ONNX的導出到ONNX和Caffe的對比,以及使用ONNX遭遇的困難以及一些解決辦法,另...
    發表于 07-20 07:41

    ONNX的相關資料分享

    ONNX文件并生成特定平臺和運行框架所支持的神經網絡模型ONNX本身不是AI神經網絡運行框架,只是AI神經網絡模型通用中間描述文件格式Gi
    發表于 11-05 06:45

    如何使用Paddle2ONNX模型轉換工具將飛槳模型轉換為ONNX模型

    如何使用Paddle2ONNX模型轉換工具將飛槳模型轉換為ONNX模型
    發表于 12-29 07:42

    yolov5-face的pt模型是怎樣轉為onnx模型

    yolov5-face的pt模型是怎樣轉為onnx模型的?有哪些轉換步驟?
    發表于 02-21 07:19

    EIQ onnx模型轉換為tf-lite失敗怎么解決?

    我們正在嘗試將 tflite 框架與 npu 一起使用來進行機器學習。這是我們的步驟:1)用pytorch訓練一個模型2) 以onnx格式導出模型3) eiq工具的covnert
    發表于 03-31 08:03

    yolov7 onnx模型在NPU上太慢了怎么解決?

    我將 yolov7tiny.pt(yolov7-tiny 模型)轉換為具有 uint8 權重的 yolov7tiny.onnx,然后在 i.MX 8M Plus NPU 上運行
    發表于 04-04 06:13

    ONNX模型轉換為中間表示(IR)后,精度下降了怎么解決?

    ONNX 模型轉換為 IR。 與使用 PyTorch 運行 ONNX 模型相比,Ran IR 采用 基準 C++ 工具,其性能準確率降低了 20%。 無法確定如何對圖像進行預處理
    發表于 08-15 08:28

    將YOLOv5 ONNX模型轉換為中間表示(IR)格式時,收到與節點相關的錯誤怎么解決

    將 YOLOv5 ONNX 模型轉換為 IR 格式:python /opt/intel/openvino_2021/deployment_tools/model_optimizer/mo.py
    發表于 08-15 08:14

    將TensorFlow Lite模型轉換為ONNX

    由 Facebook 和 Microsoft 創建的開放格式神經網絡交換格式 ONNX,是一種用于表示機器學習模型
    的頭像 發表于 12-08 23:19 ?1403次閱讀

    YOLOX目標檢測模型的推理部署

    曠視科技開源了內部目標檢測模型-YOLOX,性能與速度全面超越YOLOv5早期版本!
    的頭像 發表于 04-16 23:00 ?3010次閱讀

    ONNX格式模型部署兼容性框架介紹

    ? ONNXRUNTIME介紹 ONNX格式模型部署兼容性最強的框架 ONNXRUNTIME,基本上不會有算子不支持跟不兼容的情況出現,只要能導出ONNX
    的頭像 發表于 06-19 11:50 ?2522次閱讀
    <b class='flag-5'>ONNX</b><b class='flag-5'>格式</b><b class='flag-5'>模型</b>部署兼容性框架介紹

    通過新的ONNX導出器簡化模型導出流程

    大家好。我叫Manav Dalal,今天我將講解如何通過新的ONNX導出器簡化模型導出流程。如果你還沒有聽說過ONNX,它是一種用于表示機器學習模型的開放
    的頭像 發表于 01-10 09:45 ?954次閱讀
    通過新的<b class='flag-5'>ONNX</b>導出器簡化<b class='flag-5'>模型</b>導出流程
    主站蜘蛛池模板: 种子在线搜索bt| 五月综合激情视频在线观看| 5x性区m免费毛片视频看看| 一级片一级片一级片| 四虎国产视频| 成年人黄色片视频| 性性欧美| 在线中文字幕一区| 四虎影院永久在线观看| 成人三级电影在线观看| 天堂网www中文在线| 亚洲精品第三页| 欧美色图色就是色| 国内精品视频在线| 久久狠狠躁免费观看| 国产性猛交xx乱| 入逼视频| 天堂网中文在线最新版| 男女交性视频免费播放视频| 欧美特黄一级视频| 免费人成网站线观看合集| 国内视频一区二区| 韩国三级精品| 日本乱妇| 人人入人人爱| 久久亚洲国产成人精品性色| 亚洲色图日韩| 综合网天天操天天射| 国产福利小视频在线观看| 男同小黄文| 国产一级在线观看www色| 天天操天天干天天摸| 国产精品高清免费网站| 国产香蕉75在线播放| 欧美性极品hd高清视频| 日本aaaa视频| 久久午夜视频| 四虎影院中文字幕| 天堂网中文| 天堂在线观看视频观看www| 午夜无遮挡怕怕怕免费视频|