در این گزارش قصد داریم تعدادی از کامپیوترهای کوچک یا اصطلاحا Single Board Computer و یا به اختصار SBC را به منظور مقایسه توانایی آن ها در پردازش تصویر بررسی کنیم. قابل ذکر است که ، پردازش تصویر شاخه ای از هوش مصنوعی و یادگیری عمیق (Deep Learning) است. برای این منظور قطعه کدی در زبان پایتون توسعه دادیم و برای محک (Benchmark) مدل های از قبل آموزش دیده ی yolov3-tiny و yolov4-tiny و yolov7-tiny را با هم مقایسه کردیم. در جایی که امکانپذیر بود از سیستم عامل ۶۴ بیتی استفاده کردیم ولی در SBCهایی مانند Orange Pi PC Plus و Odroid XU4 به دلیل عدم پشتیبانی، آزمون ها، روی سیستم عامل ۳۲ بیتی انجام گرفت. برای اجرای مدل های v3 و v4 از کتابخانه opencv استفاده کردیم که از مدل های آموزش داده شده در فریم ورک darknet پشتیبانی می کند. برای اجرای v7 از کتابخانه و مدل آموزش دیده در torch استفاده کردیم. همچنین به علت اینکه سیستم عامل های ۳۲بیتی با نسخه پایتون ۳.۱۰ هنوز از کتابخانه torch به طور کامل پشتیبانی نمی کنند (به زمان زیادی جهت راه اندازی و اجرا نیاز بود)، این محک را در برخی از بردها انجام ندادیم. از آنجایی که خواندن تصاویر از روی کارت حافظه زمانبر بود لذا یک تصویر را ابتدا Load کردیم و پس از ۵۱ بار ارسال آن تصویر به مدل و دریافت خروجی از آن، میانگین زمان اجرا شده را به عنوان معیار قرار دادیم. سایز ورودی شبکه را برای هر سه مدل (۴۱۶*۴۱۶) قرار دادیم.
لازم به ذکر است که هنگام اجرای محک ها مشاهده شد که دو محک v3 و v4 به علت استفاده از کتابخانه opencv عملا از یکی از هسته های پردازنده استفاده می کردند ولی محک v7 با استفاده از pytorch توانست ۱۰۰٪ پردازنده و تمامی هسته ها را استفاده کند. شاید بتوان با بهینه سازی ها و استفاده از تمامی هسته ها نتیجه بهتری دریافت کرد. جهت مقایسه SBC ها با PC آزمایش را روی یک PC هم اجرا کردیم.
مشخصات تمام بردهایی که در این محک بررسی شده اند را در جدول زیر مشاهده می کنید:
برد | پردازنده | رم | سیستم عامل | پایتون |
---|---|---|---|---|
Orange Pi 4 LTS 4GB | Rockchip RK3399 ۴ Cores ARM 53 - 1.4 GHz ۲ Cores ARM 72 - 1.8 GHz | ۴GB | ۶۴bit - Armbian 22.04 Jammy | ۳.۱۰ |
Orange Pi 4 LTS 3GB | Rockchip RK3399-T ۴ Cores ARM 53 - 1.4 GHz ۲ Cores ARM 72 - 1.6 GHz | ۳GB | ۶۴bit - Armbian 22.04 Jammy | ۳.۱۰ |
Raspberry Pi 400 | ۴ Cores ARM 72 - 1.8 GHz | ۴GB | ۶۴bit - Rasbian 2021-05 release | ۳.۷ |
Odroid XU4 | ۴ Cores ARM 7 - 1.5 GHz ۴ Cores ARM 15 - 2.0 GHz | ۲GB | ۳۲ biT - Ubuntu Mate 22.04 Jammy | ۳.۱۰ |
Raspberry pi 3B | ۴ Cores ARM 53 - 1.2 GHz | ۱GB | ۶۴bit - Rasbian 2021-05 release | ۳.۷ |
Orange pi pc plus | ۴ Cores ARM A7 - 1.6 GHz | ۱GB | ۳۲bit - Armbian 22.04 Jammy | ۳.۱۰ |
Orange pi 3 LTS | ۴ Cores ARM 53 - 1.8 GHz | ۲GB | ۶۴bit - Armbian 22.04 Jammy | ۳.۱۰ |
Jetson nano 2GB | ۴ Cores ARM 57 - 1.43 GHz ۱۲۸ Cuda Cores | ۲GB | ۶۴ bit - Ubuntu 18.04 Jetpack 4.5.1 | ۳.۶ |
PC | ۶ Cores x86 - AMD 6350 FX - 3.9 GHz | ۲۴GB | ۶۴ bit - Ubuntu 20.04 Focal | ۳.۶ |
با اینکه شرکت سازنده ادعا دارد که پردازنده Orange Pi 4 LTS 3GB فرکانس کمتری دارد ولی در عمل با استفاده از ابزار cpufreq-info تفاوتی در حداکثر فرکانس پردازنده مدل ۴ گیگ و ۳ گیگ مشاهده نشد.
تعداد میانگین فریم پردازش شده در یک ثانیه (FPS) برای مدل های مختلف در زیر گزارش شده است:
بردها | yolov7-tiny | yolov4-tiny | yolov3-tiny |
---|---|---|---|
Orange Pi 4 LTS 4GB | ۱.۷۳ | ۰.۸۱ | ۱.۰۰ |
Orange Pi 4 LTS 3GB | ۱.۷۰ | ۰.۷۹ | ۰.۹۶ |
Raspberry Pi 400 | ۲.۴۴ | ۰.۸۹ | ۱.۰۷ |
Raspberry Pi 400 | * | ۰.۶۵ | ۰.۷۹ |
Raspbery pi 3B | ۰.۸۰ | ۰.۲۷ | ۰.۳۲ |
Orange pi pc plus | * | ۰.۲۶ | ۰.۳۳ |
Orange pi 3 LTS | ۱.۶۰ | ۰.۴۰ | ۰.۴۸ |
Jetson nano 2GB-CPU | ۳.۴۵ | ۰.۶۴ | ۰.۸۱ |
Jetson nano 2GB-GPU | ۸.۳۳ | ۱.۸۷ | ۱.۹۴ |
PC | ۵.۹۴ | ۲.۰۳ | ۲.۶ |
در نمودار زیر مقایسه سرعت اجرای مدل های تشخیص اشیا روی بردهای کوچک را مشاهده می نمایید.