یادگیری عمیق در بینایی ماشین / Deep Learning for Computer Vision

تفاوت بینایی ماشین و پردازش تصویر9 دقیقه مطالعه

هدیه فنولوژی به شما!

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

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

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

پردازش تصویر چیست؟

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

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

یکی از ابزارهای رایج در پردازش تصویر، نرم‌افزار فوتوشاپ از کمپانی ادوبی (Adobe) می‌باشد. استفاده از این محصول برای تغییر یک عکس آن‌چنان رایج است که وقتی تصویری را با آن ویرایش می‌کنیم از نتیجه نهایی تحت عنوان «فتوشاپ شده» یاد می‌شود.

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

حال که تعریفی از پردازش تصویر داریم، بیایید ببینم چه ارتباطی با بینایی ماشین دارد و تفاوت بینایی ماشین و پردازش تصویر را بهتر درک کنیم.

بینایی ماشین چیست؟

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

بخوانید:   هوش مصنوعی بورس را متحول می‌کند

فناوری‌های بینایی ماشین / Computer Vision Technologies

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

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

مثال پردازش تصویر / image processing example

پردازش تصویر، اجرا شده روی یک عکس ثابت

دنباله‌ی تصاویر

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

بدون شک مثال‌هایی وجود دارند که در آن‌ها می‌توان حرکت را تشخیص داد. این مثال‌ها ممکن است شامل عکس‌هایی شوند که در آن‌ها motion-blur یا تاری حرکت اعمال شده است؛ یا عکس‌هایی که درست در لحظه‌ی گذر خودرو از یک چاله‌ی آب و در نتیجه‌ی آن، پاشیده شدن آب به بیرون دیده می‌شود. بنابراین واضح است که عکس‌های تک‌فریمی اطلاعات کافی برای پی‌بردن به حرکت اجسام در اختیار ما نمی‌گذارند؛ چه رسد به آن که بخواهیم سرعت حرکت را از روی آن‌ها تشخیص دهیم. بدون این جزئیات، عمق درک ما به طرز چشمگیری کاهش می‌یابد.

دنباله‌ی تصاویر / Sequences of Images

پردازش دنباله‌ای از عکس ها می‌تواند تعیین کند که خودرو در حال حرکت کردن است.

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

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

آموزش پایتون

یادگیری عمیق و تصاویر دیجیتال – تفاوت بینایی ماشین و پردازش تصویر

با ظهور یادگیری عمیق طی سال‌های اخیر، یکی از حوزه‌هایی که این فناوری در آن به صورت گسترده مورد استفاده قرار گرفته است، تصویرپردازی دیجیتال (Digital imagery) است. دو چهارچوب (Framework) به خوبی شناخته‌شده‌ی یادگیری عمیق، «شبکه‌ی عصبی کانولوشن» (شبکه عصبی کانولوشن چیست؟) و «شبکه‌ی عصبی بازگشتی» (Recurrent Neural Network – RNN) هستند. با این‌که صحبت عمیق‌تر در این حوزه‌ها خارج از هدف این مقاله است، چندان نامرتبط نیست اگر اشاره کنیم CNN در گستره‌ای از کارهای تصویربردای استفاده می‌شود. این کارها شامل تشخیص چهره و سامانه‌های تشخیصی، آنالیز تصاویر پزشکی، تشخیص تصویر، و تحلیل ویدیوهای تمام متحرک می‌شوند. در چنین سامانه‌ای AlexNet وجود دارد، که CNNی است که توجه‌ها را هنگامی به خود جلب کرد که برنده جایزه ۲۰۱۲ ImageNet Large Scale Visual Recognition Challenge شد.

بخوانید:   ۳ روش بهبود تجربه‌ی مشتریان با هوش مصنوعی

یادگیری عمیق در پردازش تصویر

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

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

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

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

تشخیص لبه‌ای / Edge Detection on a license plate

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

یادگیری عمیق در بینایی ماشین

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

دومین چهارچوب که قبلا برای یادگیری عمیق ذکر شد، RNN است. CNN در پردازش تصویر کاربرد دارد، درحالی‌که RNN برای روشن‌سازی ارتباط زمانی جهت تعیین محتوای تصاویر کاربرد دارد. یک RNN شامل یک مکانیزم فیدبک حلقه‌ای است که اساسا نقش یک حافظه داخلی را ایفا می‌کند. این مکانزیم که «حافظه‌ی بلندِ کوتاه مدت» (LSTM) نام‌گذاری شده است، قادر است انواع متنوع و متعددی از ارتباطات را کشف کند؛ از جمله آنانی که تنها هنگامی واضح می‌شوند که محتوا را در نظر داشته باشیم. این سامانه‌ها به طور مداوم در انجام وظایفی مانند تکمیل خودکار متن به کار می‌روند؛ هنگامی که پیش‌بینی یک کلمه به آنچه که پیش از این در جمله رخ داده است بستگی دارد.

بخوانید:   PCA چیست؟ | کاهش بعد در پایتون | پروژه پردازش تصویر با پایتون + کد

عنوان‌گذاری تصاویر / Image Captioning

نمونه‌ای از عنوان‌گذاری تصاویر

برای مواردی مانند یک تک‌عکس، یکی از کاربرد‌هایی که RNN در آن اعمال می‌شود «عنوان‌گذاری تصاویر» نام دارد. یعنی به صورت خودکار با توجه به آن‌چه در عکس وجود دارد، به عکس عنوانی داده شود؛ مثلا «وسیله نقلیه، یک خودرو سواری است»، یا «در راننده باز است». بدیهی است که این سطح از ادراک فواید بسیاری در بینایی ماشین داد. علاوه بر این، قدرت LSTM را می‌توان برای استفاده در مجموعه‌ای از تصاویر به‌کار گرفت.

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

در واقعیت، سامانه‌های هیبریدی که از هردو چهارچوب RNN و CNN تشکیل شده‌اند، در وظایف پیچیده‌تری به‌کار برده می‌شوند. یکی از این سامانه‌های هیبریدی، DanQ نام دارد که از DeepSEA به عنوان بنیان سازنده خود استفاده کرده است. البته DeepSEA یک سامانه CNN تنهاست و  از RNN استفاده نمی‌کند. آزمایشات نشان می‌دهند که سامانه‌های هیبریدی از سامانه‌های دیگر بسیار بهتر عمل می‌کند؛ چراکه RNN تنها داده‌های انتزاعی‌ای را مورد توجه قرار می‌دهد که قبلا توسط CNN جداسازی شده‌اند. با این حال، این کار بستگی به نحوه پیاده‌سازی الگوریتم‌ها دارد و از محدوده‌ی بحث این مقاله جدا است.

تفاوت بینایی ماشین و پردازش تصویر: نتیجه گیری

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

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

منبع: EXXACTCORP

آرمان رضایی
آرمان رضایی
دانشجوی مهندسی برق دانشگاه امیرکبیر
عضویت
اطلاع از
4 دیدگاه‌ها
قدیمی‌ترین‌ها
جدیدترین‌ها
بازخورد در متن
دیدن همه دیدگاه‌ها

سایت واقعا مفید است

ممنون از توجه شما

بسیار مفید و آموزنده بود. با سپاس از مهندس رضایی

عالی بود مهندس متشکرم

فنولوژی را در شبکه‌های اجتماعی دنبال کنید

©۲۰۲۰ – کلیه حقوق مادی و معنوی متعلق به فنولوژی است.