在线观看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

    瀏覽量

    16992
  • 模型
    +關注

    關注

    1

    文章

    3448

    瀏覽量

    49706
  • 推理
    +關注

    關注

    0

    文章

    8

    瀏覽量

    7312
收藏 人收藏

    評論

    相關推薦

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

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

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

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

    使用模型優化器命令將ONNX模型轉換為OpenVINO? IR格式時出現“ReplacementID”錯誤怎么解決?

    使用模型優化器命令將 ONNX 模型轉換為 OpenVINO? IR 格式: --input_model \"{onnx_path} --
    發表于 03-05 09:41

    ONNX模型無法轉換為IR v10,為什么?

    使用以下命令將 ONNX* 模型轉換為 IR:mo --input_model model.onnx模型無法轉換為 IR v10,而是轉換為 IR v11。
    發表于 03-06 06:32

    ONNX模型轉換為中間表示 (IR) 格式,收到了錯誤的輸出是怎么回事?

    ONNX* 模型轉換為中間表示 (IR) 格式,并收到了錯誤的推斷輸出。自定義模型使用動態形狀。
    發表于 03-07 08:20

    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

    將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 ?1560次閱讀

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

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

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

    ? ONNXRUNTIME介紹 ONNX格式模型部署兼容性最強的框架 ONNXRUNTIME,基本上不會有算子不支持跟不兼容的情況出現,只要能導出ONNX
    的頭像 發表于 06-19 11:50 ?3058次閱讀
    <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 ?1199次閱讀
    通過新的<b class='flag-5'>ONNX</b>導出器簡化<b class='flag-5'>模型</b>導出流程
    主站蜘蛛池模板: 日韩黄色成人 | 国产一级一片免费播放视频 | 26uuu影院亚洲欧美综合 | 欧美黑人巨大日本人又爽又色 | 一个人看的www片免费高清视频 | 人人公开免费超级碰碰碰视频 | 手机看片国产免费久久网 | 天天插狠狠干 | 国产免费好大好硬视频 | 五月丁香啪啪 | 日韩精品一区二区在线观看 | 欧美久久天天综合香蕉伊 | 三级黄页 | 模特视频一二三区 | 5252a我爱haose01亚洲 | 美女视频黄视大全视频免费网址 | 综合网在线 | 久久久久国产精品免费免费 | 亚洲一区有码 | 色香蕉在线观看网站 | 免费一级特黄特色大片 | 51xx嘿嘿午夜| 特级淫片aaaaa片毛片 | 国产美女一级ba大片免色 | 91午夜在线观看 | 免费在线看a | 黄色国产在线观看 | 天天做天天爱天天做天天吃中 | 丁香激情综合网 | bt天堂新版中文在线地址 | 播放毛片 | 在线观看三级网站 | 日日干夜夜草 | 久久亚洲aⅴ精品网站婷婷 久久亚洲成人 | 天堂中文在线最新版地址 | 夜夜春夜夜夜夜猛噜噜噜噜噜 | 日本xxxxbbbb| 五月综合色婷婷影院在线观看 | 国产婷婷 | 最近高清在线国语 | 亚洲影视一区二区 |