محاسبه شباهت تصویر با استفاده از دید کامپیوتر در 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 را در توییتر دنبال کنید تا آخرین یادگیری ماشین تلفن همراه را مشاهده کنید.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد