محاسبه شباهت تصویر با استفاده از دید کامپیوتر در iOS

محاسبه شباهت تصویر با استفاده از دید کامپیوتر در iOS

تعیین فاصله اقلیدسی بین تصاویر با استفاده از ویژگی های چاپ شده آنها

عکس توسط برونو مارتینز در Unsplash

اپل با افزودن پیشرفت های زیاد ، چارچوب Vision خود را در طول WWDC 2019 تقویت کرد. اپل از گسترش تعداد کلاسها (اصطلاح طبقه بندی برای این مورد استفاده می شود) درخواستهای طبقه بندی تصویر تا بهبود فناوری چهره و درخواستهای تشخیص متن ، پیشرفتهای جالبی در بینایی رایانه برای iOS ارائه می دهد.

< p> یکی از مهمترین موارد اضافی WWDC 2019 ، معرفی درخواست های مشابهت تصویر در چارچوب Vision بود. شباهت تصویر با طبقه بندی تصویر یکسان نیست ، و به زودی خواهیم دید که چگونه و چرا. اما ابتدا بیایید نگاهی به برخی از برنامه های کاربردی که در آنها شباهت تصویر مفید است بیاندازیم:

تأیید امضا- برای تعیین اینکه آیا امضای شخص با امضا مطابقت دارد ، مفید است ، در نتیجه برنامه های شما را در تشخیص جعل در واقع هوشمندتر می کند- زمان بر روی دستگاه. Duplicate Image Finder - تعداد زیادی تصویر را از بین می برید ، چه در مجموعه داده شما و چه در کتابخانه عکس ها. با این درخواست Vision جدید ، فیلتر کردن تصاویر تکراری با ایجاد یک کار خودکار آسان تر می شود. گروه بندی یا یافتن تصاویر مشابه - درست مانند شباهت متن برای برچسب زدن از معانی معنایی استفاده می شود ، شباهت تصویر در مواقعی مفید است که گروه بندی یا یافتن تصاویری که زمینه های مشابهی مانند مناظر ، مکان ها ، افراد ، اشکال و غیره را ارائه می دهند. تأیید چهره - شباهت تصویر در مواردی مانند شناسایی بصری بسیار مهم است. < p> اکنون که ایده خوبی در مورد موارد مختلف استفاده از مواردی که تعیین شباهت تصویر مفید است بدست آوردیم ، بیایید در حین ایجاد یک برنامه iOS مبتنی بر SwiftUI برای پیاده سازی این ویژگی ، عمیق تر به آن بپردازیم.

هدف ما

درک اینکه چگونه طبقه بندی تصویر با شباهت تصویر متفاوت است. آگاهی از نحوه عملکرد شباهت تصویر در چارچوب چشم انداز اپل. ساخت برنامه ای که محاسبه شباهت تصاویر مشابه را انجام دهد به یک تصویر مرجع و رتبه بندی آنها ما از چارچوب SwiftUI برای ساخت برنامه iOS خود استفاده می کنیم. آیا می خواهید برنامه های تلفن همراه با استفاده از یادگیری ماشین ایجاد کنید؟ هوش مصنوعی فریتز با مدل های از پیش آموزش داده شده و SDK برای iOS و Android کار را آسان می کند.

شباهت تصویر بینایی

شباهت و طبقه بندی تصویر یکسان نیست ، زیرا برچسب های کلاس دلالت بر شباهت ندارند به یک مدل طبقه بندی تصویر معمولاً برچسب های تولید شده را به عنوان خروجی برمی گرداند ، در حالی که درخواست شباهت تصویر مسئول محاسبه شباهت بین دو تصویر است. برای بازگرداندن نتایج خروجی هدف از طرف دیگر ، شباهت تصویر بدون نظارت است زیرا ورودی مجموعه ای از دستورالعمل ها را ندارد و برای استخراج شباهت های مربوط به تصاویر به استخراج ویژگی ها وابسته است.

تکنیک های زیادی برای محاسبه تصویر وجود دارد. شباهت و مقایسه مقادیر پیکسل تصویر بی اهمیت ترین و بی تاثیر است. تصویر یکسان در نورپردازی/سایه متفاوت پیکسل های متفاوتی می دهد و با وجود شباهت بسیار زیاد با محتوا ، متفاوت از تصویر منبع تعیین می شود. تصویر زیر از ویدیوهای WWDC این را نشان می دهد:

چاپ ویژگی های چشم انداز

خوشبختانه چارچوب Vision شامل یک شبکه طبقه بندی است کهبرای تعیین توصیف کننده های ویژگی تصویر در بالاترین لایه مدل آموزش دیده است. این ما را از ایجاد مدلهای خود برای استخراج ویژگیها از تصاویر نجات می دهد ، زیرا Vision قبلاً در API خود قابلیت چاپ را ارائه می دهد. FeaturePrint توصیف بردار تصویر است.

کد زیر نحوه تعیین ویژگی های چاپ شده از درخواست Vision و محاسبه فاصله اقلیدسی بین تصاویر را نشان می دهد. فاصله تعیین می کند که چقدر تصاویر روی نقشه اقلیدسی نزدیک/دور هستند. هرچه فاصله کوچکتر باشد ، تصاویر بیشتر شبیه هم هستند.

 آیا {
 requestHandler.perform ([request]) 
 let result = request.results؟. اولین بار به عنوان؟ VNFeaturePrintObservation
var var = Float (0)
سعی کنید نتیجه؟ برای محاسبه فاصله شناور از تصویر منبع استفاده می شود. 

در ادامه ، در بخش بعدی ، یک برنامه iOS را توسعه می دهیم که از ویژگی های چاپ تصاویر برای مرتب سازی آنها بر اساس شباهت استفاده می کند. < /p>

پیاده سازی

برای شروع ، نمای SwiftUI خود را تنظیم می کنیم که دارای تصویر منبع (تصویر مرجع) و لیستی از تصاویر است. ایده این است که VNGenerateImageFeaturePrintRquest را روی هر یک از تصاویر اجرا کرده و فاصله آنها را با چاپ ویژگی تصویر منبع محاسبه کنید. متعاقباً ، فهرست SwiftUI را مرتب می کنیم تا مشابه ترین تصاویر در بالا نمایش داده شود.

در اینجا نگاهی اجمالی به وضعیت اولیه رابط کاربری ما می اندازیم: cdn-images-1.medium.com/max/426/1*X6QNV8uTvXMp5NK_KMMPtQ.gif">

بنابراین ما یک تصویر از یک ماشین را به عنوان تصویر منبع و چند تصویر تصادفی (از جمله مدل های یک ماشین مشابه در حالت های مختلف) در SwiftUI List. به زودی خواهیم دید که شباهت تصویر با دقت چگونه کار می کند هنگام محاسبه ویژگی های چاپ شده تصاویر. اما ابتدا اجازه دهید لیست و مدل آن را تنظیم کنیم.

ایجاد یک مدل برای فهرست SwiftUI

لیست SwiftUI ما تصویر و فاصله محاسبه شده را در برابر تصویر منبع در یک struct مطابق شکل زیر: distance: String = "NA"

} 

پیروی از پروتکل قابل شناسایی برای عناصر موجود در لیست برای داشتن شناسه منحصر به فرد مهم است.

ساختن ما SwiftUI View

بعد ، نمای SwiftUI را طوری تنظیم می کنیم که modelData و تصویر منبع را مانند تصویر زیر نگه دارد:

در اینجا modelData ما به عنوان یک متغیر حالت تعریف شده است. هرگونه تغییر در modelData یا ویژگی های آن ، نمای را دوباره به روز می کند. NavigationBarItem هنگام فشار دادن درخواست Vision را فعال می کند. بیایید ببینیم چگونه کار می کند.

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

اجرای درخواست چشم انداز

کد زیر فاصله هر تصویر از مدل داده و منبع تصویر را محاسبه می کند. و آرایه را با تابع map و سپس مرتب سازی بر اساس فاصله تغییر می دهد: https://cdn-images-1.medium.com/max/426/1*oMJn7mUEAZa_3M52IkM-fQ.gif">

در نتیجه بالا ، مشابه ترین تصویر ، مشابه ترین ژست بود به تصویر مرجع مقایسه چاپ ویژگی Vision نیز اهمیت را در نظر می گیرد(از این رو دوچرخه ای که برجسته تر بود رتبه بالاتری کسب کرد).

برای سناریوهایی که تصویر محاسبه شباهت با تصویر منبع یکسان است ، فاصله بازگشتی 0.0 است. علاوه بر این ، اگر درخواست Vision نتواند ویژگی های چاپ شده را استخراج کند ، خطایی ایجاد می کند. الگوریتم های بینایی کامپیوتری پیچیده با API آسان برای استفاده.

با استخراج نسخه های چاپی تصاویر ، می توان شباهت بین تصاویر را تجزیه و تحلیل کرد. با حرکت به جلو ، می توانید تصاویر با چندین تصویر مرجع را برای موارد استفاده محاسبه کنید ، مانند اینکه آیا تصویر تار است یا خیر ، تیره/روشن است و غیره. جالب است که ببینیم درخواست دید در این نوع موارد چقدر دقیق عمل می کند. به کد منبع کامل این مقاله در این مخزن GitHub موجود است.

این برای این مورد است. امیدوارم از خواندن لذت برده باشید.

توجه ویراستار: ضربان قلب یک نشریه آنلاین آنلاین و مشارکت کننده است که به کاوش در تقاطع نوظهور توسعه برنامه تلفن همراه و یادگیری ماشین اختصاص داده شده است. ما متعهد هستیم که از توسعه دهندگان و مهندسان از هر قشری حمایت و الهام می گیریم.

مستقل از نظر ویرایش ، Heartbeat توسط Fritz AI ، پلت فرم یادگیری ماشینی که به توسعه دهندگان کمک می کند تا دستگاه ها را ببینند ، بشنوند ، حمایت و منتشر می شود. حس کنید و فکر کنید ما به مشارکت کنندگان خود پرداخت می کنیم و تبلیغات نمی فروشیم.

اگر می خواهید مشارکت داشته باشید ، به تماس ما برای مشارکت کنندگان سر بزنید. همچنین می توانید برای دریافت خبرنامه های هفتگی ما (هفته نامه یادگیری عمیق و خبرنامه هوش مصنوعی Fritz) ثبت نام کنید ، در Slack به ما بپیوندید و Fritz AI را در توییتر دنبال کنید تا آخرین یادگیری ماشین تلفن همراه را مشاهده کنید.

Renegade Elite ، تابلوی بعدی از Libre Computer

Renegade Elite ، تابلوی بعدی از Libre Computer

یک سال پیش Libre Computer "Le Potato" را به Kickstarter آورد. رایانه تک برد شبیه رزبری پای به سرعت توسط Tritium و Renegade دنبال شد. در حال حاضر Libre با نخبگان Renegade بازگشته است. (

ایندیانا لایحه ای را برای ارائه علوم کامپیوتر به هر مدرسه تصویب کرد!

ایندیانا لایحه ای را برای ارائه علوم کامپیوتر به هر مدرسه تصویب کرد!

پنجشنبه ، قانونگذار ایندیانا با اکثریت قاطع لایحه ای را تصویب کرد که تضمین می کرد هر مدرسه ای در ایالت علوم رایانه ارائه می دهد و یادگیری حرفه ای را برای معلمان تأمین می کند.

لایحه بعدی به فرماندار اریک منتقل می شود. هولکامب که انتظار می رود این لایحه را به قانون امضا کند.

دولت. هولکامب پشتیبان سرسخت علوم رایانه بوده و تعهد خود را در زمینه علوم رایانه در آدرس ژانویه خود در ایالت ایالات متحده اعلام کرده است.

فرماندار هولکامب در مورد تصویب SEA 172 گفت: مهارتهای علمی تقاضای زیادی برای مشاغل امروزی دارند - و برای نسلهای آینده بسیار مهم خواهند بود. به همین دلیل این لایحه بسیار مهم است. اطمینان از اینکه هر مدرسه ایندیانا علوم رایانه ارائه می دهد ، نیاز نیروی کار ما را با فرصت های آموزشی هماهنگ می کند. "

این قانون از هر مدرسه ای می خواهد که شامل آموزش علوم رایانه برای دانش آموزان از کودکستان تا پایه دوازدهم ، از مدرسه 2021-22 باشد. سال.

فناوری به بخش جدایی ناپذیری از زندگی و اقتصاد ما تبدیل شده است و بسیار مهم است که علوم رایانه به عنوان یادگیری اساسی در سیستم آموزشی K-12 آموزش داده شود. فارغ از مسیر دانش آموز ، ما باید به هر دانش آموز ابزار لازم برای موفقیت در قرن 21 را بدهیم.

تبریک می گوییم ، ایندیانا!

نظر

نظر

آیا شما ترجیح می دهید دانشمند داده NLP یا رایانه باشید؟

نگاهی دقیق تر به این نقش های معروف Data Scientist.

عکس توسط JESHOOTS.COM در Unsplash [1].

فهرست مطالب

< oli> مقدمه علم داده پردازش زبان طبیعی چشم انداز کامپیوتری خلاصه منابع

مقدمه

هنگام درخواست موقعیت شغلی به عنوان دانشمند داده ، ممکن است انواع مهارت های مورد نیاز را در قسمت شرح شغل مشاهده کنید. شما پایین بروید و سپس ببینید تحصیلات مورد نیاز بین پست ها متفاوت است. مهمتر از همه ، شما یک نمای کلی می بینید که نقش را خلاصه می کند ، و اگرچه عنوان موقعیت یکسان است ، بخش به طور قابل توجهی متفاوت است. این تغییر به دلیل انواع مختلف موقعیت های علم داده موجود است. با این حال ، من متوجه شده ام که این نقش ها نام جدیدی به خود می گیرند زیرا شرکت ها تخصص خود را در علم داده درک می کنند. این دو شاخه محبوب علم داده عبارتند از پردازش زبان طبیعی (NLP) و دید رایانه ای. بسته به شرکتی که در نهایت قصد دارید در آن کار کنید یا در حال حاضر در آن کار می کنید ، برخی از موقعیت ها همچنان عنوان Data Science نامیده می شوند ، اما بر NLP یا Computer Vision تمرکز دارند ، در حالی که برخی از موقعیت ها به طور کلی علم داده است. من هم NLP و هم Computer Vision را برجسته می کنم تا بتوانید اطلاعات بیشتری در مورد معنای بودن هر کدام ، همراه با حقوق مورد انتظار ، و اینکه کدام نقش در نهایت تخصص بهتری برای شما است ، بیابید.

داده ها علم

علم داده یک اصطلاح بسیار گسترده است که اغلب بین مردم ، به ویژه در زمینه تکنولوژی مورد مناقشه است. دانشمندان داده فعلی می توانند نسبت به آنچه فکر می کنند علم داده بر اساس آنچه در اولین شغل خود تجربه کرده اند تعصب داشته باشند ، اما بعداً متوجه خواهند شد که علم داده در واقع یک اصطلاح کلی برای چندین رشته است. این رشته ها شامل پردازش زبان طبیعی ، دید رایانه ای ، یادگیری ماشین ، آمار ، ریاضیات ، برنامه نویسی ، تجزیه و تحلیل داده ها ، مدیریت محصول و هوش تجاری است. این واقعاً به شما و شرکتی که در آن کار می کنید بستگی دارد که تصمیم بگیرند از چه مسیر خاصی می خواهید بروید یا شاید در همه این جنبه ها کلی گرا باشید. از مزایای تخصص در NLP یا Computer Vision این است که می دانید در چه زمینه ای هستید و می توانید بر یادگیری و بهبود مهارت های خاص مورد نیاز هر موقعیت متمرکز شوید.

پردازش زبان طبیعی

گاهی از دانشمندان متخصص در NLP به عنوان مهندس NLP نیز یاد می شود. این تخصص بر زبان طبیعی انسانها و چگونگی مشارکت رایانه ها در هضم این ورودی بدون ساختار و سپس خروجی معنای ساختار یافته و مفید متمرکز است. در حالی که تعاریف و مثال های بی شماری از این نوع علم داده وجود دارد ، من می خواستم تجربه شخصی و در عین حال حرفه ای خود را با NLP ارائه دهم. من با سه نوع پروژه NLP کار کرده ام. این سه پروژه شامل موارد زیر است: به سایر اشکال NLP نیز. همه آنها ابزارها و کد مشابهی را برای ایجاد خروجی های مفید به اشتراک می گذارند. من به طور خاص بیشترین کار را با NLP در زبان برنامه نویسی پایتون انجام داده ام.

تجزیه و تحلیل احساسات - این فرم ازNLP بر خلق و خو ، احساسات ، قطبیت و موضوعیت یک متن معطوف می شود. یک جریان معمول کار برای تجزیه و تحلیل احساسات این است که داده های خود را جمع آوری کرده ، پیش پردازش کنید و سپس آن را نشانه گذاری کنید. اساساً ، در این مرحله ، شما هر کلمه ای را که در حال تجزیه و تحلیل ، تمیز کردن و حذف آن هستید خواهید داشت تا کلمات برچسب گذاری شوند. این قسمت بعدی معمولاً به عنوان برچسب گذاری POS یا Part-of-Speech شناخته می شود. هنگامی که نوع کلمات خود را مانند صفت ها ، اسم ها و افعال تعیین کردید ، می توانید به راحتی از عملکرد کتابخانه ای استفاده کنید که نمره قطبی را برای هر متن تعیین می کند. برخی از کتابخانه های NLP احساسی محبوب TextBlob و vaderSentiment هستند. من در اینجا زیاد عمیق نمی شوم ، اما اگر می خواهید مقاله ای در مورد ویژگی های NLP و این دو کتابخانه مشهور نوشته شود ، خوشحال می شوم این کار را انجام دهم (لطفاً در زیر نظر دهید). تجزیه و تحلیل احساسات می تواند به طور گسترده ای توسط اکثر مشاغل استفاده شود. در اینجا چند نمونه از مواردی که می توان تجزیه و تحلیل احساسات را اعمال کرد آورده شده است: بهبود محصول

در اینجا خلاصه ای از تجزیه و تحلیل احساسات آمده است:

 جمع آوری داده ها 
 پیش پردازش 
 توکن 
 برچسب POS 
 نمره دهی 

مدلسازی موضوع - این شکل از NLP تحت شاخه ای از یادگیری بدون نظارت است که به شما کمک می کند تا موضوعات اسناد متشکل از متن را بیابید. یکی از رایج ترین روش های یافتن موضوعات در یک سند ، استفاده از LDA یا Latent-Dirichlet-Allocation است. این یک تکنیک است که در نهایت موضوعاتی را که عبارات کلیدی محبوب و مهم را از متن شما خلاصه می کند ، نشان می دهد. در اینجا چند نمونه از مواردی که می توان از مدل سازی موضوعات استفاده کرد آورده شده است:

- ارائه موضوعات جدید از متن

- استفاده از این موضوعات برای تعیین برچسب های یادگیری تحت نظارت

< p> - بینش هایی که از جستجوی دستی بسیار دشوار است

دسته بندی متن - این فرم از NLP یک تکنیک یادگیری تحت نظارت است که به طبقه بندی نمونه های جدید داده ها که نیازی به لزوماً فقط متن ندارند ، کمک می کند. اما حاوی مقادیر عددی نیز می باشد. گسترده تر از دو فرم NLP ، می توانید دسته بندی متن را به عنوان یک الگوریتم طبقه بندی معمولی در نظر بگیرید ، جایی که برچسب متن است و برخی از ویژگی ها نیز متن هستند. از همان تکنیک های بالا برای پیش پردازش ، تمیز کردن و استخراج معنی از متن استفاده خواهید کرد. در اینجا چند نمونه از مواردی که می توان طبقه بندی متن را اعمال کرد آورده شده است: p> محبوب ترین بسته پایتون nltk [2] است که مخفف Natural Language Toolkit است. شامل چندین کتابخانه است که در تلاش شما برای حل مشکلات با تکنیک های NLP ضروری هستند.

مجموعه ابزار زبان طبیعی - اسناد NLTK 3.5 NLTK یک بستر پیشرو برای ایجاد برنامه های پایتون برای کار با داده های زبان انسانی است. این برنامه برای استفاده آسان ارائه می دهد ... www.nltk.org

یک مهندس NLP چقدر درآمد دارد؟

طبق Glassdoor [3] ، متوسط ​​حقوق یک مهندس NLP در ایالات متحده 114،121 دلار در سال است.

بینایی رایانه ای

من معتقدم که این حوزه از علم داده حتی تخصصی تر از NLP است. Computer Vision به جای داده های عددی یا متنی بر داده های تصویری و تصویری تمرکز می کند. از نظر من ، رایانه چشم انداز خطرات بیشتری دارد زیرا می تواند در آن استفاده شودصنایع بیشتری که لزوماً به بینش وابسته نیستند ، اما نیاز به اقدامات امنیتی و ایمنی دارند تا به کار گرفته شوند. به این فکر کنید که چگونه تجزیه و تحلیل NLP و احساسات برای تجزیه و تحلیل خوشبختی بازبینی افراد مفید بوده است ، این بینش مفید و قدرتمند است ، اما به همان اندازه که بینایی رایانه می تواند مfulثر یا مضر باشد ، مفید نیست. من برخی از انواع Computer Vision را در زیر برجسته می کنم.

تشخیص چهره - هنگامی که تلفن خود را بر می دارید ، به احتمال زیاد یک ویژگی امنیتی دارید که چهره شما را تجزیه و تحلیل می کند تا ببیند آیا واقعاً شما در تلاش برای دسترسی به خود هستید تلفن. یک کتابخانه معروف پایتون که از پروژه هایی برای تشخیص چهره سود می برد ، به درستی به عنوان face_recognition نامیده می شود. تصاویری که با آنها کار می کنید و از صورت تشکیل شده اند به صورت یک ویژگی کدگذاری می شوند. بر اساس ویژگی های مشترک صورت ، می توانید چهره های فردی را با چهره های یکسان یا متفاوت مطابقت دهید (یا ندهید) تا در نهایت صورت را تشخیص دهید.

تشخیص شی - با استفاده از اطلاعات شیء ، این فرم رایانه می تواند در تشخیص اجسام کمک کند. OpenCV یک ابزار محبوب است که توسط برنامه نویسان و دانشمندان داده که مایل به تمرکز بر تشخیص اشیا هستند ، مورد استفاده قرار می گیرد.

شما می توانید نمونه هایی از دید کامپیوتر را در موارد زیر پیدا کنید:

- تشخیص تصویر

- شناسه چهره iPhone

- برچسب گذاری در فیس بوک

- تشخیص عابران پیاده و خودروهای تسلا

یک مهندس بینایی کامپیوتر چقدر درآمد دارد؟

با توجه به Glassdoor [4] ، متوسط ​​حقوق یک مهندس NLP در ایالات متحده 99،619 دلار در سال است. < /pq>

در حالی که هر دو این حقوق زیاد است ، من شخصاً از آگهی های استخدام دیده ام که نه تنها مهندسان بینایی کامپیوتر بیش از متوسط ​​حقوق گزارش شده ، بلکه مهندسان NLP نیز درآمد دارند. از آنجا که این دو نقش در علم داده بیش از پیش تخصصی می شوند ، معتقدم به همین دلیل می توانید انتظار داشته باشید که حقوق بالاتری داشته باشید.

خلاصه

عکس توسط Annie Spratt در Unsplash [5].

اکثر دانشمندان داده احتمالاً نوعی از NLP یا Computer Vision را مطالعه کرده اند ، خواه از دانشگاه باشد یا از آموزش آنلاین. هر دوی این نقش های تخصصی در علم داده بسیار مورد احترام هستند و می توانند به صنایع بی شماری سود ببرند. هنگام پاسخ به این س ‘ال که "ترجیح می دهید مهندس NLP باشید یا مهندس بینایی کامپیوتر؟" در نهایت به ترجیحات و اهداف شغلی شما بستگی دارد. به این فکر کنید که دوست دارید در چه نوع پروژه هایی کار کنید ، در کدام صنعت می خواهید کار کنید و دوست دارید با کدام شرکت مرتبط باشید. هر دوی این موضوعات در علم داده می تواند نتایج بسیار بالایی از کار شما به همراه داشته باشد ، بنابراین هر یک به شما یک تجربه انگیزشی می دهد.

امیدوارم این مقاله برای شما جالب و مفید بوده باشد. با خیال راحت در زیر تجربه خود به عنوان یک دانشمند داده عمومی ، مهندس NLP یا مهندس بینایی رایانه کامنت بگذارید.

از شما برای خواندن متشکرم!

منابع

[ 1] عکس توسط JESHOOTS.COM در Unsplash ، (2018)

[2] پروژه NLTK ، مجموعه ابزار زبان طبیعی ، (2020)

[3] Glassdoor، Inc.، NLP Engineer حقوق و دستمزد ، (2008–2020)

[4] Glassdoor، Inc.، Computer Vision Engineers Salaries، (2008–2020)

[5] عکس توسط Annie Spratt در Unsplash ، ( 2020)

Candid: یک زبان رایج برای رابط های کاربردی در رایانه اینترنتی

Candid: یک زبان رایج برای رابط های کاربردی در رایانه اینترنتی

معرفی Candid ، یک زبان توصیف رابط کاربری جدید برای رایانه اینترنتی ، که کد میزبان را قادر می سازد تا یکپارچه ادغام شود

ما ابزارهایی را برای ایجاد خودکار UI و انجام آزمایش تصادفی بر اساس فایل شرح خدمات ایجاد کردیم. < p> همانطور که بنیاد DFINITY برای راه اندازی اینترنت به ریشه های آزاد و باز خود با راه اندازی رایانه اینترنتی فعالیت می کند ، اولین شبکه بلاک چین با سرعت وب با ظرفیت محاسباتی نامحدود ، افزایش تجربه توسعه دهندگان و ارائه گزینه های بیشتر ، یک تمرکز ثابت است. رایانه اینترنتی میزبان قوطی های نرم افزاری است ، تکامل قراردادهای هوشمند سنتی که می توانند مقیاس پذیر شوند ، که شامل کد بایتی WebAssembly با صفحاتی از حافظه است که کد در آنها اجرا می شود. اینها توسعه دهندگان را قادر می سازد تا برنامه های کاربردی ، سیستم ها و سرویس های اینترنتی سازگار با امنیت ، غیرقابل توقف و استفاده از ویژگی های بلاک چین مانند توکن سازی را ایجاد کنند که به طور مستقیم در اینترنت و نه در زیرساخت های اختصاصی مستقر می شوند.

برای حمایت از رشد جهان نرم افزارهای تصویری مجدد در یک بلاک چین عمومی که در آن برنامه های مختلف می توانند مستقیماً با یکدیگر ادغام شوند و خدمات را می توان به راحتی ترکیب و گسترش داد ، تیم زبانهای ما زبان توصیف واسط کاندید (IDL) را توسعه داد ، که به طور مشترک به آنها امکان می دهد ساختن اکوسیستم رایانه اینترنتی برای اتصال کاملاً یکپارچه کد آنها ، حتی اگر به زبانهای مختلف نوشته شده باشد ، که ما مشتاق هستیم امروز با جزئیات بیشتر آن را شرح دهیم.

Candid چیست؟

Candid یک IDL است که به طور خاص برای رایانه اینترنتی ساخته شده است و یک زبان مشترک برای رابط های برنامه برای تسهیل ارتباط بین سرویس های نوشتاری ارائه می دهد. n در زبانهای برنامه نویسی مختلف.

یکی از مزایای کلیدی Candid این است که زبان را می شناسد و قابلیت همکاری بین سرویس ها و قسمت های جلویی را که به زبان های مختلف برنامه نویسی مانند Motoko ، Rust و جاوا اسکریپت ، و سایر موارد. این به توسعه دهندگان اجازه می دهد بدون نگرانی در مورد ارتقاء رابط در سرویس های خارجی ، سرویس هایی را که به یکدیگر متکی هستند ، با خیال راحت و بدون دردسر بسازند. توسعه دهندگان با استفاده از Candid توانایی توصیف رابط عمومی یک سرویس را دارند ، معمولاً در قالب برنامه ای که به عنوان قوطی استفاده می شود. به عنوان یک توسعه دهنده ، می توانید سرویسهای خارجی که در رایانه اینترنتی در حال اجرا هستند را به عنوان فراخوانی تابع ناهمزمان فراخوانی کنید. بدون شکستن کلاینت های موجود-به عنوان مثال ، به این معنی که می توانید با خیال راحت پارامترهای اختیاری جدید را بدون از دست دادن سازگاری برای مشتریان فعلی به سرویس اضافه کنید. پشتیبانی از ویژگی های رایانه اینترنتی: Candid به ویژه برای توسعه برنامه های کاربردی مناسب است رایانه اینترنتی.

کاندید تا حدودی از IDL های مشابه و زبانهای تعریف داده (DDL) مانند Protobuf ، Thrift و JSON الهام گرفته شده است. اما Candid ترکیبی منحصر به فرد از ویژگی هایی را ارائه می دهد که در این فناوری های دیگر یافت نمی شود:

Candid یک زبان توصیف رابط کامل است ، نه فقط یک زبان توصیف داده. یک مقدار Candid را مستقیماً به انواع و مقادیر زبان میزبان ترسیم کنید. Candid ذاتاً یک زبان مرتبه بالاتر است که به استدلال های پیام اجازه می دهد تا به خدمات و روش های دیگر ارجاع دهند. Candid داردپشتیبانی داخلی از ویژگی های رایانه اینترنتی خاص ، مانند حاشیه نویسی پرس و جو. Candid قوانین را برای نحوه ارتقاء خدمات و رابط آنها به شیوه صوتی و ترکیبی ، از جمله موارد مرتبه بالاتر ، تعیین می کند.

چگونه از Candid استفاده کنم؟

هدف اصلی Candid اتصال برنامه هایی است که به زبان میزبان نوشته شده اند - به عنوان مثال Motoko ، Rust یا JavaScript - با رایانه اینترنتی. در بیشتر موارد ، مجبور نیستید با داده های برنامه خود به عنوان مقادیر Candid برخورد کنید. در عوض ، شما با یک زبان میزبان مانند جاوا اسکریپت با استفاده از مقادیر آشنا جاوا اسکریپت کار می کنید ، و سپس بر Candid تکیه می کنید تا این مقادیر را به صورت شفاف به قوطی نوشته شده در Rust یا Motoko منتقل کند. قوطی مقادیر را دریافت می کند و آنها را به عنوان مقادیر اصلی Rust یا Motoko در نظر می گیرد.

مواردی وجود دارد که مشاهده مقادیر Candid به طور مستقیم در شکل قابل خواندن برای انسان مفید است-به عنوان مثال ، هنگام ورود به سیستم ، اشکال زدایی ، یا تعامل با یک سرویس در خط فرمان. در این سناریوها ، می توانید از ارائه متنی برای مقادیر Candid استفاده کنید.

Candid یک سیستم قوی تایپ شده با مجموعه ای از انواع است که به طور متعارف بیشتر موارد استفاده را پوشش می دهد (برای مشاهده لیست ، به صفحه SDK ما مراجعه کنید). فلسفه این مجموعه انواع این است که آنها برای توصیف ساختار داده ها کافی هستند تا بتوان اطلاعات را رمزگذاری ، منتقل و رمزگشایی کرد ، اما سعی نمی کنند محدودیت های معنایی فراتر از آن را توصیف کنند. Candid این مجموعه از انواع را پشتیبانی می کند تا امکان ترسیم طبیعی انواع داده ها بر اساس انتخاب های منطقی و متعارف مناسب هر زبان میزبان را فراهم کند ، خواه کد خود را به Motoko ، Rust ، JavaScript یا برخی زبان های دیگر بنویسید.

از انواع کاندید می توان برای توصیف یک سرویس از طریق یک فایل توصیف سرویس Candid (فایل .did) استفاده کرد که می تواند به صورت دستی نوشته شده یا از پیاده سازی سرویس ایجاد شود. به عنوان مثال اگر در Motoko قوطی بنویسید ، کامپایلر هنگام کامپایل برنامه به طور خودکار یک توضیح Candid تولید می کند. در زبان های دیگر ، مانند Rust ، باید توضیحات رابط Candid را به صورت دستی بنویسید. با کمک انواع ، ما ابزارهایی را برای ایجاد خودکار UI و انجام آزمایش تصادفی بر اساس فایل توضیحات سرویس توسعه دادیم.

Candid همچنین برای ارتقاء خدمات مفید است. خدمات در طول زمان تکامل می یابند ؛ آنها روشهای جدیدی به دست می آورند و روشهای موجود داده های بیشتری را برمی گردانند یا انتظار استدلال های اضافی را دارند. معمولاً نویسندگان سرویس می خواهند این کار را بدون شکستن مشتریان موجود انجام دهند. Candid کمک می کند تا خدمات با ایمن سازی قوانین دقیق زیرنوع (در Coq رسمی شده است) تکامل یابد که نشان می دهد نوع سرویس جدید همچنان قادر به برقراری ارتباط با سایر طرف هایی است که از توصیف رابط قبلی استفاده می کنند.

علاقه مند به یادگیری بیشتر؟ در اینجا برخی از مطالب مرتبط با Candid برای شروع…

آموزش ها و منابع کاندیدا

ویدیوی توضیح دهنده کاندیدا: شما می توانید یک آموزش تصویری در مورد نحوه استفاده از Candid را در اینجا پیدا کنید. اسناد و مدارک آموزشی: می توانید به اسناد ما در Candid در سایت SDK ما در اینجا مراجعه کنید. Candid Crate: جعبه Candid یک کتابخانه سریال سازی/ضد آب زدایی است که می تواند برای ایجاد خدمات Candid مورد استفاده قرار گیرد. یا مشتریان در Rust. کتابخانه عامل رایانه اینترنتی برای جاوا اسکریپت: این نماینده شامل پشتیبانی از Candid. پشتیبانی شده توسط انجمنکتابخانه ها برای Candid: کتابخانه هایی در حال حاضر برای Haskell ، Elm ، AssemblyScript و Kotlin وجود دارند. UI Candid: این قوطی یک رابط کاربری اصلی برای هر قوطی که روی رایانه اینترنتی اجرا می شود ایجاد می کند و توسعه دهندگان را قادر می سازد تا با قوطی ها تعامل داشته باشند در وب (برخلاف ترمینال) ، و همچنین ارائه قابلیت اشکال زدایی.