بینایی کامپیوتری حوزهای از هوش مصنوعی (AI) است که در آن سیستمهای نرمافزاری برای درک بصری جهان از طریق دوربینها، تصاویر و ویدئو طراحی شدهاند. چندین نوع مسئله بینایی کامپیوتری وجود دارد که مهندسان هوش مصنوعی و دانشمندان داده میتوانند با استفاده از ترکیبی از مدلهای یادگیری ماشین سفارشی و راهحلهای پلتفرم بهعنوان سرویس (PaaS) آنها را حل کنند – از جمله بسیاری از خدمات هوش مصنوعی در Microsoft Azure. سرویس Azure AI Vision مهندسان نرم افزار را قادر می سازد راه حل های هوشمندی ایجاد کنند که اطلاعات را از تصاویر استخراج می کند. این یک کار رایج در بسیاری از سناریوهای هوش مصنوعی (AI) است.
بینایی کامپیوتر یکی از حوزههای اصلی هوش مصنوعی (AI) است و بر ایجاد راهحلهایی تمرکز میکند که برنامههای هوش مصنوعی را قادر میسازد جهان را دیده و درک کنند. البته، رایانهها چشمهای بیولوژیکی ندارند که مانند ما کار کند، اما میتوانند تصاویر را پردازش کنند. یا از یک فید دوربین زنده یا از عکس ها یا فیلم های دیجیتال. این توانایی برای پردازش تصاویر، کلید ایجاد نرم افزاری است که می تواند ادراک بصری انسان را تقلید کند.
قبل از اینکه بتوانیم پردازش تصویر و سایر قابلیتهای بینایی رایانه را بررسی کنیم، مفید است که در نظر بگیریم که یک تصویر در یک برنامه رایانهای واقعا از چه تشکیل شده است.
تصاویر به عنوان آرایه های پیکسلی
برای یک کامپیوتر، یک تصویر آرایه ای از مقادیر پیکسل عددی است. برای مثال آرایه زیر را در نظر بگیرید:
۰ ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
این آرایه از هفت سطر و هفت ستون تشکیل شده است که نشان دهنده مقادیر پیکسل برای یک تصویر پیکسلی ۷×۷ (که به عنوان وضوح تصویر شناخته می شود) است. هر پیکسل دارای مقداری بین ۰ (سیاه) و ۲۵۵ (سفید) است. با مقادیر بین این مرزها که نشان دهنده سایه های خاکستری است. تصویر ارائه شده توسط این آرایه شبیه تصویر زیر (بزرگنمایی شده) است:
آرایه مقادیر پیکسل برای این تصویر دو بعدی است (نماینده سطرها و ستون ها یا مختصات x و y) و یک مستطیل از مقادیر پیکسل را تعریف می کند. یک لایه واحد از مقادیر پیکسل مانند این یک تصویر در مقیاس خاکستری را نشان می دهد. در واقعیت، بیشتر تصاویر دیجیتال چند بعدی هستند و از سه لایه (معروف به کانال) تشکیل شدهاند که رنگهای قرمز، سبز و آبی (RGB) را نشان میدهند. به عنوان مثال، میتوانیم یک تصویر رنگی را با تعریف سه کانال از مقادیر پیکسلی که همان شکل مربعی مثال قبلی مقیاس خاکستری را ایجاد میکنند، نشان دهیم:
Red:
150 150 150 150 150 150 150
150 150 150 150 150 150 150
150 150 255 255 255 150 150
150 150 255 255 255 150 150
150 150 255 255 255 150 150
150 150 150 150 150 150 150
150 150 150 150 150 150 150
Green:
0 ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
Blue:
255 255 255 255 255 255 255
255 255 255 255 255 255 255
255 255 ۰ ۰ ۰ ۲۵۵ ۲۵۵
۲۵۵ ۲۵۵ ۰ ۰ ۰ ۲۵۵ ۲۵۵
۲۵۵ ۲۵۵ ۰ ۰ ۰ ۲۵۵ ۲۵۵
۲۵۵ ۲۵۵ ۲۵۵ ۲۵۵ ۲۵۵ ۲۵۵ ۲۵۵
۲۵۵ ۲۵۵ ۲۵۵ ۲۵۵ ۲۵۵ ۲۵۵ ۲۵۵
در اینجا تصویر حاصل آمده است:
مربع های بنفش با ترکیب زیر نشان داده می شوند:
Red: 150
Green: 0
Blue: 255
مربع های زرد در مرکز با ترکیب زیر نشان داده می شوند:
Red: 255
Green: 255
Blue: 0
استفاده از فیلترها برای پردازش تصاویر
یک روش رایج برای انجام وظایف پردازش تصویر، اعمال فیلترهایی است که مقادیر پیکسل تصویر را برای ایجاد یک جلوه بصری تغییر می دهند. یک فیلتر با یک یا چند آرایه از مقادیر پیکسل تعریف می شود که به آن هسته فیلتر می گویند. به عنوان مثال، می توانید فیلتر را با یک هسته ۳×۳ همانطور که در این مثال نشان داده شده است تعریف کنید:
-۱ -۱ -۱
-۱ ۸ -۱
-۱ -۱ -۱
سپس هسته در سراسر تصویر در هم می پیچد و یک مجموع وزنی برای هر پچ ۳×۳ پیکسل محاسبه می کند و نتیجه را به یک تصویر جدید اختصاص می دهد. درک نحوه عملکرد فیلتر با بررسی یک مثال گام به گام آسان تر است.
بیایید با تصویر خاکستری که قبلا بررسی کردیم شروع کنیم:
۰ ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۲۵۵ ۲۵۵ ۲۵۵ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
۰ ۰ ۰ ۰ ۰ ۰ ۰
ابتدا هسته فیلتر را در قسمت بالای سمت چپ تصویر اعمال می کنیم و هر مقدار پیکسل را در مقدار وزن مربوطه در هسته ضرب می کنیم و نتایج را اضافه می کنیم:
(۰ x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255
نتیجه (۲۵۵-) اولین مقدار در یک آرایه جدید می شود. سپس هسته فیلتر را در امتداد یک پیکسل به سمت راست حرکت می دهیم و عملیات را تکرار می کنیم:
(۰ x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510
مجدداً نتیجه به آرایه جدید اضافه می شود که اکنون شامل دو مقدار است:
-۲۵۵ -۵۱۰
همانطور که در این انیمیشن نشان داده شده است، این فرآیند تا زمانی که فیلتر در کل تصویر پیچیده شود تکرار می شود:
فیلتر در سراسر تصویر پیچیده می شود و آرایه جدیدی از مقادیر را محاسبه می کند. برخی از مقادیر ممکن است خارج از محدوده ۰ تا ۲۵۵ پیکسل باشند، بنابراین مقادیر متناسب با آن محدوده تنظیم می شوند. به دلیل شکل فیلتر، لبه بیرونی پیکسل ها محاسبه نمی شود، بنابراین یک مقدار padding (معمولا ۰) اعمال می شود. آرایه به دست آمده تصویر جدیدی را نشان می دهد که در آن فیلتر تصویر اصلی را تغییر داده است. در این حالت فیلتر اثر برجسته سازی لبه های اشکال در تصویر را داشته است.
از آنجایی که فیلتر در سراسر تصویر پیچیده می شود، این نوع دستکاری تصویر اغلب به عنوان فیلتر کانولوشن شناخته می شود. فیلتر استفاده شده در این مثال، نوع خاصی از فیلتر (به نام فیلتر لاپلاس) است که لبه های اشیاء را در یک تصویر برجسته می کند. بسیاری از انواع فیلترهای دیگر وجود دارد که میتوانید از آنها برای ایجاد تاری، وضوح، وارونگی رنگ و جلوههای دیگر استفاده کنید.
توانایی استفاده از فیلترها برای اعمال جلوه ها بر روی تصاویر در کارهای پردازش تصویر مفید است، مانند کارهایی که ممکن است با نرم افزار ویرایش تصویر انجام دهید. با این حال، هدف بینایی رایانه اغلب استخراج معنا یا حداقل بینش عملی از تصاویر است. که مستلزم ایجاد مدل های یادگیری ماشینی است که برای تشخیص ویژگی ها بر اساس حجم زیادی از تصاویر موجود آموزش دیده اند.
برای ادامه مطالعه در مسیر یادگیری بینایی ماشین که شامل مطالب زیر میشود، به لینک پایین متن در مایکروسافت لرن مراجعه کنید:
- Convolutional neural networks (CNNs)
- Transformers and multi-modal models
- Azure AI Vision
- Analyzing images with the Azure AI Vision service
- Optical character recognition
- Detecting common objects in an image
- Object detection
مطالعه بیشتر
0 مورد نقد و بررسی