Examen du SBC Youyeetoo Rockchip RK3568 avec Lubuntu 20.04 et le SDK RKNPU2 AI

Examen du SBC Youyeetoo Rockchip RK3568 avec Lubuntu 20.04 et le SDK RKNPU2 AI

Nous avons déjà examiné le Rockchip RK3568-power Youyeetoo YY3568 SBC avec Android 11 – et répertorié les spécifications et vérifié le kit matériel – dans la première partie de l’examen. Nous avons maintenant eu le temps de passer à Lubuntu 20.04, d’effectuer quelques tests de base et d’examiner de plus près le SDK AI RKNPU2 pour l’accélérateur IA TOPS 0.8 intégré trouvé dans le SoC Rockchip RK3568.

Installer Ubuntu ou Debian sur YY3568 SBC

La société fournit des images Debian et Ubuntu pour le SBC YY3568 avec des images différentes en fonction du périphérique de démarrage (carte SD ou flash eMMC) et de l’interface vidéo utilisée (DSI, eDP, HDMI).

Images Debian YY3568
Liste des images Debian 10
YY3568 images Ubuntu
Liste des images « Ubuntu 20 »

Notre kit YY3568 « Bundle 5 » est livré avec un écran eDP de 11,6 pouces, nous allons donc sélectionner l’image « Ubuntu 20 » avec edp dans le nom de fichier. Le programme RKDevTool est utilisé pour flasher des images Linux et c’est la même procédure que celle que nous avons utilisée avec Android 11.

Image Ubuntu de RKDevTool

Une fois l’installation terminée, nous pouvons appuyer sur le bouton Réinitialiser et démarrer Ubuntu 20.04, ou plus exactement Lubuntu 20.04 avec l’environnement de bureau LXQt.

Youteetoo YY3568 Lubuntu 20.04

YY3568 Informations système Linux
Informations système YY3568 (Phoronix Test Suite)

Analyse comparative du SBC YY3568 sous Linux

Maintenant que Lubuntu 20.04 est correctement installé, nous pouvons exécuter quelques tests Linux sur le SBC YY3568.

Nous allons commencer par le script sbc-bench.sh de Thomass Kaiser :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

petit membre, ramlat, mhz. Fait.

Vérification de cpufreq OPP. Terminé (les résultats seront disponibles dans 10 à 16 minutes).

Exécution de tinymembench. Fait.

Exécution du testeur de latence RAM. Fait.

Exécution du benchmark OpenSSL. Fait.

Exécution d’un benchmark 7-zip. Fait.

Vérification à nouveau de cpufreq OPP. Terminé (13 minutes se sont écoulées).

Validation des résultats :

* Vitesse d’horloge maximale du processeur annoncée par rapport à celle mesurée : -5,4 % avant, -6,4 % après

* Activité en arrière-plan (% système) OK

* Pas de limitation

Performances de la mémoire

mémoire : 3074,9 Mo/s

jeu de mémoires : 5 942,3 Mo/s

Scores totaux 7-zip (3 exécutions consécutives) : 4496,4437,4431, monothread : 1211

Résultats OpenSSL :

tapez 16 octets 64 octets 256 octets 1024 octets 8192 octets 16384 octets

aes-128-cbc 178431,77k 520431,64k 992779,52k 1288375,30k 1411738,28k 1420580,18k

aes-128-cbc 181153,17k 521213,70k 994408,62k 1288928,94k 1410916,35k 1421082,62k

aes-192-cbc 172219,92k 460495,64k 802809,26k 990434,99k 1061336,41k 1067149,99k

aes-192-cbc 172259,37k 460785,32k 802708,99k 990319,62k 1060656,47k 1066183,34k

aes-256-cbc 165998,18k 424880,55k 694931,71k 826145,11k 872235,01k 875752,11k

aes-256-cbc 165966,50k 424769,43k 694433,88k 826590,55k 872420,69k 875724,80k

Vous pouvez trouver tous les détails @ http://ix.io/4Ga2

Nous avons ensuite utilisé iozone de Phoronix Test Suite pour tester les vitesses de lecture et d’écriture du flash eMMC. Avec une taille de fichier de 512 Mo et une taille de bloc de 1 Mo, iozone a signalé une vitesse de lecture de 1190,83 Mo/sec, ce qui ne semble pas réaliste :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

IOzone 3.465 :

pts/iozone-1.9.6 [Record Size: 1MB – File Size: 512MB – Disk Test: Read Performance]

Test 1 sur 8

Statut du profil de test : obsolète

Nombre estimé d’essais : 3

Durée estimée du test : 20 minutes

Taille de l’enregistrement : 1 Mo – Taille du fichier : 512 Mo – Test du disque : Performances de lecture :

1068.0517578125

1322.853515625

1323.724609375

1251.857421875

1277.0048828125

1307.0283203125

1366.4228515625

1238.892578125

1197.197265625

999.79296875

1297.1181640625

1060.5302734375

979.6884765625

1058.6123046875

1113.677734375

Moyenne : 1 190,83 Mo/s

Écart : 11,01 %

Échantillons : 15

Comparaison de 1 716 échantillons OpenBenchmarking.org depuis le 26 février 2011 au 2 août ; résultat médian : 4716 Mo/s. Boîte à moustaches d’échantillons :

[  |—*——–###########!######*####—*—-*————-*—-*–|     ]

^ Ce résultat (6e centile) : 1191

Base de données de 512 Go : 5833 ^ Disque vidéo DELLBOSS de 240 Go : 11355 ^

480 Go SAMSUNG MZ7LH480 : 10579 ^

2 SSD Samsung 850 : 8195 de 250 Go ^

5 x 500 Go Crucial_CT500MX2 : 7346 ^

Ce résultat est clairement dû à la mise en cache, nous avons donc répété le test directement avec iozone en utilisant le paramètre I pour permettre à « DIRECT IO » de contourner le cache tampon et d’accéder directement au disque :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

root@smartfly:/# iozone -e -I -a -s 512M -r 1024k -r 16384k -i 0 -i 1 -i 2

Iozone : test de performances des E/S de fichiers

Version $Révision : 3.489 $

Compilé pour le mode 64 bits.

Version : Linux

Début de la course : mercredi 20 septembre 15:24:27 2023

Inclure fsync dans le timing d’écriture

Fonctionnalité O_DIRECT activée

Mode automatique

Taille du fichier définie sur 524 288 Ko

Taille de l’enregistrement 1024 Ko

Taille de l’enregistrement 16 384 Ko

Ligne de commande utilisée : iozone -e -I -a -s 512M -r 1024k -r 16384k -i 0 -i 1 -i 2

La sortie est en kilo-octets/s

Résolution temporelle = 0,000001 seconde.

Taille du cache du processeur définie sur 1 024 Ko.

Taille de la ligne de cache du processeur définie sur 32 octets.

Taille de foulée du fichier définie sur 17 * taille d’enregistrement.

aléatoire aléatoire bkwd foulée record

ko reclen écrire réécrire lire relire lire écrire lire réécrire lire fécrire freécrire fread freread

524288 1024 87888 89372 112574 113474 113612 85778

524288 16384 98887 95894 152500 153558 153118 100792

Test d’iozone terminé.

Cela représente une vitesse de lecture d’environ 153,5 Mo/s et une vitesse d’écriture de 98,8 Mo/s, donc le flash eMMC de 64 Go utilisé dans la carte est plutôt rapide.

Performances réseau

Nous testerons les performances des réseaux Ethernet et WiFi avec iperf3 en utilisant le routeur fourni par AIS (un opérateur télécom en Thaïlande)

La carte YY3568 dispose de deux interfaces Ethernet. Commençons par eth0 :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

root@smartfly:/# iperf3 -c 192.168.1.162 -fg

Connexion à l’hôte 192.168.1.162, port 5201

[  5] port local 192.168.1.131 39516 connecté au port 192.168.1.162 5201

[ ID] Retr Cwnd de débit binaire de transfert d’intervalle

[  5] 0,00-1,00 s 113 Mo 0,95 Gbits/s 0 451 Ko

[  5] 1,00-2,00 s 113 Mo 0,95 Gbits/s 0 477 Ko

[  5] 2,00-3,00 s 112 Mo 0,94 Gbits/s 0 477 Ko

[  5] 3,00-4,00 s 112 Mo 0,94 Gbits/s 0 499 Ko

[  5] 4,00-5,00 s 112 Mo 0,94 Gbits/s 0 525 Ko

[  5] 5,00-6,00 s 113 Mo 0,94 Gbits/s 0 525 Ko

[  5] 6,00-7,00 s 112 Mo 0,94 Gbits/s 0 525 Ko

[  5] 7,00-8,00 s 113 Mo 0,95 Gbits/s 0 549 Ko

[  5] 8,00-9,00 s 112 Mo 0,94 Gbits/s 0 549 Ko

[  5] 9h00-10h00 s 112 Mo 0,94 Gbits/s 0 549 Ko

– – – – – – – – – – – – – – – – – – – – – – – –

[ ID] Retrait du débit binaire de transfert par intervalle

[  5] 0,00-10,00 s 1,10 Go 0,94 Gbits/s 0 expéditeur

[  5] 0,00-10,04 s 1,10 Go Récepteur 0,94 Gbits/s

iperf Terminé.

Tout va bien, et la même chose peut être dite lors de l’exécution du test sur Eth1 :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

root@smartfly:/# iperf3 -c 192.168.1.162 -fg

Connexion à l’hôte 192.168.1.162, port 5201

[  5] port local 192.168.1.134 54100 connecté au port 192.168.1.162 5201

[ ID] Retr Cwnd de débit binaire de transfert d’intervalle

[  5] 0,00-1,00 s 113 Mo 0,95 Gbits/s 0 451 Ko

[  5] 1,00-2,00 s 112 Mo 0,94 Gbits/s 0 520 Ko

[  5] 2,00-3,00 s 113 Mo 0,95 Gbits/s 0 520 Ko

[  5] 3,00-4,00 s 112 Mo 0,94 Gbits/s 0 547 Ko

[  5] 4,00-5,00 s 113 Mo 0,94 Gbits/s 0 547 Ko

[  5] 5,00-6,00 s 112 Mo 0,94 Gbits/s 0 547 Ko

[  5] 6,00-7,00 s 112 Mo 0,94 Gbits/s 0 547 Ko

[  5] 7,00-8,00 s 112 Mo 0,94 Gbits/s 0 547 Ko

[  5] 8,00-9,00 s 112 Mo 0,94 Gbits/s 0 547 Ko

[  5] 9h00-10h00 s 112 Mo 0,94 Gbits/s 0 547 Ko

– – – – – – – – – – – – – – – – – – – – – – – –

[ ID] Retrait du débit binaire de transfert par intervalle

[  5] 0,00-10,00 s 1,10 Go 0,94 Gbits/s 0 expéditeur

[  5] 0,00-10,04 s 1,10 Go Récepteur 0,94 Gbits/s

Nous avons utilisé le réseau 5 GHz du routeur AIS pour tester le WiFi 5 (module RTL8822CE) et la vitesse moyenne de transmission des données était respectable de 575 Mbps.

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

root@smartfly:/# iperf3 -c 192.168.1.162 -fm

Connexion à l’hôte 192.168.1.162, port 5201

[  5] port local 192.168.1.124 39890 connecté au port 192.168.1.162 5201

[ ID] Retr Cwnd de débit binaire de transfert d’intervalle

[  5] 0,00-1,01 s 51,5 Mo 427 Mbits/s 0 2,67 Mo

[  5] 1,01-2,00 s 72,5 Mo 614 Mbits/s 0 3,13 Mo

[  5] 2,00-3,00 s 73,8 Mo 620 Mbits/s 0 3,13 Mo

[  5] 3,00-4,00 s 73,8 Mo 619 Mbits/s 0 3,13 Mo

[  5] 4,00-5,01 s 71,2 Mo 591 Mbits/s 0 3,13 Mo

[  5] 5,01-6,01 s 70,0 Mo 590 Mbits/s 0 3,13 Mo

[  5] 6,01-7,00 s 71,2 Mo 602 Mbits/s 0 3,13 Mo

[  5] 7,00-8,00 s 72,5 Mo 608 Mbits/s 0 3,13 Mo

[  5] 8,00-9,00 s 73,8 Mo 616 Mbits/s 0 3,13 Mo

[  5] 9h00-10h01 s 61,2 Mo 509 Mbits/s 0 3,13 Mo

– – – – – – – – – – – – – – – – – – – – – – – –

[ ID] Retrait du débit binaire de transfert par intervalle

[  5] 0,00-10,01 s 692 Mo 579 Mbits/s 0 expéditeur

[  5] 0,00-10,08 s 691 Mo Récepteur 575 Mbits/s

La mise en réseau fonctionne donc bien sur le SBC YY3568 avec Ethernet ou WiFi 5

Accélération graphique 3D sur Rockchip RK3568

Nous avons testé les performances du GPU Mali-G52 avec le benchmark glmark2, le système obtenant 115 points.

Lubuntu glmark2 rockchip rk3568

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

=================================================== =====

glmark2 2021.02

=================================================== =====

Informations OpenGL

GL_VENDOR : BRAS

GL_RENDERER : Mali-G52

GL_VERSION : OpenGL ES 3.2 v1.g2p0-01eac0.327c41db9c110a33ae6f67b4cc0581c7

=================================================== =====

[build] use-vbo=false : FPS : 116 FrameTime : 8,621 ms

[build] use-vbo=true : FPS : 126 FrameTime : 7,937 ms

[texture] texture-filter=le plus proche : FPS : 156 FrameTime : 6,410 ms

[texture] texture-filter=linéaire : FPS : 150 FrameTime : 6,667 ms

[texture] texture-filter=mipmap : FPS : 157 FrameTime : 6,369 ms

[shading] shading=gouraud : FPS : 123 FrameTime : 8,130 ms

[shading] shading=blinn-phong-inf : FPS : 119 FrameTime : 8,403 ms

[shading] shading=phong : FPS : 122 FrameTime : 8,197 ms

[shading] shading=cel : FPS : 122 FrameTime : 8,197 ms

[bump] bump-render=high-poly : FPS : 91 FrameTime : 10,989 ms

[bump] bump-render=normals : FPS : 151 FrameTime : 6,623 ms

[bump] bump-render=hauteur : FPS : 147 FrameTime : 6,803 ms

[effect2d] noyau=0,1,0;1,-4,1;0,1,0; : FPS : 125 FrameTime : 8 000 ms

[effect2d] noyau = 1,1,1,1,1;1,1,1,1,1;1,1,1,1,1; : FPS : 70 FrameTime : 14,286 ms

[pulsar] light=false:quads=5:texture=false : FPS : 147 FrameTime : 6,803 ms

[desktop] Blur-radius=5:effect=blur:passes=1:separable=true:windows=4 : FPS : 78 FrameTime : 12,821 ms

[desktop] effect=shadow:windows=4 : FPS : 125 FrameTime : 8 000 ms

[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map : FPS : 55 FrameTime : 18,182 ms

[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata : FPS : 52 FrameTime : 19,231 ms

[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map : FPS : 73 FrameTime : 13,699 ms

[ideas] vitesse=durée : FPS : 74 FrameTime : 13,514 ms

[jellyfish] : FPS : 106 FrameTime : 9,434 ms

[terrain] : FPS : 28 FrameTime : 35,714 ms

[shadow] : FPS : 97 FrameTime : 10,309 ms

[refract] : FPS : 48 FrameTime : 20,833 ms

[conditionals] fragment-steps=0:vertex-steps=0 : FPS : 147 FrameTime : 6,803 ms

[conditionals] fragment-steps=5:vertex-steps=0 : FPS : 144 FrameTime : 6,944 ms

[conditionals] fragment-steps=0:vertex-steps=5 : FPS : 149 FrameTime : 6,711 ms

[function] fragment-complexity=low:fragment-steps=5 : FPS : 147 FrameTime : 6,803 ms

[function] fragment-complexity=medium:fragment-steps=5 : FPS : 129 FrameTime : 7,752 ms

[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5 : FPS : 144 FrameTime : 6,944 ms

[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5 : FPS : 146 FrameTime : 6,849 ms

[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5 : FPS : 131 FrameTime : 7,634 ms

=================================================== =====

glmark2 Note : 115

=================================================== =====

Le score est un peu faible, mais l’accélération matérielle graphique 3D est activée.

Lecture vidéo et audio

Nous avons visionné des vidéos YouTube pour tester la lecture vidéo et audio. La carte Youyeetoo YY3568 dispose de plusieurs options de sortie audio, notamment une prise audio 3,5 mm et un connecteur avec un amplificateur de puissance mono classe D pour connecter directement les haut-parleurs. Nous n’avons eu aucun problème de lecture vidéo et audio et tout a bien fonctionné. Cela devrait être une plate-forme appropriée pour les applications d’affichage numérique.

YouTube video

Le court clip vidéo ci-dessus montre une vidéo YouTube diffusée dans le navigateur Web Chromium.

Vérification du SDK RKNPU2 pour la charge de travail IA sur le SoC Rockchip RK3568

RKNN-Toolkit2 est un kit de développement logiciel (SDK) pour la charge de travail d’IA exécutée sur les SoC Rockchip récents avec un NPU, à savoir RK3566, RK3568, RK3588, RK3588S, RV1103, RV1106, RK3562).

Il y a deux parties pour commencer

  1. Prendre des modèles pré-entraînés et les convertir en modèles RKNN à l’aide des outils de https://github.com/rockchip-linux/rknn-toolkit2
  2. Utilisation du modèle transformé via le RKNPU2 disponible sur https://github.com/rockchip-linux/rknpu2

Installation

Dans cette test, nous montrerons comment déployer le modèle YOLO5 converti via rknn-toolkit2. Construisons l’exemple RKNPU2 pour le processeur Rockchip RK3568 :

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

root@smartfly:/# cd /home/youyeetoo/rknpu2/examples/rknn_yolov5_demo

root@smartfly:/home/youyeetoo/rknpu2/examples/rknn_yolov5_demo# ls

build-android_RK3562.sh build-linux_RK3588.sh README_CN.md

build-android_RK3566_RK3568.sh CMakeLists.txt README.md

build-android_RK3588.sh convert_rknn_demo src

build-linux_RK3562.sh inclut des utilitaires

modèle build-linux_RK3566_RK3568.sh

<2/examples/rknn_yolov5_demo# ./build-linux_RK3566_RK3568.sh

— L’identification du compilateur C est GNU 9.4.0

— L’identification du compilateur CXX est GNU 9.4.0

— Vérifiez que le compilateur C fonctionne : /usr/bin/aarch64-linux-gnu-gcc

— Vérifiez que le compilateur C fonctionne : /usr/bin/aarch64-linux-gnu-gcc — fonctionne

— Détection des informations ABI du compilateur C

— Détection des informations ABI du compilateur C – terminé

— Détection des fonctionnalités de compilation C

— Détection des fonctionnalités de compilation C – terminé

— Vérifiez que le compilateur CXX fonctionne : /usr/bin/aarch64-linux-gnu-g++

— Vérifiez que le compilateur CXX fonctionne : /usr/bin/aarch64-linux-gnu-g++ — fonctionne

— Détection des informations ABI du compilateur CXX

— Détection des informations ABI du compilateur CXX – terminé

— Détection des fonctionnalités de compilation CXX

— Détection des fonctionnalités de compilation CXX – terminé

— OpenCV trouvé : /home/youyeetoo/rknpu2/examples/3rdparty/opencv/opencv-linux-aarch64 (version trouvée « 3.4.5 »)

— Configuration terminée

— Génération terminée

— Les fichiers de build ont été écrits dans : /home/youyeetoo/rknpu2/examples/rknn_yolov5_demo/build/build_linux_aarch64rknn_benchmark/install/rknn_benchmark_Linux/lib/librknnrt.so

/home/youyeetoo/rknpu2/examples/rknn_benchmark

Une fois la construction terminée, nous obtiendrons un fichier binaire nommé rknn_yolov5_demo.

Exécution de YOLO5 sur la carte YY3568

Afin de tester l’échantillon, nous exécuterons rknn_yolov5_demo avec deux paramètres : un modèle à utiliser et une image d’entrée.

cd /home/youyeetoo/rknpu2/examples/rknn_yolov5_demo

./rknn_yolov5_demo ./model/RK3566_RK3568/yolov5s-640-640.rknn ./bus.jpg

La sortie sera l’image out.jpg avec des cases dessinées avec des étiquettes autour des objets détectés dans l’image. Le modèle est formé pour 640×640, alors ne soyez pas surpris si rien n’est détecté lors de l’utilisation d’images de différentes tailles. Outre l’image du bus, nous avons également testé l’image man.jpg, les deux ayant plusieurs objets détectés.

YOLO5 Rockchip RK3568
dehors.jpg

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

configuration post-traitement : box_conf_threshold = 0,25, nms_threshold = 0,45

Lire ./model/man.jpg …

largeur de l’image = 640, hauteur de l’image = 640

Mode de chargement…

version du SDK : 1.5.2 (c6b7b351a@2023-08-23T15:28:22) version du pilote : 0.8.8

numéro d’entrée du modèle : 1, numéro de sortie : 3

index=0, nom=images, n_dims=4, dims=[1, 640, 640, 3]n_elems=1228800, taille=1228800, w_stride = 640, size_with_stride=1228800, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-128, échelle=0,003922

index=0, nom=sortie, n_dims=4, dims=[1, 255, 80, 80]n_elems=1632000, taille=1632000, w_stride = 0, size_with_stride=1638400, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, échelle=0,003860

index=1, nom=283, n_dims=4, dims=[1, 255, 40, 40]n_elems=408000, taille=408000, w_stride = 0, size_with_stride=409600, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, échelle=0,003922

index=2, nom=285, n_dims=4, dims=[1, 255, 20, 20]n_elems=102000, taille=102000, w_stride = 0, size_with_stride=122880, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, échelle=0,003915

le modèle est l’entrée NHWC fmt

hauteur d’entrée du modèle = 640, largeur = 640, canal = 3

une fois exécuté, utilisez 78,917000 ms

loadLabelName ./model/coco_80_labels_list.txt

personne @ (89 157 258 631) 0.895037

bol @ (483 221 506 240) 0,679969

bol @ (395 322 444 343) 0,659576

verre à vin @ (570 200 588 241) 0.544585

bol @ (505 221 527 239) 0,477606

bol @ (482 322 532 338) 0,458121

verre à vin @ (543 199 564 239) 0.452579

tasse @ (418 215 437 238) 0.410092

tasse @ (385 204 402 240) 0,374592

tasse @ (435 212 451 238) 0,371657

bol @ (613 215 639 239) 0,359605

verre à vin @ (557 200 575 240) 0.359143

tasse @ (446 211 461 238) 0,358369

cuillère @ (255 257 271 313) 0,340807

bouteille @ (412 84 432 119) 0.338540

cuillère @ (307 267 322 326) 0,318563

cuillère @ (324 265 340 332) 0,315867

bouteille @ (453 305 466 340) 0.308927

tasse @ (526 210 544 239) 0,290318

bouteille @ (389 83 411 119) 0.277804

verre à vin @ (583 198 602 239) 0.277093

bol @ (24 359 101 383) 0,275663

four @ (4 370 168 632) 0,256395

cuillère @ (268 262 282 322) 0,252866

bouteille @ (434 85 454 118) 0.250721

nombre de boucles = 10, exécution moyenne 69,709700 ms

L’échantillon pouvait détecter jusqu’à 25 objets et cela a pris environ 70 ms, soit environ 14 FPS, ce qui peut être considéré comme assez rapide en utilisant un Raspberry Pi 4 avec YOLO5 et les mêmes images 640 × 640 fonctionnent à seulement 4 FPS (sur le CPU) .

Indice de référence RKNN

Nous pouvons évaluer les performances du NPU sur le YY3568 avec le benchmark RKNN fourni dans le SDK en exécutant le test 10 fois pour obtenir une valeur FPS moyenne.

./rknn_benchmark /home/youyeetoo/rknpu2/examples/rknn_yolov5_demo/model/RK3566_RK3568/yolov5s-640-640.rknn man.jpg 10

Sortir:

1

2

3

4

5

6

7

8

9

dix

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

Version rknn_api/rknnrt : 1.5.2 (c6b7b351a@2023-08-23T15:28:22), version du pilote : 0.8.8

taille du poids total : 7308672, taille interne totale : 6144000

taille totale dma utilisée : 21528576

numéro d’entrée du modèle : 1, numéro de sortie : 3

tenseurs d’entrée :

index=0, nom=images, n_dims=4, dims=[1, 640, 640, 3]n_elems=1228800, taille=1228800, w_stride = 640, size_with_stride=1228800, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-128, échelle=0,003922

tenseurs de sortie :

index=0, nom=sortie, n_dims=4, dims=[1, 255, 80, 80]n_elems=1632000, taille=1632000, w_stride = 0, size_with_stride=1638400, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, échelle=0,003860

index=1, nom=283, n_dims=4, dims=[1, 255, 40, 40]n_elems=408000, taille=408000, w_stride = 0, size_with_stride=409600, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, échelle=0,003922

index=2, nom=285, n_dims=4, dims=[1, 255, 20, 20]n_elems=102000, taille=102000, w_stride = 0, size_with_stride=122880, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, échelle=0,003915

chaîne personnalisée :

Réchauffer …

0 : Temps écoulé = 58,82 ms, FPS = 17,00

1 : Temps écoulé = 59,41 ms, FPS = 16,83

2 : Temps écoulé = 59,29 ms, FPS = 16,87

3 : Temps écoulé = 59,30 ms, FPS = 16,86

4 : Temps écoulé = 59,30 ms, FPS = 16,86

Commencer les performances…

0 : Temps écoulé = 59,52 ms, FPS = 16,80

1 : Temps écoulé = 49,05 ms, FPS = 20,39

2 : Temps écoulé = 44,44 ms, FPS = 22,50

3 : Temps écoulé = 44,29 ms, FPS = 22,58

4 : Temps écoulé = 44,33 ms, FPS = 22,56

5 : Temps écoulé = 44,48 ms, FPS = 22,48

6 : Temps écoulé = 44,29 ms, FPS = 22,58

7 : Temps écoulé = 44,28 ms, FPS = 22,58

8 : Temps écoulé = 44,46 ms, FPS = 22,49

9 : Temps écoulé = 44,29 ms, FPS = 22,58

Temps moyen 46,34 ms, FPS moyen = 21,577

La valeur FPS moyenne est de 21,5 FPS, soit encore plus élevée que lors de notre seule exécution. Il semble que l’exécution continue du modèle plusieurs fois améliore les performances, probablement parce qu’une partie du code ou des données est mise en cache. Dans tous les cas, cela montre que les performances de la carte YY3568 sont adaptées aux applications de vision par ordinateur, tant qu’un traitement en temps réel (30 ips+) n’est pas nécessaire.

YOLO5 avec une caméra USB

Le kit de développement YY3358 « Bundle 5 » est livré avec une caméra MIPI CSI, mais malheureusement, nous avons été informés qu’il ne fonctionne que sous Android 11 et que les pilotes Linux ne sont pas prêts pour la caméra. Nous avons donc utilisé une caméra USB pour effectuer un test rapide, capturer une image et exécuter YOLO5 avec une seule ligne de commande :

fswebcam -r 1280×720 -S 1 –no-banner –no-timestamp me.jpg | ./rknn_yolov5_demo ./model/RK3566_RK3568/yolov5s-640-640.rknn $me.jpg

Nous pourrions enregistrer une image à partir d’une webcam USB et l’envoyer au programme rknn_yolov5_demo. Afin de dessiner un cadre autour de l’objet et d’étiqueter le texte plus clairement, nous pouvons éditer ~/rknpu2/examples/rknn_yolov5_demo/src/main.cc comme suit :

301 rectangle(orig_img, cv::Point(x1, y1), cv::Point(x2, y2), cv::Scalar(0, 0, 255, 0), 3);

302 putText(orig_img, text, cv::Point(x1, y1 + 12), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 0, 0));

Webcam USB YY3358 YOLO5
Test de RKNPU2 sur un SBC Rockchip RK3568 avec une webcam USB

Conclusion

Après plus d’une semaine de tests, nous avons découvert qu’un problème récent avec la carte est qu’elle se bloque et cesse de fonctionner de temps en temps à cause du petit dissipateur thermique qui n’est pas suffisant pour refroidir le système et le faire fonctionner de manière fiable. fois. Si Youyeetoo avait un ensemble dissipateur thermique + ventilateur supplémentaire, ce serait bien, surtout parce que la carte est conçue pour connecter un ventilateur de refroidissement.

En dehors de ce problème, la convivialité est bonne et le guide de l’utilisateur sur le wiki de Youyeetoo est bien fait. Vous pouvez lire le manuel sans avoir besoin d’être un expert. En termes d’utilisation de l’IA, la plate-forme Rockchip évolue et s’améliore continuellement, comme le montre la dernière date de sortie du SDK RKNPU2 sur GitHub (il y a trois semaines au moment de la publication). Il y a une certaine courbe d’apprentissage pour utiliser les cartes Rockchip, mais le rapport performance/prix en fait généralement des choix intéressants.

Nous tenons à remercier Youyeetoo d’avoir envoyé le devkit YY3568 « Bundle 5 » pour examen. Le module CPU YY3568-Core, le YY3568 SBC et le kit Bundle 5 examinés ici peuvent tous être achetés sur la boutique Aliexpress, Amazon ou Youyeetoo à des prix commençant à 36,99 $ pour le module uniquement. Le kit « Bundle 5 » examiné ici avec un module équipé de 8 Go de RAM et de 64 Go de flash eMMC se vend 206,15 $ plus frais de port.

CNXSoft : Cet article est une traduction – avec quelques modifications – de la test originale sur Raspberryme Software Thailand par Arnon Thongtem, et édité par Suthinee Kerdkaew.

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

YouTube video