فیلترهای Snapchat: چگونه دید رایانه چهره شما را تشخیص می دهد

فیلترهای Snapchat: چگونه دید رایانه چهره شما را تشخیص می دهد

علم پشت تشخیص چهره شخصی

در آن لحظات خستگی هنگامی که با فیلترهای Snapchat بازی می کنید - زبان خود را بیرون بیاورید ، ویژگی های خود را غش کنید و نحوه تناسب تاج گل را بیاموزید. دقیقاً روی سر خود هستید - مطمئناً لحظه ای را گذرانده اید که از لحاظ فنی فکر می کنید چه خبر است - چگونه Snapchat موفق می شود چهره شما را با انیمیشن ها مطابقت دهد؟

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

فناوری

این فناوری از راه اندازی اوکراینی به دست آمده Looksery ، برنامه ای است که به کاربران اجازه می دهد ویژگی های صورت خود را هنگام چت تصویری و عکس ها تغییر دهند. Snapchat این استارتاپ تغییر چهره مبتنی بر اودسا را ​​در سپتامبر 2015 به قیمت 150 میلیون دلار خریداری کرد. طبق گزارشات ، این بزرگترین کسب فناوری در تاریخ اوکراین است.

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

نحوه عملکرد فیلترهای Snapchat

Looksery معتقد است مهندسی آنها محرمانه است ، اما هر کس می تواند به اختراعات خود به صورت آنلاین دسترسی پیدا کند. ناحیه خاصی از Computer Vision که فیلترهای Snapchat از آن استفاده می کنند پردازش تصویر نامیده می شود. پردازش تصویر عبارت است از تبدیل یک تصویر با انجام عملیات ریاضی بر روی هر پیکسل روی تصویر ارائه شده.

1 - تشخیص چهره:

اولین مرحله به این صورت عمل می کند: با توجه به ورودی تصویر یا قاب ویدئویی ، تمام چهره های موجود انسان را بیابید و کادر محدود کننده آنها را (یعنی مستطیل به شکل: X ، Y ، عرض و ارتفاع) مختص کنید.

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

اینجاست نحوه عملکرد آشکارساز HOG/SVM:

با توجه به تصویر ورودی ، نمای هرمی آن تصویر را که هرمی از نسخه کوچک شده چندگانه تصویر اصلی است محاسبه کنید. برای هر ورودی روی هرم ، از روش پنجره کشویی استفاده می شود. مفهوم پنجره کشویی بسیار ساده است. با حلقه زدن بر روی یک تصویر با اندازه گام ثابت ، تصاویر کوچک معمولاً وصله می کننداندازه 64 * 128 پیکسل در مقیاس های مختلف استخراج می شود. برای هر وصله ، الگوریتم تصمیم می گیرد که آیا دارای صورت است یا نه. HOG برای پنجره فعلی محاسبه می شود و به طبقه بندی SVM (خطی یا غیر) منتقل می شود تا تصمیم گیری انجام شود (یعنی صورت یا نه). هنگامی که با هرم انجام می شود ، معمولاً یک عملیات سرکوب غیر حداکثر (به اختصار NMS) به منظور دور انداختن مستطیل های انباشته انجام می شود. در اینجا می توانید اطلاعات بیشتری در مورد ترکیب HOG/SVM بخوانید.

2 - نشانه های صورت:

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

می توانید در مورد استخراج نشانه های صورت در اینجا یا این PDF بیشتر بدانید: یک میلی ثانیه تراز صورت با مجموعه درختان رگرسیون در برخی موارد و بدیهی مفید ، تشخیص چهره و استخراج نشانه ها در یک عملیات واحد ترکیب می شوند.

3 - پردازش تصویر

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

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

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

از فیلترها تا تعویض صورت

نسخه به روز شده Snapchat چند ماه قبل دارای قابلیت تعویض صورت با a بوددوست ، چه در زمان واقعی و چه با دسترسی به برخی از چهره های گالری خود. توجه کنید که چگونه صورت ها قابل مشاهده هستند ، این موقعیتی است که مدل آماری در آن قرار دارد. این به Snapchat کمک می کند تا شما و دوستانتان را سریع تر تراز کرده و ویژگی ها را عوض کند.

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

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

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

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

نتیجه گیری

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

- -

اگر از این قطعه لذت بردید ، اگر دکمه کف زدن را بزنید ، دوست دارم آن را دوست داشته باشید

ماهی در مقابل Zsh در مقابل باش و چرا باید به ماهی روی آورد

ماهی در مقابل Zsh در مقابل باش و چرا باید به ماهی روی آورد

دو نوع کاربر * nix وجود دارد: محتاط و ماجراجو

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

این یک واقعیت است ، اکثر توسعه دهندگان یونیکس و یونیکس مانند (مبتنی بر Linux) را دوست دارند سیستم عامل هایی مانند macOS ، اوبونتو و ... آنها پایدار ، قدرتمند ، بسیار قابل تنظیم هستند و از یونیکس شل قدرتمندی برخوردار هستند.

UNIX Shell چیست؟

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

یونیکس شل ابزاری قدرتمند است که به برنامه نویسان امکان می دهد کارهای پیچیده را فقط با چند کلمه انجام دهند. . تعداد زیادی پوسته به طور گسترده در دسترس است مانند Bourne Shell ، C Shell و غیره.

من به ویژه از Bash ، Zsh و پوسته ماهی استفاده کرده ام و در اینجا نظرات من در مورد چرا روی آوردن به ماهی یا حتی Zsh ، یکی از بهترین کارهایی است که می توانید برای لذت بخشتر کردن برنامه نویسی خود انجام دهید.

یک دقیقه آشنایی با Bash ، Zsh و ماهی

Bash

< p> Bash رایج ترین پوسته لینوکس است. اگر یک ترمینال در Mac باز کنید (تا زمان macOS Mojave) ، یا اگر قبلاً از Linux استفاده کرده اید ، Bash را مشاهده کرده اید.

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

Zsh

Zsh شبیه Bash و پوسته عالی دیگری است. سریعتر و قابل تنظیم تر از Bash است.

یکی از جالبترین موارد در مورد Zsh سفارشی سازی رنگ است. فقط با استفاده از چارچوبی به نام Oh My Zsh می توانید طرح زمینه و رنگ پوسته خود را تغییر دهید.

Zsh دارای بسیاری از ویژگی های مفید دیگر است ، از جمله تصحیح املا ، به اشتراک گذاری تاریخچه دستورات خود در چندین ترمینال ، نامگذاری میانبرهای دایرکتوری و غیره.

ماهی

ماهی یا "پوسته تعاملی دوستانه" ، به نظر من کاربرپسندترین و تعاملی ترین پوسته است.

بسیار قابل تنظیم تر از Zsh و Bash است. این یک تعداد ویژگی های جالب مانند نحو ثابت ، تکمیل زبانه زیبا و برجسته سازی نحو دارد ، انتخاب و استفاده از آن آسان است و از زمان اجرا بسیار خوبی برخوردار است.

شما می توانید تم و رنگ پوسته خود را فقط تغییر دهید با استفاده از چارچوبی به نام Oh My Fish. بر خلاف پوسته های فوق الذکر ، ماهی با POSIX سازگار نیست ، اما همچنین قصد ندارد.

می توانید اسکریپت های Bash را در دو زبان Zsh و ماهی اجرا کنید و خط shebang زیر را به خط اول خط خود اضافه کنید. پرونده باش.

 #! /usr /bin /env bash 

چه چیزی درباره ماهی ها ویژه است؟

لوگوی Fish Shell

قابل فهم و استفاده آسان

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

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

برجسته سازی نحو

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

این به شما نشان می دهد قبل از اینکه حتی وارد enter شوید ، دستور شما یا فهرست مورد جستجو وجود دارد. قبل از اینکه وارد شوید ، می دانید که اشتباه تایپ می کنید یا نه. این امر تجزیه و تحلیل دستورات و یافتن خطاها را برای افراد راحت تر می کند.

(اکثر) خطاها را با رنگ قرمز برجسته می کند ، مانند دستورات غلط املایی ، گزینه های غلط املایی ، خواندن از فایل های موجود ، پرانتز و نقل قول های نامناسب ، و بسیاری از خطاهای رایج دیگر.

همچنین دارای برجسته سازی نقل قول ها و پرانتزهای منطبق است. اوه ، و بسیار زیبا و رنگارنگ است. این بسیاری از تم های سریع و پلاگین های جذاب بسیار زیبا را ارائه می دهد ، سبک ، عالی و آسان برای استفاده است.

همچنین ویژگی پیکربندی تحت وب را نیز ارائه می دهد. فقط تایپ کنید:

 fish_config 

در وب سایتی قرار خواهید گرفت که می توانید پوست پوسته خود را با آن شخصی سازی کنید.

صفحه وب_پیکربندی ماهی

تاریخچه جستجو به صورت درون خطی

این ویژگی تعاملی این پوسته است. شما شروع به تایپ کردن یک دستور می کنید و کلید بالا را فشار می دهید تا تمام زمانهای تاریخ Shell را ببینید که قبلاً از آن دستور استفاده کرده اید.

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

این ویژگی ها جستجو و استفاده مجدد از دستورات قبلی را بسیار سریعتر می کند.

پیشنهاد خودکار درون خطی

ماهی هنگام تایپ دستورات را نشان می دهد و پیشنهاد را در سمت راست نشانگر ، به رنگ خاکستری نشان می دهد. اگر یک دستور را اشتباه تایپ کنید ، با قرمز نشان داده می شود که این یک دستور نامعتبر است.

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

نمایش برای پیشنهاد خودکار درون خطی

تکمیل برگه با استفاده از داده های صفحه man

ماهی می تواند صفحات مرد ابزار CLI را در قالب های مختلف تجزیه کند. از طریق تمام تکمیلهای خودکار پیشنهادی ، یک دستور را وارد کرده و "برگه" را وارد کنید.

ماهی در عمل

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

ماهی در عمل باز کردن دایرکتوری دسک تاپ من Bash زیر را اجرا کردم اسکریپت شل: demo.sh که ده عدد اول طبیعی را چاپ می کند.

3. سپس سعی کردم به یک پوشه invalid_folder نامعتبر دسترسی پیدا کنم (توجه داشته باشید که نام پوشه قرمز رنگ است و این نشان می دهد که این پوشه وجود ندارد). سپس سعی کردم به یک پوشه معتبر دسترسی پیدا کنم.

موارد منفی استفاده از ماهی

خوب ، هیچ چیز عالی نیست ، و هرگز نباید باشد. از گسترش تاریخچه پشتیبانی کنید ("!!")

ماهی هیچ پشتیبانی نمی کند !! ، اما شما می توانید از چارچوب Oh My Fish Shell استفاده کنید و پلاگین thebang-bang را نصب کنید تا این میانبر را در پوسته ماهی داشته باشید. < /p>

کندتر از Bash

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

در نتیجه گیری

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

اگر در همه موارد بهترین نیست ، آن را ارائه می دهیددارای ویژگی هایی است که از فلسفه اساسی UNIX پیروی می کند:

"یک کار را انجام دهید و آن را به خوبی انجام دهید."

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

منابعی برای شروع کار با ماهیگیری

در اینجا نحوه نصب ماهی وجود دارد. مستندات مفید و تک صفحه ای. نصب و شروع کار با اوه ماهی من تقریباً هر آنچه در مورد ماهی باید در یک صفحه بدانید.