4050|1

67

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

#AI挑战营第二站# MNIST模型RKNN转换 [复制链接]

本帖最后由 maskmoo 于 2024-5-30 20:11 编辑

由于量化rknn模型需要相应图片集,因此我们先要获取相应的数据集进入mnist数据目录下,解压t10k-images-idx3-ubyte.gz,然后运行get_image.py,将原先压缩的数据转为图片,得到量化需要的dataset.txt文件。

濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁橈耿瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顖涒拺闁告繂瀚烽崕搴g磼閼搁潧鍝虹€殿喛顕ч埥澶娢熼柨瀣垫綌婵犳鍠楅〃鍛存偋婵犲洤鏋佸Δ锝呭暞閳锋垿鏌涘☉姗堝姛闁瑰啿鍟扮槐鎺旂磼濮楀牐鈧法鈧鍠栭…鐑藉极閹邦厼绶炲┑鐘插閸氬懘姊绘担鐟邦嚋缂佽鍊歌灋妞ゆ挾鍊e☉銏犵妞ゆ牗绋堥幏娲⒑閸涘﹦绠撻悗姘卞厴瀹曟洘鎯旈敐鍥╋紲闂佸吋鎮傚ḿ褔宕搹鍏夊亾濞堝灝鏋︽い鏇嗗洤鐓″璺好¢悢鍏肩叆閻庯絽鐏氱紞灞解攽閻樻剚鍟忛柛鐘愁殜閵嗗啴宕ㄧ€涙ê浜辨繝鐢靛Т濞层倝寮告担鑲濇棃鏁愰崨顓熸闂佹娊鏀遍崹鍧楀蓟濞戞ǚ妲堟慨妤€鐗嗘慨娑㈡⒑閻熸澘鏆遍柛鐔稿濡叉劙骞掗弮鍌滐紲濠碘槅鍨伴幖顐︼綖閹烘垟鏀介柣姗嗗亜娴滅偓绻涢幘鏉戠劰闁稿鎸婚幈銊︾節閸涱噮浠╃紓渚囧枟閻熝囧箲閸曨垰惟鐟滄粓宕崼鏇熲拻濞达絽鎲¢崯鐐烘煠瑜版帞鐣烘い銏$墵瀹曞爼鍩¢崒銈嗙稐闂備胶绮崝鏇㈠箹椤愩倗涓嶉柨婵嗩槹閻撱儵鏌¢崘銊モ偓鐟扳枍閺囥垺鐓曟慨妞诲亾濞存粏娉涢~蹇撁洪鍜佹濠电偞鐣崝宀€绱炴繝鍌滄殾闁哄洢鍨洪悞鑲┾偓骞垮劚閹虫劙宕濋敃鈧—鍐Χ閸℃娼戦梺绋款儐閹歌崵鎹㈠☉姘剨闁哄秲鍊曟禍楣冩煙妫颁胶顦︽繛鍫涘妽缁绘繈鎮介棃娴讹絿鐥弶璺ㄐх€殿喗鐓¢獮鎾诲箳濠靛牆鏁搁梺鑽ゅЬ濞咃絿浜搁妸鈺佺闁绘梹鎮舵禍婊堟煛閸愶絽浜鹃柣銏╁灲缁绘繈鐛崘銊庢棃宕橀埡浣圭€梻浣告啞濞诧箓宕滃☉鈶哄洭濡烽妷銏℃杸闂佺粯鍔樼亸娆忥耿閹绢喗鐓曞┑鐘插暟缁犳捇鏌i敐鍥у幋妞ゃ垺娲熼崺娑橆潩椤撶喆浠㈠銈冨灪濡啫鐣烽妸鈺婃晜闁告侗鍙庢导鏍⒒閸屾艾鈧绮堟笟鈧獮澶愭晬閸曨剙搴婇梺绋挎湰婢规洟宕戦幘鎰佹僵闁告鍋涢獮瀣倵鐟欏嫭绀冩繛鑼枛閻涱噣宕堕浣镐罕闂佸壊鍋侀崹褰掔嵁濡や胶绡€鐎典即鏀卞姗€鍩€椤掍焦灏垫繛鍡愬灲閸ㄩ箖寮妷锔句簴婵犳鍠楅妵娑㈠磻閹剧粯鐓涚€光偓閳ь剟宕伴弽顓熷仒妞ゆ洍鍋撶€规洖缍婇、娆撳矗閵夛箑浜濋梻鍌氬€风粈渚€鎮块崶顬盯宕熼鈧崶顒€鍨傛い鎰剁到瀵潡姊洪柅鐐茶嫰婢ф挳鏌″畝瀣埌閾伙絾绻涢懠棰濆殭闁哄懘浜跺娲川婵犲懎顥濋梺纭呮珪閿氭い顐㈢箳缁辨帒螣鐠囧樊鈧捇姊洪幆褏绠抽柟铏尵缁參鏁撻悩鏂ユ嫼闂佸憡绋戦敃銉╁煕閹邦厾绠鹃柤纰卞墮閺嬫盯鏌曢崱鏇狀槮妞ゎ偅绻冮敍鎰攽閸ャ劍鐝濋梻鍌欒兌缁垶宕濊箛娑樼柧婵犲﹤鐗婇崐璺恒€掑锝呬壕濠殿喖锕ュ钘壩涢崘銊㈡婵﹩鍓﹂弳顐d繆閻愵亜鈧呯磽濮樿泛纭€闁规儼妫勯弰銉︾箾閹存瑥鐏╃紒鐙呯秮閺岋綁骞囬鑺ユ瘎濡炪倖姊瑰ú鐔奉潖濞差亝鍋傞幖瀛樼☉娴狀喖顪冮妶鍐ㄢ偓鏇㈠磹閸喚鏆﹂梻鍫熺▓閺嬪酣鏌熼弶璺ㄤ粵妞ゆ梹妫冨铏圭磼濡搫顫嶉梺璇″灠閼活垶鍩㈤幘鏂ュ牚闁割偆鍠撻崢鎼佹倵閸忓浜鹃梺閫炲苯澧寸€规洑鍗冲浠嬵敇閻愮數鏆梻浣虹帛閸ㄥ吋鎱ㄩ妶澶婄;閻庯綆鍠楅悡鏇熴亜閹板墎鎮肩紒鐘崇墵閺岋綀绠涢幘璇插及闂佸搫鐭夌徊楣冨箚閺冨牆顫呴柍杞扮劍濞呮盯姊绘担鍛婃喐濠殿喚鏁婚幃褔鎮╃拠鑼紜闂佹寧娲栭崐褰掑磹婵犳碍鐓㈡俊顖欒濡叉椽鏌i敐鍡樸仢婵﹥妞藉Λ鍐ㄢ槈濮樿京鏉介梻浣呵归敃銉╂偋閻樿崵宓侀柛鈩冪⊕閸婄兘鏌i幋鐐ㄧ細闁告﹢浜跺娲箰鎼淬埄姊垮銈嗘肠閸愭儳娈ㄩ柣鐘充航閸斿海澹曟總绋跨骇闁割偅绋戞俊鍧楁煕濞嗗苯浜惧┑鐘愁問閸犳牠鏁冮敂鎯у灊妞ゆ牗绮庣粻鏃堟煟閺冨倸甯堕柣鎺戠仛閵囧嫰骞掗崱妞惧閻庡厜鍋撻柨婵嗙墕閸斿灚銇勯敂鑺ュ唉闁哄瞼鍠栭悰顕€宕归鍙ョ礄婵°倗濮烽崑鐐垫暜閿熺姷宓佹慨妞诲亾鐎殿喖鐖奸獮瀣攽閸涱垳顦伴梻鍌氬€搁崐鐑芥倿閿曞倹鍎戠憸鐗堝笒閸ㄥ倻鎲搁悧鍫濈瑨缂佺姷鍠栭弻銊╂偄閸濆嫅銏㈢棯閹呯Ш闁哄本鐩、鏇㈡晲閸℃瑯妲伴梻浣虹帛閹歌煤濮椻偓婵$敻宕熼姘辩杸濡炪倖鏌ㄩ妵娆撳閵堝棛鍘遍梺鍝勫暊閸嬫挾绱掗鑺ュ磳鐎殿喛顕ч鍏煎緞鐎n剙寮抽梺璇插嚱缂嶅棙绂嶉悙鏉戭嚤鐎光偓閸曨兘鎷洪梺鍛婄箓鐎氼厼锕㈤幍顔剧<閻庯綆鍋勯悘鎾煕閳哄啫浠辨鐐差儔閺佸啴鍩€椤掑嫮宓侀柕蹇娾偓鑼畾闂侀潧鐗嗛幏鎴濐潖濡ゅ懏鐓欐い鏇炴缁嬭菐閸パ嶈含闁诡喗鐟╅、鏃堝礋閵娿儰澹曢梺鍝勬川婵潧鐣烽弻銉︾厱妞ゆ劗濮撮崝姘辩棯閹勫仴闁哄矉缍佹慨鈧柍鎯版硾缂嶅﹪骞忛幋锔藉亜闁告縿鍎抽鏇㈡⒑閻熼偊鍤熼柛瀣枛楠炲﹪宕熼娑氬幈闁硅壈鎻徊浠嬪几濞戙垺鐓涢悘鐐额嚙婵″ジ鏌嶇憴鍕伌鐎规洖宕~婊堝幢濮楀牏纾兼繝鐢靛У椤旀牠宕抽婊冪筏濞寸姴顑嗛崑瀣煙閹规劦鍤欑紒鐘崇墬娣囧﹪濡堕崒姘闂備礁纾划顖炲箲閸パ呮殾鐟滅増甯╅弫濠囨煟閿濆懎顨欓梺顓у灠閳规垿鏁嶉崟顐℃澀闂佺ǹ枪閸婃繂鐣烽敐澶婄妞ゆ棁鍋愰崫妤呮煛婢跺﹦澧戦柛鏂块叄閸╃偛顓奸崨顏呮杸闂佺粯锚瀵爼骞栭幇顔剧<闁绘ê鐏氶崵鈧梻鍥ь樀閺屻劌鈹戦崱妯烘闂佺懓寮堕幃鍌炲蓟濞戞鐔虹磼濡 鍋撻幇顓熷弿濠电姴鎳忛鐘电磼椤旂晫鎳囨鐐村姈閹棃濮€閳ユ剚浼嗛梻鍌氬€烽悞锕€顪冮崸妤€鐭楅幖娣妼缁愭鎱ㄥΟ鍨厫闁搞倕绉瑰鍫曞醇濞戞ê顬嬪銈傛櫇閸忔﹢骞冨Δ鍛櫜閹肩补鈧尙鐖遍梻浣哥秺椤ユ挾鍒掗婊勫床婵炴垶鐟︾紞鍥煕閹炬鍟悡鍌炴⒒娴d警鏀版繛鍛礋閹兘濡搁埡浣勶箓鏌熼悧鍫熺凡缂佺姵濞婇弻鐔衡偓娑欋缚缁犳ḿ鎲搁弶娆炬Ч濞e洤锕幃娆擃敂閸曘劌浜鹃柡宥庡亝閺嗘粓鏌熼悜姗嗘當缁惧墽鎳撻埞鎴︽偐瀹曞浂鏆¢梺绋垮椤ㄥ棛鎹㈠☉銏犲耿婵☆垵顕ч棄宥夋⒑缂佹ɑ灏伴柣鐔叉櫅椤曪綁宕奸弴鐐哄敹闂佺粯鏌ㄩ崲鍙夋叏閵忋倖鈷戝ù鍏肩懇濡绢喚绱掗鑺ュ磳鐎殿喖顭烽崺鍕礃閳轰緡鈧挾绱撴担鍓插剰缂併劑浜跺畷鎴﹀箻鐠囨煡鏁滃┑掳鍊愰崑鎾绘煢閸愵亜鏋涢柡灞炬礃缁绘盯鎮欓浣哄絾闂備胶枪椤戝懎螞濠靛钃熸繛鎴炵煯濞岊亪鏌涢幘妞诲亾婵℃彃鐗嗛—鍐Χ閸涘宕梺鐟板殩閹凤拷
  • import struct
  • import numpy as np
  • #import matplotlib.pyplot as plt
  • import PIL.Image
  • from PIL import Image
  • import os
  • os.system("mkdir ../MNIST_data/mnist_test")
  • filename='../MNIST_data/t10k-images.idx3-ubyte'
  • dataset = './dataset.txt'
  • binfile=open(filename,'rb')
  • buf=binfile.read()
  • index=0
  • data_list = []
  • magic,numImages,numRows,numColumns=struct.unpack_from('>IIII',buf,index)
  • index+=struct.calcsize('>IIII')
  • for image in range(0,numImages):
  • im=struct.unpack_from('>784B',buf,index)
  • index+=struct.calcsize('>784B')
  • im=np.array(im,dtype='uint8')
  • im=im.reshape(28,28)
  • im=Image.fromarray(im)
  • im.save('../MNIST_data/mnist_test/test_%s.jpg'%image,'jpeg')
  • data_list.append('../MNIST_data/mnist_test/test_%s.jpg\n'%image)
  • with open(dataset,'w+') as ff:
  • ff.writelines(data_list)

 

由于最先训练和onnx文件转换都是在windows平台进行的,后面转化rknn格式时遇到各种奇怪的问题。后来重新在Ubuntu平台从新训练并生成onnx文件,再进行rknn的转换就没遇到什么问题。

 

 

 

转换脚本如下,基于官方脚本进行修改的。 

濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁橈耿瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顖涒拺闁告繂瀚烽崕搴g磼閼搁潧鍝虹€殿喛顕ч埥澶娢熼柨瀣垫綌婵犳鍠楅〃鍛存偋婵犲洤鏋佸Δ锝呭暞閳锋垿鏌涘☉姗堝姛闁瑰啿鍟扮槐鎺旂磼濮楀牐鈧法鈧鍠栭…鐑藉极閹邦厼绶炲┑鐘插閸氬懘姊绘担鐟邦嚋缂佽鍊歌灋妞ゆ挾鍊e☉銏犵妞ゆ牗绋堥幏娲⒑閸涘﹦绠撻悗姘卞厴瀹曟洘鎯旈敐鍥╋紲闂佸吋鎮傚ḿ褔宕搹鍏夊亾濞堝灝鏋︽い鏇嗗洤鐓″璺好¢悢鍏肩叆閻庯絽鐏氱紞灞解攽閻樻剚鍟忛柛鐘愁殜閵嗗啴宕ㄧ€涙ê浜辨繝鐢靛Т濞层倝寮告担鑲濇棃鏁愰崨顓熸闂佹娊鏀遍崹鍧楀蓟濞戞ǚ妲堟慨妤€鐗嗘慨娑㈡⒑閻熸澘鏆遍柛鐔稿濡叉劙骞掗弮鍌滐紲濠碘槅鍨伴幖顐︼綖閹烘垟鏀介柣姗嗗亜娴滅偓绻涢幘鏉戠劰闁稿鎸婚幈銊︾節閸涱噮浠╃紓渚囧枟閻熝囧箲閸曨垰惟鐟滄粓宕崼鏇熲拻濞达絽鎲¢崯鐐烘煠瑜版帞鐣烘い銏$墵瀹曞爼鍩¢崒銈嗙稐闂備胶绮崝鏇㈠箹椤愩倗涓嶉柨婵嗩槹閻撱儵鏌¢崘銊モ偓鐟扳枍閺囥垺鐓曟慨妞诲亾濞存粏娉涢~蹇撁洪鍜佹濠电偞鐣崝宀€绱炴繝鍌滄殾闁哄洢鍨洪悞鑲┾偓骞垮劚閹虫劙宕濋敃鈧—鍐Χ閸℃娼戦梺绋款儐閹歌崵鎹㈠☉姘剨闁哄秲鍊曟禍楣冩煙妫颁胶顦︽繛鍫涘妽缁绘繈鎮介棃娴讹絿鐥弶璺ㄐх€殿喗鐓¢獮鎾诲箳濠靛牆鏁搁梺鑽ゅЬ濞咃絿浜搁妸鈺佺闁绘梹鎮舵禍婊堟煛閸愶絽浜鹃柣銏╁灲缁绘繈鐛崘銊庢棃宕橀埡浣圭€梻浣告啞濞诧箓宕滃☉鈶哄洭濡烽妷銏℃杸闂佺粯鍔樼亸娆忥耿閹绢喗鐓曞┑鐘插暟缁犳捇鏌i敐鍥у幋妞ゃ垺娲熼崺娑橆潩椤撶喆浠㈠銈冨灪濡啫鐣烽妸鈺婃晜闁告侗鍙庢导鏍⒒閸屾艾鈧绮堟笟鈧獮澶愭晬閸曨剙搴婇梺绋挎湰婢规洟宕戦幘鎰佹僵闁告鍋涢獮瀣倵鐟欏嫭绀冩繛鑼枛閻涱噣宕堕浣镐罕闂佸壊鍋侀崹褰掔嵁濡や胶绡€鐎典即鏀卞姗€鍩€椤掍焦灏垫繛鍡愬灲閸ㄩ箖寮妷锔句簴婵犳鍠楅妵娑㈠磻閹剧粯鐓涚€光偓閳ь剟宕伴弽顓熷仒妞ゆ洍鍋撶€规洖缍婇、娆撳矗閵夛箑浜濋梻鍌氬€风粈渚€鎮块崶顬盯宕熼鈧崶顒€鍨傛い鎰剁到瀵潡姊洪柅鐐茶嫰婢ф挳鏌″畝瀣埌閾伙絾绻涢懠棰濆殭闁哄懘浜跺娲川婵犲懎顥濋梺纭呮珪閿氭い顐㈢箳缁辨帒螣鐠囧樊鈧捇姊洪幆褏绠抽柟铏尵缁參鏁撻悩鏂ユ嫼闂佸憡绋戦敃銉╁煕閹邦厾绠鹃柤纰卞墮閺嬫盯鏌曢崱鏇狀槮妞ゎ偅绻冮敍鎰攽閸ャ劍鐝濋梻鍌欒兌缁垶宕濊箛娑樼柧婵犲﹤鐗婇崐璺恒€掑锝呬壕濠殿喖锕ュ钘壩涢崘銊㈡婵﹩鍓﹂弳顐d繆閻愵亜鈧呯磽濮樿泛纭€闁规儼妫勯弰銉︾箾閹存瑥鐏╃紒鐙呯秮閺岋綁骞囬鑺ユ瘎濡炪倖姊瑰ú鐔奉潖濞差亝鍋傞幖瀛樼☉娴狀喖顪冮妶鍐ㄢ偓鏇㈠磹閸喚鏆﹂梻鍫熺▓閺嬪酣鏌熼弶璺ㄤ粵妞ゆ梹妫冨铏圭磼濡搫顫嶉梺璇″灠閼活垶鍩㈤幘鏂ュ牚闁割偆鍠撻崢鎼佹倵閸忓浜鹃梺閫炲苯澧寸€规洑鍗冲浠嬵敇閻愮數鏆梻浣虹帛閸ㄥ吋鎱ㄩ妶澶婄;閻庯綆鍠楅悡鏇熴亜閹板墎鎮肩紒鐘崇墵閺岋綀绠涢幘璇插及闂佸搫鐭夌徊楣冨箚閺冨牆顫呴柍杞扮劍濞呮盯姊绘担鍛婃喐濠殿喚鏁婚幃褔鎮╃拠鑼紜闂佹寧娲栭崐褰掑磹婵犳碍鐓㈡俊顖欒濡叉椽鏌i敐鍡樸仢婵﹥妞藉Λ鍐ㄢ槈濮樿京鏉介梻浣呵归敃銉╂偋閻樿崵宓侀柛鈩冪⊕閸婄兘鏌i幋鐐ㄧ細闁告﹢浜跺娲箰鎼淬埄姊垮銈嗘肠閸愭儳娈ㄩ柣鐘充航閸斿海澹曟總绋跨骇闁割偅绋戞俊鍧楁煕濞嗗苯浜惧┑鐘愁問閸犳牠鏁冮敂鎯у灊妞ゆ牗绮庣粻鏃堟煟閺冨倸甯堕柣鎺戠仛閵囧嫰骞掗崱妞惧閻庡厜鍋撻柨婵嗙墕閸斿灚銇勯敂鑺ュ唉闁哄瞼鍠栭悰顕€宕归鍙ョ礄婵°倗濮烽崑鐐垫暜閿熺姷宓佹慨妞诲亾鐎殿喖鐖奸獮瀣攽閸涱垳顦伴梻鍌氬€搁崐鐑芥倿閿曞倹鍎戠憸鐗堝笒閸ㄥ倻鎲搁悧鍫濈瑨缂佺姷鍠栭弻銊╂偄閸濆嫅銏㈢棯閹呯Ш闁哄本鐩、鏇㈡晲閸℃瑯妲伴梻浣虹帛閹歌煤濮椻偓婵$敻宕熼姘辩杸濡炪倖鏌ㄩ妵娆撳閵堝棛鍘遍梺鍝勫暊閸嬫挾绱掗鑺ュ磳鐎殿喛顕ч鍏煎緞鐎n剙寮抽梺璇插嚱缂嶅棙绂嶉悙鏉戭嚤鐎光偓閸曨兘鎷洪梺鍛婄箓鐎氼厼锕㈤幍顔剧<閻庯綆鍋勯悘鎾煕閳哄啫浠辨鐐差儔閺佸啴鍩€椤掑嫮宓侀柕蹇娾偓鑼畾闂侀潧鐗嗛幏鎴濐潖濡ゅ懏鐓欐い鏇炴缁嬭菐閸パ嶈含闁诡喗鐟╅、鏃堝礋閵娿儰澹曢梺鍝勬川婵潧鐣烽弻銉︾厱妞ゆ劗濮撮崝姘辩棯閹勫仴闁哄矉缍佹慨鈧柍鎯版硾缂嶅﹪骞忛幋锔藉亜闁告縿鍎抽鏇㈡⒑閻熼偊鍤熼柛瀣枛楠炲﹪宕熼娑氬幈闁硅壈鎻徊浠嬪几濞戙垺鐓涢悘鐐额嚙婵″ジ鏌嶇憴鍕伌鐎规洖宕~婊堝幢濮楀牏纾兼繝鐢靛У椤旀牠宕抽婊冪筏濞寸姴顑嗛崑瀣煙閹规劦鍤欑紒鐘崇墬娣囧﹪濡堕崒姘闂備礁纾划顖炲箲閸パ呮殾鐟滅増甯╅弫濠囨煟閿濆懎顨欓梺顓у灠閳规垿鏁嶉崟顐℃澀闂佺ǹ枪閸婃繂鐣烽敐澶婄妞ゆ棁鍋愰崫妤呮煛婢跺﹦澧戦柛鏂块叄閸╃偛顓奸崨顏呮杸闂佺粯锚瀵爼骞栭幇顔剧<闁绘ê鐏氶崵鈧梻鍥ь樀閺屻劌鈹戦崱妯烘闂佺懓寮堕幃鍌炲蓟濞戞鐔虹磼濡 鍋撻幇顓熷弿濠电姴鎳忛鐘电磼椤旂晫鎳囨鐐村姈閹棃濮€閳ユ剚浼嗛梻鍌氬€烽悞锕€顪冮崸妤€鐭楅幖娣妼缁愭鎱ㄥΟ鍨厫闁搞倕绉瑰鍫曞醇濞戞ê顬嬪銈傛櫇閸忔﹢骞冨Δ鍛櫜閹肩补鈧尙鐖遍梻浣哥秺椤ユ挾鍒掗婊勫床婵炴垶鐟︾紞鍥煕閹炬鍟悡鍌炴⒒娴d警鏀版繛鍛礋閹兘濡搁埡浣勶箓鏌熼悧鍫熺凡缂佺姵濞婇弻鐔衡偓娑欋缚缁犳ḿ鎲搁弶娆炬Ч濞e洤锕幃娆擃敂閸曘劌浜鹃柡宥庡亝閺嗘粓鏌熼悜姗嗘當缁惧墽鎳撻埞鎴︽偐瀹曞浂鏆¢梺绋垮椤ㄥ棛鎹㈠☉銏犲耿婵☆垵顕ч棄宥夋⒑缂佹ɑ灏伴柣鐔叉櫅椤曪綁宕奸弴鐐哄敹闂佺粯鏌ㄩ崲鍙夋叏閵忋倖鈷戝ù鍏肩懇濡绢喚绱掗鑺ュ磳鐎殿喖顭烽崺鍕礃閳轰緡鈧挾绱撴担鍓插剰缂併劑浜跺畷鎴﹀箻鐠囨煡鏁滃┑掳鍊愰崑鎾绘煢閸愵亜鏋涢柡灞炬礃缁绘盯鎮欓浣哄絾闂備胶枪椤戝懎螞濠靛钃熸繛鎴炵煯濞岊亪鏌涢幘妞诲亾婵℃彃鐗嗛—鍐Χ閸涘宕梺鐟板殩閹凤拷
  • import sys
  • from rknn.api import RKNN
  • DATASET_PATH = 'dataset.txt'
  • DEFAULT_RKNN_PATH = 'mnist.rknn'
  • DEFAULT_QUANT = False
  • def parse_arg():
  • if len(sys.argv) < 3:
  • print("Usage: python3 {} onnx_model_path [platform] [dtype(optional)] [output_rknn_path(optional)]".format(sys.argv[0]))
  • print(" platform choose from [rk3562,rk3566,rk3568,rk3588,rk1808,rv1109,rv1126]")
  • print(" dtype choose from [i8, fp] for [rk3562,rk3566,rk3568,rk3588]")
  • print(" dtype choose from [u8, fp] for [rk1808,rv1109,rv1126]")
  • exit(1)
  • model_path = sys.argv[1]
  • platform = sys.argv[2]
  • do_quant = DEFAULT_QUANT
  • if len(sys.argv) > 3:
  • model_type = sys.argv[3]
  • if model_type not in ['i8', 'u8', 'fp']:
  • print("ERROR: Invalid model type: {}".format(model_type))
  • exit(1)
  • elif model_type in ['i8', 'u8']:
  • do_quant = True
  • else:
  • do_quant = False
  • if len(sys.argv) > 4:
  • output_path = sys.argv[4]
  • else:
  • output_path = DEFAULT_RKNN_PATH
  • return model_path, platform, do_quant, output_path
  • if __name__ == '__main__':
  • model_path, platform, do_quant, output_path = parse_arg()
  • # Create RKNN object
  • rknn = RKNN(verbose=False)
  • # Pre-process config
  • print('--> Config model')
  • rknn.config(target_platform=platform, mean_values=[[128]], std_values=[[128]])
  • print('done')
  • # Load model
  • print('--> Loading model')
  • ret = rknn.load_onnx(model=model_path)
  • if ret != 0:
  • print('Load model failed!')
  • exit(ret)
  • print('done')
  • # Build model
  • print('--> Building model')
  • if do_quant == True:
  • ret = rknn.build(do_quantization=do_quant, dataset=DATASET_PATH)
  • if ret != 0:
  • print('Build model failed!')
  • exit(ret)
  • print('done')
  • else:
  • ret = rknn.build(do_quantization=do_quant)
  • print('skip do_quantization')
  • # Export rknn model
  • print('--> Export rknn model')
  • ret = rknn.export_rknn(output_path)
  • if ret != 0:
  • print('Export rknn model failed!')
  • exit(ret)
  • print('done')
  • # Release
  • rknn.release()

转换命令

濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁橈耿瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顖涒拺闁告繂瀚烽崕搴g磼閼搁潧鍝虹€殿喛顕ч埥澶娢熼柨瀣垫綌婵犳鍠楅〃鍛存偋婵犲洤鏋佸Δ锝呭暞閳锋垿鏌涘☉姗堝姛闁瑰啿鍟扮槐鎺旂磼濮楀牐鈧法鈧鍠栭…鐑藉极閹邦厼绶炲┑鐘插閸氬懘姊绘担鐟邦嚋缂佽鍊歌灋妞ゆ挾鍊e☉銏犵妞ゆ牗绋堥幏娲⒑閸涘﹦绠撻悗姘卞厴瀹曟洘鎯旈敐鍥╋紲闂佸吋鎮傚ḿ褔宕搹鍏夊亾濞堝灝鏋︽い鏇嗗洤鐓″璺好¢悢鍏肩叆閻庯絽鐏氱紞灞解攽閻樻剚鍟忛柛鐘愁殜閵嗗啴宕ㄧ€涙ê浜辨繝鐢靛Т濞层倝寮告担鑲濇棃鏁愰崨顓熸闂佹娊鏀遍崹鍧楀蓟濞戞ǚ妲堟慨妤€鐗嗘慨娑㈡⒑閻熸澘鏆遍柛鐔稿濡叉劙骞掗弮鍌滐紲濠碘槅鍨伴幖顐︼綖閹烘垟鏀介柣姗嗗亜娴滅偓绻涢幘鏉戠劰闁稿鎸婚幈銊︾節閸涱噮浠╃紓渚囧枟閻熝囧箲閸曨垰惟鐟滄粓宕崼鏇熲拻濞达絽鎲¢崯鐐烘煠瑜版帞鐣烘い銏$墵瀹曞爼鍩¢崒銈嗙稐闂備胶绮崝鏇㈠箹椤愩倗涓嶉柨婵嗩槹閻撱儵鏌¢崘銊モ偓鐟扳枍閺囥垺鐓曟慨妞诲亾濞存粏娉涢~蹇撁洪鍜佹濠电偞鐣崝宀€绱炴繝鍌滄殾闁哄洢鍨洪悞鑲┾偓骞垮劚閹虫劙宕濋敃鈧—鍐Χ閸℃娼戦梺绋款儐閹歌崵鎹㈠☉姘剨闁哄秲鍊曟禍楣冩煙妫颁胶顦︽繛鍫涘妽缁绘繈鎮介棃娴讹絿鐥弶璺ㄐх€殿喗鐓¢獮鎾诲箳濠靛牆鏁搁梺鑽ゅЬ濞咃絿浜搁妸鈺佺闁绘梹鎮舵禍婊堟煛閸愶絽浜鹃柣銏╁灲缁绘繈鐛崘銊庢棃宕橀埡浣圭€梻浣告啞濞诧箓宕滃☉鈶哄洭濡烽妷銏℃杸闂佺粯鍔樼亸娆忥耿閹绢喗鐓曞┑鐘插暟缁犳捇鏌i敐鍥у幋妞ゃ垺娲熼崺娑橆潩椤撶喆浠㈠銈冨灪濡啫鐣烽妸鈺婃晜闁告侗鍙庢导鏍⒒閸屾艾鈧绮堟笟鈧獮澶愭晬閸曨剙搴婇梺绋挎湰婢规洟宕戦幘鎰佹僵闁告鍋涢獮瀣倵鐟欏嫭绀冩繛鑼枛閻涱噣宕堕浣镐罕闂佸壊鍋侀崹褰掔嵁濡や胶绡€鐎典即鏀卞姗€鍩€椤掍焦灏垫繛鍡愬灲閸ㄩ箖寮妷锔句簴婵犳鍠楅妵娑㈠磻閹剧粯鐓涚€光偓閳ь剟宕伴弽顓熷仒妞ゆ洍鍋撶€规洖缍婇、娆撳矗閵夛箑浜濋梻鍌氬€风粈渚€鎮块崶顬盯宕熼鈧崶顒€鍨傛い鎰剁到瀵潡姊洪柅鐐茶嫰婢ф挳鏌″畝瀣埌閾伙絾绻涢懠棰濆殭闁哄懘浜跺娲川婵犲懎顥濋梺纭呮珪閿氭い顐㈢箳缁辨帒螣鐠囧樊鈧捇姊洪幆褏绠抽柟铏尵缁參鏁撻悩鏂ユ嫼闂佸憡绋戦敃銉╁煕閹邦厾绠鹃柤纰卞墮閺嬫盯鏌曢崱鏇狀槮妞ゎ偅绻冮敍鎰攽閸ャ劍鐝濋梻鍌欒兌缁垶宕濊箛娑樼柧婵犲﹤鐗婇崐璺恒€掑锝呬壕濠殿喖锕ュ钘壩涢崘銊㈡婵﹩鍓﹂弳顐d繆閻愵亜鈧呯磽濮樿泛纭€闁规儼妫勯弰銉︾箾閹存瑥鐏╃紒鐙呯秮閺岋綁骞囬鑺ユ瘎濡炪倖姊瑰ú鐔奉潖濞差亝鍋傞幖瀛樼☉娴狀喖顪冮妶鍐ㄢ偓鏇㈠磹閸喚鏆﹂梻鍫熺▓閺嬪酣鏌熼弶璺ㄤ粵妞ゆ梹妫冨铏圭磼濡搫顫嶉梺璇″灠閼活垶鍩㈤幘鏂ュ牚闁割偆鍠撻崢鎼佹倵閸忓浜鹃梺閫炲苯澧寸€规洑鍗冲浠嬵敇閻愮數鏆梻浣虹帛閸ㄥ吋鎱ㄩ妶澶婄;閻庯綆鍠楅悡鏇熴亜閹板墎鎮肩紒鐘崇墵閺岋綀绠涢幘璇插及闂佸搫鐭夌徊楣冨箚閺冨牆顫呴柍杞扮劍濞呮盯姊绘担鍛婃喐濠殿喚鏁婚幃褔鎮╃拠鑼紜闂佹寧娲栭崐褰掑磹婵犳碍鐓㈡俊顖欒濡叉椽鏌i敐鍡樸仢婵﹥妞藉Λ鍐ㄢ槈濮樿京鏉介梻浣呵归敃銉╂偋閻樿崵宓侀柛鈩冪⊕閸婄兘鏌i幋鐐ㄧ細闁告﹢浜跺娲箰鎼淬埄姊垮銈嗘肠閸愭儳娈ㄩ柣鐘充航閸斿海澹曟總绋跨骇闁割偅绋戞俊鍧楁煕濞嗗苯浜惧┑鐘愁問閸犳牠鏁冮敂鎯у灊妞ゆ牗绮庣粻鏃堟煟閺冨倸甯堕柣鎺戠仛閵囧嫰骞掗崱妞惧閻庡厜鍋撻柨婵嗙墕閸斿灚銇勯敂鑺ュ唉闁哄瞼鍠栭悰顕€宕归鍙ョ礄婵°倗濮烽崑鐐垫暜閿熺姷宓佹慨妞诲亾鐎殿喖鐖奸獮瀣攽閸涱垳顦伴梻鍌氬€搁崐鐑芥倿閿曞倹鍎戠憸鐗堝笒閸ㄥ倻鎲搁悧鍫濈瑨缂佺姷鍠栭弻銊╂偄閸濆嫅銏㈢棯閹呯Ш闁哄本鐩、鏇㈡晲閸℃瑯妲伴梻浣虹帛閹歌煤濮椻偓婵$敻宕熼姘辩杸濡炪倖鏌ㄩ妵娆撳閵堝棛鍘遍梺鍝勫暊閸嬫挾绱掗鑺ュ磳鐎殿喛顕ч鍏煎緞鐎n剙寮抽梺璇插嚱缂嶅棙绂嶉悙鏉戭嚤鐎光偓閸曨兘鎷洪梺鍛婄箓鐎氼厼锕㈤幍顔剧<閻庯綆鍋勯悘鎾煕閳哄啫浠辨鐐差儔閺佸啴鍩€椤掑嫮宓侀柕蹇娾偓鑼畾闂侀潧鐗嗛幏鎴濐潖濡ゅ懏鐓欐い鏇炴缁嬭菐閸パ嶈含闁诡喗鐟╅、鏃堝礋閵娿儰澹曢梺鍝勬川婵潧鐣烽弻銉︾厱妞ゆ劗濮撮崝姘辩棯閹勫仴闁哄矉缍佹慨鈧柍鎯版硾缂嶅﹪骞忛幋锔藉亜闁告縿鍎抽鏇㈡⒑閻熼偊鍤熼柛瀣枛楠炲﹪宕熼娑氬幈闁硅壈鎻徊浠嬪几濞戙垺鐓涢悘鐐额嚙婵″ジ鏌嶇憴鍕伌鐎规洖宕~婊堝幢濮楀牏纾兼繝鐢靛У椤旀牠宕抽婊冪筏濞寸姴顑嗛崑瀣煙閹规劦鍤欑紒鐘崇墬娣囧﹪濡堕崒姘闂備礁纾划顖炲箲閸パ呮殾鐟滅増甯╅弫濠囨煟閿濆懎顨欓梺顓у灠閳规垿鏁嶉崟顐℃澀闂佺ǹ枪閸婃繂鐣烽敐澶婄妞ゆ棁鍋愰崫妤呮煛婢跺﹦澧戦柛鏂块叄閸╃偛顓奸崨顏呮杸闂佺粯锚瀵爼骞栭幇顔剧<闁绘ê鐏氶崵鈧梻鍥ь樀閺屻劌鈹戦崱妯烘闂佺懓寮堕幃鍌炲蓟濞戞鐔虹磼濡 鍋撻幇顓熷弿濠电姴鎳忛鐘电磼椤旂晫鎳囨鐐村姈閹棃濮€閳ユ剚浼嗛梻鍌氬€烽悞锕€顪冮崸妤€鐭楅幖娣妼缁愭鎱ㄥΟ鍨厫闁搞倕绉瑰鍫曞醇濞戞ê顬嬪銈傛櫇閸忔﹢骞冨Δ鍛櫜閹肩补鈧尙鐖遍梻浣哥秺椤ユ挾鍒掗婊勫床婵炴垶鐟︾紞鍥煕閹炬鍟悡鍌炴⒒娴d警鏀版繛鍛礋閹兘濡搁埡浣勶箓鏌熼悧鍫熺凡缂佺姵濞婇弻鐔衡偓娑欋缚缁犳ḿ鎲搁弶娆炬Ч濞e洤锕幃娆擃敂閸曘劌浜鹃柡宥庡亝閺嗘粓鏌熼悜姗嗘當缁惧墽鎳撻埞鎴︽偐瀹曞浂鏆¢梺绋垮椤ㄥ棛鎹㈠☉銏犲耿婵☆垵顕ч棄宥夋⒑缂佹ɑ灏伴柣鐔叉櫅椤曪綁宕奸弴鐐哄敹闂佺粯鏌ㄩ崲鍙夋叏閵忋倖鈷戝ù鍏肩懇濡绢喚绱掗鑺ュ磳鐎殿喖顭烽崺鍕礃閳轰緡鈧挾绱撴担鍓插剰缂併劑浜跺畷鎴﹀箻鐠囨煡鏁滃┑掳鍊愰崑鎾绘煢閸愵亜鏋涢柡灞炬礃缁绘盯鎮欓浣哄絾闂備胶枪椤戝懎螞濠靛钃熸繛鎴炵煯濞岊亪鏌涢幘妞诲亾婵℃彃鐗嗛—鍐Χ閸涘宕梺鐟板殩閹凤拷
  • python convert.py mnist.onnx rv1106 i8 mnist_i8.rknn

 

参考链接

  1. Toybrick-开源社区-人工智能-RK3399Pro入门教程(9)MNIST RKNN量化教程 (rock-chips.com)
  2. 3. 手写数字识别 — [野火]嵌入式AI应用开发实战指南—基于LubanCat-RK系列板卡 文档 (embedfire.com)
  3.  Ubuntu平台下ONNX模型转RKNN - Linux与安卓 - 电子工程世界-论坛 (eeworld.com.cn)
  4. onnx模型输入输出维度修改_如何设置onnx模型的输入输出-CSDN博客

2rknn.zip

7.47 MB, 下载次数: 3

最新回复

先要获取相应的数据集进入mnist数据目录下,再解压,然后运行,将原先压缩的数据转为图片,得到量化需要文件。 好吧,记住了   详情 回复 发表于 2024-6-2 08:43
点赞 关注

回复
举报

6947

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

先要获取相应的数据集进入mnist数据目录下,再解压,然后运行,将原先压缩的数据转为图片,得到量化需要文件。

好吧,记住了

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 2/8 下一条
ADI &文晔 探索季第一站,邀您在活动帖跟帖,ADI资深工程师将与您一道寻求解决之道! ...
春晚,最出圈当属穿着棉马甲跳秧歌的机器人”秧Bot”。
转手绢、飞手绢、变换队形,精准度和稳定性甚至超越人类,这背后少不了电机控制技术。

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表