參考
https://www.toradex.cn/blog/nxp-imx8ji-yueiq-kuang-jia-ce-shi-machine-learning
IMX-MACHINE-LEARNING-UG.pdf
CPU和NPU圖像分類
cd /usr/bin/tensoRFlow-lite-2.4.0/examples
CPU運行
./label_image -m mobilenet_v1_1.0_224_quant.tflite -i grace_hopper.bmp -l labels.txt
INFO: Loaded model mobilenet_v1_1.0_224_quant.tflite
INFO: resolved reporter
INFO: invoked
INFO: averagetime:50.66ms
INFO: 0.780392: 653 military unIForm
INFO: 0.105882: 907 Windsor tie
INFO: 0.0156863: 458 bow tie
INFO: 0.0117647: 466 bulletproof vest
INFO: 0.00784314: 835 suit
GPU/NPU加速運行
./label_image -m mobilenet_v1_1.0_224_quant.tflite -i grace_hopper.bmp -l labels.txt-a 1
INFO: Loaded model mobilenet_v1_1.0_224_quant.tflite
INFO: resolved reporter
INFO: Created TensorFlow Lite delegate for NNAPI.
INFO: Applied NNAPI delegate.
INFO: invoked
INFO: average time:2.775ms
INFO: 0.768627: 653 military uniform
INFO: 0.105882: 907 Windsor tie
INFO: 0.0196078: 458 bow tie
INFO: 0.0117647: 466 bulletproof vest
INFO: 0.00784314: 835 suit
USE_GPU_INFERENCE=0./label_image -m mobilenet_v1_1.0_224_quant.tflite -i grace_hopper.bmp -l labels.txt--external_delegate_path=/usr/lib/libvx_delegate.so
Python運行
python3 label_image.py
INFO: Created TensorFlow Lite delegate for NNAPI.
Applied NNAPI delegate.
WARM-up time:6628.5ms
Inference time: 2.9 ms
0.870588: military uniform
0.031373: Windsor tie
0.011765: mortarboard
0.007843: bow tie
0.007843: bulletproof vest
基準測試CPU單核運行
./benchmark_model --graph=mobilenet_v1_1.0_224_quant.tflite
STARTING!
Log parameter values verbosely: [0]
Graph: [mobilenet_v1_1.0_224_quant.tflite]
Loaded model mobilenet_v1_1.0_224_quant.tflite
The input model file size (MB): 4.27635
Initialized session in 15.076ms.
Running benchmark for at least 1 iterations and at least 0.5 seconds but terminate if exceeding 150 seconds.
count=4 first=166743 curr=161124 min=161054 max=166743avg=162728std=2347
Running benchmark for at least 50 iterations and at least 1 seconds but terminate if exceeding 150 seconds.
count=50 first=161039 curr=161030 min=160877 max=161292 avg=161039std=94
Inference timings in us: Init: 15076, First inference: 166743, Warmup (avg):162728, Inference (avg):161039
Note: as the benchmark tool itself affects memory footprint, the following is only APPROXIMATE to the actual memory footprint of the model at runtime. Take the information at your discretion.
Peak memory footprint (MB): init=2.65234 overall=9.00391
CPU多核運行
./benchmark_model --graph=mobilenet_v1_1.0_224_quant.tflite --num_threads=4
4核--num_threads設置為4性能最好
STARTING!
Log parameter values verbosely: [0]
Num threads: [4]
Graph: [mobilenet_v1_1.0_224_quant.tflite]
#threads used for CPU inference: [4]
Loaded model mobilenet_v1_1.0_224_quant.tflite
The input model file size (MB): 4.27635
Initialized session in 2.536ms.
Running benchmark for at least 1 iterations and at least 0.5 seconds but terminate if exceeding 150 seconds.
count=11 first=48722 curr=44756 min=44597 max=49397 avg=45518.9 std=1679
Running benchmark for at least 50 iterations and at least 1 seconds but terminate if exceeding 150 seconds.
count=50 first=44678 curr=44591 min=44590 max=50798avg=44965.2std=1170
Inference timings in us: Init: 2536, First inference: 48722, Warmup (avg):45518.9, Inference (avg):44965.2
Note: as the benchmark tool itself affects memory footprint, the following is only APPROXIMATE to the actual memory footprint of the model at runtime. Take the information at your discretion.
Peak memory footprint (MB): init=1.38281 overall=8.69922
GPU/NPU加速
./benchmark_model --graph=mobilenet_v1_1.0_224_quant.tflite --num_threads=4 --use_nnapi=true
STARTING!
Log parameter values verbosely: [0]
Num threads: [4]
Graph: [mobilenet_v1_1.0_224_quant.tflite]
#threads used for CPU inference: [4]
Use NNAPI: [1]
NNAPI accelerators available: [vsi-npu]
Loaded model mobilenet_v1_1.0_224_quant.tflite
INFO: Created TensorFlow Lite delegate for NNAPI.
Explicitly applied NNAPI delegate, and the model graph will be completely executed by the delegate.
The input model file size (MB): 4.27635
Initialized session in 3.968ms.
Running benchmark for at least 1 iterations and at least 0.5 seconds but terminate if exceeding 150 seconds.
count=1 curr=6611085
Running benchmark for at least 50 iterations and at least 1 seconds but terminate if exceeding 150 seconds.
count=369 first=2715 curr=2623 min=2572 max=2776avg=2634.2std=20
Inference timings in us: Init: 3968, First inference: 6611085, Warmup (avg): 6.61108e+06, Inference (avg): 2634.2
Note: as the benchmark tool itself affects memory footprint, the following is only APPROXIMATE to the actual memory footprint of the model at runtime. Take the information at your discretion.
Peak memory footprint (MB): init=2.42188 overall=28.4062
結果對比
CPU運行 | CPU多核多線程 | NPU加速 | |
圖像分類 | 50.66 ms | 2.775 ms | |
基準測試 | 161039uS | 44965.2uS | 2634.2uS |
OpenCV DNN
cd /usr/share/OpenCV/samples/bin
./example_dnn_classification --input=dog416.png --zoo=models.yml squeezenet
下載模型
cd /usr/share/opencv4/testdata/dnn/
python3 download_models_basic.py
圖像分類
cd /usr/share/OpenCV/samples/bin
./example_dnn_classification --input=dog416.png --zoo=models.yml squeezenet
![e2a1f644-c70d-11ec-8521-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9C/36/wKgaomTnw76AbYOgAAHdlRWZVSo773.jpg)
文件瀏覽器地址欄輸入
ftp://ftp.toradex.cn/Linux/i.MX8/eIQ/OpenCV/Image_Classification.zip
下載文件
解壓得到文件models.yml和squeezenet_v1.1.caffemodel
cd /usr/share/OpenCV/samples/bin
將文件導入到開發板的/usr/share/OpenCV/samples/bin目錄下
$cp/usr/share/opencv4/testdata/dnn/dog416.png /usr/share/OpenCV/samples/bin/
$cp/usr/share/opencv4/testdata/dnn/squeezenet_v1.1.prototxt /usr/share/OpenCV/samples/bin/
$cp/usr/share/OpenCV/samples/data/dnn/classification_classes_ILSVRC2012.txt /usr/share/OpenCV/samples/bin/
$ cd /usr/share/OpenCV/samples/bin/
圖片輸入
./example_dnn_classification --input=dog416.png --zoo=models.yml squeezenet
報錯
root@myd-jx8mp:/usr/share/OpenCV/samples/bin# ./example_dnn_classification --input=dog416.png --zoo=model.yml squeezenet
ERRORS:
Missing parameter: 'mean'
Missing parameter: 'rgb'
加入參數--rgb 和 --mean=1
還是報錯加入參數--mode
root@myd-jx8mp:/usr/share/OpenCV/samples/bin# ./example_dnn_classification --rgb --mean=1 --input=dog416.png --zoo=models.yml squeezenet
[WARN:0]global/usr/src/debug/opencv/4.4.0.imx-r0/git/modules/videoio/src/cap_gstreamer.cpp (898) open OpenCV | GStreamer warning: unable to query duration of stream
[WARN:0]global/usr/src/debug/opencv/4.4.0.imx-r0/git/modules/videoio/src/cap_gstreamer.cpp (935) open OpenCV | GStreamer warning: Cannot query video position: status=1, value=0, duration=-1
root@myd-jx8mp:/usr/share/OpenCV/samples/bin#./example_dnn_classification --rgb --mean=1 --input=dog416.png --zoo=models.yml squeezenet --mode
[WARN:0]global/usr/src/debug/opencv/4.4.0.imx-r0/git/modules/videoio/src/cap_gstreamer.cpp (898) open OpenCV | GStreamer warning: unable to query duration of stream
[WARN:0]global/usr/src/debug/opencv/4.4.0.imx-r0/git/modules/videoio/src/cap_gstreamer.cpp (935) open OpenCV | GStreamer warning: Cannot query video position: status=1, value=0, duration=-1
視頻輸入
./example_dnn_classification --device=2 --zoo=models.yml squeezenet
問題
如果testdata目錄下沒有文件,則查找下
lhj@DESKTOP-BINN7F8:~/myd-jx8mp-yocto$ find . -name "dog416.png"
./build-xwayland/tmp/work/cortexa53-crypto-mx8mp-poky-linux/opencv/4.4.0.imx-r0/extra/testdata/dnn/dog416.png
再將相應的文件復制到開發板
cd./build-xwayland/tmp/work/cortexa53-crypto-mx8mp-poky-linux/opencv/4.4.0.imx-r0/extra/testdata/
tar -cvf /mnt/e/dnn.tar ./dnn/
cd/usr/share/opencv4/testdata目錄不存在則先創建
rz導入dnn.tar
解壓tar -xvf dnn.tar
terminate calLEDafter throwing an instance of 'cv::Exception'
what():OpenCV(4.4.0)/usr/src/debug/opencv/4.4.0.imx-r0/git/samples/dnn/classification.cpperrorAssertion failed) !model.empty() in function 'main'
Aborted
lhj@DESKTOP-BINN7F8:~/myd-jx8mp-yocto/build-xwayland$ find . -name classification.cpp
lhj@DESKTOP-BINN7F8:~/myd-jx8mp-yocto/build-xwayland$ cp ./tmp/work/cortexa53-crypto-mx8mp-poky-linux/opencv/4.4.0.imx-r0/packages-split/opencv-src/usr/src/debug/opencv/4.4.0.imx-r0/git/samples/dnn/classification.cpp /mnt/e
lhj@DESKTOP-BINN7F8:~/myd-jx8mp-yocto/build-xwayland$
YOLO對象檢測
cd /usr/share/OpenCV/samples/bin
./example_dnn_object_detection --width=1024 --height=1024 --scale=0.00392 --input=dog416.png --rgb --zoo=models.yml yolo
![e2ba8f74-c70d-11ec-8521-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9C/36/wKgaomTnw76AX6D_AAFdj4dCpVE602.jpg)
https://pjreddie.com/darknet/yolo/下載cfg和weights文件
cd/usr/share/OpenCV/samples/bin/
導入上面下載的文件
cp/usr/share/OpenCV/samples/data/dnn/object_detection_classes_yolov3.txt/usr/share/OpenCV/samples/bin/
cp/usr/share/opencv4/testdata/dnn/yolov3.cfg/usr/share/OpenCV/samples/bin/./example_dnn_object_detection --width=1024 --height=1024 --scale=0.00392 --input=dog416.png --rgb --zoo=models.yml yolo
OpenCV經典機器學
cd /usr/share/OpenCV/samples/bin
線性SVM
./example_tutorial_introduction_to_svm
![e2d1263a-c70d-11ec-8521-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9C/36/wKgaomTnw76AfybhAACOJ2sdktw670.jpg)
非線性SVM
./example_tutorial_non_linear_svms
![e2e33c80-c70d-11ec-8521-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9C/36/wKgaomTnw76ARz_mAACtLfBC3v0989.jpg)
PCA分析
./example_tutorial_introduction_to_pca ../data/pca_test1.jpg
![e2fa2152-c70d-11ec-8521-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9C/36/wKgaomTnw76AZ4O6AAEQWhua_Zg265.jpg)
邏輯回歸
./example_cpp_logistic_regression
![e310c22c-c70d-11ec-8521-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9C/36/wKgaomTnw7-AIgNWAACMuleO1gs687.jpg)
![e323f9c8-c70d-11ec-8521-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9C/36/wKgaomTnw7-AUKbbAAHn_9SDw08217.jpg)
![e3371f58-c70d-11ec-8521-dac502259ad0.jpg](https://file1.elecfans.com//web2/M00/9C/36/wKgaomTnw7-AQLG-AAForrV8-b4623.jpg)
-
嵌入式開發
+關注
關注
18文章
1036瀏覽量
47747
發布評論請先 登錄
相關推薦
2.3T算力,真的強!1分鐘學會NPU開發,基于NXP i.MX 8MP平臺!
![2.3T算力,真的強!1分鐘學會<b class='flag-5'>NPU</b><b class='flag-5'>開發</b>,基于NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>8</b>MP平臺!](https://file1.elecfans.com//web3/M00/07/17/wKgZO2eS-RqAbcf2AACw5bodGsI032.png)
恩智浦i.MX 94應用處理器如何變革工業和汽車連接
i.MX Linux開發實戰指南—基于野火i.MX系列開發板
使用TPS6521825和LP873347 PMIC為NXP i.MX 8M Mini和Nano供電
![使用TPS6521825和LP873347 PMIC為NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>8M</b> Mini和Nano供電](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
貿澤開售NXP Semiconductors i.MX 8ULP跨界應用處理器
i.MX 8M Plus中的ISP圖像信號處理模塊特性概述
康佳特推出基于恩智浦i.MX 95系列處理器的新款SMARC模塊
![康佳特推出基于恩智浦<b class='flag-5'>i.MX</b> 95系列<b class='flag-5'>處理器</b>的新款SMARC模塊](https://file1.elecfans.com/web2/M00/FC/CA/wKgZomaWGaeAB9k7AAJn1VL0ouU987.jpg)
TSN時鐘同步 | PTP對時案例演示——基于NXP i.MX 8M Plus
NXP系列-NXP i.MX 93核心板開發板-入門級嵌入式核心板-產品資料
重新定義入門級嵌入式處理器模組-米爾NXP i.MX 93核心板
![重新定義入門級嵌入式<b class='flag-5'>處理器</b>模組-米爾NXP <b class='flag-5'>i.MX</b> 93核心<b class='flag-5'>板</b>](https://file1.elecfans.com//web2/M00/D0/E7/wKgaomYiPkqAVXeSAABNhniCj3Y200.png)
適用于 NXP i.MX 8M Mini 的 TPS6521825 電源管理IC TPS6521825數據表
![適用于 NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>8M</b> Mini 的 TPS6521825 電源管理IC TPS6521825數據表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論