رزبری پای
۰

آموزش راه‌اندازی تشخیص چهره با رزبری پای

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

چهره شناسایی شده توسط رزبری پای

در این مقاله به شما نشان خواهیم داد که چطور رزبری پای خود را برای تشخیص چهره‌ی خود و خانواده‌ یا دوستانتان آموزش دهید. در ادامه نیز به تنظیمات لازم رزبری پای برای ارسال ایمیل هنگامی که چهره‌ی فردی شناسایی می‌شود، خواهیم پرداخت.

تشخیص چهره با رزبری پای چگونه انجام می‌شود؟

در این آموزش برای تشخیص چهره توسط رزبری پای، ازکتابخانه‌های OpenCV و face_recognition و نیز پکیج‌های imutils استفاده خواهیم کرد و براساس مجموعه‌ای از تصاویری که آن‌ها را به عنوان یک مجموعه‌داده (dataset) جمع‌آوری می‌کنیم، رزبری پای را آموزش می‌دهیم. برنامه‌ا‌ی به زبان پایتون تحت عنوان train_model.py را به منظور تحلیل تصاویر موجود در مجموعه‌داده خود اجرا خواهیم‌کرد و نگاشتی میان نام‌ها و تصاویر موجود در فایل encodings.pickle  ایجاد می‌کنیم. پس از اتمام آموزش به رزبری پای، برنامه‌ی دیگری تحت عنوان facial_req.py را به منظور پیداکردن و شناسایی چهره‌ها اجرا خواهیم‌کرد. علاوه‌براین کد دیگری برای ارسال یک ایمیل، زمانی که چهره‌ای تشخیص داده می‌شود، به پروژه اضافه خواهیم کرد.

با توجه به مدل رزبری پای و سرعت اینترنت شما، این پروژه‌ی تشخیص چهره با رزبری پای حداقل 3 ساعت طول می‌کشد. بخش عمده‌ی این آموزش مبنی بر اجرای دستورات در خط فرمان است. چنان‌چه با دستورات خط فرمان بر روی رزبری پای آشنایی ندارید، بهتر است ابتدا در این مورد مطالعه کنید.

سخت‌افزار‌های مورد نیاز برای تشخیص چهره با رزبری پای

  • رزبری پای 3 یا 4 (برای انجام این پروژه رزبری‌پای Zero W توصیه نمی‌شود).
  • منبع تغذیه، کارت microSD، صفحه‌کلید، ماوس، صفحه‌نمایش و یک کابل HDMI.
  • یک وب‌کم (Webcam) همراه با کابل USB
  • یک صفحه نمایش لمسی 7 اینچی برای رزبر‌ی پای (اختیاری).
  • یک استند برای صفحه‌نمایش لمسی رزبری پای (اختیاری).

بخش اول: نصب ابزارهای لازم برای تشخیص چهره با رزبری پای

در این مرحله، OpenCV، face_recognition و imutils را نصب می‌کنیم و swapfile خود را به طور موقت تغییر می‌دهیم تا رزبری‌پای را برای یادگیری ماشین و تشخیص چهره آماده کنیم.

OpenCV : یک کتابخانه‌ی نرم‌افزاری متن‌باز برای پردازش و تحلیل بلادرنگ تصویر و ویدیو با قابلیت‌های یادگیری ماشین می‌باشد.

Face_recognition: یکی از پکیج‌های پایتون است که از آن برای محاسبه‌ی کادر دور چهره، جای‌دادن چهره و مقایسه‌ی چهره‌ها در مجموعه‌داده استفاده می‌شود.

Imutils: مجموعه‌ای از توابعی‌ است که از آن‌ها برای ایجاد توابع پایه‌ای پردازش‌تصویر و تسریع محاسبات OpenCV  بر روی رزبری پای استفاده می‌شود.

برای تکمیل این بخش از آموزش تشخیص چهره با رزبری پای، حداقل 2 ساعت زمان نیاز دارید. در ادامه مدت‌زمانی که اجرای هر یک از دستورات بر روی یک رزبری پای 8 گیگابایتی با یک اتصال وای‌فای و سرعت دانلود 40.5 مگابیت‌برثانیه طول می‌کشد را ثبت‌کرده‌ایم.

1- وب‌کم خود را به یکی از پورت‌های USB رزبری پای خود متصل نمایید. چنانچه از یک دوربین رزبری‌پای برای تشخیص چهره استفاده می‌کنید، لازم است چندین گام دیگر را نیز انجام دهید. لطفا به بخش “استفاده از دوربین رزبری‌پای به جای یک وب‌کم” در انتهای این آموزش مراجعه کنید.

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

2- رزبری‌پای خود را راه‌اندازی کنید. اگر با راه‌اندازی رزبری‌پای آشنایی ندارید می‌توانید مقاله‌ی آموزش راه‌اندازی رزبری پای برای مبتدیان و برای کنترل یک رزبری‌پای از راه دور مقاله‌ی آموزش راه‌اندازی رزبری پای به صورت هدلس را مطالعه کنید. توصیه می‌شود قبل از شروع هر پروژه‌ای یک ترمینال باز کنید (بدین منظور می‌توانید از کلیدهای میانبر CTRL + T  استفاده نمایید) و دو دستور ‘sudo apt-get update’ و ‘sudo apt-get upgrade’ را اجرا کنید.

3- با اجرای دستورات زیر در ترمینال خود، OpenCV را نصب کنید. هر یک از دستورات را کپی و در ترمینال رزبری‌پای خود پِیست کنید، سپس کلید Enter را فشار دهید و اجازه دهید تا فرآیند نصب کامل شود، سپس دستور بعدی را اجرا کنید. چنانچه‌ با سوال “Do you want to continue” روبه‌رو شدید، کلید y و سپس Enter را فشار دهید.

نصب OpenCV در ترمینال رزری پای
Terminal CommandLength of time to run
1sudo apt install cmake build-essential pkg-config gita few seconds
2sudo apt install libjpeg-dev libtiff-dev libjasper-dev libpng-dev libwebp-dev libopenexr-deva few seconds
3sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libdc1394-22-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev4 minutes
4sudo apt install libgtk-3-dev libqtgui4 libqtwebkit4 libqt4-test python3-pyqt54.5 minutes
5sudo apt install libatlas-base-dev liblapacke-dev gfortran1 minute
6sudo apt install libhdf5-dev libhdf5-1031 minute
7sudo apt install python3-dev python3-pip python3-numpya few seconds

قبل از نصب سایر پکیج‌های لازم برای تشخیص چهره، لازم است سایز فایل swap را افزایش دهیم. بدین منظور دستور زیر را در ترمینال وارد کنید.

sudo nano /etc/dphys-swapfile

زمانی که فایل باز شد، خط “CONF_SWAPSIZE=100” را کامنت کنید و “CONF_SWAPSIZE=2048” را در خط بعدی اضافه کنید. سپس کلیدهای Ctrl-X, Y را فشار دهید و بعد از آن با فشردن کلید Enter تغییراتی که در فایل swap اعمال کردید را ذخیره نمایید.

این تغییر موقتی است و پس از کامل شدن فرآیند نصب OpenCV ، آن را به مقدار اولیه تغییر خواهیم‌داد.

برای مشاهده‌ی تغییرات اعمال شده، لازم است فایل swap را با کمک دستور زیر ری‌استارت کنیم.

sudo systemctl restart dphys-swapfile

بیایید با وارد کردن دستورات زیر  در ترمینال خود به صورت جداگانه، نصب پکیج را از سر بگیریم. زمان تقریبی برای اجرای هر دستور با یک رزبری‌پای 4، مدل 8 گیگابایت نیز در جدول زیر ذکر شده‌است.

Length of time to runTerminal Commands
7 minutesgit clone https://github.com/opencv/opencv.git
2 minutesgit clone https://github.com/opencv/opencv_contrib.git
less than a secondmkdir ~/opencv/build
less than a secondcd ~/opencv/build
5 minutescmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D CMAKE_SHARED_LINKER_FLAGS=-latomic \
-D BUILD_EXAMPLES=OFF ..
One hour and 9 minutesmake -j$(nproc)
a few secondssudo make install
a few secondssudo ldconfig

پس از نصب موفقیت‌آمیز OpenCV، با وارد کردن دستور زیر در ترمینال فایل swap را به وضعیت اولیه‌‌اش باز می‌گردانیم.

sudo nano /etc/dphys-swapfile

زمانی که فایل باز شد، خط “CONF_SWAPSIZE=100” را از حالت کامنت خارج کنید و خط “CONF_SWAPSIZE=2048” را نیز کامنت یا حذف کنید. سپس کلیدهای Ctrl-X, Y را فشار دهید و بعد از آن با فشردن کلید Enter تغییراتی که در فایلswap   اعمال کردید را ذخیره نمایید.
مجدداً با وارد کردن دستور زیر در ترمینال، فایل swap را ری‌استارت کنید تا تغییرات اعمال شوند.

sudo systemctl restart dphys-swapfile

4- در این مرحله، face_recognition  را با دستور زیر نصب کنید.این فرآیند حدود 19 دقیقه طول می‌کشد.

pip install face-recognition

5- سپس imutils را با کمک دستور زیر نصب کنید.

pip install imutils

چنانچه در بخش دوم، هنگام آموزش رزبری‌پای خود (بخش2- گام 15) با پیغام خطای “No module named imutils” یا “No module named face_recognition” روبه‌رو شدید، مجدداً آن را با استفاده از pip2   (به جای pip)  نصب کنید.

بخش دوم: آموزش یک مدل برای تشخیص چهره توسط رزبری‌پای

در این بخش به آموزش رزبری پای برای چهره‌هایی که می‌خواهیم شناسایی شوند، می‌پردازیم. با دانلود کد پایتون برای تشخیص چهره شروع می‌کنیم.

1- با فشردن کلیدهای Ctrl-T، یک ترمینال جدید باز کنید.

2- فایل محتوی کد پایتون موردنیاز را کپی کنید.

git clone https://github.com/carolinedunn/facial_recognition

3- اکنون بیایید مجموعه‌داده‌‌ی خود را که برای آموزش رزبری‌پای استفاده خواهیم‌کرد بسازیم. از دسکتاپ رزبری‌پای خود، با کلیک بر روی آیکن فولدر، File Manager را باز کنید.

4- سپس به مسیرfolder facial_recognition folder > dataset  بروید.

5- در فولدر dataset ، یک فولدر جدید بسازید؛ بدین صورت که کلیک راست کرده و New Folder را انتخاب کنید.

ساخت یک new folder در فایل dataset

6- نام فولدر جدیدی که ساختید را به نام کوچک خود تغییر دهید.

7- سپس با کلیک بر روی OK ساخت فولدر خود را به پایان برسانید. این فولدر، محلی است که شما عکس‌های خود را برای آموزش مدل در آن قرار خواهید داد.

8- همچنان در File Manager، به فولدر facial_recognition  بروید و برنامه‌ای به زبان پایتون تحت عنوان headshots.py  را باز کنید.

9- در خط سوم از این برنامه، نام Caroline را با نام فولدر جدیدی که در گام 6 ساختید، جایگزین کنید. توجه کنید نام شما در فولدر dataset با نام شما در خط سوم از این برنامه حتما باید یکسان باشند.

10- در اِدیتور Geany بر روی آیکن “Paper Airplane”  کلیک کنید تا برنامه‌ی headshots.py  اجرا شود.

11- برای گرفتن عکس از خود، وب‌کم را مقابل چهره‌‌تان قرار دهید و کلید space را فشار دهید. هر بار که کلید space را فشار دهید، عکس جدیدی از شما گرفته خواهد شد. پیشنهاد می‌دهیم حداقل 10 عکس از زوایای مختلف از چهره‌ی خود بگیرید. اگر از عینک استفاده می‌کنید، می‌توانید چندین عکس با  عینک و چندین عکس بدون عینک بگیرید.این تصاویر برای آموزش مدل ما استفاده خواهد شد. پس گرفتن عکس‌ها، کلید Esc را فشار دهید.

گرفتن 10 عکس از زوایای مختلف برای شناسایی چهره شما به رزبری پای

12- از مسیر File Manager > dataset folder > your name folder  می‌توانید عکس‌های خود را بررسی کنید. برای مشاهده‌ی یک عکس، بر روی آن دابل کلیک کنید همچنین با کلیک بر روی پیکان موجود در گوشه سمت چپ این پنجره، می‌توانید بین تمام عکس‌هایی که گرفتید، جابه‌جا شوید.

عکس‌های گرفته شده در پوشه‌ای که در dataset ساختید ذخیره می‌شوند

13- برای افزودن یکی از اعضای خانواده‌تان، مراحل 5 تا 10 را تکرار کنید. اکنون مجموعه‌داده‌ی ما آماده است و می‌توانیم مدل خود را به رزبری‌ آموزش دهیم.

14- در یک ترمینال جدید، به پوشه‌ی facial_recognition  بروید:

cd facial_recognition

حدود 3 تا 4 ثانیه طول می‌کشد تا رزبری پای هر یک از تصاویر موجود در مجموعه ‌داده‌ شما را تحلیل کند. برای مثال برای مجموعه‌ داده‌ای شامل 20 عکس، حدود 15 دقیقه طول می‌کشد تا رزبری‌پای تصاویر را تحلیل و فایل encodings.pickle  را بسازد.

15- برای آموزش یک مدل به رزبری‌پای دستور زیر را اجرا کنید:

python train_model.py

چنانچه پیغام خطایی مشاهده کردید که ماژول‌های imutils یا face_recognition نصب نشده‌اند، آن‌ها را مجدداً با pip2 به جای pip نصب کنید.

نصب ماژول face_recognition در ترمینال رزبری پای

توضیحات کد train_model.py:

مجموعه داده:  کد train_model.py، تصاویر موجود در فولدر dataset را تحلیل خواهد کرد. تصاویر را درون پوشه‌هایی با نام شخص مرتب کنید. برای مثال فولدر جدیدی به نام Paul درون فولدر dataset بسازید و تمام عکس‌های چهره‌ی Paul را در این فولدر قرار دهید.

رمزنگاری: کد train_model.py، یک فایل تحت عنوان encoding.pickle می‌سازد که شامل استانداردهایی برای شناسایی چهره‌ها در گام بعدی می‌باشد.

روش شناسایی: در اینجا از روش شناسایی HOG (Histogram of Oriented Gradients)  استفاده می‌کنیم (HOG یک توصیف­گر ویژگی است که برای استخراج ویژگی از تصاویر استفاده می­شود).

اکنون بیایید مدلی که آموزش دادیم را تست کنیم.

16- برا تست این مدل دستور زیر را در ترمینال وارد نمایید:

python facial_req.py

پس از چند ثانیه نمای وب‌کم  شما باید باز شود. وب‌کم خود را مقابل چهره‌تان قرار دهید. اگر یک کارد زردرنگ دور صورت خود با نام خودتان ببینید، به این معناست که مدل به درستی آموزش داده شده تا چهره‌ی شما را تشخیص دهد.

تبریک می‌گیوییم. شما توانستید رزبری‌پای خود را برای تشخیص چهره آموزش دهید. چنانچه شخص دیگری را در گام 11 اضافه کرده‌اید، وب‌کم را مقابل او قرار دهید و دوباره مدل را تست کنید. با فشردن کلید q ، برنامه متوقف خواهد شد.

بخش سوم: تنظیم اعلان‌های ایمیل هنگام تشخیص چهره با رزبری پای

در این بخش، اعلان‌های ایمیل را به کد پایتون تشخیص چهره‌ خود اضافه خواهیم‌کرد. با این تنظیمات، شما می توانید حتی بیرون از خانه خود، از ورود اعضای خانواده‌تان مطلع شوید.

در اینجا سرویس Mailgun  را به خاطر سادگی آن انتخاب کرده‌ایم؛ شما می‌توانید کد را با هر سرویس ایمیل دلخواهی تغییر دهید. چنانچه از سرویس Mailgun استفاده می‌کنید، ابتدا لازم است یک حساب کاربری بسازید. در این پروژه از دامنه سندباکس پیش‌فرض در Mailgun استفاده کردیم.

1- در مرورگر خود mailgun.com را وارد کنید.

2- به حساب کاربری خود وارد شوید یا یک حساب کاربری بسازید.

3- سپس به دامنه سندباکس خود بروید و بر روی API  و سپس Python کلیک کنید تا اعتبار API شما معلوم شود.

تنظیم اعلان ایمیل برای تشخیص چهره با رزبری پای با استفاده از API

4- از مسیر file manager > facial_recognition، کد پایتون send_test_email.py  را باز کنید.

5- در خط نهم از این کد، عبارت “YOUR_DOMAIN_NAME” را با دامنه Mailgun خود جایگزین کنید.

6- در خط دهم به جای “YOUR_API_KEY” کلید API مربوط به Mailgun خود را وارد کنید.

7- در خط دوازدهم نیز کافی است آدرس ایمیل خود را وارد کنید.

8- در این مرحله، کد send_test_email.py را اجرا کنید. اگر کد وضعیت 200 و پیغام “Message: Queued” را دریافت کردید، ایمیل خود را چک کنید.

زمانی که این مرحله را با موفقیت انجام دادید، ایمیل زیر را دریافت خواهید کرد. البته ممکن است این ایمیل در فولدر اسپم قرار گرفته باشد.

ایمیل دریافتی پس از تنظیم اعلان ایمیل

افزودن اعلان‌های ایمیل برای تشخیص چهره

9- از مسیر file manager > facial_recognition، کد پایتون facial_req_email.py را باز کنید.

10- سپس مراحل 5 تا 7 را تکرار کنید.

11- تغییرات اعمال شده بر روی کد facial_req_email.py را ذخیره کنید.

12- ترمینال خود را باز کنید و دستور زیر را برای انجام تشخیص چهره همراه با اعلان ایمیل اجرا کنید.

python facial_req_email.py

مانند مرحله قبل، نمای وب‌کم شما باید باز شود. وب‌کم را مقابل چهره خود قرار دهید. در صورتی که یک کادر زردرنگ دور چهره شما با نام شما نمایش داده شود، یعنی مدل به درستی برای تشخیص چهره‌تان آموزش داده شده‌است.

اگر همه چیز به درستی انجام شده باشد، در ترمیتال خود نام شخصی که چهره او شناسایی شده را خواهید دید و همچنین پس از آن عبارت”Take a picture”  را می‌بینید(که نشان می‌دهد وب‌کم در حال گرفتن عکس است) و در ادامه کد وضعیت 200 نمایش داده می‌شود (که نشان می‌دهد ایمیلی برایتان ارسال شده‌است).

چهره‌ی شناسایی شده توسط رزبری پای همراه با اسم و ارسال موفقیت آمیز ایمیل

اکنون ایمیل خود را چک کنید. خواهید دید ایمیلی دریافت کرده‌اید که شامل نام شخصی است که چهره او شناسایی شده و عکسی که از او گرفته شده است.

ایمیل دریافتی پس از شناسایی چهره

لازم به ذکر است که طبق کد facial_req_emqil.py،  ایمیل ها زمانی ارسال می‌شوند که شخص جدیدی توسط این الگوریتم شناسایی شود. به خاطر اینکه با هر بار شناسایی چهره، ایمیلی ارسال نشود. همچنین با استفاده از نمایشگر 7 اینچ، می‌توانید تصویر وب کم را به کاربر نمایش دهید.

استفاده از دوربین رزبری‌پای به جای یک وب‌کم

در این آموزش از یک وب‌کم استفاده شد. چنانچه مایل به استفاده از یک دوربین پای هستید، نیاز خواهید داشت دوربین پای را فعال و تغییراتی را در کد faicial_req.py  اعمال نمایید.

1- از قسمت تنظیمات رزبری‌پای، دوربین را فعال کنید. بر روی ok کلیک و رزبری‌پای خود را مجدداً راه‌اندازی کنید.

تغییر تنظیمات برای جایگزینی دوربین رزبری پای به جای وب کم

2- ترمینال خود را باز کنید و با استفاده از دستور زیر، دوربین پای را نصب نمایید.

pip install picamera[array]

3- در بخش دوم، به جای اجرای فایل headshots.py، فایل headshots_picam.py را اجرا کنید.

python headshots_picam.py

4- در فایل‌های facial_req.py و facial_req_email.py،  خط­ زیر را کامنت کنید.

vs = VideoStream(src=0).start()

خط زیر را از حالت کامنت خارج کنید:

vs = VideoStream(usePiCamera=True).start()t

5- تغییرات را ذخیره و فایل را اجرا کنید.

اضافه کردن دستورات مرتبط با دوربین رزبری پای

افزودن اشخاص با استفاده از تصاویر آن‌‌ها برای تشخیص چهره با رزبری‌پای

شما می‌توانید سایر اعضای خانواده‌ یا دوستانتان را برای شناسایی به رزبری‌خود اضافه کنید. اگر آن‌ها برای اجرای hesdshots.py و گرفتن تصاویرشان در دسترس نیستند، می‌توانید تصاویرشان را بر روی رزبری خود آپلود کنید. تنها نکته مهم این است که تصاویر واضحی از چهره آن‌ها پیدا کنید و آن‌ها را در فولدرهای مجزایی با نام همان اشخاص دسته‌بندی کنید.

ثبت چهره‌های اشخاص شناسایی شده در پوشه‌های مجزا به اسم هر شخص

امیدواریم از این مقاله آموزشی لذت برده‌باشید، با استفاده از این آموزش می‌توانید قابلیت تشخیص چهره با رزبری پای را به پروژه‌های خود اضافه کنید و تجربه‌های جدیدی کسب کنید. ما مشتاقانه منتظر سوالات و نظرات شما هستیم، پس آن‌ها را با ما در بخش دیدگاه در میان بگذارید.

مقالات مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات