alwaysaialwaysAI
یک بستر توسعه دهنده برای ایجاد و استقرار برنامه های دید رایانه در لبه.
هوش مصنوعی (AI) زمینه ای است که کامپیوترها را قادر می سازد هوشمندانه عمل کنند و در محیط های واقعی تصمیماتی بگیرند که نتایج مطلوبی داشته باشند.
این واضح است که یک تعریف گسترده و تا حدودی مبهم است و زمینه های زیادی در این اصطلاح چتر وجود دارد. یک مثال از چنین زمینه ای ، دید در رایانه است که در آن رایانه ها می توانند تصاویر را مانند انسان پردازش کنند و در مورد آنچه در تصویر است نتیجه گیری کنند تا برنامه های رایانه ای سپس بتوانند با استفاده از این اطلاعات تصمیمات مطلوبی بگیرند. < / p>
مشاهده برنامه های هوش مصنوعی مانند بینایی رایانه در مدل ها و محصولات جدید تجاری ، رایج تر شده است. بینایی کامپیوتر دارای بسیاری از برنامه های کاربردی در دنیای واقعی است ، تجزیه و تحلیل الگوهای ترافیکی ، تشخیص تغییرات وضعیت ، شمارش تعداد افراد در یک منطقه و غیره.
یادگیری نحوه ساخت هر برنامه بینایی رایانه ای نیاز دارد یک منحنی یادگیری تند ، و استقرار آن در لبه یک لایه عارضه اضافی اضافه می کند.
در حالی که استقرار و اجرای برنامه ها در فضای ابری در سال های اخیر محبوبیت بیشتری پیدا کرده است ، این همیشه بهترین راه حل نیست ، به ویژه برای برنامه هایی که به پردازش سنگین نیاز دارند یا از داده های حساس استفاده می کنند ، هر دوی آنها اغلب در مورد برنامه های دید رایانه ای صدق می کنند.
در چنین شرایطی ، بهترین گزینه اغلب استقرار برنامه شما در لبه است. استقرار برنامه های دید رایانه در لبه مزایای بی شماری دارد که در این مقاله به آنها خواهیم پرداخت. ما همچنین چالش های اجرای دید رایانه در لبه ها و چگونگی غلبه بر آنها را شرح خواهیم داد.
“لبه” چیست؟
به طور کلی ، دستگاه های لبه دستگاه های کوچکی و سبک وزن هستند که می توان برنامه بینایی رایانه را روی آنها مستقر و اجرا کرد. امروزه بسیاری از دستگاه های لبه حتی دارای واحد پردازش گرافیکی (GPU) یا واحد پردازش تصویری (VPU) هستند که استفاده از طیف بیشتری از مدل ها و پیچیدگی برنامه ها را امکان پذیر می کند.
در متن این مقاله ، یک دستگاه لبه دستگاهی مانند Raspberry Pi ، دستگاه های NVIDIA Jetson مانند Jetson Nano یا NVIDIA Jetson Xavier NX یا اینترنت های مختلف است ( Iot) دستگاه ها ، دستگاه های لبه ای هستند که توانایی درک یا ارزیابی و احتمالاً تعامل با محیطی را که در آن استفاده می شود دارند.
مزایای اجرای Computer Vision on Edge
سه مزیت اصلی اجرای برنامه بینایی رایانه در لبه زمان ، امنیت و هزینه است.
1. کاهش تأخیر
در حالی که می توان از یک اتصال اینترنتی برای استقرار برنامه استفاده کرد ، وقتی برنامه روی دستگاه لبه قرار گرفت ، دیگر نیازی به اتصال ابری به آن نیست تابع. این بدان معناست که هر استنباط برنامه از طریق خود لبه دستگاه است نه در فضای ابری ، و این مدت زمان لازم برای تبدیل آن استنباط به برنامه را به شدت کاهش می دهد. برای موارد استفاده خاص ، مانند وسایل نقلیه خودران یا دوربین های امنیتی ، این ضروری است. گذشته از خطر ارسال اطلاعات به ابر و از بین رفتن آن ، زمان اضافی مورد نیاز برای استفاده از روش ابر می تواند به معنای عدم پاسخگویی به موقع یک کار باشد ، که می تواند برای کارهایی مانند رانندگی خودکار فاجعه بار باشد.
همچنین دستگاه های جانبی تخصصی ، به ویژه دوربین ها ، وجود دارند که خودشان اتصال اینترنتی ندارند و توسط دستگاه های لبه ای برای بهبود عملکرد یا گسترش عملکرد برنامه استفاده می شوند. چنین دستگاه هایی مفهوم پردازش را در لبه حتی بیشتر می کنند. به جای اینکه یک USB یا یک دوربین روبان ، داده های تصویر را برای پردازش به دستگاه لبه منتقل کند ، این دستگاه ها یک پردازنده را در خود دوربین قرار می دهند و باعث می شود تاخیر پردازش بیشتر شود.
2. بهبود امنیت رایانه Edge خطر قرار گرفتن در معرض را در چندین دستگاه توزیع می کند و می تواند تمام پردازش های قطع شده از یک سرور مرکزی را انجام دهد – معماری امن تر و خصوصی تر. به عنوان مثال ، دستگاه های لبه می توانند در داخل خانه شخص نصب شوند ، داده های بی درنگ را پردازش کرده و بدون اعتماد به یک سرویس ابری مشترک که می تواند حریم خصوصی فعالیت های روزمره آنها را به خطر بیندازد ، بر روی آنها داده عمل کنند. از آنجا که داده های بینایی رایانه ممکن است افراد یا سایر داده های حساس را درگیر کند ، این امر بسیار امن تر است.
3. هزینه کاهش یافته
سرانجام ، بدون نیاز به پردازش ابری ، استقرار یک برنامه CV در لبه هزینه بسیار کمتری دارد ، زیرا شرکتهای ابری برای هر دقیقه در هر نقطه هزینه استنباط را می گیرند. این یک گزینه عالی و انعطاف پذیر برای کسانی است که می خواهند به صورت “در صورت نیاز” هزینه پرداخت کنند ، اما برای سازمان هایی که تقاضای مقادیر زیادی پردازش در زمان واقعی را دارند – مانند یک شهر هوشمند ، بیمارستان یا انبار با دوربین ها و سنسورهای سنگین ، سنگین تر می شود 24 ساعت شبانه روز در حال اجرا
چالش های اجرای برنامه دید رایانه در لبه
ساختن یک برنامه بینایی رایانه ای چالش های خاص خود را دارد ، و اغلب یک فرایند تکراری است و بنابراین هر خط لوله ای که استفاده می کنید برای ساخت برنامه های دید رایانه ای باید انعطاف پذیری کافی را داشته باشد تا بتواند تغییراتی مانند مدل یا کتابخانه های استفاده شده یا دستگاهی را که برنامه روی آن مستقر شده است ، کنترل کند.
بیایید با چالش های استقرار برنامه های دید رایانه در حاشیه یک داستان همراه شویم. اول ، شما باید یک مدل بینایی رایانه ای ، یا با 1) جستجوی وب برای یک مدل منبع باز متناسب با نیازهای خود ، یا 2) با ساخت یک مجموعه داده تصویر و آموزش مدل خود ، تهیه کنید. گزینه دوم مستلزم جمع آوری مجموعه داده های شخصی شما است که بسیار کارساز است و همچنین درک چندین ابزار برای حاشیه نویسی تصویر و خود آموزش است.
بعد ، شما باید برنامه خود را بسازید. بگذارید بگوییم شما یک مدل کار دارید و در حال نمونه سازی از برنامه بینایی رایانه خود هستید. یکی از کتابخانه های بینایی رایج محبوب OpenCV است.
توسعه دهندگان می توانند به راحتی از رابط برنامه نویسی برنامه های کاربردی C ++ یا Python (API) OpenCV استفاده کنند. به عنوان مثال ، توسعه دهندگان می توانند به سادگی با استفاده از pip install opencv-python به Python OpenCV API دسترسی پیدا کنند. شما مدتی را صرف یادگیری این API می کنید و یک نمونه اولیه عملیاتی دارید که به خوبی با خروجی مدل شما ادغام می شود.
اکنون که از برنامه راضی هستید ، می خواهید آن را در یک دستگاه لبه ای مانند Raspberry Pi مستقر کنید. اولین چیزی که پیدا خواهید کرد این است که سازه OpenCV مورد استفاده شما با پردازنده Raspberry Pi سازگار نیست. وابستگی های دیگر نیز ممکن است همین مشکل را داشته باشند. این امر شما را به سمت گردآوری OpenCV در Raspberry Pi سوق می دهد.
بعد ، شما باید نحوه دیدن نتایج را بفهمید! در لپ تاپ شما ، این با cv2.imshow () آسان بود ، اما اگر در حال کار روی دستگاه بی سر (بدون رابط گرافیکی) هستید ، باید راه دیگری پیدا کنید.
اکنون که برنامه شما فعال و درحال اجرا است ، می بینید که عملکرد شگفت آور سریعی که در لپ تاپ خود مشاهده کردید دیگر از بین رفته است. مطمئناً ، هیچ کس انتظار ندارد یک رایانه تک برد 35 دلاری عملکرد بهتری نسبت به Macbook شما داشته باشد ، اما شما عملکرد بهتری می خواهید.
شما خوانده اید که می توانید از Intel’s Neural Compute Stick 2 برای عملکرد بهتر از Pi استفاده کنید ، اما اکنون باید OpenVINO را نیز بسازید. از آنجا که رابط OpenVINO با OpenCV متفاوت است ، شما باید تصمیم بگیرید که آیا برنامه خود را برای استفاده از NCS2 بازنویسی کنید یا OpenCV را دوباره بسازید تا بتواند موتور استنباط OpenVINO را اجرا کند. وقتی همه چیز گفته شد و تمام شد ، ممکن است متوجه شوید که مدل شما نیاز به تغییر بیشتر دارد ، احتمالاً تغییرات خروجی وجود دارد ، و شما ممکن است دوباره مراحل را مرور کنید!
نحوه غلبه بر این چالش ها
غلبه بر این چالش ها علاوه بر دانش بینایی کامپیوتر ، به تجربه اینترنت اشیا نیز نیاز دارد. با این حال ، یک سیستم عامل توسعه دهنده مانند همیشهAI نیز می تواند به حل این مشکلات کمک کند. در alwaysAI ، ما وظیفه منحصر به فرد را داریم که روند ساخت و استقرار برنامه های دید رایانه در لبه های دستگاه ها را تا حد ممکن آسان کنیم. این شامل آموزش مدل ، ساخت برنامه و استقرار برنامه در دستگاههای لبه مانند Raspberry Pi ، Jetson Nano و بسیاری دیگر است.
پس از نصب همیشهAI ، فقط باید چند دستور اساسی ، رابط خط فرمان (CLI) ما را بشناسید تا داده ها را جمع آوری ، حاشیه نویسی کنید ، یک مدل را آموزش دهید و استقرار و شروع کنید برنامه های شما.
بدست آوردن مدل چشم انداز رایانه
alwaysAI دارای کاتالوگ مدل های موجود در دسترس عموم است که با هر برنامه ساخته شده با خط لوله ما کار می کند. شما همچنین می توانید با استفاده از جعبه ابزار آموزشی مدل alwaysAI که با استفاده از TensorFlow بعنوان چارچوب backend ساخته شده است و آموزش انتقال را روی mobilnet_ssd که بر روی مجموعه داده های COCO آموزش داده شده است ، مدل تشخیص شی object خود را آموزش دهید.
مجموعه آموزش مدل به کاربران امکان می دهد بدون یادگیری API جدید یا نصب ماژول های اضافی با TensorFlow کار خود را شروع کنند. ما همچنین از ابزار حاشیه نویسی رایانه (CVAT) به عنوان بخشی از جعبه ابزار استفاده می کنیم ، بنابراین کاربران می توانند مجموعه داده های جدید را بدون نیاز به بارگیری و نصب CVAT از ابتدا حاشیه نویسی کنند. = “paragraf”> ما Python API خودمان را داریم که edgeiq نامیده می شود و برخی از عملکردهای اصلی OpenCV را می پیچد و می توان از آن برای تعامل استفاده کرد. این بدان معنی است که شما فقط باید یک API را بدانید تا بتوانید با برنامه های دید رایانه ای کار کنید.
از آنجا که ما خودمان دوست داریم از OpenCV استفاده کنیم ، آن را به عنوان یک قطعه اصلی در محیط زمان اجرای لبه خود ساخته ایم ، به این معنی که شما می توانید “واردات cv2” را به هر برنامه همیشهAI و فارغ از انتخاب دستگاه استقرار ، مستقیماً از OpenCV در برنامه خود استفاده کنید.
استقرار برنامه
ما از طریق Docker images و محیط های مجازی Python از ظرف سازی استفاده می کنیم استقرار برنامه شما را صرف نظر از اینکه دستگاه شما باشد ، ساده می کند. این کار همچنین با استفاده از پرونده های Dockerfile یا Requisation.txt افزودن نیازهای مورد نیاز برنامه شما را آسان می کند.
اجرای دید کامپیوتر در لبه باعث صرفه جویی در وقت و هزینه می شود و از امنیت بیشتری برخوردار است. در حالی که توسعه و استفاده از هر برنامه بینایی رایانه ای با چالش های خاص خود همراه است ، این امر می تواند به ویژه هنگام استقرار در لبه درست باشد.
هدف اصلی ما در alwaysAI این است که بر این چالش ها فائق آییم و توسعه و استقرار برنامه های دید رایانه در لبه را برای کاربران به آسانی انجام دهیم. شما می توانید سیستم عامل خود را به صورت رایگان امتحان کنید!