بینایی رایانه ای در iOS: بهترین حالت چهره را در عکس های زنده تعیین کنید

بینایی رایانه ای در iOS: بهترین حالت چهره را در عکس های زنده تعیین کنید

پیاده سازی iOS درخواست جدید کیفیت تصویربرداری چارچوب ویژن

عکس توسط نیکولا پرانتونی در Unsplash

اپل در WWDC 2019 پیشرفتهای جدید و هیجان انگیزی را در چارچوب Vision خود به ارمغان آورد. آنها فقط ردیابی چهره و طبقه بندی تصویر را بهبود بخشیده اند ، اما ویژگی های جالب جدیدی مانند Saliency ، مدلهای طبقه بندی حیوانات داخلی و API های پیشرفته برای کار با مدلهای طبقه بندی Core ML را معرفی کرده اند. در میان نسخه های جدیدتر ، قابلیت مقایسه کیفیت عکس گرفتن در مجموعه ای از تصاویر یکی از امیدوارکننده ترین ویژگی هایی است که امسال منتشر شده است. تقویت این نشان می دهد که چقدر اپل در زمینه بینایی کامپیوتر سرمایه گذاری کرده است تا عکاسی و پردازش عکس ها را هوشمندتر و راحت تر از گذشته انجام دهد. تصاویر (نوردهی های مختلف ، نور ، حالات چهره و غیره). درخواست Vision تصویر را در یک عکس تجزیه و تحلیل کرده و به آن نمره متریک می دهد. نمره به حالات چهره بستگی دارد (منفی ها نمره کمتری می گیرند) ، نور ، فوکوس و تار شدن تصویر.

با استفاده از این نمرات متریک ، می توانیم تصاویر مختلف را برای پیدا کردن تصویری که در آن است پیدا کنیم. بهترین به نظر می رسد این چیزی است که به زودی در بسیاری از برنامه های سفارشی مبتنی بر سلفی وارد می شود.

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

عکس های زنده در iOS با iPhone 6s معرفی شد و یکی از آنهاست. حالت های دوست داشتنی دوربین با ارائه جلوه متحرک زنده ، نحوه نگاه ما به تصاویر ثابت را دوباره تعریف کرد.

محدوده

ایده این است که بهترین قاب را از یک عکس زنده که چهره انسان دارد پیدا کنیم. ما از کلاس جدید VNDetectFaceCaptureQualityRequest استفاده می کنیم تا درخواست های Vision خود را روی تعدادی از عکس های زنده که عمداً در حالت بد/تار گرفته شده اند اجرا کنیم تا بهترین فریم را از آن استخراج کنیم.

با این حال ، همچنین می توانید همان کد و مفهوم را به فیلم ها نیز بسط دهید. عکسهای زنده اساساً حاوی ویدئوها هستند ، همانطور که در ادامه خواهیم دید.

عکسهای زنده: زیر پوشش

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

در زیر جلد ، عکس های زنده شامل یک عکس کلیدی است که با فایل دارایی منبع ویدیو مرتبط شده است. ما می توانیم با انتخاب هر یک از فریم های ویدئویی از حالت ویرایش پیش نمایش در برنامه Photos ، عکس اصلی را تغییر دهیم.

برای دسترسی به عکس اصلی یا فیلم موجود در کد خود ، باید از کلاس PHAssetResourceManager استفاده کنید که منابع دارایی را در اختیار دارد. ما از این مورد در برنامه خود استفاده خواهیم کردپیاده سازی در چند بخش بعدی.

آیا می دانید: یادگیری ماشین می تواند به افزودن جلوه های تصویری شگفت انگیز به برنامه های تلفن همراه کمک کند. از حذف زمینه ها ، افزودن سبک های هنری و موارد دیگر ، Fritz AI ساخت ابزارهای ویرایش عکس با استفاده از ML را آسان می کند. ، بیایید طرح کلی را ارائه دهیم. ما در مراحل مختلف برنامه خود از کلاس ها و اجزای زیر استفاده خواهیم کرد:

یک ImagePickerController برای انتخاب عکس های زنده از دوربین یا کتابخانه عکس. منابع را ذخیره کرده و آن را در فهرست موقت FileManager ذخیره کنید. استفاده از CollectionView برای نمایش فریم های ویدئویی به همراه ارزش معیار کیفیت چهره از درخواست Vision. در نهایت ، قاب با بالاترین کیفیت عکسبرداری از چهره در یک UIImageView.

تصویر زیر نمای کلی سطح بالایی از نحوه پیاده سازی را نشان می دهد-از گرفتن عکس زنده گرفته تا استخراج ویدئو تا درخواست کیفیت تصویربرداری از چشم انداز: < /p> اتصال نقاط

اکنون که تعیین کردیم برنامه های عملی ما ، بیایید پیاده سازی را با راه اندازی رابط کاربری شروع کنیم.

راه اندازی رابط کاربری

کد زیر به عنوان دکمه ها و ImageViews موجود در فایل ViewController.swift ما:

اگر کد بالا بزرگ به نظر می رسد ، به این دلیل است که به جای استفاده از استوری بورد ، UI را به صورت برنامه نویسی ساخته ام.

تنظیمات Up Image Image Picker

یکی از دکمه های ذکر شده مسئول راه اندازی انتخابگر تصویر است ، در حالی که دکمه دیگر درخواست Vision را تکمیل می کند ، که بعداً آن را خواهیم دید.

objc func onButtonClick (فرستنده: UIButton) {
 اجازه دهید imagePicker = UIImagePickerController () 
 imagePicker.sourceType = .photoLibrary 
 imagePicker.mediaTypes = [kUTTypeImage، kUTTypeLivePhoto] رشته] 
 imagePicker.delegate = خود 
 در حال حاضر (imagePicker ، متحرک: درست ، تکمیل: صفر) 
} 

در کد بالا ، ما ImagePickerController را برای دسترسی به عکس های زنده از کتابخانه Photos تنظیم کرده ایم. برای اینکه ImagePicker به درستی کار کند ، اطمینان حاصل کنید که شرح استفاده از حریم خصوصی برای "استفاده از عکس" را در فایل info.plist خود اضافه کرده اید.

استخراج و پردازش ویدئو از عکس زنده

عکس های زنده از نوع PHLivePhoto هستند. از کد زیر برای مدیریت عکس زنده انتخاب شده از انتخاب کننده تصویر استفاده می شود:

در کد بالا ، ما نتایج انتخاب کننده تصویر را فیلتر می کنیم تا با بررسی اینکه آیا نتایج برگشت داده شده است ، عکس های زنده عکس را برگردانیم. حاوی یک نمونه aPHLivePhoto در فرهنگ لغت اطلاعات. ویدئو.

PHAssetResourceManager.default (). writeData مسئول نوشتن بافرهای ویدئویی در URL است. هنگامی که منبع در videoUrl نوشته می شود ، تابع imagesFromVideos به لطف ناظران ویژگی فعال می شود:

 var videoUrl: URL؟ {
        didSet {
            DispatchQueue.global (qos:. background) .async {
                نگهبان اجازه می دهد videoURL = self.videoUrl else {return}
                self.imagesFromVideo (url: videoURL)
            }
        }
} 

استخراج فریم از ویدیو

کد زیر تعداد مشخصی فریم (بر اساس مدت زمان ویدیو) استخراج کرده و قرار می دهدآنها را در یک آرایه: فاصله زمانی بین هر فریمی که استخراج شده است. در حال حاضر ، numberOfFrames روی 12 تنظیم شده است تا تعداد درخواست های Vision را که انجام می دهیم محدود کند. به نظر می رسد این برای عکس های زنده ، که بیش از 3 ثانیه نیستند ، خوب باشد ، اگرچه در صورت پردازش ویدیو می توانید با این شماره بازی کنید.

چند ویژگی وجود دارد که ما در ابتدای آن تعریف کرده ایم قطعه کد بالا setCustomData برای پر کردن CollectionView ما استفاده می شود. برای این کار ، ابتدا باید CollectionView خود را راه اندازی کنیم.

قبل از شروع به ساخت CollectionView ، در اینجا نیم نگاهی به برنامه در نیمه راه داریم:

خواب آلودگی من را نادیده بگیرید. رفتن به CollectionView.

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

از بررسی موارد استفاده معمول تا چالش های فنی تبدیل مدل و همه چیز در بین دیگر - خبرنامه هوش مصنوعی Fritz همه آنچه را که باید در مورد یادگیری ماشین همراه بدانید را پوشش می دهد.

راه اندازی CollectionView

هنگام تنظیم دیگر رابط کاربری ، از عملکرد setupCollectionView صرف نظر کرده بودیم. اجزاء در ابتدا زمان پیاده سازی آن فرا رسیده است. سلول ، منبع داده و روشهای تفویض

کد زیر سلول نمای مجموعه را با افزودن UIImageView و برچسب به آن تنظیم می کند.

کلاس CustomData داده های هر سلول را نگه می دارد به این منبع داده برای CollectionView ما است. کد زیر آن را تعریف می کند:

در مرحله بعد ، ما باید روشهای نمایندگی CollectionView خود را تعریف کنیم:

اکنون زمان رسیدگی به درخواست Vision فرا رسیده است.

تنظیم درخواست چشم انداز < /h1>

کنترل کننده ویژن ما هر یک از تصاویر را از CollectionView گرفته و VNDetectFaceCaptureQualityRequest را برای دریافت معیار نمره faceCaptureQuality روی آنها اجرا می کند. ما به سادگی تصویر را با بالاترین کیفیت عکسبرداری از چهره در UIImageView نمایش می دهیم.

وقتی دکمه (یکی با نماد چشم) برای فعال کردن روش انتخاب کننده فشار داده می شود ، کد زیر درخواست Vision را اجرا می کند:

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

نتیجه گیری

بنابراین ما تغییرات جدید ارائه شده در فناوری چهره چهره ویژن با iOS 13 و macOS 15 (به طور خاص کیفیت عکسبرداری از چهره) و ایجاد یک برنامه کامل iOS از ابتدا که از این ویژگی جدید در Live Photo استفاده می کند. کد منبع کامل در این مخزن GitHub موجود است.

کیفیت عکسبرداری از ویژگی های هیجان انگیز با موارد مختلف استفاده است - از ویرایش عکس گرفته تا تشخیص ناهنجاری (دریابید که آیا عکس ویدئویی/زنده دارایصورت انسان است یا نه).

فقط زمان نشان می دهد که آیا اپل تصمیم دارد این ویژگی را در ویژگی Live Photo داخلی خود برای ویرایش هوشمند معرفی کند یا خیر. تا آن زمان ، می توانید با برنامه فوق بداهه نوازی کنید ، شاید با ذخیره بهترین قاب به عنوان قاب اصلی (که در کتابخانه Photos نمایش داده می شود) عکس زنده.

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

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

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

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

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