Обзор одноплатного компьютера Youyeetoo на Rockchip RK3568 с Lubuntu 20.04 и RKNPU2 AI SDK

Ранее уже был проведен обзор одноплатного компьютера Youyeetoo YY3568 на базе Rockchip RK3568 с Android 11 — в первой части обзора были перечислены характеристики и рассмотрен комплект оборудования. Теперь появилась возможность переключиться на Lubuntu 20.04, провести базовые тесты и подробнее изучить RKNPU2 AI SDK для встроенного AI-ускорителя производительностью 0.8 TOPS, который присутствует в SoC Rockchip RK3568 .

Установка Ubuntu или Debian на одноплатный компьютер YY3568

Компания предоставляет образы как Debian , так и Ubuntu для YY3568, с разными вариантами в зависимости от загрузочного устройства (SD-карта или eMMC) и используемого видеоинтерфейса (DSI, eDP, HDMI).

YY3568 debian images
Список образов Debian 10
YY3568 ubuntu images
Список образов «Ubuntu 20»

В комплекте «Bundle 5» YY3568 используется 11.6-дюймовый eDP-дисплей, поэтому выбран образ «Ubuntu 20» с упоминанием edp в имени файла. Для прошивки образов Linux используется программа RKDevTool — процесс аналогичен установке Android 11.

RKDevTool Ubuntu Image

После завершения установки можно нажать кнопку Reset и загрузиться в Ubuntu 20.04, точнее в Lubuntu 20.04 с окружением рабочего стола LXQt.

Youteetoo YY3568 Lubuntu 20.04

YY3568 Linux system information
Информация о системе YY3568 (Phoronix Test Suite)

Тестирование производительности YY3568 в Linux

Теперь, когда Lubuntu 20.04 успешно установлена, можно провести тесты производительности на YY3568.

Начнем со скрипта sbc-bench.sh от Thomass Kaiser:

tinymembench,ramlat, mhz. Done.
Checking cpufreq OPP. Done (results will be available in 10-16 minutes).
Executing tinymembench. Done.
Executing RAM latency tester. Done.
Executing OpenSSL benchmark. Done.
Executing 7-zip benchmark. Done.
Checking cpufreq OPP again. Done (13 minutes elapsed).

Results validation:

  * Advertised vs. measured max CPU clockspeed: -5.4% before, -6.4% after
  * Background activity (%system) OK
  * No throttling

Memory performance
memcpy: 3074.9 MB/s
memset: 5942.3 MB/s

7-zip total scores (3 consecutive runs): 4496,4437,4431, single-threaded: 1211

OpenSSL results:
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
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

Подробные результаты доступны по ссылке http://ix.io/4Ga2

Затем с помощью iozone из Phoronix Test Suite проверена скорость чтения и записи eMMC. При размере файла 512 МБ и блоке 1 МБ iozone показал нереалистичную скорость чтения 1190.83 МБ/с:

IOzone 3.465:
    pts/iozone-1.9.6 [Record Size: 1MB - File Size: 512MB - Disk Test: Read Performance]
    Test 1 of 8
    Test Profile Status:          Deprecated
    Estimated Trial Run Count:    3
    Estimated Test Run-Time:      20 Minutes

    Record Size: 1MB - File Size: 512MB - Disk Test: Read Performance:
        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

    Average: 1190.83 MB/s
    Deviation: 11.01%
    Samples: 15

    Comparison of 1,716 OpenBenchmarking.org samples since 26 February 2011 to 2 August; median result: 4716 MB/s. Box plot of samples:
    [  |---*--------###########!######*####---*----*-------------*----*--|     ]
           ^ This Result (6th Percentile): 1191
                 512GB database: 5833 ^      240GB DELLBOSS VD: 11355 ^
                                   480GB SAMSUNG MZ7LH480: 10579 ^
                   2 x 250GB Samsung SSD 850: 8195 ^
             5 x 500GB Crucial_CT500MX2: 7346 ^

Этот результат явно связан с кэшированием, поэтому тест повторен с параметром I для включения «DIRECT IO», что позволяет обойти кэш буфера и работать напрямую с диском:

root@smartfly:/# iozone -e -I -a -s 512M -r 1024k -r 16384k -i 0 -i 1 -i 2
        Iozone: Performance Test of File I/O
                Version $Revision: 3.489 $
                Compiled for 64 bit mode.
                Build: linux

        Run began: Wed Sep 20 15:24:27 2023

        Include fsync in write timing
        O_DIRECT feature enabled
        Auto Mode
        File size set to 524288 kB
        Record Size 1024 kB
        Record Size 16384 kB
        Command line used: iozone -e -I -a -s 512M -r 1024k -r 16384k -i 0 -i 1 -i 2
        Output is in kBytes/sec
        Time Resolution = 0.000001 seconds.
        Processor cache size set to 1024 kBytes.
        Processor cache line size set to 32 bytes.
        File stride size set to 17 * record size.
                                                              random    random     bkwd    record    stride
              kB  reclen    write  rewrite    read    reread    read     write     read   rewrite      read   fwrite frewrite    fread  freread
          524288    1024    87888    89372   112574   113474   113612    85778
          524288   16384    98887    95894   152500   153558   153118   100792

iozone test complete.

Скорость чтения составила около 153.5 МБ/с, записи — 98.8 МБ/с, что указывает на высокую скорость 64 ГБ eMMC в плате.

Производительность сети

Тестирование Ethernet и Wi-Fi проведено с помощью iperf3 с использованием роутера от AIS (тайский оператор связи).

Плата YY3568 имеет два Ethernet-интерфейса. Начнем с eth0:

root@smartfly:/# iperf3 -c 192.168.1.162 -f g
Connecting to host 192.168.1.162, port 5201
[  5] local 192.168.1.131 port 39516 connected to 192.168.1.162 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   113 MBytes  0.95 Gbits/sec    0    451 KBytes
[  5]   1.00-2.00   sec   113 MBytes  0.95 Gbits/sec    0    477 KBytes
[  5]   2.00-3.00   sec   112 MBytes  0.94 Gbits/sec    0    477 KBytes
[  5]   3.00-4.00   sec   112 MBytes  0.94 Gbits/sec    0    499 KBytes
[  5]   4.00-5.00   sec   112 MBytes  0.94 Gbits/sec    0    525 KBytes
[  5]   5.00-6.00   sec   113 MBytes  0.94 Gbits/sec    0    525 KBytes
[  5]   6.00-7.00   sec   112 MBytes  0.94 Gbits/sec    0    525 KBytes
[  5]   7.00-8.00   sec   113 MBytes  0.95 Gbits/sec    0    549 KBytes
[  5]   8.00-9.00   sec   112 MBytes  0.94 Gbits/sec    0    549 KBytes
[  5]   9.00-10.00  sec   112 MBytes  0.94 Gbits/sec    0    549 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.10 GBytes  0.94 Gbits/sec    0             sender
[  5]   0.00-10.04  sec  1.10 GBytes  0.94 Gbits/sec                  receiver

iperf Done.

Результаты хорошие, аналогичная картина наблюдается при тестировании Eth1:

root@smartfly:/# iperf3 -c 192.168.1.162 -f g
Connecting to host 192.168.1.162, port 5201
[  5] local 192.168.1.134 port 54100 connected to 192.168.1.162 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   113 MBytes  0.95 Gbits/sec    0    451 KBytes
[  5]   1.00-2.00   sec   112 MBytes  0.94 Gbits/sec    0    520 KBytes
[  5]   2.00-3.00   sec   113 MBytes  0.95 Gbits/sec    0    520 KBytes
[  5]   3.00-4.00   sec   112 MBytes  0.94 Gbits/sec    0    547 KBytes
[  5]   4.00-5.00   sec   113 MBytes  0.94 Gbits/sec    0    547 KBytes
[  5]   5.00-6.00   sec   112 MBytes  0.94 Gbits/sec    0    547 KBytes
[  5]   6.00-7.00   sec   112 MBytes  0.94 Gbits/sec    0    547 KBytes
[  5]   7.00-8.00   sec   112 MBytes  0.94 Gbits/sec    0    547 KBytes
[  5]   8.00-9.00   sec   112 MBytes  0.94 Gbits/sec    0    547 KBytes
[  5]   9.00-10.00  sec   112 MBytes  0.94 Gbits/sec    0    547 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.10 GBytes  0.94 Gbits/sec    0             sender
[  5]   0.00-10.04  sec  1.10 GBytes  0.94 Gbits/sec                  receiver

Для проверки Wi-Fi 5 (модуль RTL8822CE) использована сеть 5 GHz роутера AIS, средняя скорость передачи данных составила 575 Мбит/с.

root@smartfly:/# iperf3 -c 192.168.1.162 -f m
Connecting to host 192.168.1.162, port 5201
[  5] local 192.168.1.124 port 39890 connected to 192.168.1.162 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.01   sec  51.5 MBytes   427 Mbits/sec    0   2.67 MBytes
[  5]   1.01-2.00   sec  72.5 MBytes   614 Mbits/sec    0   3.13 MBytes
[  5]   2.00-3.00   sec  73.8 MBytes   620 Mbits/sec    0   3.13 MBytes
[  5]   3.00-4.00   sec  73.8 MBytes   619 Mbits/sec    0   3.13 MBytes
[  5]   4.00-5.01   sec  71.2 MBytes   591 Mbits/sec    0   3.13 MBytes
[  5]   5.01-6.01   sec  70.0 MBytes   590 Mbits/sec    0   3.13 MBytes
[  5]   6.01-7.00   sec  71.2 MBytes   602 Mbits/sec    0   3.13 MBytes
[  5]   7.00-8.00   sec  72.5 MBytes   608 Mbits/sec    0   3.13 MBytes
[  5]   8.00-9.00   sec  73.8 MBytes   616 Mbits/sec    0   3.13 MBytes
[  5]   9.00-10.01  sec  61.2 MBytes   509 Mbits/sec    0   3.13 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   692 MBytes   579 Mbits/sec    0             sender
[  5]   0.00-10.08  sec   691 MBytes   575 Mbits/sec                  receiver

Таким образом, сетевое подключение на YY3568 работает стабильно как через Ethernet, так и через Wi-Fi 5.

Аппаратное ускорение 3D-графики на Rockchip RK3568

Производительность GPU Mali-G52 проверена с помощью бенчмарка glmark2, система набрала 115 баллов.

Lubuntu glmark2 rockchip rk3568

=======================================================
    glmark2 2021.02
=======================================================
    OpenGL Information
    GL_VENDOR:     ARM
    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=nearest: FPS: 156 FrameTime: 6.410 ms
[texture] texture-filter=linear: 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=height: FPS: 147 FrameTime: 6.803 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 125 FrameTime: 8.000 ms
[effect2d] kernel=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] speed=duration: FPS: 74 FrameTime: 13.514 ms
[jellyfish] <default>: FPS: 106 FrameTime: 9.434 ms
[terrain] <default>: FPS: 28 FrameTime: 35.714 ms
[shadow] <default>: FPS: 97 FrameTime: 10.309 ms
[refract] <default>: 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 Score: 115
=======================================================

Результат не самый высокий, но аппаратное ускорение 3D-графики работает.

Воспроизведение видео и аудио

Для тестирования видео и аудио использованы ролики с YouTube. Плата Youyeetoo YY3568 предлагает несколько вариантов вывода звука, включая 3.5-мм аудиоразъем и разъем с моноусилителем класса D для подключения динамиков. Проблем с воспроизведением не возникло, все работает корректно. Плата подходит для применения в цифровых вывесках.

В коротком видео выше показано воспроизведение YouTube-ролика в браузере Chromium.

Изучение RKNPU2 SDK для AI-нагрузок на SoC Rockchip RK3568

RKNN-Toolkit2 — это SDK для работы с AI-нагрузками на современных SoC Rockchip с NPU, включая RK3566, RK3568, RK3588, RK3588S, RV1103, RV1106, RK3562.

Для начала работы требуется два шага:

  1. Конвертация предобученных моделей в формат RKNN с помощью инструментов из https://github.com/rockchip-linux/rknn-toolkit2
  2. Использование преобразованной модели через RKNPU2, доступный на https://github.com/rockchip-linux/rknpu2

Установка

В этом обзоре показано, как развернуть модель YOLO5 , преобразованную через rknn-toolkit2. Соберем пример RKNPU2 для процессора Rockchip RK3568:

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           include                utils
build-linux_RK3566_RK3568.sh    model
<pu2/examples/rknn_yolov5_demo# chmod +x build-linux_RK3566_RK3568.sh
<2/examples/rknn_yolov5_demo# ./build-linux_RK3566_RK3568.sh
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc
-- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++
-- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /home/youyeetoo/rknpu2/examples/3rdparty/opencv/opencv-linux-aarch64 (found version "3.4.5")
-- Configuring done
-- Generating done
-- Build files have been written to: /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

После завершения сборки будет получен исполняемый файл rknn_yolov5_demo.

Запуск YOLO5 на плате YY3568

Для тестирования примера запустим rknn_yolov5_demo с двумя параметрами: используемой моделью и входным изображением.

cd /home/youyeetoo/rknpu2/examples/rknn_yolov5_demo
./rknn_yolov5_demo  ./model/RK3566_RK3568/yolov5s-640-640.rknn ./bus.jpg

Результатом будет изображение out.jpg с рамками и подписями вокруг обнаруженных объектов. Модель обучена для разрешения 640×640, поэтому при использовании изображений других размеров объекты могут не обнаруживаться. Помимо изображения автобуса, также протестировано изображение man.jpg, на котором обнаружено несколько объектов.

YOLO5 Rockchip RK3568
out.jpg

post process config: box_conf_threshold = 0.25, nms_threshold = 0.45
Read ./model/man.jpg ...
img width = 640, img height = 640
Loading mode...
sdk version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22) driver version: 0.8.8
model input num: 1, output num: 3
  index=0, name=images, n_dims=4, dims=[1, 640, 640, 3], n_elems=1228800, size=1228800, w_stride = 640, size_with_stride=1228800, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
  index=0, name=output, n_dims=4, dims=[1, 255, 80, 80], n_elems=1632000, size=1632000, w_stride = 0, size_with_stride=1638400, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003860
  index=1, name=283, n_dims=4, dims=[1, 255, 40, 40], n_elems=408000, size=408000, w_stride = 0, size_with_stride=409600, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
  index=2, name=285, n_dims=4, dims=[1, 255, 20, 20], n_elems=102000, size=102000, w_stride = 0, size_with_stride=122880, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003915
model is NHWC input fmt
model input height=640, width=640, channel=3
once run use 78.917000 ms
loadLabelName ./model/coco_80_labels_list.txt
person @ (89 157 258 631) 0.895037
bowl @ (483 221 506 240) 0.679969
bowl @ (395 322 444 343) 0.659576
wine glass @ (570 200 588 241) 0.544585
bowl @ (505 221 527 239) 0.477606
bowl @ (482 322 532 338) 0.458121
wine glass @ (543 199 564 239) 0.452579
cup @ (418 215 437 238) 0.410092
cup @ (385 204 402 240) 0.374592
cup @ (435 212 451 238) 0.371657
bowl @ (613 215 639 239) 0.359605
wine glass @ (557 200 575 240) 0.359143
cup @ (446 211 461 238) 0.358369
spoon @ (255 257 271 313) 0.340807
bottle @ (412 84 432 119) 0.338540
spoon @ (307 267 322 326) 0.318563
spoon @ (324 265 340 332) 0.315867
bottle @ (453 305 466 340) 0.308927
cup @ (526 210 544 239) 0.290318
bottle @ (389 83 411 119) 0.277804
wine glass @ (583 198 602 239) 0.277093
bowl @ (24 359 101 383) 0.275663
oven @ (4 370 168 632) 0.256395
spoon @ (268 262 282 322) 0.252866
bottle @ (434 85 454 118) 0.250721
loop count = 10 , average run  69.709700 ms

Пример может обнаруживать до 25 объектов, время обработки составило около 70 мс, или примерно 14 кадров в секунду, что довольно быстро — Raspberry Pi 4 с YOLO5 и теми же изображениями 640×640 выдает только 4 кадра в секунду (на CPU).

Тест RKNN Benchmark

Производительность NPU на YY3568 можно оценить с помощью RKNN Benchmark из SDK, запустив тест 10 раз для получения среднего значения FPS.

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

Результат:

rknn_api/rknnrt version: 1.5.2 (c6b7b351a@2023-08-23T15:28:22), driver version: 0.8.8
total weight size: 7308672, total internal size: 6144000
total dma used size: 21528576
model input num: 1, output num: 3
input tensors:
  index=0, name=images, n_dims=4, dims=[1, 640, 640, 3], n_elems=1228800, size=1228800, w_stride = 640, size_with_stride=1228800, fmt=NHWC, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
output tensors:
  index=0, name=output, n_dims=4, dims=[1, 255, 80, 80], n_elems=1632000, size=1632000, w_stride = 0, size_with_stride=1638400, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003860
  index=1, name=283, n_dims=4, dims=[1, 255, 40, 40], n_elems=408000, size=408000, w_stride = 0, size_with_stride=409600, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003922
  index=2, name=285, n_dims=4, dims=[1, 255, 20, 20], n_elems=102000, size=102000, w_stride = 0, size_with_stride=122880, fmt=NCHW, type=INT8, qnt_type=AFFINE, zp=-128, scale=0.003915
custom string:
Warmup ...
   0: Elapse Time = 58.82ms, FPS = 17.00
   1: Elapse Time = 59.41ms, FPS = 16.83
   2: Elapse Time = 59.29ms, FPS = 16.87
   3: Elapse Time = 59.30ms, FPS = 16.86
   4: Elapse Time = 59.30ms, FPS = 16.86
Begin perf ...
   0: Elapse Time = 59.52ms, FPS = 16.80
   1: Elapse Time = 49.05ms, FPS = 20.39
   2: Elapse Time = 44.44ms, FPS = 22.50
   3: Elapse Time = 44.29ms, FPS = 22.58
   4: Elapse Time = 44.33ms, FPS = 22.56
   5: Elapse Time = 44.48ms, FPS = 22.48
   6: Elapse Time = 44.29ms, FPS = 22.58
   7: Elapse Time = 44.28ms, FPS = 22.58
   8: Elapse Time = 44.46ms, FPS = 22.49
   9: Elapse Time = 44.29ms, FPS = 22.58

Avg Time 46.34ms, Avg FPS = 21.577

Среднее значение FPS — 21.5, что даже выше, чем в одиночном запуске. Похоже, многократный запуск модели улучшает производительность, возможно, из-за кэширования кода или данных. В любом случае, плата YY3568 подходит для задач компьютерного зрения, если не требуется обработка в реальном времени (30+ кадров в секунду).

YOLO5 с USB-камерой

В комплект разработчика «Bundle 5» YY3358 входит MIPI CSI-камера, но, к сожалению, она работает только в Android 11, а драйверы для Linux пока не готовы. Поэтому для теста использована USB-камера: захват изображения и запуск YOLO5 одной командой:

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

Удалось записать изображение с USB-камеры и передать его в программу rknn_yolov5_demo. Для более четкого отображения рамок и подписей можно отредактировать ~/rknpu2/examples/rknn_yolov5_demo/src/main.cc следующим образом:

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));

YY3358 YOLO5 USB webcam
Тестирование RKNPU2 на плате Rockchip RK3568 с USB-камерой

Заключение

После более чем недели тестирования выявлена недавняя проблема: плата периодически зависает и перестает работать из-за недостаточного охлаждения — небольшой радиатор не справляется с поддержанием стабильной работы системы. Наличие дополнительного радиатора с вентилятором было бы полезно, тем более что плата предусматривает подключение кулера.

Помимо этой проблемы, удобство использования на высоком уровне, а руководство на вики Youyeetoo хорошо проработано. Документация понятна даже неспециалистам. Что касается AI, платформа Rockchip продолжает развиваться, о чем свидетельствует дата последнего релиза RKNPU2 SDK на GitHub (три недели назад на момент публикации). Работа с платами Rockchip требует некоторого обучения, но их соотношение производительности и цены делает их интересным выбором.

Благодарим Youyeetoo за предоставленный для обзора комплект разработчика YY3568 «Bundle 5». Модуль YY3568-Core, одноплатный компьютер YY3568 и комплект «Bundle 5» можно приобрести на Aliexpress ,   Amazon или в   магазине Youyeetoo   по цене от $36.99 за модуль. Комплект «Bundle 5» с модулем на 8 ГБ ОЗУ и 64 ГБ eMMC стоит $206.15 плюс доставка.

CNXSoft: Эта статья является переводом — с некоторыми правками —   оригинального обзора на CNX Software Thailand   от   Arnon Thongtem , отредактированного Suthinee Kerdkaew .

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments