معرفی و تعریف
بینایی ماشین (Computer Vision یا CV) توانایی صورتبندی، ساخت و ارزیابی سامانههایی است که از تصویر و ویدئو اطلاعات قابلاستفاده استخراج میکنند. این مهارت به رایانه کمک میکند اشیا، متن، افراد، رخدادها یا ناهنجاریهای تصویری را تشخیص دهد و برای آنها خروجی قابلاستفاده در محصول یا فرایند عملیاتی ایجاد کند.
مسئله بینایی ماشین فقط انتخاب یک مدل آماده نیست. شما باید مشخص کنید خروجی مسئله چیست، داده مناسب را جمعآوری یا بررسی کنید، کیفیت برچسبها را بسنجید، مدل را آموزش دهید و آن را با معیار درست ارزیابی کنید. برای نمونه، در تشخیص عیب محصول، «دقت کلی» ممکن است گمراهکننده باشد و نرخ از دست رفتن عیبها اهمیت بیشتری داشته باشد.
مهندسان بینایی ماشین، مهندسان یادگیری ماشین و برخی مهندسان هوش مصنوعی از این مهارت برای طبقهبندی تصویر، تشخیص شیء، قطعهبندی تصویر، تشخیص متن نوری و ردیابی اشیا در ویدئو استفاده میکنند. خروجی کار معمولا یک مدل، خط لوله پردازش داده یا سرویسی است که در شرایط واقعی دوربین و داده عمل میکند.
این مهارت را با نامهای دیگری نیز میشناسند:
- بینایی رایانهای
- بینایی کامپیوتری
- CV
اهمیت و کاربردها
چرا این مهارت مهم است؟
بینایی ماشین زمانی ارزش عملی پیدا میکند که تصویر یا ویدئو بتواند یک تصمیم را سریعتر، یکنواختتر یا در مقیاسی بزرگتر پشتیبانی کند. نمونههای رایج آن شامل کنترل کیفیت تصویری، خواندن خودکار اسناد، تحلیل تصاویر پزشکی با نظارت متخصص و تحلیل جریان تردد است.
برای نقش مهندس بینایی ماشین، این مهارت هسته کار است، زیرا باید مسئلههایی مانند تشخیص شیء، قطعهبندی و ردیابی را به خروجی قابلاستفاده در محصول تبدیل کند. مهندسان یادگیری ماشین و مهندسان هوش مصنوعی نیز هنگام کار با داده تصویری به این توانایی نیاز دارند.
در ایران ممکن است این توانایی زیر عنوانهایی مانند «مهندس بینایی ماشین»، «مهندس یادگیری ماشین»، «مهندس هوش مصنوعی» یا «پژوهشگر هوش مصنوعی» مطرح شود. زمینه کار نیز میتواند از کنترل کیفیت صنعتی و سامانههای نظارت تصویری تا پردازش اسناد، تحلیل تصاویر پزشکی و محصولات مبتنی بر دوربین متفاوت باشد.
اگر قصد دارید برای چنین نقشهایی نمونهکار بسازید، مدل را فقط روی داده آموزشی نمایش ندهید. آن را با تصاویری نزدیک به شرایط استفاده، مانند نور، زاویه، کیفیت دوربین و پسزمینه متفاوت، آزمایش کنید و خطاها را توضیح دهید. این کار به کارفرما نشان میدهد که محدودیت داده و معیار ارزیابی مسئله را درک میکنید.
برآورد ۳۶۰ ساعت برای فردی است که برنامهنویسی Python، ریاضیات و آمار یادگیری ماشین و مدلسازی یادگیری ماشین را در سطح پیشنیاز دارد. با ۸ تا ۱۰ ساعت تمرین هفتگی، تکمیل این مسیر معمولا حدود ۹ تا ۱۱ ماه زمان میگیرد. زمان یادگیری پیشنیازها در این برآورد لحاظ نشده است و فرد مبتدی باید برای آنها نیز زمان جداگانه در نظر بگیرد.
کاربردها
-
کنترل کیفیت در تولید
تشخیص خط، شکستگی، تغییر رنگ یا نقص مونتاژ در تصویر محصول و ارجاع موارد مشکوک به بازرس انسانی.
-
تشخیص و شمارش اشیا
شناسایی و شمارش خودرو، کالا، قطعه یا افراد در تصویر برای پایش موجودی، تردد یا عملیات.
-
تشخیص متن نوری اسناد
استخراج متن از تصویر فاکتور، فرم، رسید یا سند اسکنشده و آمادهسازی آن برای بررسی و ثبت.
-
تحلیل تصاویر پزشکی
کمک به برجستهسازی نواحی مشکوک در تصاویر پزشکی برای بررسی متخصص، نه جایگزینی تصمیم بالینی.
-
سامانههای نظارت تصویری
ردیابی حرکت، تشخیص ورود به ناحیه ممنوعه یا تشخیص رخدادهای تعریفشده در جریان ویدئو.
-
تحلیل تصویر در محصولات دیجیتال
برچسبگذاری خودکار تصویر، جستوجوی تصویری یا بررسی کیفیت محتوای تصویری پیش از انتشار.
ابزارهای مرتبط
پیشنیازها
شروع این مهارت با دانستن پیشنیازهای زیر هموارتر میشود.
- مهارت برنامهنویسی پایتون Python Programming
- مهارت ریاضیات و آمار برای یادگیری ماشین Mathematics and Statistics for Machine Learning
- مهارت مدلسازی با یادگیری ماشین Machine Learning Modeling
- توانایی خواندن مستندات فنی انگلیسی
- دسترسی به رایانه مناسب برای اجرای آزمایشهای مدل
مسیر یادگیری بینایی ماشین
-
۴۰ ساعت
تصویر دیجیتال را به داده قابلپردازش تبدیل کنید.
ساختار تصویر دیجیتال، کانالهای رنگی، اندازه، رزولوشن، آرایههای عددی و تفاوت تصویر خاکستری و رنگی را یاد بگیرید. با Python و NumPy تصویر بخوانید، برش دهید، تغییر اندازه دهید و خروجی عملیات را بررسی کنید.
آزمایشها را در Jupyter Notebook ثبت کنید تا ورودی، تبدیل انجامشده و خروجی هر مرحله قابلمشاهده و تکرار باشد. این دفترها برای مقایسه اثر تغییر اندازه، کانال رنگی و نرمالسازی تصویر کاربرد دارند.
-
۵۵ ساعت
تبدیلها و ویژگیهای تصویری را بهکار ببرید.
فیلترکردن، تشخیص لبه، آستانهگذاری، تبدیلات هندسی و عملیات مورفولوژیک را تمرین کنید. برای هر تبدیل، بررسی کنید چه نوع نویز یا تغییر نور و زاویهای میتواند نتیجه را خراب کند.
با OpenCV یک خط لوله ساده برای خواندن تصویر، تبدیل رنگ، اعمال فیلتر و نمایش نتیجه بسازید. خروجی چند تنظیم متفاوت را کنار هم مقایسه کنید تا انتخاب پارامترها بر پایه مشاهده باشد، نه حدس.
-
۶۵ ساعت
داده تصویری قابلاعتماد آماده کنید.
داده را به بخشهای آموزش، اعتبارسنجی و آزمون تقسیم کنید و نشت داده را تشخیص دهید. برچسبگذاری طبقه، جعبه مرزی و ماسک را بشناسید. نمونههای مبهم، برچسب نادرست و عدم توازن کلاسها را پیش از آموزش مدل بررسی کنید.
-
۸۰ ساعت
مدل مناسب هر مسئله بینایی را آموزش دهید.
تفاوت طبقهبندی تصویر، تشخیص شیء، قطعهبندی و ردیابی را بر اساس نوع خروجی مسئله تشخیص دهید. یادگیری عمیق (Deep Learning)، شبکههای کانولوشنی، انتقال یادگیری و افزایش داده را با PyTorch یا TensorFlow تمرین کنید و یک مدل پایه را با مدل بهبودیافته مقایسه کنید.
-
۷۰ ساعت
نتیجه مدل را با معیار درست ارزیابی و تحلیل کنید.
برای طبقهبندی، ماتریس درهمریختگی، precision، recall و F1 را تفسیر کنید. برای تشخیص شیء، مفهوم IoU و معیارهای مبتنی بر آن را بیاموزید. تصاویر خطادار را دستهبندی کنید تا مشخص شود مسئله از داده، برچسب، مدل یا تعریف مسئله است.
-
۵۰ ساعت
یک مدل بینایی را برای استفاده واقعی آماده کنید.
پیشپردازش ورودی، پسپردازش خروجی، محدودیت زمان پاسخ و مصرف حافظه را در یک خط لوله کامل در نظر بگیرید. مدل را با ONNX یا یک سرویس Python اجرا کنید، ورودیهای نامعتبر را مدیریت کنید و عملکرد آن را روی تصاویر نزدیک به محیط واقعی بسنجید.
با Docker وابستگیهای سرویس و نسخه مدل را در یک محیط قابلتکرار بستهبندی کنید. کد، پیکربندی و تغییرات مدل را نیز با Git ثبت کنید تا بتوانید نتیجه هر نسخه را بازتولید و مقایسه کنید.
زمان تقریبی یادگیری
برآورد مجموع زمان آموزش، مطالعه و تمرین تا رسیدن به سطح کاربردی؛ بسته به پیشزمینه شما میتواند کمتر یا بیشتر باشد.
پروژههای تمرینی
موارد زیر تصویری کلی از این بخش برای این مهارت ارائه میکنند.
-
طبقهبندی تصاویر با تحلیل خطا
توضیح پروژه: توضیح پروژه: یک مدل برای دستهبندی چند کلاس تصویر بسازید. علاوه بر گزارش معیارها، حداقل ۲۰ نمونه خطا را بررسی و دلیل احتمالی هر دسته خطا را ثبت کنید.
-
تشخیص عیب ظاهری محصول
توضیح پروژه: توضیح پروژه: یک مسئله کنترل کیفیت شبیهسازیشده تعریف کنید. داده سالم و معیوب را آماده کنید و معیار ارزیابی را با توجه به هزینه عبور عیب انتخاب کنید.
-
تشخیص و شمارش اشیا در ویدئو
توضیح پروژه: توضیح پروژه: روی یک ویدئوی کوتاه، اشیای هدف را تشخیص دهید، شناسه آنها را در فریمهای پیدرپی نگه دارید و شمارش نهایی را با بررسی دستی مقایسه کنید.
-
سرویس ساده تحلیل تصویر
توضیح پروژه: توضیح پروژه: مدل آموزشدیده را در یک API قرار دهید که تصویر را دریافت و برچسب یا جعبههای تشخیص را برگرداند. خطاهای ورودی و زمان پاسخ را ثبت کنید.
پرسشهای رایج درباره بینایی ماشین
در این بخش، به تعدادی از پرسشهای رایج درباره این مهارت پاسخ داده شده است.
آیا بینایی ماشین همان پردازش تصویر است؟
خیر. پردازش تصویر بیشتر بر تبدیل و بهبود خود تصویر تمرکز دارد، اما بینایی ماشین از تصویر برای استنباط معنا و تصمیم استفاده میکند. پردازش تصویر یکی از پایههای مهم بینایی ماشین است.
برای شروع بینایی ماشین باید یادگیری عمیق بلد باشم؟
برای کارهای امروزی بینایی ماشین، یادگیری عمیق بسیار مهم است، اما بهتر است ابتدا مبانی تصویر دیجیتال، Python و ارزیابی مدل را یاد بگیرید. در غیر این صورت، تشخیص علت خطاهای مدل دشوار میشود.
آیا فقط با مدلهای آماده میتوان در بینایی ماشین کار کرد؟
مدلهای آماده نقطه شروع خوبی هستند، اما کار حرفهای شامل آمادهسازی داده، انتخاب معیار، تنظیم خط لوله، تحلیل خطا و سنجش عملکرد در شرایط واقعی نیز میشود.
برای نمونهکار بینایی ماشین چه چیزی ارائه کنم؟
یک مخزن کد منظم، توضیح مسئله و داده، روش تقسیم داده، معیارهای ارزیابی، نمونه خروجیها و تحلیل خطا ارائه کنید. صرف نمایش چند تصویر با جعبه تشخیص، توانایی شما در حل مسئله را نشان نمیدهد.
آیا برای یادگیری بینایی ماشین به کارت گرافیک قوی نیاز دارم؟
برای یادگیری مبانی و پروژههای کوچک، الزاما خیر. میتوانید از مدلهای کوچک، انتقال یادگیری و محیطهای ابری مانند Google Colab استفاده کنید. آموزش مدلهای بزرگ یا کار با ویدئوی حجیم به منابع بیشتری نیاز دارد.
آموزشهای مرتبط در فرادرس
-
آموزش پردازش تصویر و بینایی ماشین با اپن سی وی OpenCV
-
آموزش پروژه محور بینایی ماشین با پایتورچ، تشخیص اشیا در PyTorch با پایگاه داده COCO + گواهینامه
-
آموزش یادگیری عمیق با کتابخانه پای تورچ PyTorch در پایتون + گواهینامه
-
آموزش برنامه نویسی یادگیری عمیق با کتابخانه TensorFlow 2
-
آموزش مبانی یادگیری عمیق یا Deep Learning + گواهینامه
-
شبکه عصبی ResNet چیست؟، راهنمای جامع معماری رزنت