هوش مصنوعی با پایتون – بینایی رایانه‌ ای

3 سال پیش

هوش مصنوعی با پایتون – بینایی رایانه‌ ای

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

پیشنهاد ویژه : پکیج آموزش طراحی وب سایت با پایتون

بینایی رایانه‌ ای

بینایی رایانه ای رشته ای است که نحوه بازسازی، قطع و درک یک صحنه سه بعدی از تصاویر ۲ بعدی خود را از نظر ویژگی های ساختار موجود در صحنه مطالعه می کند.

 

سلسله مراتب بینایی رایانه ای

بینایی رایانه به سه زیر تقسیم می شود:

Low-level vision – شامل تصویر فرایند برای استخراج ویژگی است.

Intermediate-level vision– شامل تشخیص شی و تفسیر صحنه سه بعدی است.

High-level vision – شامل توصیف مفهومی صحنه ای مانند فعالیت، قصد و رفتار است.

 

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

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

بینایی رایانه ای ساختن توصیفات صریح و معناداری از اشیا فیزیکی از تصویر آنها است. خروجی دید رایانه ای توصیف یا تفسیر ساختارها در صحنه سه بعدی است.

 

برنامه های کاربردی

بینایی رایانه ای در زمینه های زیر برنامه را پیدا می کند –

رباتیک

  • مکان یابی به طور خودکار مکان ربات را تعیین کنید
  • جهت یابی
  • جلوگیری از موانع
  • مونتاژ (گیره در سوراخ ، جوشکاری ، نقاشی)
  • دستکاری (به عنوان مثال دستکاری ربات PUMA)
  • تعامل انسان ربات (HRI): رباتیک هوشمند برای تعامل و خدمت به مردم

پزشکی

  • طبقه بندی و تشخیص (به عنوان مثال ضایعه یا طبقه بندی سلول ها و تشخیص تومور)
  • تقسیم بندی دو بعدی / سه بعدی
  • بازسازی سه بعدی اعضای بدن انسان (MRI یا سونوگرافی)
  • جراحی رباتیک با هدایت بینایی

امنیت

  • بیومتریک (عنبیه، چاپ انگشت، تشخیص چهره)
  • برخی از فعالیتها یا رفتارهای مشکوک را می توان با نظارت تشخیص داد

حمل و نقل

  • وسیله نقلیه خودمختار
  • ایمنی ، به عنوان مثال ، نظارت بر هوشیاری راننده

برنامه اتوماسیون صنعتی

  • بازرسی صنعتی (تشخیص نقص)
  • مونتاژ
  • خواندن بارکد و برچسب بسته
  • مرتب سازی اشیا
  • درک اسناد (به عنوان مثال OCR)

نصب پکیج های مفید

برای بینایی رایانه ای با پایتون، می توانید از یک کتابخانه معروف به نام (OpenCV (Open Source Computer Vision استفاده کنید. این کتابخانه کتابخانه ای از توابع برنامه نویسی است که عمدتا در بینایی رایانه ای در زمان واقعی انجام می شود. به زبان C ++ نوشته شده و رابط اصلی آن به زبان C ++ است. می توانید این پکیج را با کمک دستور زیر نصب کنید –

pip install opencv_python-X.X-cp36-cp36m-winX.whl

در اینجا X نشان دهنده نسخه پایتون نصب شده بر روی دستگاه شما و همچنین بیت win32 یا ۶۴ است.

اگر از محیط anaconda استفاده می کنید ، برای نصب OpenCV از دستور زیر استفاده کنید –

conda install -c conda-forge opencv

خواندن، نوشتن و نمایش یک تصویر

بیشتر برنامه های CV باید تصاویر را به عنوان ورودی دریافت کرده و تصاویر را به عنوان خروجی تولید کنند. در این بخش، شما می آموزید که چگونه با کمک توابع ارائه شده توسط OpenCV ، فایل تصویر را بخوانید و بنویسید.

توابع OpenCV برای خواندن، نمایش، نوشتن یک فایل تصویر

OpenCV توابع زیر را برای این منظور فراهم می کند –

  • تابع ()imread – این تابع برای خواندن یک تصویر است. ()OpenCV imread از فرمت های مختلف تصویر مانند PNG  JPEG  JPG ، TIFF و غیره پشتیبانی می کند.
  • تابع () imshow – این تابع برای نشان دادن تصویر در یک پنجره است. پنجره به طور خودکار با اندازه تصویر متناسب می شود. OpenCV imshow () از فرمت های مختلف تصویر مانند PNG ، JPEG ، JPG ، TIFF و غیره پشتیبانی می کند.
  •  تابع ()imwrite – این تابعی برای نوشتن تصویر است. ()OpenCV imwrite از فرمت های مختلف تصویر مانند PNG ، JPEG  JPG ،TIFF و غیره پشتیبانی می کند.

مثال

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

همانطور که نشان داده شده ، پکیج OpenCV را وارد کنید

import cv2

اکنون، برای خواندن یک تصویر خاص، از تابع ()imread استفاده کنید –

image = cv2.imread('image_flower.jpg')

برای نمایش تصویر، از تابع () imshow استفاده کنید. نام پنجره ای که می توانید تصویر را در آن ببینید می تواند image_flower باشد.

cv2.imshow('image_flower',image)
cv2.destroyAllwindows()

هوش مصنوعی با پایتون - بینایی رایانه‌ ای

 

اکنون، می توانیم با استفاده از تابع ()imwrite  همان تصویر را در قالب دیگر بنویسیم ، مثلا png. –

cv2.imwrite('image_flower.png',image)

خروجی True به این معنی است که تصویر با موفقیت به عنوان فایل png. در همان پوشه نیز نوشته شده است.

True

توجه – تابع ()DestallallWindows به راحتی تمام پنجره هایی را که ایجاد کرده ایم از بین می برد.

تبدیل فضای رنگی

در OpenCV، تصاویر با استفاده از رنگ RGB معمولی ذخیره نمی شوند، بلکه در ترتیب معکوس یعنی به ترتیب BGR ذخیره می شوند. از این رو کد رنگ پیش فرض هنگام خواندن تصویر BGR است. تابع تبدیل رنگ cvtColor برای تبدیل تصویر از یک کد رنگ به دیگری.

مثال

برای تبدیل تصویر از BGR به مقیاس خاکستری این مثال را در نظر بگیرید.

پکیج OpenCV را همانطور که نشان داده شده وارد کنید –

import cv2

اکنون، برای خواندن یک تصویر خاص، از تابع ()imread استفاده کنید –

image = cv2.imread('image_flower.jpg')

حال، اگر این تصویر را با استفاده از تابع ()imshow ببینیم، می توانیم ببینیم که این تصویر در BGR است.

cv2.imshow('BGR_Penguins',image)

هوش مصنوعی با پایتون - بینایی رایانه‌ ای

اکنون، از تابع ()cvtColor برای تبدیل این تصویر به مقیاس خاکستری استفاده کنید.

image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('gray_penguins',image)

grey penguine

تشخیص لبه

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

مثال

مثال زیر شناسایی واضح لبه ها را نشان می دهد.

همانطور که نشان داده شده پکیج OpenCV را وارد کنید –

import cv2
import numpy as np

 

اکنون، برای خواندن یک تصویر خاص، از تابع ()imread استفاده کنید.

image = cv2.imread('Penguins.jpg')

اکنون، از تابع ()Canny برای تشخیص لبه های تصویر خوانده شده استفاده کنید.

cv2.imwrite(‘edges_Penguins.jpg’,cv2.Canny(image,200,300))

اکنون ، برای نمایش تصویر با لبه ها، از تابع () imshow استفاده کنید.

cv2.imshow(‘edges’, cv2.imread(‘‘edges_Penguins.jpg’))

این برنامه پایتون تصویری با نام edge_penguins.jpg با تشخیص لبه ایجاد می کند.

edges penguins

شناسایی چهره

تشخیص چهره یکی از کاربردهای جذاب بینایی رایانه ای است که آن را واقع بینانه تر و همچنین آینده نگرانه می کند. OpenCV دارای یک امکان داخلی برای انجام تشخیص چهره است. ما می خواهیم از طبقه بندی آبشار Haar برای تشخیص چهره استفاده کنیم.

داده های آبشار Haar

برای استفاده از طبقه بندی آبشار Haar به داده نیاز داریم. این داده ها را می توانید در پکیج OpenCV ما پیدا کنید. پس از نصب OpenCv ، می توانید نام پوشه haarcascades را مشاهده کنید. پرونده های .xml برای برنامه های مختلف وجود دارد. اکنون، همه آنها را برای استفاده های مختلف کپی کنید و سپس در یک پوشه جدید تحت پروژه فعلی جای گذاری کنید.

مثال

در زیر کد پایتون با استفاده از Haar Cascade برای شناسایی چهره آمیتاب باچان نشان داده شده در تصویر زیر است:

ab face

پکیج OpenCV را همانطور که نشان داده شده وارد کنید –

import cv2
import numpy as np

 

اکنون، از HaarCascadeClassifier برای تشخیص چهره استفاده کنید –

face_detection=
cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/
haarcascade_frontalface_default.xml')

 

اکنون، برای خواندن یک تصویر خاص، از تابع ()imread  استفاده کنید –

img = cv2.imread('AB.jpg')

 

اکنون، آن را به مقیاس خاکستری تبدیل کنید زیرا تصاویر خاکستری را می پذیرد –

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

 

اکنون، با استفاده از face_detection.detectMultiScale ، تشخیص چهره واقعی را انجام دهید

faces = face_detection.detectMultiScale(gray, 1.3, 5)

 

اکنون  یک مستطیل را در اطراف کل صورت بکشید –

for (x,y,w,h) in faces:
   img = cv2.rectangle(img,(x,y),(x+w, y+h),(255,0,0),3)
cv2.imwrite('Face_AB.jpg',img)

 

این برنامه پایتون همانطور که نشان داده شده تصویری با نام Face_AB.jpg با تشخیص چهره ایجاد می کند.

Face AB

 

تشخیص چشم

تشخیص چشم یکی دیگر از کاربردهای جذاب بینایی رایانه ای است که آن را واقع بینانه تر و همچنین آینده نگرانه می کند. OpenCV دارای یک امکان داخلی برای انجام تشخیص چشم است. ما می خواهیم از طبقه بندی آبشار Haar برای تشخیص چشم استفاده کنیم.

مثال
مثال زیر کد پایتون را با استفاده از Haar Cascade برای تشخیص چهره آمیتاب باچان داده شده در تصویر زیر ارائه می دهد –Haar AB Face

همانطور که نشان داده شده بسته OpenCV را وارد کنید –

import cv2
import numpy as np

اکنون، از HaarCascadeClassifier برای تشخیص چهره استفاده کنید –

eye_cascade = cv2.CascadeClassifier('D:/ProgramData/cascadeclassifier/haarcascade_eye.xml')

اکنون ، برای خواندن یک تصویر خاص، از تابع ()imread  استفاده کنید

img = cv2.imread('AB_Eye.jpg')

اکنون، آن را به مقیاس خاکستری تبدیل کنید زیرا تصاویر خاکستری را می پذیرد –

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

اکنون با کمک eye_cascade.detectMultiScale، تشخیص چهره واقعی را انجام دهید

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

اکنون، یک مستطیل را در اطراف کل صورت بکشید –

for (ex,ey,ew,eh) in eyes:
   img = cv2.rectangle(img,(ex,ey),(ex+ew, ey+eh),(0,255,0),2)
cv2.imwrite('Eye_AB.jpg',img)

این برنامه پایتون تصویری به نام Eye_AB.jpg با تشخیص چشم ایجاد می کند همانطور که نشان داده شده است –

 

Eye AB

منبع.

 

لیست جلسات قبل آموزش هوش مصنوعی با برنامه نویسی پایتون

  1. آموزش هوش مصنوعی با برنامه نویسی پایتون – مفهوم کلی
  2. شروع آموزش هوش مصنوعی با برنامه نویسی پایتون
  3. یادگیری ماشین در هوش مصنوعی با برنامه نویسی پایتون
  4. هوش مصنوعی با برنامه نویسی پایتون، آماده ‌سازی داده ها
  5. هوش مصنوعی با پایتون، یادگیری نظارت شده و طبقه بندی
  6. هوش مصنوعی با برنامه نویسی پایتون – یادگیری تحت نظارت: رگرسیون
  7. هوش مصنوعی با برنامه نویسی پایتون – برنامه نویسی منطقی
  8. هوش مصنوعی با پایتون – یادگیری بدون نظارت: خوشه بندی
  9. هوش مصنوعی با پایتون – پردازش زبان طبیعی
  10. هوش مصنوعی با پایتون – پکیج NLTK
  11. هوش مصنوعی با پایتون – تجزیه و تحلیل داده های سری زمانی
  12. هوش مصنوعی با پایتون – تشخیص گفتار
  13. هوش مصنوعی با پایتون – جستجوی کاشف
  14. هوش مصنوعی با پایتون – بازی
  15. هوش مصنوعی با پایتون – شبکه های عصبی
  16. هوش مصنوعی با پایتون – یادگیری Reinforcement
  17. هوش مصنوعی با پایتون – الگوریتم های ژنتیک

 

 

 

0
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه