زمان تخمینی مطالعه: 11 دقیقه
Optical Flow یا شار نوری حرکت اجسام بین فریمهای متوالی گرفته شده توسط دوربین را کمیت میبخشد. الگوریتمهای Optical Flow تلاش میکنند تا حرکت ظاهری الگوهای روشنایی را در تصویر ثبت کنند. این مفهوم یک زیرشاخه مهم از بینایی کامپیوتر است که ماشینها را قادر میسازد تا دینامیک صحنه و حرکت را درک کنند. مفهوم شار نوری به کارهای اولیه جیمز گیبسون در دهه 1950 برمیگردد. گیبسون این مفهوم را در چارچوب ادراک بصری معرفی کرد. محققان مطالعه و استفاده از Optical Flow را تا دهه 1980، زمانی که ابزارهای محاسباتی معرفی شدند، شروع نکردند. یک نقطه عطف مهم توسعه روش لوکاس-کاناد در سال 1981 بود. این مفهوم یک الگوریتم اساسی برای تخمین شار نوری در یک پنجره محلی از یک تصویر ارائه کرد. الگوریتم Horn-Schunck به زودی در پی آن معرفی شد و یک رویکرد جهانی برای تخمین شار نوری در کل تصویر معرفی کرد.
تخمین Optical Flow بر این فرض تکیه میکند که روشنایی یک نقطه در بازههای زمانی کوتاه ثابت است. از نظر ریاضی، این متد از طریق معادله شار نوری Ixvx+Iyvy+It=0 بیان میشود.
- x و Iy گرادیانهای فضایی شدت پیکسل را به ترتیب در جهتهای x و y منعکس میکنند.
- lt گرادیان زمانی است
- vx و vy به ترتیب سرعت جریان در جهت x و y هستند.
پیشرفتهای اخیر شامل استفاده از مدلهای یادگیری عمیق مانند FlowNet، FlowNet 2.0 و LiteFlowNet است. این مدلها تخمین شار نوری را با بهبود قابلتوجهی دقت و کارایی محاسباتی تغییر دادند. این تا حد زیادی به دلیل ادغام شبکههای عصبی کانولوشن (CNN) و در دسترس بودن مجموعه دادههای بزرگ است. حتی در تنظیمات با انسداد، تکنیکهای Optical Flow امروزه میتوانند الگوهای پیچیده حرکت ظاهری را با دقت پیشبینی کنند.
تکنیکها و الگوریتمهای Optical Flow
انواع مختلف الگوریتمهای Optical Flow، که هر کدام روش منحصر به فردی برای محاسبه الگوی حرکت دارند، منجر به تکامل رویکردهای محاسباتی شدند. الگوریتمهای سنتی مانند روشهای Lucas-Kanade و Horn-Schunck پایههای این حوزه از بینایی ماشین را ایجاد کردند.
- روش Oprical Flow لوکاس-کاناد: این روش به استفاده از کیسهایی با مجموعه ویژگیهای پراکنده کمک میکند. این متد با این فرض عمل میکند که جریان به صورت محلی صاف است و از یک تقریب سری تیلور برای گرادیانهای تصویر استفاده میکند. بنابراین میتوانید معادله شار نوری را حل کنید، که معمولاً شامل دو متغیر ناشناخته برای هر نقطه در مجموعه ویژگی است. این روش برای ردیابی گوشهها و بافتهای کاملاً مشخص اغلب کارآمد است، همانطور که توسط تشخیص گوشه Shi-Tomasi یا آشکارساز گوشه هریس شناسایی میشود.
- الگوریتم هورن-شانک: این الگوریتم یک تکنیک شار نوری متراکم است. با فرض صاف بودن Optical Flow در کل تصویر، رویکردی جهانی به خود در نظر میگیرد. این روش یک تابع خطای کلی را به حداقل میرساند و میتواند جریان را برای هر پیکسل استنتاج کند. این الگوریتم ساختارهای دقیقتری از حرکت را به قیمت پیچیدگی محاسباتی بالاتر ارائه میدهد.
با این حال، الگوریتمهای جدید یادگیری عمیق، عصر جدیدی از الگوریتمهای Optical Flow را آغاز کردهاند. مدلهایی مانند FlowNet، LiteFlowNet و PWC-Net از CNN برای یادگیری از مجموعه دادههای گسترده تصاویر استفاده میکنند. این کار امکان پیشبینی را با دقت و استحکام بیشتری به خصوص در سناریوهای چالش برانگیز فراهم میکند. به عنوان مثال، در صحنههایی با انسداد، نورهای متفاوت و بافتهای پویا پیچیده.
برای نشان دادن تفاوت بین این الگوریتمها، جدول مقایسهای زیر را در نظر بگیرید که عملکرد آنها را از نظر دقت، سرعت و الزامات محاسباتی نشان میدهد:
الگوریتم | دقت(Accuracy) | سرعت(فریم بر ثانیهFPS) | نیاز محاسباتی |
Lucas-Kanade | متوسط | بالا | پایین |
Horn-Schunck | بالا | پایین | بالا |
FlowNet | بالا | متوسط | متوسط |
LiteFlowNet | خیلی بالا | متوسط | متوسط |
PWC-Net | خیلی بالا | بالا | بالا |
تکنیکهای سنتی مانند لوکاس-کاناد و هورن-شانک اساسی هستند و نباید از آنها کاسته شود. با این حال، آنها معمولا نمیتوانند با دقت و استحکام رویکردهای یادگیری عمیق رقابت کنند. روشهای یادگیری عمیق، اگرچه قدرتمند هستند، اما اغلب به منابع محاسباتی قابل توجهی نیاز دارند. این بدان معنی است که آنها ممکن است برای برنامههای بلادرنگ مناسب نباشند.
شار نوری در عمل و موارد استفاده و کاربردها
امروزه، کاربردهای فناوری Optical Flow را در صنایع مختلف خواهید یافت. این تکنیک برای فناوریهای بینایی رایانهای هوشمند که میتوانند اطلاعات بصری پویا را به سرعت تفسیر کنند، اهمیت فزایندهای پیدا میکند.
- خودرو: شار نوری به عنوان یک فناوری پایهای برای سیستمهای پیشرفته کمک راننده (ADAS) عمل میکند. برای مثال، Autopilot تسلا از این الگوریتمها در اجتماع با حسگرها و دوربینهای خود برای شناسایی و ردیابی اشیا استفاده میکند. همچنین به تخمین سرعت اجسام متحرک نسبت به ماشین کمک میکند. این قابلیتها برای جلوگیری از برخورد و ردیابی خط بسیار مهم هستند.
- نظارت و امنیت: شار نوری با تجزیه و تحلیل جریان افراد به نظارت بر جمعیت کمک میکند تا به تشخیص الگوها یا ناهنجاریها کمک کند. برای مثال، وقتی به کاربردهای رایانه در فرودگاهها یا مراکز خرید نگاه میکنید، با استفاده از آن میتوان حرکات غیرمعمول را علامتگذاری کند و به بخش امنیتی هشدار دهد. این موضوع میتواند مفهومی ساده (اما دیدن آن سخت) باشد مانند حرکت فردی در مقابل جمعیت. در رویدادهایی مانند جام جهانی فوتبال اغلب از این تکنولوژی برای کمک به نظارت بر پویایی جمعیت برای اهداف ایمنی استفاده میکنند.
- تجزیه و تحلیل ورزشی: با تجزیه و تحلیل جریان بازیکنان در سراسر زمین، تیمها میتوانند تمرینات و استراتژیها را برای بهبود عملکرد ورزشی بهینه کنند. Catapult Sports، پیشرو در تجزیه و تحلیل ورزشکاران، از Optical Flow برای ردیابی حرکات بازیکن استفاده میکند. این امر به مربیان دادههایی را برای افزایش عملکرد و کاهش خطرات آسیب ارائه میدهد.
- رباتیک: شرکتهای فناوری پهپاد، مانند Da-Jiang Innovations (DJI)، از حسگرهای بصری برای تثبیت پرواز و اجتناب از موانع استفاده میکنند. همچنین الگوهای سطح را تجزیه و تحلیل میکند و به هواپیماهای بدون سرنشین کمک میکند تا موقعیت خود را با محاسبه حرکت خود نسبت به زمین حفظ کنند. این مفهوم به اطمینان از ناوبری ایمن، حتی بدون سیستمهای GPS کمک میکند.
- تولید فیلم و ویدئو: فیلمسازان از Optical Flow برای ایجاد جلوههای بصری و در ویرایش پس از تولید استفاده میکنند. تیم جلوههای بصری فیلم «آواتار» از این تکنیکها برای ردیابی حرکت و بازسازی صحنه استفاده کردند. این امکان ادغام یکپارچه تصاویر تولید شده توسط رایانه (CGI) با فیلمهای زنده را فراهم میکند. این مفهوم میتواند بازآفرینی صحنههای پویا پیچیده را برای ارائه تصاویر واقعی و همه جانبه تسهیل کند.
پیاده سازی عملی Optical Flow
راه های مختلفی برای پیاده سازی شار نوری در برنامهها وجود دارد که از نرم افزار گرفته تا یکپارچهسازی سخت افزاری را شامل میشود. به عنوان مثال، ما به یک فرآیند یکپارچه سازی معمولی با استفاده از الگوریتم شار نوری محبوب OpenCV نگاهی خواهیم کرد.OpenCV یک کتابخانه گسترده است که طیف وسیعی از قابلیتهای بینایی کامپیوتر بلادرنگ را ارائه میکند. این خود شامل ابزارهایی برای تجزیه و تحلیل تصویر و ویدئو، تشخیص ویژگی، و تشخیص اشیاء است. OpenCV که به دلیل تطبیقپذیری و عملکرد خود شناخته شده است، به طور گسترده در دانشگاه و صنعت برای نمونه سازی و استقرار سریع استفاده میشود.
– استفاده از روش Lucas-Kanade در OpenCV
- تنظیمات محیطی: OpenCV را با استفاده از یک مدیر پکیج مانند pip برای پایتون با دستور زیر نصب کنید.
pip install opencv-python
- فرمها را بخوان: با استفاده از OpenCV از فریمهای ویدیویی عکس بگیرید
VideoCapture
- پیش پردازش فریمها: برای پردازش، فریمها را به مقیاس خاکستری تبدیل کنید، زیرا جریان نوری به تصاویر تک کاناله نیاز دارد.
cvtColor
- انتخاب ویژگی: از goodFeaturesToTrack برای انتخاب نقاط برای ردیابی یا عبور مجموعهای از نقاط از پیش تعریف شده استفاده کنید.
goodFeaturesToTrack
- شار نوری Lucas-Kanade: برای تخمین شار نوری بین فریمها، calcOpticalFlowPyrLK را فراخوانی کنید.
calcOpticalFlowPyrLK
- Visualize Flow: بردارهای جریان را روی تصاویر بکشید تا جهت و بزرگی جریان را تأیید کنید.
- تکرار: این فرآیند را برای جفت فریمهای بعدی تکرار کنید تا حرکت را در طول زمان دنبال کنید.
– ادغام شار نوری در پروژههای سخت افزاری
یک مثال از ادغام با سخت افزار میتواند شامل هواپیماهای بدون سرنشین برای ردیابی حرکت به صورت بلادرنگ باشد:
- انتخاب سنسور: یک حسگر شار نوری سازگار با پلتفرم سخت افزاری خود را انتخاب کنید، مانند PMW3901 برای رزبری پای.
- قابلیت اتصال: سنسور را به پینهای GPIO پلتفرم سخت افزاری خود وصل کنید یا در صورت لزوم از ماژول رابط استفاده کنید.
- نصب درایور: درایورها و کتابخانههای لازم را برای ارتباط با سنسور نصب کنید.
- اکتساب داده: کدی بنویسید تا دادههای جابجایی را از حسگر بخواند، که نشان دهنده Optical Flow است.
- یکپارچهسازی برنامه: دادههای حسگر را به منطق برنامه خود وارد کنید تا از شار نوری برای کارهایی مانند ناوبری یا اجتناب از موانع استفاده کنید.
بهینهسازی عملکرد Optical Flow
در ادامه مطالب روشهای بهینهسازی عملکرد شار نوری آورده شده است:
- کیفیت ویژگیها: اطمینان حاصل کنید که نقاط انتخاب شده به خوبی توزیع شده و در طول زمان قابل ردیابی هستند.
- تنظیم پارامتر: پارامترهای تابع شار نوری را برای تعادل بین سرعت و دقت تنظیم کنید.
- سطوح هرم: از هرمهای تصویری برای ردیابی نقاط در مقیاسهای مختلف برای محاسبه تغییرات در حرکت و مقیاس استفاده کنید.
- بررسی خطا: بررسیهای خطا را برای فیلتر کردن بردارهای جریان غیرقابل اطمینان اجرا کنید.
چالشها و محدودیتهای Optical Flow
انسداد(Occlusions)، تغییرات روشنایی، و مناطق کم بافت هنوز هم یک چالش مهم برای دقت سیستمهای شار نوری است. مدلهای پیشبینیکننده که حرکت نواحی مسدود شده را بر اساس عناصر مرئی اطراف تخمین میزنند، میتوانند نتایج را بهبود بخشند. الگوریتمهای تطبیقی که میتوانند تغییرات نور را عادی کنند نیز ممکن است به جبران تغییرات نور کمک کنند. Optical Flow برای مناطق با بافت پراکنده میتواند از یکپارچه سازی زمینه فضایی یا نشانههای سطح بالاتر برای استنباط حرکت بهرهمند شود.
یکی دیگر از چالشهایی که معمولاً با آن روبهرو میشود، «مسئله ناشناخته معادله دو» است. این امر به دلیل داشتن متغیرهای بیشتر از معادلات به وجود میآید که باعث میشود محاسبات نامعین شوند. با فرض ثبات جریان در پنجرههای کوچک، میتوانید این مشکل را با اجازه دادن به تجمع اطلاعات برای حل مجهولات کاهش دهید. سایر روشهای پیشرفته ممکن است برآوردها را با استفاده از تکنیکهای منظمسازی تکراری اصلاح کنند.
مدلها و الگوریتمهای فعلی ممکن است در محیطهای پیچیده با حرکات سریع، مقیاسهای شیء متنوع و تغییرات عمق سهبعدی با مشکل مواجه شوند. یک راه حل، توسعه مدلهای چند مقیاسی است که در وضوحهای مختلف عمل می کنند. مورد دیگر ادغام اطلاعات عمق از دید استریو یا LiDAR است، برای مثال، برای بهبود تفسیر صحنه سه بعدی.