پیش بینی عمق در ویدئوها به کمک یادگیری ژرف

سیستم بینایی انسان توانایی قابل توجهی برای درک دنیای سه بعدی از دریچه دوبعدی خود را دارد. حتی در محیط های پیچیده با چندین شیء متحرک، انسان قادر است که تفسیری حقیقی از شکل هندسی اشیاء و میزان عمق داشته باشد. رشته دید کامپیوتری (Computer Vision) مدت هاست که چگونگی بازسازی محاسباتی هندسی یک صحنه از اطلاعات تصویر دو بعدی، مشابه سیستم بینایی انسان را مطالعه و بررسی کرده است؛ اما بازسازی قدرتمند در بسیاری از موارد دشوار است.

یکی از موارد خاص چالش برانگیز، هنگامی است که هم دوربین و هم اشیاء صحنه، آزادانه در حال حرکت هستند. در این هنگام الگوریتم های بازسازی سنتی سه بعدی که مبتنی بر مثلث بندی (Triangulation) هستند، دچار خطا می شوند. این الگوریتم ها فرض می کنند که شیء می تواند حداقل از دو منظر متفاوت به صورت هم زمان مشاهده شود. برای بررسی چنین فرضیه ای به یک آرایه چند دوربینه (Multi-camera Array) و نرم افزاری هم چون Google Jump نیاز است، و یا این که صحنه باید با حرکت دوربین ثابت بماند. در نتیجه، در اکثر روش های موجود یا اشیاء در حال حرکت را حذف می کنند ( به آن ها ارزش عمقی صفر می دهند) و یا آن ها را نادیده می گیرند (که باعث ارزش های عمقی نادرست می شوند).

تصویر سمت چپ: صحنه توسط حداقل دو منظر متفاوت به صورت همزمان مشاهده می شود.
تصویر سمت راست: هم دوربین و هم شیء در حال حرکت هستند.

در مقاله ای که در سال ۲۰۱۹ توسط لی و همکاران منتشر شده است، به کمک روشی بر پایه یادگیری ژرف (Deep Learning) با این چالش اساسی مقابله گردید؛ به این صورت که نقشه های عمق (Depth Maps) از یک ویدئوی معمولی که در آن، هم دوربین و هم اشیاء در حال حرکت هستند، تولید شد. این مدل از یادگیری از اطلاعات عناصری و جزئیاتی که در شکل هندسی بدن انسان وجود دارند، بهره می برد و از روش مثلث بندی سه بعدی مستقیم (Direct 3D Triangulation) پیروی نمی کند. اخیراً استفاده از یادگیری ماشین برای پیش بینی عمق افزایش یافته است. برای اولین بار رویکردی مبتنی بر یادگیری بر اساس حرکت هم زمان دوربین و انسان (سوژه) صورت پذیرفته است. در این مورد، تمرکز اصلی بر روی انسان هاست، زیرا آن ها هدفی جالب برای واقعیت افزوده (Augmented Reality) و جلوه های ویدئویی سه بعدی هستند.

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

ارزیابی داده های آموزشی

آموزش مدل پیش بینی عمق (Depth Prediction) به صورت نظارت شده (Supervised) صورت می گیرد و به ویدئوهایی از صحنه های واقعی که توسط دوربین های متحرک ضبط شده اند و با نقشه های عمق دارای دقت زیاد همراه می شوند، نیاز دارد. پرسش اصلی این است که از کجا چنین اطلاعاتی را دریافت کنیم. تولید داده ها به صورت مصنوعی نیاز به مدل سازی واقع گرایانه و ارائه طیف وسیعی از صحنه ها و اعمال واقعی انسان دارد که امری چالش برانگیز است. علاوه بر این، آموزش مدل بر طبق این داده ها ممکن است عمومیت دادن به صحنه های واقعی را دشوار کند. یک رویکرد دیگر این است که صحنه های واقعی را با یک حسگر RGB-D (مانند Kinect شرکت مایکروسافت) ضبط کنیم، اما حسگرهای عمق معمولاً محدود به محیط های داخلی هستند و مسائل مربوط به بازسازی سه بعدی مخصوص خود را دارند.

در عوض، می توان از یک منبع اطلاعاتی در دسترس برای یادگیری نظارت شده استفاده نمود: ویدئوهای وب سایت یوتیوب که به چالش مانکن (Mannequin Challenge) معروف است و مردم در حالت ها و وضعیت های مختلفی به صورت بی حرکت و ثابت می ایستند و یک دوربینِ در حال حرکت از آن ها فیلم می گیرد. از آنجا که تمام صحنه ثابت است (تنها دوربین در حال حرکت است)، روش های مبتنی بر مثلث بندی مانند MVS یا Multi-View-Stereo به درستی عمل می کنند و به این ترتیب، ما می توانیم نقشه های عمیق دقیقی را برای تمام صحنه از جمله افراد موجود در آن دریافت کنیم. تقریباً ۲۰۰۰ مورد از چنین فیلم هایی جمع آوری شده است که طیف وسیعی از صحنه های واقع گرایانه را با افرادی که به طور طبیعی در وضعیت ها و موقعیت های متفاوت هستند، شامل می شود.

درک عمق افراد متحرک

ویدئوهای چالش مانکن، نظارت عمق (Depth Supervision) برای دوربین متحرک و افراد ثابت را فراهم می کنند. اما هدف اصلی، ویدئوهایی با دوربین متحرک و افراد متحرک هستند. برای پر کردن این شکاف نیاز به ساخت ورودی ای مناسب برای شبکه داریم.

یک روش این است که عمق به صورت جداگانه برای هر فریم ویدئو استخراج شود (به عبارت دیگر ورودی مدل فقط یک فریم است). در حالی که چنین مدلی قبلاً روش های تک تصویر پیشرفته (State-of-the-art Single Image Methods) را برای پیش بینی عمق ارتقاء داده است، می توان نتایج را با در نظر گرفتن اطلاعات از فریم های چندتایی (Multiple Frames) بهبود بیشتری داد. به عنوان مثال، اختلاف منظر حرکت (Motion Parallax)، یعنی حرکت نسبی ظاهری اشیاء ساکن (Static) بین دو منظر متفاوت، نشانه های عمق پرقدرتی را فراهم می کند. برای بهره گیری از چنین اطلاعاتی، شار نوری دوبعدی (2D Optical Flow) بین هر یک از فریم های ورودی و فریم بعدی در ویدئو محاسبه می گردد که نشان دهنده جا به جایی پیکسل بین دو فریم است. این میدان شار (Flow Field) بستگی به عمق صحنه و موقعیت نسبی دوربین دارد. با این حال، به این دلیل که موقعیت های دوربین شناخته شده هستند، می توانیم به میدان جریان وابسته نباشیم. در نتیجه یک نقشه عمق اولیه به دست می آوریم. این عمق اولیه تنها برای صحنه های ایستا معتبر است. برای مدیریت افراد متحرک در زمان آزمایش، یک شبکه تقسیم بندی انسانی (Human-Segmentation Network) را برای مشخص کردن مناطق انسانی در نقشه عمق اولیه اعمال می کنیم. در نتیجه ورودی کامل به شبکه ها شامل تصویر RGB، ماسک انسانی (Human Mask) و نقشه عمق ماسک شده از اختلاف منظر (Parallax) خواهد بود.

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

در تصاویر زیر مثال هایی از مدل پیش بینی عمق را بر اساس ویدئوها در مقایسه با سایر روش های نوین و متأخر مشاهده می کنید.

مقایسه مدل های پیش بینی عمق در یک کلیپ ویدئویی با دوربین و اشخاص متحرک

جلوه های سه بعدی ویدئویی با استفاده از نقشه های عمق

نقشه های عمق پیش بینی شده می توانند برای گستره ای از جلوه های ویدئویی سه بعدی به کار برده شوند. یکی از این جلوه ها، محوسازی مصنوعی پس زمینه (Synthetic Defocus) است. در زیر نمونه ای را مشاهده می کنید که از یک ویدئوی معمولی به کمک نقشه عمق تولید شده است.

از سایر امکانات کاربردی نقشه های عمق می توان به تولید فیلم استریو از ویدئوی تک بعدی (Monocular) و قرار دادن اجزای مصنوعی CG در صحنه اشاره کرد. نقشه های عمق هم چنین توانایی پر کردن حفرات و مناطق تفکیک شده را با محتوای سایر فریم های ویدئو فراهم می کنند. در مثال زیر دوربین به صورت مصنوعی در چند فریم تکان داده شده و مناطق پشت سر بازیگر با پیکسل هایی از فریم های دیگر ویدئو پر شده است.