91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

基于Tengine實(shí)現(xiàn)yolov4的cpu推理講解

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-15 00:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本期講解便是基于 Tengine 實(shí)現(xiàn) yolov4的 cpu推理

完成動(dòng)機(jī):

主要是為了熟悉tengine的推理部署流程

一、模型轉(zhuǎn)換

采用下面鏈接中yolov4的模型權(quán)重和配置文件

https://github.com/ultralytics/yolov3github.com

源模型使用的是darknet格式,因?yàn)閥olov4新增了mish算子,所以需要增加對(duì)應(yīng)算子的序列化代碼才能正常轉(zhuǎn)換,下面是我的代碼改動(dòng),基本按照tanh算子進(jìn)行相應(yīng)增加。

https://github.com/zjd1988/Tengine-Convert-Toolsgithub.com

convert tools增加算子的詳細(xì)流程,參考官方增加自定義算子步驟:

(1)在operator/include/operator目錄下增加mish.hpp 和mish/_param.hpp/_文件,/_由于mish算子不需要額外的參數(shù)配置,因此mish/_para.hpp并沒(méi)有添加。mish.hpp內(nèi)容可以參考其他類(lèi)似沒(méi)有參數(shù)配置的算子(比如tanh),在operator/operator 目錄下增加mish.cpp,增加算子實(shí)現(xiàn)代碼;

(2)在operator/operator目錄下增加mish算子內(nèi)存分配的代碼,因?yàn)閙ish算子不涉及這部分修改,并未做任何修改

(3)在operator/operator/plugin/init.cpp文件中的operator/_plugin/_init函數(shù)中增加算子的注冊(cè)函數(shù)調(diào)用

(4)增加mish算子序列化和解析代碼

(4-1)在serializer/include/tengine/v2/tm2/_format.h中增加mish的類(lèi)型宏定義和字符串宏定義 ;
(4-2)在serializer/tengine/v2/tm2/_op/_load.cpp文件中增加LoadTmMishOp函數(shù)實(shí)現(xiàn),同時(shí)在LoadTmOpFunc函數(shù)中增加調(diào)用LoadTmMishOp的邏輯代碼;
(4-3)在serializer/tengine/v2/tm2/_op/_save.cpp文件中增加SaveTmMishOp函數(shù)實(shí)現(xiàn),同時(shí)在SaveTmReorgOp函數(shù)中增加調(diào)用SaveTmMishOp的邏輯代碼;
(4-4)在serializer/tengine/v2/tm2/_op/_serializer.hpp,增加LoadTmMishOp和 SaveTmMishOp的函數(shù)聲明

(4-5)本次轉(zhuǎn)換模型針對(duì)darknet,所以需要對(duì)tools/darknet/darknet/_serializer.cpp文件中增加mish算子解析的相應(yīng)邏輯。 因?yàn)閙ish沒(méi)有單獨(dú)使用,而是作為conv的激活函數(shù)調(diào)用,所以是在LoadConv2D函數(shù)參照l(shuí)eaky增加相應(yīng)的代碼。其他單獨(dú)算子的實(shí)現(xiàn)也可以參考其他類(lèi)似算子的實(shí)現(xiàn)方式

完成代碼改動(dòng)后,按照如下操作進(jìn)行編譯,即可生成轉(zhuǎn)換工具

mkdir build && cd build
cmake ..
make -j4 && make install

最后執(zhí)行轉(zhuǎn)換動(dòng)作(提前準(zhǔn)備好模型文件)

./install/bin/tm_convert_tool -f darknet -p yolov4.cfg -m yolov4.weights -o yolov4.tmfile

二、推理

官方代碼鏈接下的readme并沒(méi)有找到介紹如何新增算子,但是可以參考類(lèi)似算子進(jìn)行修改添加,下面是我參考tanh算子的實(shí)現(xiàn),進(jìn)行的修改

(1-1)在inlcude/tengine/_op.h中增加mish的枚舉定義,include/tengine/_op/_name.h中增加mish的字符串宏定義
(1-2)在src/op/mish.c中增加mish算子的注冊(cè)函數(shù)
(1-3)在src/serializer/tm/tm2/_format.h 和src/serializer/tm/op/tm2/_mish.c 中增加序列化相關(guān)代碼,

note:src/serializer/tm/tm2/_format.h中定義算子的類(lèi)型數(shù)值需要跟convert/_tools下的serializer/include/tengine/v2/tm2/_format.h代碼保持一致

(1-4)在src/dev/cpu/op/目錄下增加mish算子實(shí)現(xiàn)代碼目錄,包括mish/_ref.c(x86)、mish/_hcl/_arm.c(arm),其中contex-a目錄下的文件為具體的kernel實(shí)現(xiàn)代碼

也可以參考下面的鏈接,查看有哪些代碼改動(dòng)和文件增加:

https://github.com/zjd1988/Tenginegithub.com

測(cè)試

測(cè)試圖片使用的是標(biāo)題中的圖片(512x384)test.jpg
測(cè)試代碼使用的官方代碼

examples/tm_yolov3_tiny.cpp

做了簡(jiǎn)單修改。

三、后續(xù)

(1)合并conv和mish算子
(2)后續(xù)抽空新增一個(gè)需要配置參數(shù)的算子

四、使用感受

(1)模型轉(zhuǎn)換和推理分離,新增算子需要增加兩次,官方回復(fù)會(huì)后續(xù)考慮合并,希望會(huì)越來(lái)越方便
(2)推理引擎編譯速度快(本文目的不在于測(cè)試性能,只是驗(yàn)證tengine在推理yolov4的正確性)
(3)代碼結(jié)構(gòu)清晰,便于閱讀和調(diào)試

以上便是解答過(guò)程以及使用感受。

更多Tengine相關(guān)內(nèi)容請(qǐng)關(guān)注Tengine-邊緣AI推理框架專(zhuān)欄。

審核編輯 黃昊宇

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

    關(guān)注

    68

    文章

    11074

    瀏覽量

    216932
  • Tengine
    +關(guān)注

    關(guān)注

    1

    文章

    47

    瀏覽量

    3082
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    在K230上部署yolov5時(shí) 出現(xiàn)the array is too big的原因?

    重現(xiàn)步驟 1將yolov5的kmodel放入k230的data數(shù)據(jù) 2使用yolo大作戰(zhàn)里的視頻流推理代碼 3運(yùn)行 期待結(jié)果和實(shí)際結(jié)果 期待的結(jié)果 將目標(biāo)檢測(cè)的框圈起來(lái) 實(shí)際看到的結(jié)果
    發(fā)表于 05-28 07:47

    RK3576 yolov11-seg訓(xùn)練部署教程

    yolov11-seg 是YOLO(You Only Look Once)系列的最新成員,專(zhuān)為實(shí)時(shí)實(shí)例分割任務(wù)設(shè)計(jì)。它在保持YOLO家族高效推理速度的同時(shí),通過(guò)創(chuàng)新的網(wǎng)絡(luò)結(jié)構(gòu)和分割頭設(shè)計(jì),實(shí)現(xiàn)了像素
    的頭像 發(fā)表于 04-16 09:43 ?732次閱讀
    RK3576 <b class='flag-5'>yolov</b>11-seg訓(xùn)練部署教程

    labview調(diào)用yolo目標(biāo)檢測(cè)、分割、分類(lèi)、obb

    labview調(diào)用yolo目標(biāo)檢測(cè)、分割、分類(lèi)、obb、pose深度學(xué)習(xí),支持CPU和GPU推理,32/64位labview均可使用。 (yolov5~yolov12)
    發(fā)表于 03-31 16:28

    【幸狐Omni3576邊緣計(jì)算套件試用體驗(yàn)】RKNN 推理測(cè)試與圖像識(shí)別

    【幸狐 Omni3576 邊緣計(jì)算套件測(cè)評(píng)】RKNN 推理測(cè)試與圖像識(shí)別 本文介紹了幸狐 Omni3576 邊緣計(jì)算套件實(shí)現(xiàn) RKNN 推理和圖像物體識(shí)別的測(cè)試流程,包括 RKNN 介紹、環(huán)境搭建
    發(fā)表于 03-20 16:14

    YOLOv5類(lèi)中rgb888p_size這個(gè)參數(shù)要與模型推理和訓(xùn)練的尺寸一致嗎?一致會(huì)達(dá)到更好的效果?

    YOLOv5類(lèi)中rgb888p_size這個(gè)參數(shù)要與模型推理和訓(xùn)練的尺寸一致嗎,一致會(huì)達(dá)到更好的效果
    發(fā)表于 03-11 08:12

    模型無(wú)法獲得mAP值等于1.00的原因是什么?

    量化了大小為 416 x 416 的 YOLOv4 模型,并獲得了正確的 mAP 值。 使用以下命令量化大小為 320 x 544 的 YOLOv4 模型:pot -c
    發(fā)表于 03-07 07:21

    YOLOv4模型轉(zhuǎn)換為IR的說(shuō)明,無(wú)法將模型轉(zhuǎn)換為T(mén)ensorFlow2格式怎么解決?

    遵照 將 YOLOv4 模型轉(zhuǎn)換為 IR 的 說(shuō)明,但無(wú)法將模型轉(zhuǎn)換為 TensorFlow2* 格式。 將 YOLOv4 darknet 轉(zhuǎn)換為 Keras 模型時(shí),收到 TypeError: buffer is too small for requested arr
    發(fā)表于 03-07 07:14

    為什么深度學(xué)習(xí)中的Frame per Second高于OpenVINO?演示推理腳本?

    在 DL Workbench 上使用 Microsoft 通用對(duì)象上下文 (MS COCO) 數(shù)據(jù)集運(yùn)行 YOLOv4 對(duì)象檢測(cè)模型,并獲得 50 - 60 FPS。 OpenVINO?演示推理腳本運(yùn)行,并獲得更高的 FPS。
    發(fā)表于 03-06 07:27

    為什么在Ubuntu20.04上使用YOLOv3比Yocto操作系統(tǒng)上的推理快?

    使用 2021.4 OpenVINO?中的 GPU 插件運(yùn)行帶有 YOLOv3 模型的 對(duì)象檢測(cè) C++ 演示 。 使用 英特爾? 酷睿? i5-1145G7E、英特爾? 酷睿
    發(fā)表于 03-05 06:48

    CPU推理:AI算力配置新范式

    在當(dāng)前的人工智能領(lǐng)域,尤其是涉及到深度學(xué)習(xí)的推理階段,行業(yè)普遍認(rèn)為GPU是唯一的選擇。然而,GPU的成本相對(duì)較高,且對(duì)于某些特定的應(yīng)用場(chǎng)景,其高昂的價(jià)格和較高的能耗成為了一大負(fù)擔(dān)。相比之下,CPU
    的頭像 發(fā)表于 11-21 01:03 ?926次閱讀
    <b class='flag-5'>CPU</b><b class='flag-5'>推理</b>:AI算力配置新范式

    AI推理CPU當(dāng)?shù)溃珹rm驅(qū)動(dòng)高效引擎

    AI的訓(xùn)練和推理共同鑄就了其無(wú)與倫比的處理能力。在AI訓(xùn)練方面,GPU因其出色的并行計(jì)算能力贏得了業(yè)界的青睞,成為了當(dāng)前AI大模型最熱門(mén)的芯片;而在 AI 推理方面,具備卓越通用性和靈活性的CPU
    的頭像 發(fā)表于 11-13 14:34 ?3374次閱讀
    AI<b class='flag-5'>推理</b><b class='flag-5'>CPU</b>當(dāng)?shù)溃珹rm驅(qū)動(dòng)高效引擎

    YOLOv6在LabVIEW中的推理部署(含源碼)

    相關(guān)介紹文章,所以筆者在實(shí)現(xiàn)YOLOv6 ONNX 在LabVIEW中的部署推理后,決定和各位讀者分享一下如何使用LabVIEW實(shí)現(xiàn)YOLOv
    的頭像 發(fā)表于 11-06 16:07 ?939次閱讀
    <b class='flag-5'>YOLOv</b>6在LabVIEW中的<b class='flag-5'>推理</b>部署(含源碼)

    RK3588 技術(shù)分享 | 在Android系統(tǒng)中使用NPU實(shí)現(xiàn)Yolov5分類(lèi)檢測(cè)

    隨著人工智能和大數(shù)據(jù)時(shí)代的到來(lái),傳統(tǒng)嵌入式處理器中的CPU和GPU逐漸無(wú)法滿足日益增長(zhǎng)的深度學(xué)習(xí)需求。為了應(yīng)對(duì)這一挑戰(zhàn),在一些高端處理器中,NPU(神經(jīng)網(wǎng)絡(luò)處理單元)也被集成到了處理器里。NPU
    發(fā)表于 10-24 10:13

    RK3588 技術(shù)分享 | 在Android系統(tǒng)中使用NPU實(shí)現(xiàn)Yolov5分類(lèi)檢測(cè)

    隨著人工智能和大數(shù)據(jù)時(shí)代的到來(lái),傳統(tǒng)嵌入式處理器中的CPU和GPU逐漸無(wú)法滿足日益增長(zhǎng)的深度學(xué)習(xí)需求。為了應(yīng)對(duì)這一挑戰(zhàn),在一些高端處理器中,NPU(神經(jīng)網(wǎng)絡(luò)處理單元)也被集成到了處理器里。NPU
    發(fā)表于 08-20 11:13

    基于迅為RK3588【RKNPU2項(xiàng)目實(shí)戰(zhàn)1】:YOLOV5實(shí)時(shí)目標(biāo)分類(lèi)

    [/url] 【RKNPU2 人工智能開(kāi)發(fā)】 【AI深度學(xué)習(xí)推理加速器】——RKNPU2 從入門(mén)到實(shí)踐(基于RK3588和RK3568) 【RKNPU2項(xiàng)目實(shí)戰(zhàn)1】:YOLOV5實(shí)時(shí)目標(biāo)分類(lèi) 【RKNPU2項(xiàng)目實(shí)戰(zhàn)2】:SORT目標(biāo)追蹤 【RKNPU2項(xiàng)目實(shí)戰(zhàn)3】車(chē)牌識(shí)別
    發(fā)表于 08-15 10:51
    主站蜘蛛池模板: 在线免费观看一级片 | 四虎影视在线影院4hu | 久久怡红院国产精品 | yy4080午夜理论一级毛片 | 黄色大片在线视频 | 福利毛片 | 国产在线一区二区三区四区 | 丁香六月婷婷精品免费观看 | 四虎影院一级片 | 中文天堂最新版资源新版天堂资源 | 日本三级成人午夜视频网 | 国产做a爰片久久毛片 | 欧美色图亚洲激情 | 特黄特色三级在线播放 | 国产二区三区 | 国产三级在线观看免费 | 狼人激情网 | 国产成人mv在线观看入口视频 | 在线 | 一区二区三区 | 高清国产下药迷倒美女 | 伊人狼人综合 | 久久天天躁狠狠躁夜夜不卡 | 亚洲精品视频在线 | 欧美日韩一区二区三区毛片 | 欧美激情综合色综合啪啪五月 | 在线视频亚洲一区 | 男女交性永久免费视频播放 | 激情综合在线观看 | 日本免费的一级绿象 | 双性强迫开宫灌满h | 欧美日韩一卡2卡三卡4卡新区 | 欧美猛交xxxx乱大交 | 欧美一级黄色影片 | 免费在线观看a | 一卡二卡四卡无卡乱免费网页 | 婷婷色香五月激情综合2020 | 前后灌满白浆护士 | 欧美成人猛男性色生活 | 亚洲成a人不卡在线观看 | 婷婷操| 天天摸天天操免费播放小视频 |