فنآوریها و مدلهای سیستم بینایی کامپیوتری آینده ما به تدریج و در پروژههای مختلف شرکت ما - در Mail، Cloud، Search ایجاد و بهبود یافتند. آنها مانند پنیر یا کنیاک خوب بالغ شدند. یک روز متوجه شدیم که شبکه های عصبی ما نتایج بسیار خوبی در تشخیص نشان می دهند و تصمیم گرفتیم آنها را در یک محصول واحد b2b - Vision - ترکیب کنیم که اکنون خودمان از آن استفاده می کنیم و به شما پیشنهاد می کنیم از آن استفاده کنید.
امروزه، فناوری بینایی رایانه ما بر روی پلت فرم Mail.Ru Cloud Solutions با موفقیت کار می کند و مشکلات عملی بسیار پیچیده را حل می کند. این بر اساس تعدادی از شبکه های عصبی است که بر روی مجموعه داده های ما آموزش دیده اند و در حل مسائل کاربردی تخصص دارند. تمام خدمات بر روی امکانات سرور ما اجرا می شود. شما می توانید API عمومی Vision را در برنامه های خود ادغام کنید که از طریق آن تمام قابلیت های سرویس در دسترس است. API سریع است - به لطف GPUهای سرور، میانگین زمان پاسخگویی در شبکه ما 100 میلی ثانیه است.
به سراغ گربه بروید، داستان مفصل و نمونه های زیادی از کار ویژن وجود دارد.
نمونه ای از سرویسی که خود ما در آن از فناوری های تشخیص چهره ذکر شده استفاده می کنیم
1. مدل تشخیص چهره ما
1.1. شبکه عصبی و سرعت پردازش
برای شناسایی، ما از اصلاح مدل شبکه عصبی ResNet 101 استفاده می کنیم. Average Pooling در انتها با یک لایه کاملاً متصل جایگزین می شود، مشابه روشی که در ArcFace انجام می شود. با این حال، اندازه نمایش های برداری 128 است، نه 512. مجموعه آموزشی ما شامل حدود 10 میلیون عکس از 273 نفر است.
این مدل به لطف معماری پیکربندی سرور با دقت انتخاب شده و محاسبات GPU بسیار سریع اجرا می شود. دریافت پاسخ از API در شبکههای داخلی ما 100 میلیثانیه طول میکشد - این شامل تشخیص چهره (تشخیص چهره در عکس)، شناسایی و برگرداندن PersonID در پاسخ API است. با حجم زیادی از داده های دریافتی - عکس ها و فیلم ها - زمان بسیار بیشتری برای انتقال داده ها به سرویس و دریافت پاسخ نیاز است.
1.2. ارزیابی اثربخشی مدل
اما تعیین کارایی شبکه های عصبی یک کار بسیار مبهم است. کیفیت کار آنها بستگی به این دارد که مدل ها بر روی چه مجموعه داده هایی آموزش دیده اند و آیا آنها برای کار با داده های خاص بهینه شده اند یا خیر.
ما شروع به ارزیابی دقت مدل خود با تست تأیید اعتبار LFW کردیم، اما بسیار کوچک و ساده است. پس از رسیدن به دقت 99,8 درصد دیگر کاربردی ندارد. رقابت خوبی برای ارزیابی مدلهای تشخیص وجود دارد - Megaface، که در آن به تدریج به رتبه 82 1% رسیدیم. مجموعه داده از حواس پرتی. با این حال، پس از پاک کردن خطاهای تست Megaface، متوجه شدیم که با نسخه پاک شده به دقت 98٪ رتبه 1 دست مییابیم (عکسهای افراد مشهور معمولاً کاملاً خاص هستند). بنابراین، آنها یک تست شناسایی جداگانه، شبیه به Megaface، اما با عکس های افراد "عادی" ایجاد کردند. سپس دقت تشخیص را در مجموعه دادههای خود بهبود بخشیدیم و بسیار جلوتر رفتیم. علاوه بر این، ما از آزمون کیفیت خوشهبندی استفاده میکنیم که از چندین هزار عکس تشکیل شده است. این تگ کردن چهره در فضای ابری کاربر را شبیه سازی می کند. در این مورد، خوشه ها گروه هایی از افراد مشابه هستند، یک گروه برای هر فرد قابل تشخیص. ما کیفیت کار را در گروه های واقعی بررسی کردیم (درست است).
البته خطاهای تشخیص در هر مدلی رخ می دهد. اما چنین موقعیتهایی اغلب با تنظیم دقیق آستانهها برای شرایط خاص حل میشوند (برای همه کنفرانسها از آستانههای یکسانی استفاده میکنیم، اما برای مثال، برای سیستمهای کنترل دسترسی باید آستانهها را تا حد زیادی افزایش دهیم تا موارد مثبت کاذب کمتری وجود داشته باشد). اکثریت قریب به اتفاق بازدیدکنندگان کنفرانس توسط غرفه های عکس Vision ما به درستی شناسایی شدند. گاهی اوقات شخصی به پیشنمایش برششده نگاه میکرد و میگفت: «سیستم شما اشتباه کرد، من نبودم». سپس عکس را به طور کامل باز کردیم، و معلوم شد که واقعاً این بازدید کننده در عکس وجود دارد، فقط ما از او عکس نمیگیریم، بلکه شخص دیگری، اتفاقاً آن شخص در پسزمینه در منطقه تاری بوده است. علاوه بر این، شبکه عصبی اغلب به درستی تشخیص می دهد حتی زمانی که بخشی از صورت قابل مشاهده نیست، یا فرد در حالت ایستاده یا حتی نیمه چرخانده است. این سیستم می تواند شخص را تشخیص دهد حتی اگر صورت در ناحیه اعوجاج نوری باشد، مثلاً هنگام عکاسی با لنز زاویه باز.
1.3. نمونه هایی از آزمایش در شرایط دشوار
در زیر نمونه هایی از نحوه عملکرد شبکه عصبی ما آورده شده است. عکسها به ورودی ارسال میشوند، که او باید با استفاده از PersonID - یک شناسه منحصر به فرد یک شخص، برچسبگذاری کند. اگر دو یا چند تصویر دارای شناسه یکسان باشند، طبق مدلها، این عکسها یک شخص را نشان میدهند.
اجازه دهید بلافاصله توجه داشته باشیم که هنگام آزمایش، به پارامترها و آستانه های مدل مختلفی دسترسی داریم که می توانیم برای رسیدن به یک نتیجه خاص پیکربندی کنیم. API عمومی برای حداکثر دقت در موارد رایج بهینه شده است.
بیایید با ساده ترین چیز، با تشخیص چهره از جلو شروع کنیم.
خب این خیلی راحت بود بیایید کار را پیچیده کنیم، یک ریش و یک مشت سال اضافه کنیم.
برخی خواهند گفت که این نیز خیلی سخت نبود، زیرا در هر دو مورد کل صورت قابل مشاهده است و اطلاعات زیادی در مورد چهره در اختیار الگوریتم قرار دارد. خوب، بیایید تام هاردی را به پروفایل تبدیل کنیم. این مشکل بسیار پیچیدهتر است و ما تلاش زیادی برای حل موفقیتآمیز آن صرف کردیم و در عین حال نرخ خطای پایینی داشتیم: مجموعه آموزشی را انتخاب کردیم، از طریق معماری شبکه عصبی فکر کردیم، توابع از دست دادن را بهبود بخشیدیم و پیش پردازش را بهبود بخشیم. از عکس ها
بیایید یک روسری بر سر او بگذاریم:
به هر حال، این نمونه ای از یک موقعیت بسیار دشوار است، زیرا صورت به شدت مبهم است و در عکس پایین نیز سایه عمیقی وجود دارد که چشم ها را پنهان کرده است. در زندگی واقعی، افراد اغلب با کمک عینک های تیره ظاهر خود را تغییر می دهند. بیایید همین کار را با تام انجام دهیم.
خوب، بیایید سعی کنیم عکس هایی از سنین مختلف به تصویر بکشیم، و این بار با یک بازیگر متفاوت تجربه خواهیم کرد. بیایید مثالی بسیار پیچیدهتر را در نظر بگیریم، جایی که تغییرات مربوط به سن بهویژه برجسته است. این وضعیت دور از ذهن نیست؛ اغلب زمانی اتفاق می افتد که باید عکس موجود در گذرنامه را با چهره حامل مقایسه کنید. از این گذشته ، اولین عکس زمانی که صاحب آن 20 سال دارد به گذرنامه اضافه می شود و تا سن 45 سالگی فرد می تواند تا حد زیادی تغییر کند:
به نظر شما متخصص اصلی ماموریت های غیرممکن با افزایش سن تغییر چندانی نکرده است؟ من فکر می کنم که حتی چند نفر عکس های بالا و پایین را با هم ترکیب کنند، پسر در طول سال ها بسیار تغییر کرده است.
شبکه های عصبی اغلب با تغییرات ظاهری مواجه می شوند. به عنوان مثال، گاهی اوقات زنان می توانند تصویر خود را با کمک لوازم آرایشی به شدت تغییر دهند:
حالا بیایید کار را پیچیده تر کنیم: فرض کنید قسمت های مختلف صورت در عکس های مختلف پوشانده شده است. در چنین مواردی، الگوریتم نمی تواند کل نمونه ها را با هم مقایسه کند. با این حال، ویژن موقعیت هایی مانند این را به خوبی مدیریت می کند.
اتفاقاً در یک عکس چهره های زیادی می تواند وجود داشته باشد؛ مثلاً بیش از 100 نفر در یک عکس کلی از یک سالن جای می گیرند. این وضعیت دشواری برای شبکههای عصبی است، زیرا بسیاری از چهرهها را میتوان به طور متفاوتی روشن کرد، برخی خارج از تمرکز. با این حال، اگر عکس با وضوح و کیفیت کافی (حداقل 75 پیکسل در هر مربع صورت را پوشش میدهد)، Vision قادر به شناسایی و تشخیص آن خواهد بود.
ویژگی عکسها و تصاویر رپورتاژ از دوربینهای نظارتی این است که افراد اغلب به دلیل خارج از فوکوس یا حرکت در آن لحظه تار میشوند:
همچنین، شدت نور می تواند از تصویری به تصویر دیگر بسیار متفاوت باشد. این نیز اغلب به یک مانع تبدیل میشود؛ بسیاری از الگوریتمها در پردازش صحیح تصاویر خیلی تاریک و خیلی روشن، و ناگفته نماند تطبیق دقیق آنها با مشکلات زیادی مواجه هستند. اجازه دهید به شما یادآوری کنم که برای رسیدن به این نتیجه باید آستانه ها را به روشی خاص پیکربندی کنید؛ این ویژگی هنوز به صورت عمومی در دسترس نیست. ما از یک شبکه عصبی برای همه مشتریان استفاده می کنیم؛ این شبکه دارای آستانه هایی است که برای اکثر کارهای عملی مناسب است.
ما اخیراً نسخه جدیدی از این مدل را عرضه کرده ایم که چهره های آسیایی را با دقت بالایی تشخیص می دهد. این قبلاً یک مشکل بزرگ بود که حتی به آن نژادپرستی "یادگیری ماشینی" (یا "شبکه عصبی") می گفتند. شبکههای عصبی اروپایی و آمریکایی چهرههای قفقازی را به خوبی تشخیص میدادند، اما با چهرههای مغولوئید و سیاهپوست وضعیت بسیار بدتر بود. احتمالاً در چین وضعیت دقیقاً برعکس بوده است. همه چیز در مورد مجموعه داده های آموزشی است که نشان دهنده انواع غالب افراد در یک کشور خاص است. با این حال، وضعیت در حال تغییر است؛ امروز این مشکل چندان حاد نیست. بینایی با افراد از نژادهای مختلف مشکلی ندارد.
تشخیص چهره تنها یکی از کاربردهای متعدد فناوری ما است؛ Vision را می توان برای تشخیص هر چیزی آموزش داد. به عنوان مثال، پلاک ها، از جمله در شرایط دشوار برای الگوریتم: در زوایای تیز، کثیف و دشوار برای خواندن پلاک.
2. موارد استفاده عملی
2.1. کنترل دسترسی فیزیکی: زمانی که دو نفر از یک پاس استفاده می کنند
با کمک ویژن می توانید سیستم هایی را برای ثبت ورود و خروج کارمندان پیاده سازی کنید. سیستم سنتی مبتنی بر پاس های الکترونیکی دارای معایب آشکاری است، به عنوان مثال، می توانید با استفاده از یک نشان از دو نفر عبور کنید. اگر سیستم کنترل دسترسی (ACS) با Vision تکمیل شود، صادقانه ثبت می کند که چه کسی و چه زمانی آمده/رفته است.
2.2. ردیابی زمان
این مورد استفاده از ویژن ارتباط نزدیکی با مورد قبلی دارد. اگر سیستم دسترسی را با سرویس تشخیص چهره ما تکمیل کنید، نه تنها می تواند تخلفات کنترل دسترسی را تشخیص دهد، بلکه حضور واقعی کارکنان را در ساختمان یا مرکز نیز ثبت می کند. به عبارت دیگر، ویژن به شما کمک می کند صادقانه در نظر بگیرید که چه کسانی سر کار آمده اند و چه زمانی رفته اند، و چه کسانی به طور کلی از کار خود صرف نظر کرده اند، حتی اگر همکارانش جلوی مافوق او را پوشش دهند.
2.3. تجزیه و تحلیل ویدئو: ردیابی افراد و امنیت
با ردیابی افراد با استفاده از ویژن، می توانید ترافیک واقعی مناطق خرید، ایستگاه های قطار، معابر، خیابان ها و بسیاری از مکان های عمومی دیگر را به دقت ارزیابی کنید. ردیابی ما همچنین می تواند کمک بزرگی در کنترل دسترسی، به عنوان مثال، به یک انبار یا سایر محل های اداری مهم باشد. و البته ردیابی افراد و چهره ها به حل مشکلات امنیتی کمک می کند. کسی را در حال دزدی از فروشگاه شما دستگیر کردید؟ PersonID او را که توسط Vision بازگردانده شده است به لیست سیاه نرم افزار تجزیه و تحلیل ویدیوی خود اضافه کنید و دفعه بعد اگر این نوع دوباره ظاهر شد، سیستم بلافاصله به امنیت هشدار می دهد.
2.4. در تجارت
خرده فروشی و مشاغل مختلف خدماتی به شناسایی صف علاقه مند هستند. با کمک Vision می توانید تشخیص دهید که این یک جمعیت تصادفی از افراد نیست، بلکه یک صف است و طول آن را تعیین کنید. و سپس سیستم به مسئولین در مورد یک صف اطلاع می دهد تا آنها بتوانند وضعیت را دریابند: یا هجوم بازدیدکنندگان وجود دارد و باید کارگران اضافی فراخوانی شوند یا شخصی در انجام وظایف کاری خود کوتاهی می کند.
کار جالب دیگر جداسازی کارکنان شرکت در سالن از بازدیدکنندگان است. به طور معمول، این سیستم برای جدا کردن اشیاء با پوشیدن لباس های خاص (کد لباس) یا با برخی ویژگی های متمایز (روسری مارک، نشان روی سینه و غیره) آموزش داده می شود. این به ارزیابی دقیقتر حضور و غیاب کمک میکند (به طوری که کارمندان آمار افراد حاضر در سالن را صرفاً با حضور خود "بالا" نکنند).
با استفاده از تشخیص چهره، می توانید مخاطبان خود را نیز ارزیابی کنید: وفاداری بازدیدکنندگان چقدر است، یعنی چند نفر و با چه تعداد دفعات به محل اقامت شما باز می گردند. محاسبه کنید که چند بازدیدکننده منحصر به فرد در ماه به شما می آیند. برای بهینهسازی هزینههای جذب و نگهداری، میتوانید از تغییر ترافیک بسته به روز هفته و حتی زمان روز نیز مطلع شوید.
فرانچایزرها و شرکتهای زنجیرهای میتوانند ارزیابی عکس از کیفیت برندسازی فروشگاههای مختلف خردهفروشی را سفارش دهند: وجود آرم، علائم، پوستر، بنر و غیره.
2.5. با حمل و نقل
نمونه دیگری از تضمین امنیت با استفاده از تجزیه و تحلیل ویدئویی، شناسایی اقلام رها شده در سالن فرودگاه ها یا ایستگاه های قطار است. بینایی را می توان برای تشخیص اشیاء صدها کلاس آموزش داد: قطعات مبلمان، کیف، چمدان، چتر، انواع لباس، بطری و غیره. اگر سیستم تجزیه و تحلیل ویدیوی شما یک شی بدون مالک را شناسایی کند و با استفاده از Vision آن را تشخیص دهد، سیگنالی را به سرویس امنیتی ارسال می کند. کار مشابهی با تشخیص خودکار موقعیتهای غیرمعمول در مکانهای عمومی مرتبط است: شخصی احساس بیماری میکند، یا کسی در مکان نامناسبی سیگار میکشد، یا فردی روی ریل میافتد و غیره - همه این الگوها را میتوان توسط سیستمهای تحلیل ویدیویی تشخیص داد. از طریق Vision API.
2.6. جریان سند
یکی دیگر از کاربردهای جالب آینده Vision که در حال حاضر در حال توسعه آن هستیم، شناسایی اسناد و تجزیه خودکار آنها در پایگاه داده است. به جای وارد کردن دستی (یا بدتر از آن، وارد کردن) سریال های بی پایان، اعداد، تاریخ صدور، شماره حساب، جزئیات بانکی، تاریخ و مکان تولد و بسیاری از داده های رسمی دیگر، می توانید اسناد را اسکن کرده و به طور خودکار آنها را از طریق یک کانال امن ارسال کنید. API به ابر، جایی که سیستم این اسناد را در پرواز تشخیص می دهد، آنها را تجزیه می کند و پاسخی را با داده ها در قالب مورد نیاز برای ورود خودکار به پایگاه داده برمی گرداند. امروز Vision می داند که چگونه اسناد را طبقه بندی کند (از جمله PDF) - بین گذرنامه ها، SNILS، TIN، گواهی تولد، گواهی ازدواج و موارد دیگر تمایز قائل می شود.
البته شبکه عصبی قادر به مدیریت همه این موقعیت ها خارج از جعبه نیست. در هر مورد، یک مدل جدید برای یک مشتری خاص ساخته می شود، بسیاری از عوامل، تفاوت های ظریف و الزامات در نظر گرفته می شود، مجموعه داده ها انتخاب می شوند و تکرارهای آموزش، آزمایش و پیکربندی انجام می شود.
3. طرح عملیات API
"دروازه ورودی" Vision برای کاربران REST API است. این می تواند عکس ها، فایل های ویدئویی و پخش ها را از دوربین های شبکه (جریان های RTSP) به عنوان ورودی دریافت کند.
برای استفاده از Vision، شما نیاز دارید
نمونه پاسخ
{
"status":200,
"body":{
"objects":[
{
"status":0,
"name":"file_0"
},
{
"status":0,
"name":"file_2",
"persons":[
{
"tag":"person9"
"coord":[149,60,234,181],
"confidence":0.9999,
"awesomeness":0.45
},
{
"tag":"person10"
"coord":[159,70,224,171],
"confidence":0.9998,
"awesomeness":0.32
}
]
}
{
"status":0,
"name":"file_3",
"persons":[
{
"tag":"person11",
"coord":[157,60,232,111],
"aliases":["person12", "person13"]
"confidence":0.9998,
"awesomeness":0.32
}
]
},
{
"status":0,
"name":"file_4",
"persons":[
{
"tag":"undefined"
"coord":[147,50,222,121],
"confidence":0.9997,
"awesomeness":0.26
}
]
}
],
"aliases_changed":false
},
"htmlencoded":false,
"last_modified":0
}
پاسخ شامل یک پارامتر شگفت انگیز است - این "خنک بودن" شرطی یک چهره در یک عکس است، با کمک آن بهترین عکس از صورت را از دنباله انتخاب می کنیم. ما یک شبکه عصبی را برای پیش بینی احتمال لایک شدن یک عکس در شبکه های اجتماعی آموزش دادیم. هرچه کیفیت عکس بهتر باشد و چهره بیشتر خندان باشد، جذابیت بیشتری دارد.
API Vision از مفهومی به نام فضا استفاده می کند. این ابزاری برای ایجاد مجموعه های مختلف چهره است. نمونه هایی از فضاها عبارتند از لیست سیاه و سفید، لیست بازدیدکنندگان، کارمندان، مشتریان و غیره. برای هر توکن در Vision می توانید تا 10 فاصله ایجاد کنید، هر فضا می تواند تا 50 هزار PersonID داشته باشد، یعنی تا 500 هزار. در هر توکن علاوه بر این، تعداد توکن ها در هر حساب محدود نیست.
امروزه API از روشهای تشخیص و شناسایی زیر پشتیبانی میکند:
- Recognize/Set - تشخیص و تشخیص چهره ها. به طور خودکار یک PersonID به هر شخص منحصر به فرد اختصاص می دهد، PersonID و مختصات افراد پیدا شده را برمی گرداند.
- حذف - حذف یک PersonID خاص از پایگاه داده افراد.
- Truncate - کل فضا را از PersonID پاک می کند، در صورتی مفید است که از آن به عنوان فضای آزمایشی استفاده شده باشد و برای تولید نیاز به تنظیم مجدد پایگاه داده داشته باشید.
- تشخیص - تشخیص اشیاء، صحنهها، پلاکها، نشانهها، صفها و غیره. کلاس اشیاء یافت شده و مختصات آنها را برمیگرداند.
- تشخیص اسناد - انواع خاصی از اسناد فدراسیون روسیه را تشخیص می دهد (گذرنامه، SNILS، شماره شناسایی مالیاتی و غیره را متمایز می کند).
همچنین به زودی کار بر روی روشهای OCR، تعیین جنسیت، سن و احساسات و همچنین حل مشکلات تجاری، یعنی کنترل خودکار نمایش کالاها در فروشگاهها را به پایان خواهیم رساند. می توانید اسناد کامل API را در اینجا بیابید:
4. نتیجه گیری
اکنون، از طریق API عمومی، میتوانید به تشخیص چهره در عکسها و ویدیوها دسترسی داشته باشید؛ شناسایی اشیاء مختلف، پلاکها، نشانهها، اسناد و صحنهها پشتیبانی میشود. سناریوهای کاربردی - دریا. بیایید، سرویس ما را آزمایش کنید، پیچیده ترین وظایف را برای آن تنظیم کنید. 5000 تراکنش اول رایگان است. شاید "مواد گمشده" برای پروژه های شما باشد.
شما می توانید بلافاصله پس از ثبت نام و اتصال به API دسترسی داشته باشید.
منبع: www.habr.com