فهرست مطالب:

دوربین AI برای رزبری پای/آردوینو: 7 مرحله
دوربین AI برای رزبری پای/آردوینو: 7 مرحله

تصویری: دوربین AI برای رزبری پای/آردوینو: 7 مرحله

تصویری: دوربین AI برای رزبری پای/آردوینو: 7 مرحله
تصویری: ارزون ترین دوربین wifi دنیا 🌍 که میتونید بسازید 🤯🤯//Build a spy camera 2024, ژوئن
Anonim
Image
Image

اگر اخبار را به تازگی دنبال کرده اید ، انفجاری از استارت آپ ها در حال توسعه تراشه هایی برای تسریع در استنتاج و آموزش الگوریتم های ML (یادگیری ماشینی) بود. با این حال ، اکثر این تراشه ها هنوز در حال توسعه هستند و در واقع چیزی نیست که سازندگان معمولی شما بتوانند به آن دست پیدا کنند. تنها استثناء قابل توجه تا کنون Intel Movidius Neural Compute Stick بود که برای خرید در دسترس است و دارای SDK خوب است. این دارای چند معایب مهم است - یعنی قیمت (حدود 100 دلار) و این واقعیت که در قالب USB stick عرضه می شود. اگر می خواهید از آن با لپ تاپ یا Raspberry PI استفاده کنید بسیار عالی است ، اما اگر می خواهید برخی پروژه های تشخیص تصویر را با آردوینو انجام دهید چطور؟ یا رزبری پای صفر؟

مرحله 1: Sipeed MAix: AI at the Edge

Sipeed MAix: AI at the Edge
Sipeed MAix: AI at the Edge

چندی پیش ، بورد توسعه Sipeed M1w K210 را در دست گرفتم که دارای پردازنده دو هسته ای RISC-V 64bit است و دارای KPU داخلی (پردازنده شبکه عصبی) است که به طور خاص برای سرعت بخشیدن به CNN برای پردازش تصویر طراحی شده است. در اینجا می توانید جزئیات بیشتر را بخوانید.

قیمت این تخته صادقانه من را شوکه کرد ، این فقط 19 دلار برای تخته توسعه کامل AI-on-the-edge با پشتیبانی Wi-Fi است! هر چند یک هشدار وجود دارد (البته وجود دارد): سیستم عامل micropython برای برد هنوز در حال توسعه است و به طور کلی در حال حاضر چندان کاربر پسند نیست. تنها راه دسترسی به همه عملکردهای آن این است که کد C خود را بنویسید یا تعدادی نسخه نمایشی موجود را تغییر دهید.

این آموزش نحوه استفاده از مدل تشخیص کلاس Mobilenet 20 برای تشخیص اشیاء و ارسال کد شیء شناسایی شده از طریق UART ، از آنجا که می تواند توسط Arduino/Raspberry Pi دریافت شود را توضیح می دهد.

اکنون ، این آموزش فرض می کند که شما با لینوکس و اصول کامپایل کد C آشنا هستید. اگر شنیدن این عبارت کمی شما را گیج کرد:) فقط به مرحله 4 بروید ، جایی که فایل باینری از پیش ساخته شده من را در Sipeed M1 بارگذاری می کنید و از کامپایل آن صرف نظر می کنید.

مرحله 2: محیط خود را آماده کنید

محیط خود را آماده کنید
محیط خود را آماده کنید

من از اوبونتو 16.04 برای کامپایل و بارگذاری کد C استفاده کردم. انجام این کار در ویندوز امکان پذیر است ، اما من خودم آن را امتحان نکردم.

RISC-V GNU Compiler Toolchain را بارگیری کنید ، همه وابستگی های لازم را نصب کنید.

git clone-بازگشتی

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-basic bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

زنجیره ابزار بارگیری شده را در فهرست /opt انتخاب کنید. پس از آن دستورات زیر را اجرا کنید

./configure --prefix =/opt/kendryte-toolchain --with-cmodel = medany

بساز

اکنون/opt/kendryte-toolchain/bin را به PATH خود اضافه کنید.

اکنون آماده اید کد را کامپایل کنید!

مرحله 3: کد را کامپایل کنید

کد را کامپایل کنید
کد را کامپایل کنید

کد را از مخزن github من بارگیری کنید.

SDK مستقل Kendryte K210 را بارگیری کنید

پوشه /kpu را از مخزن github من در پوشه /src در SDK کپی کنید.

دستورات زیر را در پوشه SDK (پوشه not /src!) اجرا کنید

mkdir build && cd build

cmake.. -DPROJ = project_name -DTOOLCHAIN =/opt/kendryte -toolchain/bin && make

جایی که project_name نام پروژه شماست (بستگی به شما دارد) و -DTOOLCHAIN = باید به محل ابزارک risc -v شما اشاره کند (آن را در مرحله اول بارگیری کرده اید ، به خاطر دارید؟)

عالی! اکنون امیدوارم کامپایل بدون خطا به پایان برسد و یک فایل.bin دارید که می توانید بارگذاری کنید.

مرحله 4: بارگذاری فایل.bin

بارگذاری فایل.bin
بارگذاری فایل.bin

حالا Sipeed M1 خود را به کامپیوتر وصل کنید و از پوشه /build دستور زیر را اجرا کنید

sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu.bin

جایی که kpu.bin نام فایل.bin شما است

بارگذاری معمولاً 2-3 دقیقه طول می کشد ، پس از اتمام کار ، هیئت مدیره 20 کلاس تشخیص را مشاهده می کنید. آخرین مرحله برای ما این است که آن را به Arduino mega یا Raspberry Pi متصل کنیم.

!!! اگر به تازگی از مرحله 2 آمده اید !

دستور زیر را از پوشه ای که مخزن github من را در آن کلون کرده اید اجرا کنید

sudo python3 isp_auto.py -d /dev /ttyUSB0 -b 200000 kpu_bin.bin

بارگذاری معمولاً 2-3 دقیقه طول می کشد ، پس از اتمام کار ، هیئت مدیره 20 کلاس تشخیص را مشاهده می کنید. آخرین مرحله برای ما این است که آن را به Arduino mega یا Raspberry Pi متصل کنیم.

مرحله 5: اتصال به آردوینو

اتصال به آردوینو
اتصال به آردوینو
اتصال به آردوینو
اتصال به آردوینو
اتصال به آردوینو
اتصال به آردوینو

من از Arduino Mega با Seeed Studio Mega Shield استفاده کردم ، به همین دلیل است که یک کانکتور Grove را به برد Sipeed M1 لحیم کردم. با این حال ، فقط می توانید از سیم های جامپر استفاده کنید و Sipeed M1 را مستقیماً به Arduino Mega وصل کنید ، پس از این نمودار سیم کشی.

پس از آن طرح camera.ino را بارگذاری کرده و Serial monitor را باز کنید. وقتی دوربین را به اشیاء مختلف نشان می دهید (لیست 20 کلاس در طرح وجود دارد) باید نام کلاس را در مانیتور سریال نشان دهد!

تبریک می گویم! شما در حال حاضر ماژول تشخیص تصویر برای Arduino خود دارید!

مرحله 6: اتصال به Raspberry Pi

اتصال به رزبری پای
اتصال به رزبری پای
اتصال به رزبری پای
اتصال به رزبری پای

من از کلاه Grove Pi+ برای Raspberry Pi 2B استفاده کردم ، اما باز هم ، مانند آردوینو ، می توانید Sipeed M1 را مستقیماً به رابط UART رزبری پای زیر این نمودار سیم کشی متصل کنید.

پس از راه اندازی camera_speak.py و نشان دادن دوربین به اشیاء مختلف ، ترمینال متن زیر را "من فکر می کنم اینطور است" نشان می دهد و همچنین اگر بلندگوها را وصل کرده باشید ، این عبارت را با صدای بلند بیان می کند. خیلی باحاله ، نه؟

مرحله 7: نتیجه گیری

این زمانهای بسیار مهمی است که ما در آن زندگی می کنیم ، با هوش مصنوعی و یادگیری ماشین در همه زمینه های زندگی ما نفوذ کرده است. من بی صبرانه منتظر پیشرفت در این زمینه هستم. من با تیم Sipeed در ارتباط هستم و می دانم که آنها به طور فعال برای همه عملکردهای لازم ، از جمله شتاب CNN ، روکش میکروپایتون را توسعه می دهند.

وقتی آماده شد ، به احتمال زیاد دستورالعمل های بیشتری در مورد نحوه استفاده از مدل های CNN خود با میکروپایتون منتشر خواهم کرد. به همه برنامه های هیجان انگیزی که می توانید برای تخته ای داشته باشید که بتواند شبکه عصبی پردازش تصویر خود را با این قیمت و با این ردپا اجرا کند ، فکر کنید!

توصیه شده: