yolov5 onnx轉(zhuǎn)rknn

rknn 模型要求

硬件限制让腹,在onnx模型中需要移除Detect層的操作畦贸,將最后的卷積層的輸出作為onnx模型的輸出

直接修改已有的onnx模型

可以通過直接操作onnx模型的方法手動刪除onnx模型中最后的三個(gè)卷積層后面的所有操作谤碳,并將卷積層的輸出更改為onnx模型的輸出

更改前截圖


onnx.png

刪除思路

  1. 根據(jù)名字找到三個(gè)卷積層的index
  2. 記錄這三個(gè)卷積層后面所有節(jié)點(diǎn)的index, 保存在數(shù)組中
  3. 從大到小遍歷數(shù)組牍戚,刪除節(jié)點(diǎn)
  4. 刪除多余輸出
  5. 更改輸出 (名字和輸出數(shù)據(jù)shape)

代碼

import onnx
onnx_file = "yolov5-ming.onnx"
save = "delete_detect.onnx"
model = onnx.load(onnx_file)

node = model.graph.node

index = []
Conv_248_index = -1
Conv_298_index = -1
Conv_198_index = -1
start_index = 100009
for i in range(len(node)):
    if node[i].name == "Conv_248":
        Conv_248_index = i
    if node[i].name == "Conv_298":
        Conv_298_index = i
    if  node[i].name == "Conv_198":
        Conv_198_index = i
        start_index = i
    if i > start_index:
        if i != Conv_248_index and i != Conv_298_index:
            index.append(i)

print(index)
for i in reversed(index):
    node.remove(node[i])
out = model.graph.output
del out[0]
out[2].name = "442"
out[2].type.tensor_type.shape.dim[0].dim_value = 1
out[2].type.tensor_type.shape.dim[1].dim_value = 42
out[2].type.tensor_type.shape.dim[2].dim_value = 28
out[2].type.tensor_type.shape.dim[3].dim_value = 28

del out[2].type.tensor_type.shape.dim[4]

out[1].name = "384"
out[1].type.tensor_type.shape.dim[0].dim_value = 1
out[1].type.tensor_type.shape.dim[1].dim_value = 42
out[1].type.tensor_type.shape.dim[2].dim_value = 56
out[1].type.tensor_type.shape.dim[3].dim_value = 56

del out[1].type.tensor_type.shape.dim[4]


out[0].name = "326"
out[0].type.tensor_type.shape.dim[0].dim_value = 1
out[0].type.tensor_type.shape.dim[1].dim_value = 42
out[0].type.tensor_type.shape.dim[2].dim_value = 112
out[0].type.tensor_type.shape.dim[3].dim_value = 112

del out[0].type.tensor_type.shape.dim[4]
onnx.save(model, save)
onnx.checker.check_model(model)

更改后截圖


out1.png

out2.png
out3.png

模型轉(zhuǎn)換主要代碼
全部代碼可以在rknn的github中找到

# Create RKNN object
    rknn = RKNN(verbose=True)

    # pre-process config
    print('--> Config model')
    rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]])
    print('done')

    # Load ONNX model
    print('--> Loading model')
    ret = rknn.load_onnx(model=ONNX_MODEL)
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')

    # Build model
    print('--> Building model')
    ret = rknn.build(do_quantization=QUANTIZE_ON, dataset=DATASET)
    if ret != 0:
        print('Build model failed!')
        exit(ret)
    print('done')

    # Export RKNN model
    print('--> Export rknn model')
    ret = rknn.export_rknn(RKNN_MODEL)
    if ret != 0:
        print('Export rknn model failed!')
        exit(ret)
    print('done')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末伦仍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子怖喻,更是在濱河造成了極大的恐慌底哗,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锚沸,死亡現(xiàn)場離奇詭異跋选,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哗蜈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門前标,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坠韩,“玉大人,你說我怎么就攤上這事炼列≈桓椋” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵俭尖,是天一觀的道長氢惋。 經(jīng)常有香客問我,道長稽犁,這世上最難降的妖魔是什么焰望? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮已亥,結(jié)果婚禮上熊赖,老公的妹妹穿的比我還像新娘。我一直安慰自己虑椎,他們只是感情好震鹉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著绣檬,像睡著了一般足陨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上娇未,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天墨缘,我揣著相機(jī)與錄音,去河邊找鬼零抬。 笑死镊讼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的平夜。 我是一名探鬼主播蝶棋,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忽妒!你這毒婦竟也來了玩裙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤段直,失蹤者是張志新(化名)和其女友劉穎吃溅,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鸯檬,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡决侈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喧务。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赖歌。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枉圃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出庐冯,到底是詐尸還是另有隱情孽亲,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布展父,位于F島的核電站墨林,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏犯祠。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一酌呆、第九天 我趴在偏房一處隱蔽的房頂上張望衡载。 院中可真熱鬧,春花似錦隙袁、人聲如沸痰娱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梨睁。三九已至,卻和暖如春娜饵,著一層夾襖步出監(jiān)牢的瞬間坡贺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工箱舞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遍坟,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓晴股,卻偏偏與公主長得像愿伴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子电湘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容