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

هوش مصنوعی

  • کاهش بُعد چیست و چرا  مهندسان یادگیری ماشین باید به آن توجه کنند؟ 
  • سوگیری الگوریتمی چیست و چه راهکاری برای حل آن وجود دارد؟

فناوری شبکه

  • لایه‌بندی فضای ذخیره‌سازی چیست  و چه مزایایی در اختیار ما قرار می‌دهد؟ 
  • ماژول SFP چیست و چه کاربردی در دنیای شبکه دارد؟  
  • کارشناسان شبکه چگونه باید بر شبکه‌های سازمانی نظارت کنند؟

عصر شبکه

  • سفری جالب به دنیای اسرارآمیز آزمایشگاه طراحی تراشه اپل 
  • چرا مالک 7 هزار بیت‌کوین محبوس در یک USB قفل‌شده علاقه‌ای به گشودن آن ندارد؟ 

کارگاه

  • با رعایت اصول سالید، برنامه‌نویسی شی‌ءگرا در پایتون را دقیق‌تر انجام دهید 
  • کاتلین چه راهکاری برای روند اجرای کدها در اختیار ما قرار می‌دهد؟ 

پرونده ویژه

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

بینایی کامپیوتر؛ چشمان هوشمندی که جهان را می‌بینند

بینایی کامپیوتر (Computer Vision) یک حوزه مطالعاتی در علوم کامپیوتر است که به بررسی و تفسیر تصاویر و ویدئوها توسط سیستم‌های کامپیوتری می‌پردازد. این حوزه از زمان ظهور اولین روش‌های تشخیص الگو و تحلیل تصویر در دهه 1960 تاکنون با توسعه الگوریتم‌ها و روش‌های نوین، پیشرفت‌های چشم‌گیری داشته است. برای درک بهتر موضوع اجازه دهید نگاهی کوتاه به برخی از مهم‌ترین روندهای حاکم در این زمینه داشته باشیم. در دهه 60 میلادی تحقیقات اولیه در حوزه بینایی کامپیوتر آغاز شد. در این دوره، تمرکز بر تشخیص الگو و تحلیل تصویر بود و الگوریتم‌هایی برای استخراج ویژگی‌ها از تصاویر توسعه پیدا کردند. در دهه 70 میلادی، مفهوم فیلترهای تبدیل ویژگی (Feature Transform Filters) معرفی شدند. فیلترهایی مانند فیلتر گابور (Gabor filter) و فیلتر لاپلاسین (Laplacian filter) برای استخراج ویژگی‌ها از تصاویر مورد استفاده قرار گرفتند. همچنین در این دهه، روش‌هایی برای تشخیص و تمییز دادن اشیاء از یک‌دیگر توسعه پیدا کردند. در دهه 80 میلادی، الگوریتم‌هایی برای تشخیص اشیاء در تصاویر با استفاده از روش‌های شناخت الگو و مدل‌سازی آماری ابداع شدند و برای اولین بار تکنیک‌هایی برای تشخیص چهره و اثر انگشت معرفی شدند. 

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

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

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

با توجه به این‌که هدف نهایی بینایی کامپیوتر ساخت ابزارهای قدرتمندی است که توانایی تحلیل تصاویر سه‌بعدی، رنگ‌ها و عمق تصاویر را دارند، دانستن این موضوع که چگونه مغز موجودات بینایی را تفسیر می‌کند و این‌که چند درصد نورون‌های کل مغز درگیر این پروسه هستند اهمیت زیادی دارد. ادراک بینایی زمانی آغاز می‌شوند که نور بر روی شبکیه چشم (Retina) متمرکز می‌شود و در آن‌جا توسط سلول‌های گیرنده نوری جذب می‌شود. این سلول‌ها نور را به سیگنال‌های الکتروشیمیایی تبدیل می‌کنند. در مغز دو نوع سلول مخصوص بینایی وجود دارد، سلول‌های میله‌ای و سلول‌های مخروطی. سلول‌های میله‌ای مسئول دید در شب هستند و به نور کم پاسخ خیلی خوبی می‌دهند. این سلول‌ها عمدتا در مناطق پیرامونی از شبکیه چشم (حول یا اطراف شبکیه) یافت می‌شوند. سلول‌های مخروطی در یک منطقه مرکزی شبکیه به‌نام گودال متمرکز شده‌اند که فرورفتگی (Fovea) نام دارد و مسئول وظایف سنگین و دقیقی مثل خواندن هستند. سلول‌های Cone بسته به این‌که به نور آبی، قرمز، سبز چگونه واکنش می‌دهند به سه دسته تقسیم می‌شوند و در مجموع این سه نوع از Cone ما را قادر به درک رنگ‌ها می‌کنند. سیگنال‌ها از سلول‌های گیرنده نوری (Photoreceptor Cells) از طریق شبکه‌ای از Interneuronsها در لایه دوم شبکیه چشم به سلول‌های Ganglion در لایه سوم منتقل می‌شوند. عصب (Nerve) بینایی در درجه اول اطلاعات را از طریق تالاموس به غشا مغزی (Cerebral Cortex) ارسال می‌کند. پس از ارسال اطلاعات در قسمت

Cerebral Cortex ادراک بصری انسان به وقوع می‌پیوندد، اما در عین حال این عصب شامل اطلاعات مورد نیاز برای مشاهده است که به دو قسمت از ساقه مغز (Brainstem) این اطلاعات را منتقل می‌کند. اولین قسمت از Brainstem گروهی از سلول‌های هسته هستند که Pretectum نام دارند که کنترل غیرارادی اندازه مردمک در پاسخ به شدت نور را بر عهده دارند. اطلاعات مربوط به اهداف متحرک و اطلاعات ساکن اسکن‌شده توسط چشم نیز به قسمت دوم در Brainstem منتقل می‌شود. یک هسته که Superior Colliculus  شناخته می‌شود مسئول حرکات چشم در پرش‌های کوتاه هست. بخش دیگر از این دو قسمت Saccades هست که به مغز اجازه درک یک اسکن هموار را با کمک چسباندن یک سری از تصاویر ثابت می‌دهد.

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