بازشناسی تصویر در اپلیکیشن iOS — از صفر تا صد
این روزها عملاً ناممکن، ممکن شده است. دست کم در مورد موضوع این مقاله یعنی بازشناسی تصویر در اپلیکیشن iOS چنین است. در این راهنمای کوتاه با شیوه ساخت یک مدل CoreML با استفاده از Microsoft Custom Vision آشنا میشویم. این مدل میتواند اشیا را در یک عکس شناسایی کند و شیوه استفاده از آن در یک اپلیکیشن iOS را مورد بررسی قرار میدهیم. به منظور مطالعه این راهنما شما باید درکی مقدماتی از مفاهیم توسعه iOS و زبان سوئیفت داشته باشید. با ما همراه باشید تا با روش پیادهسازی بازشناسی تصویر در اپلیکیشن iOS آشنا شویم.
ابتدا باید یک مدل CoreML ایجاد کنیم. کار خود را با بررسی شیوه استفاده از Microsoft Custom Vision آغاز میکنیم. ابتدا وارد وبسایت customvision.ai (+) شوید و یک پروژه جدید ایجاد کنید. نام و توضیحات پروژه را وارد کرده و نوع پروژه را روی classification قرار دهید. نوع classification را روی multilabel قرار دهید و domain را نیز روی general تنظیم کنید. دلیل انتخاب general این است که میخواهیم مدل را در اپلیکیشن iOS جاسازی کنیم. همه این موارد را میتوانید در ادامه تغییر دهید:
گام بعدی آپلود کردن تصاویر اشیایی است که میخواهیم بازشناسی کرده و با نام پروژه تگگذاری کنیم. با انتخاب multilabel میتوانیم از تگهای چندگانه روی یک تصویر استفاده کنیم. زمانی که تعداد مناسبی از تصاویر داشته باشید، میتوانید شروع به آموزش دادن مدل بکنید. همچنین میتوانید با استفاده از دکمه quick test و آپلود برخی تصاویر برای تست بررسی کنید آیا مدل به خوبی کار میکند یا نه و آیا با مدلی که آموزش دادهاید تطبیق دارد یا نه.
دریافت مدل CoreML
زمانی که کار آموزش دادن مدل پایان یافت، باید آن را دانلود کرده و در پروژه Xcode ایمپورت کنیم. برای دانلود مدل باید به زبانه performance برویم تا در قالب CoreML اکسپورت کنیم. سپس میتوانید فایل را به پوشه پروژه Xcode اضافه کنید. در آنجا یک کلاس به طور خودکار برای استفاده آتی تولید میشود.
راهاندازی دوربین دستگاه و View
کار خود را با ایجاد یک UIViewController آغاز میکنیم. این نما (View) جایی است که باید بازخورد را از دوربین iPhone ثبت کنیم. برای این که بتوانید ویدئوی زنده در خروجی ارائه کنید باید پروتکل زیر را اضافه کنید:
AVCaptureVideoDataOutputSampleBufferDelegate
زمانی که نما بارگذاری شد یک AVCaptureSession اضافه میکنیم و دستگاهی برای وارد کردن دادهها به session تعریف میکنیم. در این مثال ما دستگاه پیشفرض را برای ویدئو انتخاب میکنیم. همچنین یک AVCaptureVideoDataOutput ایجاد میکنیم که از روی آن captureSession اقدام به دریافت فریمهای ویدئو میکند و در متد captureOutput ارائه خواهد شد. آخرین کاری که باید انجام دهیم این است که یک AVCaptureVideoPreviewLayer ایجاد کنیم به طوری که بتوانیم خروجی دوربین را در اپلیکیشن خود تماشا کنیم. سپس لایه پیشنمایش به صورت یک زیرلایه به نمای اصلی ما اضافه میشود که کل فریم را میپوشاند.
دریافت خروجی ویدئو
برای مدیریت خروجی و اجرای طبقهبندی تصویر باید متد captureOutput را پیادهسازی کنیم که از سوی پروتکل AVCaptureVideoDataOutputSampleBufferDelegate تعریف میشود. برای این که بتوانیم تصاویر را از خروجی آنالیز کنیم، CVPixelBuffer را از CMSampleBuffer دریافت میکنیم.
سپس باید درخواست تحلیل تصویر تعیین کنیم که برای هر فریم اجرا میشود. ابتدا باید یک VNCoreMLModel با کلاس CoreML آموزش یافته که از Custom Vision دانلود کردیم ایجاد کنیم. توجه کنید که نام کلاس شما از نام _92ed7d5fe39f4438b1ef3e98e3ce80c3_1 متفاوت است:
برای هر نتیجه بررسی میکنیم آیا نتیجه نرخ اطمینان به قدر کفایت بالایی دارد و همچنین آیا یک شناسه دارد یا نه. در این مثال یک شناسه خاص را بررسی میکنیم. این شناسه تگهای اضافه شده به تصاویر در CustomVision هستند. اگر اطمینان به قدر کافی بالا داشته باشیم، میتوانیم کاملاً مطمئن باشیم که شناسه از نوع صحیح است و سپس دریافت ویدئو را موقف کرده و نتیجه را به نخ اصلی ارسال میکنیم. در این مورد یک پنجره info ساده با یک پیام به این منظور ایجاد کردهایم.
سخن پایانی
در این مقاله به بررسی یک روش ساده برای پیادهسازی بازشناسی اشیا در اپلیکیشن iOS پرداختیم. همه کدهای مورد نیاز برای پیادهسازی یک دوربین، پیشنمایش و بازشناسی اشیا در اپلیکیشن iOS نیز ارائه شدهاند و شما اینک میتوانید زمانی که شیئی در جلوی دوربین بازشناسی میشود، به آن واکنش نشان دهید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامه نویسی Swift (سوئیفت) برای برنامه نویسی iOS
- مجموعه آموزشهای پردازش تصویر و ویدئو
- بازشناسی عنبیه (Iris Recognition) — راهنمای جامع
- بازشناسی چهره (Face Recognition) پیشرفته با استفاده از اکسل — به زبان ساده
==