یکی از قویترین و متقاعدکنندهترین انواع هوش مصنوعی، کامپیوتر ویژن (Computer Vision) یا بینایی کامپیوتر است که تقریباً همه ما بدون اینکه بدانیم، آن را به روشهای مختلف تجربه و استفاده کردهایم. در اینجا نگاهی به این موضوع خواهیم داشت که بینایی کامپیوتر چیست، چگونه کار می کند، و چرا تا این اندازه قوی و عالی است. با ما در این مقاله از وبسایت هوش مصنوعی آویر همراه باشید.
بینایی کامپیوتر چیست؟
کامپیوتر ویژن یا بینایی کامپیوتر رشتهای از علوم کامپیوتر است که بر تکرار بخشهایی از پیچیدگی سیستم بینایی انسان تمرکز میکند و کامپیوترها را قادر میسازد تا اشیاء را در تصاویر و فیلمها به همان روشی که انسان اشیا را شناسایی میکند، شناسایی و پردازش کنند. تا همین اواخر، کامپیوتر ویژن فقط در ظرفیت محدود کار میکرد.
اما به لطف پیشرفتهای هوش مصنوعی و نوآوریها در یادگیری عمیق و شبکههای عصبی، این رشته در سالهای اخیر توانسته جهشهای بزرگی داشته باشد و در برخی از وظایف مربوط به شناسایی و برچسبگذاری اشیا از انسان پیشی بگیرد.
یکی از عوامل محرک رشد کامپیوتر ویژن، میزان دادهای است که امروزه تولید میکنیم و سپس برای آموزش و بهبود بینایی کامپیوتر از آن استفاده میکنیم.
تشخیص و طبقه بندی چند شیء YOLO
به کمک حجم عظیمی از داده های بصری (بیش از 3 میلیارد تصویر هر روز به صورت آنلاین در فضای وب به اشتراک گذاشته میشود)، قدرت محاسباتی مورد نیاز برای تجزیه و تحلیل دادهها اکنون در دسترس است. همانطور که میدان دید کامپیوتر با سخت افزار و الگوریتمهای جدید رشد کرده است، نرخهای دقت برای شناسایی و تشخیص اشیا نیز افزایش یافته است. در کمتر از یک دهه، سیستمهای امروزی از 50 درصد به 99 درصد دقت رسیدهاند که در واکنش سریع به ورودیهای بصری، دقیقتر از انسانها هستند.
آزمایشات اولیه در کامپیوتر ویژن در دهه 1950 آغاز شد و برای اولین بار در دهه 1970 به صورت تجاری برای تمایز بین متن تایپ شده و دست نویس مورد استفاده قرار گرفت، امروزه کاربردهای کامپیوتر ویژن به طور تصاعدی رشد کرده است.
“انتظار می رود تا سال 2022، بازار کامپیوتر ویژن و سخت افزار به 48.6 میلیارد دلار برسد.”
نحوه کار بینایی کامپیوتر چگونه است؟
یکی از سوالات مهمی که هم در علوم اعصاب و هم در یادگیری ماشین وجود دارد و تاکنون جواب قاطع و درستی به آن داده نشده، این است که مغز انسان دقیقاً چگونه کار میکند و چطور میتوانیم آن را به الگوریتمهای خودمان نزدیک کنیم؟ واقعیت این است که تئوریهای کارآمد و جامع بسیار کمی از محاسبات مغز وجود دارد. بنابراین علیرغم این واقعیت که قرار است شبکههای عصبی «روش عملکرد مغز انسان را تقلید کنند»، هیچ کس کاملاً مطمئن نیست که آیا واقعاً این موضوع درست است یا خیر.
همین پارادوکس در مورد بینایی کامپیوتر نیز صادق است؛ از آنجایی که ما در مورد چگونگی پردازش تصاویر توسط مغز و چشم تصمیمی نداریم، دشوار است بگوییم که الگوریتمهای مورد استفاده در تولید چقدر به فرآیندهای ذهنی درونی ما نزدیک میشوند.
کامپیوتر ویژن تا حدی زیادی به معنای تشخیص الگو است. بنابراین، یکی از راههای آموزش کامپیوتر برای درک دادههای بصری این است که به آن هزاران و یا میلیونها تصویر داده شود که در صورت امکان برچسبگذاری شدهاند؛ سپس آنها را در معرض تکنیکها یا الگوریتمهای مختلف نرمافزاری قرار دهیم که به کامپیوتر اجازه میدهد تا همه الگوهای مربوط به آن برچسبها را شکار کند و تشخیص دهد.
بنابراین، برای مثال، اگر به یک کامپیوتر میلیونها تصویر از گربههای مختلف را بدهید، همه آنها را تحت الگوریتمهایی قرار میدهد که رنگهای موجود در عکس، اشکال، فواصل بین اشکال و مرز بین آنها را تجزیه و تحلیل میکنند، به طوری که نمایهای از معنای “گربه” را مشخص میکند. وقتی کار تجزیه و تحلیل تمام شد، کامپیوتر (در تئوری) میتواند از تجربیات خود استفاده کند و در صورتی که تصاویر بدون برچسب دیگری به آن داده شود، تصاویر مربوط به گربه را پیدا خواهد کرد.
در زیر یک تصویر ساده از بافر تصویر خاکستری است که تصویری از آبراهام لینکلن را ذخیره میکند. روشنایی هر پیکسل با یک عدد 8 بیتی نشان داده میشود که محدوده آن از 0 (سیاه) تا 255 (سفید) است:
نمودار داده پیکسل. در سمت چپ، تصویر ما از لینکلن. در وسط، پیکسلها با اعداد 0 تا 255 برچسبگذاری شدهاند که نشان دهنده روشنایی آنها است. و در سمت راست، این اعداد به تنهایی.
{157, 153, 174, 168, 150, 152, 129, 151, 172, 161, 155, 156,
155, 182, 163, 74, 75, 62, 33, 17, 110, 210, 180, 154,
180, 180, 50, 14, 34, 6, 10, 33, 48, 106, 159, 181,
206, 109, 5, 124, 131, 111, 120, 204, 166, 15, 56, 180,
194, 68, 137, 251, 237, 239, 239, 228, 227, 87, 71, 201,
172, 105, 207, 233, 233, 214, 220, 239, 228, 98, 74, 206,
188, 88, 179, 209, 185, 215, 211, 158, 139, 75, 20, 169,
189, 97, 165, 84, 10, 168, 134, 11, 31, 62, 22, 148,
199, 168, 191, 193, 158, 227, 178, 143, 182, 106, 36, 190,
205, 174, 155, 252, 236, 231, 149, 178, 228, 43, 95, 234,
190, 216, 116, 149, 236, 187, 86, 150, 79, 38, 218, 241,
190, 224, 147, 108, 227, 210, 127, 102, 36, 101, 255, 224,
190, 214, 173, 66, 103, 143, 96, 50, 2, 109, 249, 215,
187, 196, 235, 75, 1, 81, 47, 0, 6, 217, 255, 211,
183, 202, 237, 145, 0, 0, 12, 108, 200, 138, 243, 236,
195, 206, 123, 207, 177, 121, 123, 200, 175, 13, 96, 218};
این روش ذخیره سازی داده های تصویر ممکن است بر خلاف انتظارات شما باشد، زیرا دادهها در زمان نمایش مطمئناً دو بعدی به نظر میرسند. با این حال، این مورد وجود دارد، زیرا حافظه کامپیوتر به سادگی از یک لیست خطی در حال افزایش از فضاهای آدرس تشکیل شده است.
نحوه ذخیره پیکسلها در حافظه
بیایید دوباره به تصویر اول برگردیم! تصور کنید یک عکس رنگی به تصویر اول اضافه کنیم. اکنون همه چیز پیچیدهتر میشود. کامپیوترها معمولا رنگ را به صورت مجموعهای از 3 مقدار – قرمز، سبز و آبی (RGB) – و در همان مقیاس 0-255 می خوانند. در حال حاضر، هر پیکسل در واقع دارای 3 مقدار برای کامپیوتر علاوه بر موقعیت خود است. اگر بخواهیم آبراهان لینکلن را رنگآمیزی کنیم، به مقادیر 12×16×3 یا 576 عدد منجر میشود.
این مقدار حافظه زیادی است که برای یک تصویر لازم است و همچنین پیکسلهای زیادی برای تکرار الگوریتم. اما برای آموزش یک مدل با دقت بالا، بهخصوص زمانی که در مورد یادگیری عمیق صحبت میکنیم، معمولاً به دهها هزار تصویر نیاز دارید، و هر چه تعداد تصاویر بیشتر باشد، بهتر است.
سیر تکاملی کامپیوتر ویژن
قبل از پدید آمدن یادگیری عمیق، وظایفی که بینایی کامپیوتر میتوانست انجام دهد بسیار محدود بود و نیاز به کدنویسی دستی و تلاش زیاد دولوپرها و اپراتورهای انسانی داشت. به عنوان مثال، اگر میخواستید تشخیص چهره را انجام دهید، باید مراحل زیر را انجام میدادید:
- ایجاد یک پایگاه داده: شما باید از تمام موضوعاتی که میخواستید ردیابی کنید، در یک فرمت خاص، تصاویر جداگانه میگرفتید.
- حاشیهنویسی تصاویر: سپس برای هر تصویر جداگانه، باید چندین نقطه داده کلیدی را وارد میکردید، مانند فاصله بین چشمها، عرض پل بینی، فاصله بین لب بالایی و بینی، و دهها اندازهگیری دیگر که ویژگی های منحصربهفرد هر کسی را مشخص میکند.
- گرفتن تصاویر جدید: در مرحله بعد، باید تصاویر جدیدی، چه از عکسها و چه از محتوای ویدیویی، را ثبت میکردید. و سپس باید دوباره مراحل اندازهگیری را انجام میدادید و نقاط کلیدی را روی تصویر مشخص میکردید. همچنین باید زاویه گرفته شده را در نظر میگرفتید.
پس از این همه کار دستی، برنامه در نهایت میتوانست اندازهگیریهای تصویر جدید را با اندازهگیریهای ذخیره شده در پایگاه داده خود مقایسه کند و به شما بگوید که آیا با هر یک از پروفایلهایی که ردیابی میکند مطابقت دارد یا خیر. در واقع، اتوماسیون بسیار کمی وجود داشت و بیشتر کار به صورت دستی انجام میشد. البته که حاشیه خطا نیز بسیار زیاد بود.
یادگیری ماشین رویکرد متفاوتی را برای حل مشکلات بینایی کامپیوتر ارائه کرد. با یادگیری ماشین، دولوپرها دیگر نیازی به کدنویسی دستی تک تک قوانین در برنامههای بینایی خود ندارند. در عوض آنها “ویژگیها” یا همان فیچرها (features) را برنامهریزی کردند، برنامه های کوچکتری که می توانستند الگوهای خاصی را در تصاویر تشخیص دهند. سپس از یک الگوریتم یادگیری آماری مانند رگرسیون خطی، رگرسیون لجستیک، درخت تصمیم یا ماشینهای بردار پشتیبان (SVM) برای شناسایی الگوها و طبقهبندی تصاویر و شناسایی اشیاء در آنها استفاده کردند.
یادگیری ماشین به حل بسیاری از مشکلاتی کمک کرد که از نظر تاریخی برای ابزارها و رویکردهای توسعه نرم افزار کلاسیک چالشبرانگیز بودند. به عنوان مثال، سالها پیش، مهندسان یادگیری ماشین توانستند نرمافزاری بسازند که بتواند احتمال بقای بیماران سرطان سینه را بهتر از متخصصان انسانی پیشبینی کند. با این حال، ساخت ویژگیهای نرمافزار به تلاش دهها مهندس و متخصص سرطان سینه نیاز داشت و توسعه آن زمان زیادی را صرف کرد.
یادگیری عمیق رویکردی اساساً متفاوت برای انجام یادگیری ماشین ارائه کرد. یادگیری عمیق متکی به شبکههای عصبی است، یعنی یک تابع همه منظوره که میتواند هر مشکلی را که از طریق مثال قابل نمایش است را حل کند. وقتی یک شبکه عصبی با نمونههای برچسبگذاریشده زیادی از یک نوع خاص از دادهها ارائه میکنید، این شبکه میتواند الگوهای مشترک بین آن نمونهها را استخراج و آن را به یک معادله ریاضی تبدیل کند که به طبقهبندی قطعات اطلاعات آینده کمک میکند.
به عنوان مثال، ایجاد یک برنامه تشخیص چهره با یادگیری عمیق تنها مستلزم ایجاد یا انتخاب یک الگوریتم از پیش ساختهشده و آموزش آن با نمونهایی از چهره افرادی است که باید تشخیص دهد. با توجه به مثالهای کافی (مثالهای فراوان)، شبکه عصبی قادر خواهد بود چهرهها را بدون دستورالعملهای بیشتر در مورد ویژگیها یا اندازه گیریها تشخیص دهد.
یادگیری عمیق یک روش بسیار موثر برای انجام بینایی کامپیوتر است. در بیشتر موارد، ایجاد یک الگوریتم خوب یادگیری عمیق به جمعآوری مقدار زیادی از دادههای آموزشی برچسبگذاریشده و تنظیم پارامترهایی مانند نوع و تعداد لایههای شبکههای عصبی و دورههای آموزشی منجر میشود. در مقایسه با انواع قبلی یادگیری ماشینی، توسعه و استقرار یادگیری عمیق آسانتر و سریعتر است.
اکثر برنامه های کاربردی بینایی کامپیوتر فعلی مانند تشخیص سرطان، ماشینهای خودران و تشخیص چهره از یادگیری عمیق استفاده میکنند. یادگیری عمیق و شبکه های عصبی عمیق به لطف در دسترس بودن و پیشرفت در سخت افزار و منابع محاسبات ابری، از قلمرو مفهومی به کاربردهای عملی منتقل شدهاند.
چه مدت طول می کشد تا یک تصویر رمزگشایی شود؟
به طور خلاصه اگر بخواهیم پاسخ دهیم باید بگوییم که مدت زیادی طول نمیکشد. این نکته کلیدی است که چرا کامپیوتر ویژن تا این حد هیجانانگیز است: در گذشته حتی ابرکامپیوترها ممکن بود روزها یا هفتهها یا حتی ماهها طول بکشد تا همه محاسبات مورد نیاز را انجام دهند، اما تراشههای فوق سریع امروزی و سختافزار مرتبط به همراه اینترنت سریع و قابل اعتماد و شبکه های ابری، روند را سریع میکنند. در گذشته، تمایل بسیاری از شرکتهای بزرگی که تحقیقات هوش مصنوعی انجام میدادند، عامل مهمی بود تا کارهای خود را در فیسبوک، گوگل، آیبیام و مایکروسافت، به ویژه با منبع باز برخی از کارهای یادگیری ماشینی خود را به اشتراک بگذارند.
این به اشتراکگذاری به دیگران این امکان را میدهد تا به جای شروع از صفر، به کمک کارهای دیگران، کار خود را سریعتر پیش ببرند. در نتیجه، صنعت هوش مصنوعی در حال آماده شدن است و آزمایشهایی که چندی پیش هفتهها طول میکشید امروز ممکن است ۱۵ دقیقه طول بکشد. و برای بسیاری از کاربردهای دنیای واقعی کامپیوتر ویژن، این فرآیند به طور مداوم در چند صدم ثانیه اتفاق میافتد، به طوری که یک کامپیوتر امروزی میتواند چیزی باشد که دانشمندان آن را “آگاه در موقعیتهای مختلف” مینامند.
کاربردهای کامپیوتر ویژن
کامپیوتر ویژن یکی از حوزههای یادگیری ماشین است که در آن مفاهیم اصلی در محصولات عمدهای ادغام میشوند که ما هر روز از آنها استفاده میکنیم. در ادامه، به کاربردهای بینایی کامپیوتر میپردازیم.
1. کامپیوتر ویژن و کاربرد آن در اتومبیلهای خودران
فقط شرکتهای فناوری نیستند که از یادگیری ماشین برای برنامههای تصویری استفاده میکنند. کامپیوتر ویژن ماشینهای خودران را قادر میسازد تا محیط اطراف خود را درک کنند. دوربینها از زوایای مختلف در اطراف خودرو فیلم می گیرند و آن را به نرم افزار کامپیوتر ویژن میرسانند. سپس این نرم افزار تصاویر را در زمان واقعی پردازش میکند تا انتهای جادهها را پیدا کند، علائم راهنمایی و رانندگی را بخواند، ماشینها، اشیاء و عابران پیاده دیگر را شناسایی کند. در نهایت خودروی خودران میتواند مسیر خود را در خیابانها و بزرگراهها هدایت کند، از برخورد با موانع اجتناب کند و با خیال راحت مسافران خود را به مقصد برساند.
2. بینایی کامپیوتر و کاربرد آن در تشخیص چهره
کامپیوتر ویژن همچنین نقش مهمی در برنامههای تشخیص چهره دارد، فناوریای که کامپیوترها را قادر میسازد تصاویر چهره افراد را با هویت آنها مطابقت دهند. الگوریتمهای بینایی کامپیوتر ویژگیهای چهره را در تصاویر شناسایی میکنند و سپس آنها را با پایگاههای اطلاعاتی پروفایلهای چهره مقایسه میکنند. دستگاههای کاربران از تشخیص چهره برای احراز هویت صاحبان خود استفاده میکنند. اپلیکیشنهای رسانههای اجتماعی از تشخیص چهره برای شناسایی و برچسبگذاری کاربران استفاده میکنند. سازمانهای مجری قانون نیز برای شناسایی مجرمان در فیدهای ویدیویی به فناوری تشخیص چهره متکی هستند.
3. کامپیوتر ویژن و کاربرد آن در واقعیت افزوده و واقعیت ترکیبی
بینایی کامپیوتر همچنین نقش مهمی در واقعیت افزوده (Augmented Reality) و واقعیت ترکیبی (Mixed Reality) ایفا میکند، فناوری که دستگاههای محاسباتی مانند گوشیهای هوشمند، تبلتها و عینکهای هوشمند را قادر میسازد تا اشیاء مجازی را روی تصاویر دنیای واقعی قرار دهند. با استفاده از کامپیوتر ویژن، تجهیزات واقعیت افزوده، اشیاء را در دنیای واقعی تشخیص میدهند تا مکانهای روی نمایشگر دستگاه را برای قرار دادن یک شی مجازی تعیین کنند. به عنوان مثال، الگوریتمهای کامپیوتر ویژن میتوانند به برنامههای واقعیت افزوده کمک کنند تا سطوحی مانند میز، دیوارها و کف را شناسایی کنند که بخش بسیار مهمی از تعیین عمق و ابعاد و قرار دادن اشیاء مجازی در دنیای فیزیکی است.
4. بینایی کامپیوتر و کاربرد آن در مراقبتهای بهداشتی
بینایی کامپیوتر همچنین فاکتور مهمی در پیشرفتهای بخش فناوری سلامت بوده است. الگوریتمهای کامپیوتر ویژن میتوانند به خودکارسازی کارهایی مانند تشخیص خالهای سرطانی در تصاویر پوست یا یافتن علائم در اسکنهای اشعه ایکس و MRI کمک کنند.
چالشهای مهم کامپیوتر ویژن
کمک به کامپیوترها برای دیدن مانند انسانها کار بسیار سختی است. اختراع ماشینی که شبیه ما باشد، یک کار بسیار دشوار است، نه فقط به این دلیل که وادار کردن کامپیوترها به این کار سخت است، بلکه به این دلیل که در وهله اول کاملاً مطمئن نیستیم که بینایی انسان چگونه کار میکند.
مطالعه بینایی بیولوژیکی مستلزم درک اندامهای ادراک مانند چشمها و همچنین تفسیر ادراک درون مغز است. پیشرفت های زیادی هم در ترسیم روند و هم از نظر کشف ترفندها و میانبرهای استفاده شده توسط سیستم انجام شده است، اگرچه مانند هر مطالعهای که مغز را درگیر میکند، راه طولانی در پیش است.
وظایف بینایی کامپیوتر
بسیاری از برنامههای کاربردی کامپیوتر ویژن رایج شامل تلاش برای تشخیص اشیا در عکسهاست. مثلاً:
- طبقهبندی اشیا (Object Classification): چه دستهبندی گستردهای از شی در این عکس وجود دارد؟
- شناسایی شی (Object Identification): کدام نوع از یک شی معین در این عکس وجود دارد؟
- تأیید شی (Object Verification): آیا شی در عکس موجود است؟
- تشخیص اشیا (Object Detection): اشیا در عکس کجا هستند؟
- تشخیص نقطه عطف شی (Object Landmark Detection): نکات کلیدی برای جسم موجود در عکس چیست؟
- تقسیمبندی اشیا (Object Segmentation): چه پیکسلهایی به شی در تصویر تعلق دارند؟
- شناخت اشیا (Object Recognition): چه اشیایی در این عکس هستند و کجا قرار دارند؟
خارج از تشخیص صرف اشیا، سایر روش های تحلیل عبارتند از:
- از دید کامپیوتری برای تخمین سرعت اجسام در یک ویدئو یا خود دوربین استفاده می کند. این سامانه در میان محصولات شرکت آویر وجود دارد و میتوانید از سامانه تجزیه و تحلیل حرکت ویدیویی آویر با دقت بالا استفاده نمایید.
همین حالا با آویر تماس بگیرید! دکمه طراحی شود برای شماره تماس
- در تقسیمبندی تصویر، الگوریتمها تصاویر را به چند مجموعه از نماها تقسیم میکنند.
- بازسازی صحنه یک مدل سهبعدی از صحنه ایجاد میکند که ورودی آن از طریق تصاویر یا ویدیو است.
- در بازیابی تصویر، نویزهایی مانند تار بودن از عکسها با استفاده از فیلترهای مبتنی بر یادگیری ماشین حذف می شود.
هر برنامه دیگری که شامل درک پیکسلها از طریق نرم افزار باشد، می تواند با خیال راحت به عنوان کامپیوتر ویژن برچسب گذاری شود.
و در پایان این که …
اگرچه پیشرفتهای اخیر در حوزه هوش مصنوعی چشمگیر بوده است، اما هنوز کامپیوتر ویژن به طور کامل پیشرفت نکرده است. با این حال، در حال حاضر موسسات و شرکتهای مراقبتهای بهداشتی متعددی وجود دارند که راههایی برای اعمال سیستمهای بینایی کامپیوتر، با پشتیبانی از شبکه عصبی پیچشی (CNN)، برای مشکلات دنیای واقعی پیدا کردهاند. این روند به این زودی ها متوقف نخواهد شد.