فهرست مطالب:

زنگ در با تشخیص چهره: 7 مرحله (همراه با تصاویر)
زنگ در با تشخیص چهره: 7 مرحله (همراه با تصاویر)

تصویری: زنگ در با تشخیص چهره: 7 مرحله (همراه با تصاویر)

تصویری: زنگ در با تشخیص چهره: 7 مرحله (همراه با تصاویر)
تصویری: آموزش کامل قسمت تنظیمات تماس ها در آیفون | Phone Settings iphone 2024, جولای
Anonim
زنگ در با قابلیت تشخیص چهره
زنگ در با قابلیت تشخیص چهره

انگیزه

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

اطلاعات کلی

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

سطح تخصص

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

مرحله 1: مواد

مواد
مواد

لیست محصولات با حداقل شرایط:

تولید - محصول ارتباط دادن اظهار نظر
تمشک پای 3b RPi پیوند RPi 4 را نشان می دهد زیرا عملکرد بهتری دارد و تقریباً برابر قیمت RPi 3b است.
میکرو SD آمازون کارت حافظه micro SD 16 گیگابایت یا بیشتر این کار را انجام می دهد. اما کارت های 16 گیگابایتی در آمازون تقریباً قیمت کارت های 32 گیگابایتی را دارند.
دوربین رزبری پای آمازون دوربین v1 ارزان تر است ، اما v2 بهتر است و مدت زمان بیشتری پشتیبانی می شود.
کابل فلکس FPC 15 پین آمازون طول در واقع بستگی به شرایط انجام این پروژه دارد. اگر فقط می خواهید یک نمونه اولیه بسازید ، کابل فلکس اصلی کار را انجام می دهد.
منبع تغذیه 5v میکرو USB آدافروت این یکی هرگز ملاقات نکرد! کیفیت عالی. (روی عکس نیست)
دکمه های بازی با LED داخلی آمازون اندازه مورد نظر خود را انتخاب کنید ، اما طراحی CAD بر اساس دکمه های 60 میلی متری است
مقاومت ها آمازون شما فقط به چند مقاومت 1k و 100 اهم احتیاج دارید. معمولی 1/4 وات خوب است.
خازن ها 0.1 uF آمازون سه خازن مورد نیاز است. (روی عکس نیست)
سیم جامپر / کابل روبان آمازون آمازون اگر می خواهید در هزینه های خود صرفه جویی کنید ، می توانید از کابل روبان درایو فلاپی قدیمی نیز استفاده کنید (به عکس مراجعه کنید).
لوله جمع کننده / نوار برقی آمازون آمازون

ابزارهای مورد نیاز:

ابزار ضروری؟ اظهار نظر
آهن لحیم کاری آره
مولتی متر آره
استریپر سیمی آره یا می توانید از چاقو/قیچی استفاده کنید.
دستگاه برش لیزری خیر
چاپگر سه بعدی خیر
گیره ها خیر برای نگه داشتن جعبه در مرحله آزمایش مفید است.

ملاحظات:

برای افزایش دسترسی به پروژه ، تصمیم گرفتم آن را با استفاده از Raspberry Pi 3b توسعه دهم. در حالی که دسترسی را افزایش می دهد ، قابلیت های برنامه را کاهش می دهد زیرا RPi به این سرعت نیست. اگر به دنبال یک کامپیوتر تخته سریعتر هستید ، بهتر است نگاهی به NVIDIA Jetson Nano بیندازید

مرحله 2: سیم کشی

سیم کشی
سیم کشی
سیم کشی
سیم کشی
سیم کشی
سیم کشی

نمودار شماتیک برای این مرحله بسیار آموزنده است و کاملاً خود توضیحی است. در صورتی که در زمینه الکترونیک تازه کار هستید ، می توانید از تصویر افسانه استفاده کنید. مقدار جزء (در صورت وجود) در نمودار شماتیک بیان شده است. ممکن است عکس ها به نحوه ساختن مدار کمک کنند. اساساً ، من تمام اجزاء را تا آنجا که ممکن است به دکمه بازی متصل کردم ، که باعث می شود نمای کلی از آنچه در حال رخ دادن است ، ایجاد شود.

ملاحظات:

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

مرحله 3: ساختن پوشش

ساخت پوشش
ساخت پوشش
ساخت بدنه
ساخت بدنه
ساخت بدنه
ساخت بدنه
ساخت بدنه
ساخت بدنه

بدنه دوربین

بسیاری از پوسته های دوربین را می توان آزادانه از اینترنت بارگیری کرد. بنابراین ، من انتخاب نمی کنم که چرخ را دوباره اختراع کنم و یک قاب اصلی اما زیبا را از اینترنت انتخاب کنم: thingiverse.com - کیف/محفظه دوربین Raspberry pi. (فریاد بر طراح VGer.)

بدنه چراغ راهنمایی

برای پوشش چراغ راهنما ، من یک جعبه کوچک در Autodesk Fusion 360 (که به صورت رایگان قابل بارگیری است ، به نکات توجه کنید) طراحی کردم که با همه سخت افزارها مطابقت دارد. در پیوست ، می توانید فایلی را که من به شرکت برش لیزری محلی خود ارسال کرده ام ، بیابید. بدین ترتیب ، طراحی بر اساس ضخامت صفحه 6 میلی متر است. با این حال ، اگر می خواهید موارد را تنظیم کنید ، می توانید با استفاده از این پیوند به انواع قالب های فایل دسترسی پیدا کنید. همانطور که در تصاویر نشان داده شده است ، در صورت عدم دسترسی به برش لیزری ، می توانید از یک جعبه مقوایی نیز استفاده کنید. من از جعبه مقوایی روی تصویر برای نمونه سازی استفاده کردم و مانند یک جذابیت عمل می کند.

مونتاژ تقریباً مستقیم است:

  1. سوئیچ های Arcade را سوار کنید.
  2. اطمینان حاصل کنید که سیم های زنگ در را آزاد نگه دارید.
  3. کابل روبان را به RPi وصل کنید.
  4. RPi را روی پنل پایینی پیچ کنید.
  5. سیمهای زنگ در را به کانکتور سیم وصل کرده و آن را به پنل پایینی نیز وصل کنید.
  6. Picamera را به RPi وصل کنید.
  7. در یکی از پنل های جانبی سیم تعویض زنگ درب و سیم برق RPi را سوراخ کنید.

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

ملاحظات:

Autodesk Fusion 360 برای علاقمندان آزادانه در دسترس است! اگر می خواهید نسخه خود را دریافت کنید ، از این پیوند دیدن کنید: autodesk.com - Fusion 360 For Hobbyists. برخی اصطلاحات وجود دارد ، بنابراین آنها را بخوانید و به کار ببرید. این اولین پروژه من با Fusion 360 بود و من تجربه زیادی در استفاده از نرم افزار CAD ندارم ، اما باید بگویم که من واقعاً از نرم افزار و تمام ابزارهای اضافی همراه Fusion 360 خوشم می آید

مرحله 4: پیکربندی دوربین

پیکربندی دوربین
پیکربندی دوربین
پیکربندی دوربین
پیکربندی دوربین
پیکربندی دوربین
پیکربندی دوربین

فرض بر این است که شما Raspbian را نصب کرده اید و در حالت GUI اجرا می شود. اگر هنوز Raspbian را نصب نکرده اید ، می توانید این مقاله را دنبال کنید: raspberrypi.org - نصب تصاویر سیستم عامل. اگر Raspbian را بوت می کنید ، باید دسکتاپی را مشاهده کنید که در تصاویر نشان داده شده است.

بیایید دوربین را روی RPi پیکربندی کنیم و ببینیم آیا کار می کند یا خیر! روشی که در اینجا توضیح داده شده است مستقیماً از raspberrypi.org - Documentation است. ابتدا ، اجازه دهید با اجرای دستورات زیر در پنجره ترمینال ، آخرین بسته ها (از جمله سیستم عامل دوربین) را به روز کنید (تصاویر را ببینید):

به روز رسانی sudo apt

sudo apt ارتقا کامل

در مرحله بعد ، دوربین باید با استفاده از دستور زیر فعال شود:

sudo raspi-config

در منو ، به 5. گزینه Interfacing Options -> P1 Camera بروید. انتخاب کنید تا دوربین فعال شود و با اجرای مجدد RPi:

راه اندازی مجدد

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

raspistill -v -o /home/pi/test.jpg

تصویر در: /home /pi ذخیره می شود.

مرحله 5: راه اندازی Docker

راه اندازی Docker
راه اندازی Docker
راه اندازی Docker
راه اندازی Docker
راه اندازی Docker
راه اندازی Docker
راه اندازی Docker
راه اندازی Docker

برای جلوگیری از وابستگی و خطاهای نصب ، تصمیم گرفتم یک تصویر Docker سفارشی برای این پروژه بسازم (به wikipedia.org - Docker مراجعه کنید). اگر هرگز از داکر استفاده نکرده اید و چیزی نشنیده اید ، نگران نباشید ، من قدم به قدم نحوه استفاده از آن را در این پروژه توضیح خواهم داد. در واقع ، فوق العاده آسان است! در صورتی که می خواهید این پروژه را با نصب محلی (به جای در ظرف Docker) اجرا کنید ، من نکاتی را به شما ارائه می دهم. اما بسیار توصیه می شود از تصویر Docker استفاده کنید. به هر حال ، من آن را می سازم تا اجرای این پروژه را برای شما آسان کنم!

داکر چیست؟

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

این پروژه اولین بار است که از Docker استفاده می کنم و به سادگی عالی است! شاید درباره virtualenv یا Anaconda for Python چیزی شنیده باشید؟ خوب ، Docker از این نظر تقریباً مشابه است که می توانید به راحتی نسخه های بسته را مدیریت کرده و نسخه های مختلف پایتون را در یک سیستم میزبان با استفاده از یک محیط متفاوت (یا ظرفی که در Docker نامیده می شود) اجرا کنید. اما ، در مقایسه با virtualenv و Anaconda ، Docker بسیار قوی تر است زیرا فقط شامل بسته های پایتون نیست. در واقع ، در یک ظرف Docker ، می توانید بسته های یک سیستم عامل دلخواه را نیز نصب و مدیریت کنید. به عنوان مثال ، وب سایتی را که می خواهید مهاجرت کنید در نظر بگیرید که یک چارچوب وب پایتون (به عنوان مثال Django) را با پایگاه داده (به عنوان مثال MySQL) اجرا می کند. بدون وجود ظرف Docker ، باید همه بسته ها را روی سرور جدید نصب کنید ، فرآیندی که مستعد خطا و اشکالات است. از سوی دیگر ، هنگامی که وب سایت شما در Docker ساخته می شود ، مهاجرت اساساً به آسانی انتقال فایل/فایل های تصویری به سرور جدید و اجرای آن/آنها آسان است. همانطور که می توانید تصور کنید ، Docker برای پروژه های Instructables نیز بسیار مفید است ؛)! اگر می خواهید در مورد Docker بیشتر بدانید ، وب سایت آنها را بررسی کنید: docker.org - Docker: Enterprise Container Platform. حالا ، بیایید با Docker شروع به کار کنیم!

نصب Docker

Docker را با اجرای زیر نصب کنید:

curl -sSL https://get.docker.com | sh

در مرحله بعد ، کاربر به گروه کاربر "docker" اضافه می شود ، که حقوق اجرای Docker را ارائه می دهد. این کار توسط:

sudo usermod -aG docker $ USER

اکنون ، باید بتوانید Docker را اجرا کنید. این را می توان با اجرای تصویر hello-world تأیید کرد:

docker run hello-world

در نهایت ، اجازه دهید تصویر Docker را که حاوی تمام وابستگی های لازم برای اجرای اسکریپت های پایتون زنگ در است ، بکشید. این فرایند ممکن است مدتی طول بکشد زیرا تصویر کاملاً بزرگ است (~ 1.5 گیگابایت). اجرا کردن:

docker pull erientes/زنگ در

توجه: فایل Dockerfile را می توانید در مخزن زنگ در Github پیدا کنید. اکنون ، همه چیز برای اجرای اسکریپت های زنگ در آماده است ، که در مرحله بعد مورد بحث قرار می گیرد.

نصب محلی

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

برای اینکه بتوان کد را اجرا کرد ، نسخه پایتون باید> = 3.5 باشد (من از پایتون 3.5.3 استفاده کردم) و بسته های زیر باید نصب شوند:

  • چهره_شناسایی
  • picamera
  • بی حس
  • بالش
  • پایتون-تلگرام-ربات
  • RPi. GPIO

این پیوند بسیار مفید است: Github - dlib و face_recognition را روی Raspberry Pi نصب کنید. با این حال ، برخی نکات در اینجا وجود دارد: 1) بالش حداقل به پایتون 3.5 نیاز دارد ، که با این روش نصب نمی شود. 2) همچنین همه بسته هایی که در پروژه زنگ درب مورد نیاز است با پیروی از این روش نصب نمی شوند. با این حال ، شما باید بتوانید آن را به سادگی با استفاده از pip3 نصب کنید.

مرحله 6: اجرای اسکریپت های Doorbell

اجرای اسکریپت های زنگ در
اجرای اسکریپت های زنگ در
اجرای اسکریپت های زنگ در
اجرای اسکریپت های زنگ در
اجرای اسکریپت های زنگ در
اجرای اسکریپت های زنگ در

اسکریپت ها را دریافت کنید

اسکریپت ها را می توان به صورت دستی از آدرس: github.com - Erientes/doorbell بارگیری کرد. یا اگر Git را نصب کرده اید ، دستور زیر را اجرا کنید:

git clone

نام مستعار ایجاد کنید

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

ورق برگ./.bashrc

خطوط زیر را اضافه کرده و فایل را ذخیره کنید:

نام مستعار doorbell_run = 'docker run --privileged -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell python $ 1'

نام مستعار doorbell_login = 'docker run --privileged -v/home/pi/doorbell:/doorbell -w/doorbell -it erientes/doorbell bash'

تست اسکریپت ها

برای بررسی اینکه آیا همه چیز درست نصب شده است ، یک ترمینال جدید باز کنید و اجرا کنید:

doorbell_run نمونه/0_test_installation.py

نتیجه باید به سادگی پیامی در پنجره ترمینال باشد که می گوید 'نصب زنگ در با موفقیت به پایان رسید!'. برای آزمایش اینکه آیا دوربین توسط Docker قابل دسترسی است یا خیر ، دستور زیر را اجرا کنید:

doorbell_run نمونه/1_test_camera.py

با اجرای 1_test_camera.py یک عکس گرفته می شود و به عنوان 'test.jpg' ذخیره می شود که در/home/pi/doorbell یافت می شود. در نهایت ، رانندگان LED را می توان با اجرای موارد زیر آزمایش کرد:

doorbell_run نمونه/2_test_voicehat_drivers.py

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

اجرای اسکریپت های Doorbell

برای اجرای اسکریپت های Doorbell ، ابتدا باید اعتبار ربات تلگرام را بدست آورید. تلگرام را روی تلفن خود نصب کنید و به telegram.me بروید - Botfather. مکالمه را شروع کرده و وارد کنید:

/newbot

نام و نام کاربری ربات را وارد کنید. پس از آن ، توکن دسترسی به شما ارائه می شود. آن مقدار را در فایل 'credentials_telegram_template.py' در/home/pi/doorbell کپی کرده و در یک فایل جدید با نام 'credentials_telegram.py' ذخیره کنید. در نهایت ، با کلیک روی پیوندی که Botfather در اختیار شما قرار می دهد ، با ربات جدیدی که ایجاد کرده اید ، گفتگو کنید.

در نهایت ، بیایید زنگ در را با تشخیص چهره اجرا کنیم:

doorbell_run main.py

ملاحظات:

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

مرحله 7: استفاده از زنگ در

Image
Image
استفاده از زنگ در
استفاده از زنگ در
استفاده از زنگ در
استفاده از زنگ در

بیایید اسکریپت زنگ خانه را با اجرای زیر اجرا کنیم:

doorbell_run main.py پس از بارگیری بسته ها ، اسکریپت ها بیکار می شوند. اساساً 2 اتفاق ممکن است رخ دهد:

  1. کسی زنگ در را می زند.
  2. شخصی به لیست سفید اضافه می شود.

کسی زنگ در را می زند

در این حالت ، اسکریپت شروع به گرفتن عکس می کند تا زمانی که عکسی را که در آن چهره ای تشخیص داده شده است بگیرد. پس از تشخیص ، برخی از روشهای بسته پایتون "face_recognition" برای محاسبه کدگذاری 128 از صورت فراخوانی می شوند. در مرحله بعد ، رمزگذاری بدست آمده با کدگذاری های موجود در whitelist.csv و blacklist.csv مقایسه می شود. نتایج احتمالی منجر به پاسخ زیر می شود:

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

شخصی به لیست سفید اضافه می شود

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

چگونه می توان شخصی را به لیست سیاه اضافه کرد؟

بدیهی است ، افرادی که قصد بدی دارند از آنجا عبور نمی کنند تا عکس چهره خود را به ما بدهند. بنابراین می توانید تصاویری از افراد بدنام که (به عنوان مثال) پلیس به پوشه img/blacklist منتشر کرده است ، اضافه کنید. هر ساعت ، این پوشه برای تصاویر جدید بررسی می شود. در صورت وجود تصویر جدید ، کدگذاری صورت محاسبه شده و به blacklist.csv اضافه می شود. سپس تصویر تغییر نام داده و به پوشه/img/blacklist/encoded منتقل می شود.

ملاحظات:

  • عملکرد اسکریپت ها با ورود به RPi کنترل و اطلاعات بیشتری را فراهم می کند ، اما کنترل و اطلاعات اولیه را می توان تنها با استفاده از نمایشگر چراغ راهنمایی به دست آورد.
  • تشخیص چهره با استفاده از بسته پایتون "face_recognition" پیاده سازی می شود. این بسته مبتنی بر Dlib است که دارای یک الگوریتم پیشرفته تشخیص چهره است ، که 99.38٪ دقت را در معیارهای برچسب گذاری شده در Wild (معیار: dlib.net-تشخیص چهره با کیفیت بالا با یادگیری متریک عمیق) انجام می دهد.)
مسابقه فناوری کمکی
مسابقه فناوری کمکی
مسابقه فناوری کمکی
مسابقه فناوری کمکی

جایزه اول در مسابقه فناوری کمکی

توصیه شده: