發(fā)燒友實測 | iMX8MP開發(fā)板移植官方NPU TensorFlow例程
作者|donatello1996
來源 | 電子發(fā)燒友
題圖|飛凌嵌入式
飛凌嵌入式OKMX8MP-C開發(fā)板基于NXP i.MX 8M Plus處理器開發(fā)設(shè)計,該系列處理器專注于機器學(xué)習(xí)與視覺、高級多媒體以及具有高可靠性的工業(yè)自動化。旨在滿足智慧城市、工業(yè)互聯(lián)網(wǎng)、智能醫(yī)療、智慧交通等應(yīng)用的需求。強大的四核或雙核Arm? Cortex?-A53處理器,主頻高達1.6GHz,帶有神經(jīng)處理單元(NPU),最高運行速率可達2.3TOPS。
本文采用的硬件板卡為飛凌嵌入式OKMX8MP-C開發(fā)板,系統(tǒng)版本Linux5.4.70+Qt5.15.0,主要介紹移植官方NPU TensorFlow例程。
一、 NPU的圖像識別例程
在OKMX8MP-C 開發(fā)板提供的產(chǎn)品使用手冊中,有一章是針對 iMX8MP 板上NPU的圖像識別例程,位于EMMC分區(qū)的/usr/bin/tensoRFlow-lite-2.3.1/examples,我將EMMC分區(qū)mount為了/media分區(qū),找到對應(yīng)的例程位置。
將 iMX8MP 開發(fā)板切換到EMMC啟動,進入/usr/bin/tensorflow-lite-2.3.1/examples/目錄下,運行測試example:
再將 iMX8MP 開發(fā)板切回TF卡系統(tǒng)運行,提示報錯,label_image程序的nnapi需要動態(tài)鏈接庫支持:
libm-2.30.so libneuralnetworks.so.1.1.9 libnnrt.so.1.1.9 libArchModelSw.so libGAL.so libNNArchPerf.so libOpenVX.so.1.3.0 libovxlib.so.1.1.0 libVSC.so
其中l(wèi)ibm-2.30.so被鏈接為ld-linux-aarch64.so.1,位于/usr/lib/aarch64-linux-gnu/目錄下,若在移植后的目標(biāo)系統(tǒng)的/usr/lib/aarch64-linux-gnu/下沒有該庫文件的話,是會在運行時提示報錯的。將上述所有動態(tài)鏈接庫復(fù)制到正確位置(/usr/lib和/usr/lib/aarch64-linux-gnu/),再次運行:
可以看到?jīng)]有任何報錯,運行庫環(huán)境移植成功,接下來可以在 iMX8MP 開發(fā)板上愉快地進行tensorflow例程的玩耍了。
二、TensorFlow例程驗證
飛凌嵌入式iMX8MP官方資料中提供了許多測試例程,先用官方DEMO做一下驗證,其驗證結(jié)果如下。
0.780392: 653 military unIForm 0.105882: 907 Windsor tie 0.0156863: 458 bow tie 0.0117647: 466 bulletproof vest 0.00784314: 835 suit
78%結(jié)果吻合陸軍制服,10%結(jié)果吻合溫莎領(lǐng)帶,1%結(jié)果吻合領(lǐng)結(jié),1%結(jié)果吻合防彈背心,不到1%結(jié)果吻合西裝,總的來說這個結(jié)果還是挺令人滿意的,NPU的算力確實還可以,多次運行程序,得出的結(jié)果完全相同,說明 iMX8MP NPU計算時使用的是固定的/靜態(tài)的圖像識別庫。
我這邊突發(fā)奇想,用這個Demo去測一下我自己的論壇頭像,看看結(jié)果:
0.352941: 274 dingo 0.254902: 265 Cardigan 0.184314: 264 Pembroke 0.0666667: 163 beagle 0.0156863: 354 gazelle
再來試試另外幾張圖片,為了檢驗iMX8MP NPU的人工智能算力到底行不行,集齊了十張圖,豪華尊享。由于源碼不開放,所以無法移植源碼到自己的例程中:
0.160784: 639 maillot 0.137255: 436 bathtub 0.117647: 886 velvet 0.0705882: 586 hair spray 0.0509804: 440 bearskin
0.972549: 644 mask 0.00392157: 918 comic book 0.00392157: 904 wig 0.00392157: 797 ski mask 0.00392157: 732 plunger
0.380392: 583 grocery store 0.321569: 957 custard apple 0.0862745: 955 banana 0.0352941: 956 jackfruit 0.027451: 954 pineapple
0.254902: 918 comic book 0.0470588: 771 running shoe 0.0470588: 474 can opener 0.0470588: 412 apron 0.0392157: 794 shower cap
0.52549: 922 book jacket 0.0705882: 788 shield 0.0705882: 452 bolo tie 0.0588235: 627 lighter 0.0352941: 701 paper towel
0.121569: 656 miniskirt 0.054902: 835 suit 0.0470588: 852 television 0.0470588: 440 bearskin 0.0392157: 679 neck brace
0.65098: 918 comic book 0.172549: 747 puck 0.0196078: 922 book jacket 0.0196078: 723 ping-pong ball 0.0117647: 806 soccer ball
0.678431: 918 comic book 0.0784314: 418 balloon 0.0470588: 880 umbrella 0.0470588: 722 pillow 0.0156863: 644 mask
0.184314: 585 hair slide 0.156863: 794 shower cap 0.0941176: 797 ski mask 0.0431373: 644 mask 0.0352941: 571 gasmask
十張圖片的識別結(jié)果均以編碼方式呈現(xiàn),從識別的概率結(jié)果來看,飛凌的這款 iMX8MP 開發(fā)板的NPU的算力還是非常強的。
據(jù)官方介紹,i.MX 8M Plus處理器內(nèi)置NPU,可達到2.3 TOPS(Tera Operations Per Second,1TOPS代表處理器每秒鐘可進行一萬億次操作)算術(shù)處理,并實現(xiàn)先進的AI算法處理。并且NXP為i.MX 8M Plus處理器的NPU提供了一些特定用例,例如能夠處理40,000多個英文單詞,MobileNet v1模型可以每秒處理超過500張圖像的圖像分類。
------------------------------------
作者簡介:
donatello1996,某大型企業(yè)資深嵌入式工程師,電子發(fā)燒友論壇技術(shù)大牛,同時也是飛凌嵌入式多年鐵粉,曾基于飛凌多款板卡產(chǎn)出過優(yōu)質(zhì)測評文章或使用心得。本期三篇文章為donatello1996在使用OKMX8MP-C開發(fā)板過程中精心產(chǎn)出的干貨,在此對donatello1996表示感謝。
相關(guān)產(chǎn)品 >
-
OKMX8MP-C開發(fā)板
內(nèi)置NPU、ISP,AI計算能力高達2.3TOPS|飛凌嵌入式i.MX8MP 系列-NXP iMX8M Plus 開發(fā)板 基于高性能低功耗工業(yè)級iMX8MP核心板設(shè)計,支持多種多種高速通信接口。iMX8MP開發(fā)板內(nèi)置NPU,AI計算能力2.3TOPS,支持4K,支持雙圖像信號處理器(ISP),是一款支持LinuxQT/android操作系統(tǒng)的iMX8MP開發(fā)板。
了解詳情 -
FETMX8MP-C核心板
iMX8MP核心板基于 NXP i.MX 8M Plus 處理器設(shè)計, 采用4核Cortex-A53 和 Cortex-M7架構(gòu)。支持雙千兆網(wǎng)口,iMX8MP性能強勁最高運行速率可達2.3TOPS,并且i.MX8MP功耗更低≤2W 。iMX 8M Plus系列專注于機器學(xué)習(xí)和視覺、高級多媒體以及具有高可靠性的工業(yè)自動化。它旨在滿足智慧家庭、樓宇、城市和工業(yè)4.0應(yīng)用的需求。飛凌iMX8MP核心板提供用戶手冊,iMX8MP原理圖,引腳定義等。
了解詳情