ماژول Coral USB Accelerator
بینایی ماشینپایتون و ابزارهای یادگیری عمیقیادگیری با نظارت

ماژول Coral USB Accelerator گوگل

    0
    مدت زمان مطالعه: ۸ دقیقه

     

    شرکت گوگل سال گذشته در کنفرانس «Google Next» اعلام کرد که در حال ساخت دو سخت‌افزار جدید در «Edge TPU» هستند. هدف گوگل از ساخت وسیله‌هایی مثل «Raspberry Pi» و سایر ریزکنترل‌کننده‌ها این است که از قدرت نرم‌افزارهای هوش مصنوعی از قبیل دسته‌بندی تصاویر  Image classification و تشخیص اشیاء  Object detection استفاده کرده و آنها را به عنوان رابط مدل‌هایِ از پیش‌آموزش‌دیده تنسورفلو لایت در سخت‌افزارهای خودشان به کار گیرند. این اقدام نه تنها امن‌تر از داشتنِ سرور ابری است که درخواست یادگیری ماشین را رفع می‌کند، بلکه می‌تواند تاخیر را نیز قدری کاهش دهد. در ادامه  به معرفی ماژول Coral USB Accelerator خواهیم پرداخت

    Coral USB Accelerator

    ماژول Coral USB Accelerator با ابعاد ۶۵×۳۰×۸ میلی‌متر عرضه شده و از رقیبش « Intel Movidius NeuralCompute Stick» کوچکتر است. شاید درابتدا فکر کنید این مورد کم‌اهمیتی است اما توجه داشته باشید که Intel Stick پورت‌های USB نزدیک را مسدود کرده و استفاده از بخش‌های جانبی را دشوار می‌کرد. ماژول Coral USB Accelerator مبلغ ۷۵ یورو قیمت‌گذاری شده و از طریق Mouser، Seeed و Gravitylink می‌تواند سفارش داده شود. به لحاظ جنبه سخت‌افزاری، این ماژول حاوی واحد پردازش تنسور اِج (TPU) است که رابط سریعی را برای مدل‌های یادگیری عمیق با مصرف برق کمتر فراهم می‌کند.

    جعبه حاویِ USB Accelerator

    جعبه حاویِ USB Accelerator، مبدل USB 3 نوع C و دفترچه راهنما.

    در حال حاضر، USB Accelerator فقط با Debian 6.0+ یا مشتقات آن مثل Ubuntu یا Raspbian عمل می‌کند. این ماژول زمانی بهترین عملکردش را بر جای می‌گذارد که به USB 3 متصل باشد؛ البته با USB 2.0 نیز قابل استفاده است. بنابراین، می‌تواند با ریزکنترل‌کننده‌هایی مثل Raspberry 3 که فاقد پورت USB 3 است نیز مورد استفاده قرار گیرد.
    ماژول Coral USB Accelerator بدون هیچ دردسر خاصی نصب می‌شود. دفترچه راهنمای موجود در وب‌سایت رسمی در Raspberry Pi خیلی مفید ظاهر شد و کاربران توانستند خیلی زود پس از چند دقیقه روش کار را یاد بگیرند. نکته مهمی که باید در ذهن داشت این است که Coral کماکان در مرحله انتشار بِتا است؛ پس انتظار می‌رود نرم‌افزار و دستورالعمل‌های نصب آن در طی زمان تغییر یابد، اما سعی خواهیم کرد مقاله را به‌روزرسانی کنیم تا از عملکردِ مناسب همه دستورالعمل‌ها مطمئن شویم. اکنون، باید آخرین نسخه Edge TPU و کتابخانه پایتون را با اجرای فرمان زیر دانلود کنید:

     

    در حین اجرای فایل install.sh این سوال از کاربر پرسیده خواهد شد: «آیا تمایل دارید فرکانس کاری بیشینه را فعال کنید؟» فعال‌سازی این گزینه باعث افزایش سرعت استنباط می‌شود، اما می‌تواند دمای USB Accelerator را بالا ببرد. باید به این نکته اشاره کنیم که ما در حین استفاده از این مورد با افزایش دما روبرو نشدیم. توصیه می‌کنیم این گزینه را برای استفاده عادی غیرفعال کنید زیرا عملکرد را به میزان چشمگیری ارتقاء نمی‌بخشد. به مجرد اینکه فرایند نصب به پایان رسید، USB Accelerator را به Raspberry Pi یا هر دستگاه Debian Device دیگر وصل کنید. اگر آن را در حین نصب وصل کرده باشید، باید دوباره به وصل آن اقدام کنید.

    اجرای فایل های دمو

    حالا که می‌دانید Coral USB Accelerator چیست و نرم‌افزار Edge TPU را نصب کرده‌اید، به چند مثال زیر توجه کنید. نصب ماژول Edge TPU Python یک API ساده در اختیارمان می‌گذارد تا دسته‌بندی تصاویر ، تشخیص اشیاء و یادگیری انتقال  Transfer learning در Edge TPU امکان‌پذیر شود. برای اینکه مثال‌های زیر را اجرا کنید، باید یک مدل سازگار Edge TPU و چند فایل ورودی داشته باشید. می‌توانید مدل‌هایِ از قبل‌آموزش‌دیده مربوط به دسته‌بندی تصاویر و تشخیص اشیاء و همچنین چند تصویر نمونه را با کد زیر دانلود کنید:

     

    حالا که مدل‌ها و فایل‌های نمونه را در اختیار دارید، می‌توانید یکی از مثال‌ها را با بررسی فهرست دِمو و اجرای یکی از فایل‌ها با پارامترهای صحیح اجرا کنید.

    اکنون زمینه برای اجرای مدل دسته‌بندی تصاویر به صورت زیر فراهم شده است:

     

    عکس طوطی

    طوطی

    اسکریپت زیر از دسته و درصد خروجی می‌گیرد:
    —————————
    Ara macao (Scarlet Macaw)
    Score : 0.761719
    پوشه دِمو (آزمایشی) همچنین دربرگیرندۀ فایل تشخیص اشیاء (به نام object_detection.py) است.

     

    عکس تشخیص اشیا

    چهره‌ها

    نگاهی دقیق تر به اسکریپت‌های نمونه

    همان‌طور که ملاحظه می‌کنید، کار کردن با Google Coral USB Accelerator آسان است، اما این تنها نقطه قوتِ USB Accelerator نیست زیرا ماژول Edge TPU Python خواندنِ اسکریپت‎های نمونه و نوشتن اسکریپت خودتان آسان می‌کند. به عنوان مثال، یک نگاه دقیق‌تر به فایل classify_image.py می اندازیم که به ما در پیش بینی دسته بندی تصویر ورودی کمک می کند.

     

    اولین بخش مهم اسکریپت، وارد کردنِ کتابخانه EdgeTPU و به طور خاص ClassificationEngine است که در انجام دسته‌بندی در Edge TPU نقش اصلی را بر عهده دارد. ReadLabelFile فایل‌های متنی ورودی را باز می‌کند (این فایل‌ها حاوی برچسب‌ طبقه بندها هستند). تابع مذکور یک متغیر دیکشنری برای تک‌تک برچسب‌ها ایجاد می‌کند. در خطّ ۳۰ تا ۳۷ تابع main، از کتابخانه argparse library برای ایجاد ArgumentParser استفاده می‌کنیم. حالا می‌توانیم برچسب‌ها را با استفاده از ReadLabelFile در خط ۵۶ و مدل را با ایجاد شیء جدید ClassificationEngine در خط ۵۸ بدست آوریم. در نهایت،کد نوشته شده, تصویری را با استفاده از Pillow باز کرده و آن را با استفاده از تابع ClassifyWithImage که مربوط به شیء ClassificationEngine می باشد دسته‌بندی می‌کند. شیوه کارکرد اسکریپت تشخیص اشیاء تقریباً با اسکریپت دسته‌بندی یکسان است؛ تنها تغییر این است که از DetectionEngine به جای ClassificationEngine استفاده می‌شود. پس به جای ایجاد مدل خودمان با ایجاد ClassificationEngine جدید و استفاده از روش ClassifyWithImage در اشیاء، یک DetectionEngine ساخته و از تابع DetectWithImage برای انجام پیش‌بینی استفاده می‌کنیم.

     

    دسته‌بندی و تشخیص تصاویر و حمایت دوربین بیرونی

    ماژول Coral امکان دسترسی به اسکریپت دسته‌بندی تصاویر classify_capture.py را نیز فراهم می‌کند. بر اساس این اسکریپت، از کتابخانه PiCamera library برای دریافت تصاویر از وب‌کم (Webcam) استفاده می‌شود. تنها مشکل این اسکریپت آن است که فقط با PiCamera قابل استفاده است. برای اینکه زمینه را برای پشتیبانی از سایر وب‌کم‌ها فراهم کنیم، باید کد PiCamera را با imutils VideoStream عوض کنیم تا هم با PiCamera و هم دوربین عادی کار کنیم.

    این اسکریپت علاوه بر دسته‌بندی تصاویر به صورت آنی, می‌تواند پنجره ای ایجاد می‌کند که فریم فعلی و برچسب آن را به صورت جریانی  Stream نشان می‌دهد. این کار با استفاده از ماژول Pillows ImageDraw انجام می‌شود و امکان افزودن متن در تصویر را فراهم می‌کند.

    دسته‌بندی

    مثال دسته‌بندی

    این کار برای تشخیص اشیا هم انجام شود. تفاوت اصلی این است که از DetectionEngine به جای ClassificationEngine استفاده شده و تغییرات در تابع draw_image نیز اِعمال می‌شود. این کارها ضروری است زیرا باید کادرهای محصورکننده  Bounding boxes را نیز ترسیم کنیم.

     
    تشخیص اشیا

    مثال تشخیص اشیا

    ساخت مدل دلخواه

    اگرچه شرکت گوگل چندین مدلِ از پیش‌کامپایل‌شده عرضه می‌کند و این مدل‌ها با USB Accelerator نیز استفاده می‌شوند، اما شاید کاربری بخواهد مدل شخصی خودش را اجرا کند. به همین منظور، چند گزینه پیش رویتان قرار دارد. به جای اینکه از ابتدا به ساخت مدل‌تان بپردازید، می‌توانید یکی از مدل‌های موجود را که با Edge TPU سازگاری دارد، انتخاب کنید. این کار با روشی موسوم به «یادگیری انتقال» انجام می‌پذیرد. می‌توانید برای کسب جزئیات بیشتر به دوره‌های آموزشی رسمی مدل تشخیص اشیاء و دسته‌بندی تصاویر مراجعه کنید. اگر می‌خواهید مدلی را از ابتدا آموزش دهید، یقیناً می‌توانید این کار را انجام دهید و هیچ مشکلی نیست؛ اما باید چند محدودیت را در نظر بگیرید که بر استفاده از مدل در ماژول USB Accelerator سایه افکنده است.

    مدل دلخواه

    فرایند مدل‌سازی شخصی

     

    نتیجه‌گیری

    ماژول Google Coral USB Accelerator یک سخت‌افزار عالی است که این فرصت را به دستگاه‌های edge مثل Raspberry Pi یا سایر میکروکنترل‌کننده‌ها می‌دهد تا از نیروی نرم‌افزارهای هوش مصنوعی استفاده کنند. این ماژول حاوی مستندات خوبی متشکل از نرم‌افزارهای آزمایشی، نصب، ساخت مدل شخصی و مستندات جامع Python API است.

    این مطلب چه میزان برای شما مفید بوده است؟
    [کل: ۰ میانگین: ۰]

    فیلترهای فتوشاپ در OpenCV

    مقاله قبلی

    فیلم آموزش علوم داده – ماشین بردار پشتیبانی در زبان R (درس هفتم)

    مقاله بعدی

    شما همچنین ممکن است دوست داشته باشید

    بیشتر در بینایی ماشین

    نظرات

    پاسخ دهید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *