برنامه نویسی 56 بازدید

این روزها عملاً ناممکن، ممکن شده است. دست کم در مورد موضوع این مقاله یعنی بازشناسی تصویر در اپلیکیشن iOS چنین است. در این راهنمای کوتاه با شیوه ساخت یک مدل CoreML با استفاده از Microsoft Custom Vision آشنا می‌شویم. این مدل می‌تواند اشیا را در یک عکس شناسایی کند و شیوه استفاده از آن در یک اپلیکیشن iOS را مورد بررسی قرار می‌دهیم. به منظور مطالعه این راهنما شما باید درکی مقدماتی از مفاهیم توسعه iOS و زبان سوئیفت داشته باشید. با ما همراه باشید تا با روش پیاده‌سازی بازشناسی تصویر در اپلیکیشن iOS آشنا شویم.

ابتدا باید یک مدل CoreML ایجاد کنیم. کار خود را با بررسی شیوه استفاده از Microsoft Custom Vision آغاز می‌کنیم. ابتدا وارد وب‌سایت customvision.ai (+) شوید و یک پروژه جدید ایجاد کنید. نام و توضیحات پروژه را وارد کرده و نوع پروژه را روی classification قرار دهید. نوع classification را روی multilabel قرار دهید و domain را نیز روی general تنظیم کنید. دلیل انتخاب general این است که می‌خواهیم مدل را در اپلیکیشن iOS جاسازی کنیم. همه این موارد را می‌توانید در ادامه تغییر دهید:

بازشناسی تصویر در اپلیکیشن iOS

گام بعدی آپلود کردن تصاویر اشیایی است که می‌خواهیم بازشناسی کرده و با نام پروژه تگ‌گذاری کنیم. با انتخاب multilabel می‌توانیم از تگ‌های چندگانه روی یک تصویر استفاده کنیم. زمانی که تعداد مناسبی از تصاویر داشته باشید، می‌توانید شروع به آموزش دادن مدل بکنید. همچنین می‌توانید با استفاده از دکمه quick test و آپلود برخی تصاویر برای تست بررسی کنید آیا مدل به خوبی کار می‌کند یا نه و آیا با مدلی که آموزش داده‌اید تطبیق دارد یا نه.

بازشناسی تصویر در اپلیکیشن iOS

دریافت مدل CoreML

زمانی که کار آموزش دادن مدل پایان یافت، باید آن را دانلود کرده و در پروژه Xcode ایمپورت کنیم. برای دانلود مدل باید به زبانه performance برویم تا در قالب CoreML اکسپورت کنیم. سپس می‌توانید فایل را به پوشه پروژه Xcode اضافه کنید. در آنجا یک کلاس به طور خودکار برای استفاده آتی تولید می‌شود.

راه‌اندازی دوربین دستگاه و View

کار خود را با ایجاد یک UIViewController آغاز می‌کنیم. این نما (View) جایی است که باید بازخورد را از دوربین iPhone ثبت کنیم. برای این که بتوانید ویدئوی زنده در خروجی ارائه کنید باید پروتکل زیر را اضافه کنید:

AVCaptureVideoDataOutputSampleBufferDelegate

زمانی که نما بارگذاری شد یک AVCaptureSession اضافه می‌کنیم و دستگاهی برای وارد کردن داده‌ها به session تعریف می‌کنیم. در این مثال ما دستگاه پیش‌فرض را برای ویدئو انتخاب می‌کنیم. همچنین یک AVCaptureVideoDataOutput ایجاد می‌کنیم که از روی آن captureSession اقدام به دریافت فریم‌های ویدئو می‌کند و در متد captureOutput ارائه خواهد شد. آخرین کاری که باید انجام دهیم این است که یک AVCaptureVideoPreviewLayer ایجاد کنیم به طوری که بتوانیم خروجی دوربین را در اپلیکیشن خود تماشا کنیم. سپس لایه پیش‌نمایش به صورت یک زیرلایه به نمای اصلی ما اضافه می‌شود که کل فریم را می‌پوشاند.

بازشناسی تصویر در اپلیکیشن iOS

دریافت خروجی ویدئو

برای مدیریت خروجی و اجرای طبقه‌بندی تصویر باید متد captureOutput را پیاده‌سازی کنیم که از سوی پروتکل AVCaptureVideoDataOutputSampleBufferDelegate تعریف می‌شود. برای این که بتوانیم تصاویر را از خروجی آنالیز کنیم، CVPixelBuffer را از CMSampleBuffer دریافت می‌کنیم.

سپس باید درخواست تحلیل تصویر تعیین کنیم که برای هر فریم اجرا می‌شود. ابتدا باید یک VNCoreMLModel با کلاس CoreML آموزش یافته که از Custom Vision دانلود کردیم ایجاد کنیم. توجه کنید که نام کلاس شما از نام ‎_92ed7d5fe39f4438b1ef3e98e3ce80c3_1 متفاوت است:

بازشناسی تصویر در اپلیکیشن iOS

برای هر نتیجه بررسی می‌کنیم آیا نتیجه نرخ اطمینان به قدر کفایت بالایی دارد و همچنین آیا یک شناسه دارد یا نه. در این مثال یک شناسه خاص را بررسی می‌کنیم. این شناسه تگ‌های اضافه شده به تصاویر در CustomVision هستند. اگر اطمینان به قدر کافی بالا داشته باشیم، می‌توانیم کاملاً مطمئن باشیم که شناسه از نوع صحیح است و سپس دریافت ویدئو را موقف کرده و نتیجه را به نخ اصلی ارسال می‌کنیم. در این مورد یک پنجره info ساده با یک پیام به این منظور ایجاد کرده‌ایم.

سخن پایانی

در این مقاله به بررسی یک روش ساده برای پیاده‌سازی باز‌شناسی اشیا در اپلیکیشن iOS پرداختیم. همه کدهای مورد نیاز برای پیاده‌سازی یک دوربین، پیش‌نمایش و بازشناسی اشیا در اپلیکیشن iOS نیز ارائه شده‌اند و شما اینک می‌توانید زمانی که شیئی در جلوی دوربین بازشناسی می‌شود، به آن واکنش نشان دهید.

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

telegram
twitter

میثم لطفی

«میثم لطفی» دانش‌آموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری همه علاقه‌مندی‌های خود در رشته‌های برنامه‌نویسی، کپی‌رایتینگ و تولید محتوای چندرسانه‌ای، در زمینه نگارش مقالاتی با محوریت نرم‌افزار نیز با مجله فرادرس همکاری دارد.

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

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