
چرا برنامه نویسی پایتون را یاد بگیریم؟
✌️ این مقاله یک پست مهمان حمایت شده است که توسط دیویا سینگ.
برنامه نویسی پایتون در چند سال گذشته به شدت رشد کرده است. بهترین بخش در مورد آن این است که یادگیری پایتون آسان است. ما می توانیم کارهای پیچیده را با استفاده از برنامه نویسی پایتون انجام دهیم. چنین وظایفی ممکن است شامل تشخیص اشیا، ردیابی اشیا و غیره باشد. این امر قابلیت استفاده برنامه نویسی پایتون را افزایش می دهد و آن را برای یادگیری پایتون مفید می کند. یکی دیگر از مزایای برنامه نویسی پایتون، کارآمد و سریع بودن استفاده از آن است.
وظیفه تشخیص یک شیء بر روی یک تصویر منفرد یا بسیاری از تصاویر یا یک توالی ویدیو بسیار طاقت فرسا به نظر می رسد. اما ما می توانیم این کار را با سهولت استفاده انجام دهیم کتابخانه های OpenCV در برنامه نویسی پایتون. همچنین، پیشرفت های فناوری در هوش مصنوعی راه را برای آینده هموار می کند. و برنامه نویسی پایتون برای مدت طولانی به عنوان پایه و اساس برنامه های کاربردی هوش مصنوعی عمل کرده است.
بنابراین، یادگیری پایتون ممکن است مفید باشد.
OpenCV برای تشخیص چهره با برنامه نویسی پایتون
حال بیایید نگاهی گام به گام به نحوه استفاده از برنامه نویسی پایتون برای انجام آسان کار تشخیص چهره بیندازیم. برای این کار می توانیم از کتابخانه های OpenCV موجود از طریق برنامه نویسی پایتون استفاده کنیم. ما از OpenCV برای انجام وظایف مختلف بینایی کامپیوتری استفاده می کنیم. دارای بسیاری از ویژگی های داخلی است که می توانیم برای این منظور از آنها استفاده کنیم.
تشخیص چهره شامل اسکن تصویر ورودی برای صورت انسان است. وظیفه بخش بندی تصویر برای دیدن چهره ها زمان بر است. تصویر باید به تعداد زیادی بلوک مربع تقسیم شود. سپس هر بلوک باید برای یافتن صورت انسان اسکن شود. تشخیص را می توان با استفاده از “طبقه بندی ها” در برنامه نویسی پایتون استفاده می شود. پیچیدگی به دلیل این واقعیت است که تعداد طبقه بندی کننده های مورد استفاده برای هر بلوک بسیار زیاد است. این تقریباً چند هزار است. بنابراین، اسکن هر بلوک زمان و فضای زیادی را می گیرد.
برای تکمیل این کار در زمان کمتر از آبشار استفاده می کنیم. ما از یک آبشار برای کاهش تکلیف اسکن به چندین مرحله استفاده می کنیم. بنابراین، برای هر بلوک از تصویر، مراحل آبشاری زیادی وجود خواهد داشت. این به این معنی است که ما تقریباً ابتدا آزمایش ها را اجرا خواهیم کرد. سپس، اگر بگذرند، صفات بیشتری با هم تطبیق داده می شود; و غیره اگر تمام مراحل بگذرد، آنگاه فرد شناسایی خواهد شد.
در این مثال از “طبقه بندی آبشاری” در OpenCV برای تشخیص چهره.
مراحل برای تشخیص چهره با استفاده از برنامه نویسی پایتون گنجانده شده است
1. وابستگی های مورد نیاز را وارد کنید
برای این کار باید وابستگی ها را وارد کنیم. آنها در استفاده از ویژگی های OpenCV در سراسر برنامه کمک خواهند کرد.
در اینجا می توانیم از دستور زیر استفاده کنیم:
import cv2
2. رسانه ورودی را وارد کنید
این اولین قدم در دستیابی به تشخیص چهره با استفاده از برنامه نویسی پایتون است. رسانه ورودی می تواند یک تصویر ورودی یا یک ویدیوی ورودی باشد (مانند تصویری که توسط وب کم در زمان واقعی گرفته شده است). به خاطر این پروژه، ما روی یک تصویر ورودی کار خواهیم کرد. این روند برای یک مجموعه ویدیویی یکسان خواهد ماند. اما در این صورت باید مراحل را برای هر فریم از دنباله ویدیو تکرار کنیم.
برای این کار می توانیم از دستور زیر استفاده کنیم:
input_mage = cv2.imread( “<File Path>” )
در اینجا کاربر باید تعریف کند
3. تعریف یک طبقه بندی کننده آبشاری
ما قبلاً مفهوم استفاده از یک طبقهبندی کننده آبشاری برای تشخیص چهره را دیدهایم. برای این کار میتوانیم از “HAAR Cascade Classifier” استفاده کنیم. HAAR Cascade یک الگوریتم تشخیص اشیا است که از ویژگی های مستطیلی برای تشخیص استفاده می کند. کد نوشته شده یک کد XML از پیش تعریف شده برای تشخیص ویژگی های مختلف یک چهره است. ما می توانیم ویژگی هایی مانند صورت جلو، چشم ها، لبخند، لب ها و غیره را تشخیص دهیم. در این پیاده سازی بر روی جلو تمرکز خواهیم کرد. از اینجا می توانیم از کد XML طبقه بندی کننده HAAR Cascade مناسب برای همان استفاده کنیم.
ما استفاده خواهیم کرد طبقه بندی آبشار HAAR برای صورت با OpenCV برای این کار از دستور زیر استفاده می کنیم:
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
در اینجا آبشار به عنوان “face_cascade” برای استفاده بیشتر ذخیره می شود. می توانید فایل “haarcascade_frontalface_default.xml” را در لینک ذکر شده در بالا پیدا کنید. همچنین در مخزن GitHub حاوی کد کامل موجود است.
4. پیش پردازش تصویر برای تشخیص چهره
برای انجام تشخیص دقیق چهره، تصویر باید از قبل پردازش شده باشد. این شامل مرحله میانی تبدیل تصویر ورودی به سطوح خاکستری در اینجا است. هنگامی که بعداً طبقهبندیکنندههای آبشاری را اعمال میکنیم، این نتایج بهتری را تضمین میکند.
برای همین از دستور زیر استفاده خواهیم کرد:
gray_image = cv2.cvtColor( input_image, cv2.COLOR_BGR2GRAY )
در اینجا تابع ()cvtColor برای تبدیل “input_image” از BGR به Grayscale استفاده می شود. این تصویر تبدیل شده به عنوان “gray_image” برای استفاده بیشتر ذخیره می شود.
5. تشخیص چهره را انجام دهید
این مرحله مرحله اصلی است. در اینجا ما HAAR Cascade Classifier را به تصویر پیش پردازش شده اعمال می کنیم. این روشی است که ما با استفاده از برنامه نویسی پایتون، کار تشخیص چهره واقعی را انجام می دهیم.
برای این کار از دستورات زیر استفاده خواهیم کرد:
faces_list = face_cascade.detectMultiScale( gray_image, scaleFactor = 1.1, minNeighbors = 5) for (x_coordinate, y_coordinate, width, height) in faces: cv2.rectangle(image, (x_coordinate, y_coordinate), (x_coordinate + width, y_coordinate + height), (0, 255, 0), 2)
در این دستور از تابع detectMultiScale() برای تشخیص یک شی استفاده می شود. در اینجا “face_cascade” در تصویر خاکستری شناسایی می شود. این تصویر در مقیاس خاکستری به عنوان “gray_image” در اینجا ارسال می شود.
در اینجا «scaleFactor» برای جبران تحریف هایی که ممکن است رخ دهد استفاده می شود. این اعوجاج زمانی اتفاق میافتد که چهرههای یافت شده به اندازه مورد نیاز مقیاس نشده باشند. برخی از چهره ها ممکن است خیلی دور باشند، در حالی که برخی دیگر ممکن است در حین گرفتن عکس خیلی به دوربین نزدیک باشند. برای مقیاس و تغییر اندازه مناسب، «scaleFactor» باید در صورت نیاز تغییر کند. مقدار استفاده شده برای تصویر ورودی داده شده در اینجا “1.1” است. در صورت نیاز می توان آن را به “1.2” یا “1.3” تغییر داد.
پارامتر “minNeighbors” اندازه پنجره متحرک را برای تشخیص اشیا مشخص می کند. در اینجا مقدار روی ‘5’ تنظیم شده است.
چهره های یافت شده در لیستی به نام “faces_list” ذخیره می شوند که سپس در عبارت بعدی استفاده می شود.
خط بعدی برنامه شامل حلقه زدن تمام چهره های موجود در لیست “faces_list” است. در مرحله بعد، یک کادر مستطیل شکل در اطراف آنها می کشیم. به این ترتیب، چهره های شناسایی شده در تصویر قبلاً در جعبه قرار می گیرند تا در مرحله بعد نمایش داده شوند.
6. نمایش چهره های شناسایی شده به عنوان خروجی
این مرحله نهایی برنامه را نشان می دهد. در این قسمت چهره های شناسایی شده را نشان خواهیم داد.
برای همین می توانیم از دستور زیر استفاده کنیم:
cv2.imshow("Faces found", input_image)
نتایج زیر پس از اجرای کد کامل به دست آمده است.
این تصویر ورودی برای همان داده شده به شرح زیر بود:

این تصویر منبع پس از اجرای کد در تصویر بالا دریافت شد:

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