And after all I'm only ordinary man
شناسایی چهره در تصویر به زبان خیلی ساده + کد پایتون
پیش گفتار
تو این مقاله قرار هست از نحوه عملکرد برنامه های شناسایی چهره به صورت خلاصه و با زبانی خیلی ساده، بنویسم. در ادامه سرویس تشخیص و شناسایی چهره سایت Hibrainy رو به صورت آنلاین آزمایش خواهیم کرد. و در نهایت کد استفاده از API اش رو میزنیم.
از کاربرد های شناسایی چهره میشه به باز کردن قفل گوشی های هوشمند، جلوگیری از کلاهبرداری از دستگاه های خود پرداز، عدم نیاز به همراه داشتن مدارک شناسایی فرد در بانک، مترو، فرودگاه و سایر مکان هایی که شناسایی فرد لزومی هست، و بسیار کاربرد دیگه، اشاره کرد.
شما که این مقاله رو می خونید، اگر یک مهندس هوافضا در ناسا هستید یا در سوپر مارکت احمد آقا کار می کنید. یا اگر استاد تمام در دانشگاه MIT هستید و یا چون شرایط طوری بود که نتونستید دیپلمتون رو به اتمام برسونید، ولی علاقمندید راجع به هوش مصنوعی بدونید، لطفا طوری بخونید که قراره کلمه به کلمشو متوجه بشید. اگر غیر این بود، لطفا به من اطلاع بدید. (این متن تا ابد در حال ویرایش هست)
اگر هیچ دانشی از هوش مصنوعی و برنامه نویسی ندارید، پیشنهاد میشه ابتدا مقالات زیر را بخونید:
«هوش مصنوعی به زبان خیلی ساده - قسمت اول»
«هوش مصنوعی به زبان خیلی ساده - قسمت دوم»
شناسایی چهره
اگر بخوایم سریع بریم سر اصل مطلب، گام های اصلی در سیستم های شناسایی چهره به صورت زیر هستند:
- تشخیص چهره
- همتراز کردن چهره
- استخراج ویژگی های چهره
- مقایسه ویژگی های چهره با پایگاه داده
- نتیجه شناسایی چهره
گام اول: تشخیص چهره
جالبه بدونید هر تصویری که ما در کامپیوتر می بینیم در واقع ماتریسی از اعداد، (مثلا چند صد هزار عدد) هستند. در ابتدا با استفاده از الگوریتم های تشخیص چهره که داستان ها و چالش های خودش رو دارند، مختصات چهره موجود در تصویر رو پیدا می کنیم. (در یک تصویر ممکنه چندین چهره وجود داشته باشه)
گام دوم: همتراز کردن چهره
در این گام تصویر چهره پیدا شده رو به صورت زیر همتراز می کنیم.
گام سوم: استخراج ویژگی
در این گام ویژگی های چهره مثل فرم چشم، لب، ابرو و یا رنگ پوست و سایر ویژگی های چهره رو مشخص میکنیم. این کار رو توسط الگوریتم های یادگیری ماشین انجام میشوند. درواقع تو این گام ما تصویر چهره که از هزاران عدد تشکیل شده رو به الگوریتم یادگیری ماشین میدیم. ایشون هم در عوض صد تا عدد بهمون میده که معرف ویژگی های صورت هستند. (به اصطلاح تصویر رو Embedd میکنم و کاهش ابعاد میدیم.)
گام چهارم: مقایسه ویژگی های چهره با پایگاه داده
در این گام ویژگی های صورت فرد مورد نظر رو با دیتابیس مون (جایی که قبلا ویژگی های چهره افرادی که میشناسیم رو ذخیره کردیم) مقایسه کنیم.
گام پنجم: نتیجه شناسایی چهره
تو این گام نتیجه گام قبلی بررسی میشه. اگر ویژگی های چهره شخصی که در تصویر وجود داره، به یکی از اعضای دیتابیس مون نزدیک بود، لذا اون دو نفر یک شخص هستند. در غیر این صورت اون شخص در دیتابیسم مون وجود نداره و ناشناس هست.
مراحل شناسایی چهره (گام های یکم تا پنجم) در یک تصویر
آزمایش سرویس تشخیص و شناسایی چهره در سایت Hibrainy
ابتدا فیلتر شکن رو فعال کنید. در قسمت تکنولوژی سایت Hibrainy وارد سرویس Face Recognition بشید. در این قسمت شما میتونید هم سرویس تشخیص چهره (Face Detection) که جنسیت و سن تون رو تشخیص میده و همچنین شناسایی چهره (Face Verification) رو آزمایش کنید.
سرویس تشخیص چهره
سرویس شناسایی چهره: بررسی اینکه چهره های موجود در دو عکس متعلق به یک نفر هستند یا نه
استفاده از API سایت Hibrainy
وقتی که در سایت Hibrainy ثبت نام کردید و وارد حساب کابری تون شدید. اگر در منو سمت چپ، قسمت Products بر روی Face کلیک کنید. میتونید به داکیومنت استفاده از API سایت به زبان C# نگاهی بیندازید. منتهی از اونجایی که زبان مورد علاقه من Python هست و البته ساده تر به نظر میرسه، قرار با استفاده زبان Python از API این سایت استفاده کنیم.
کافیه با استفاده از pip یا هر روش دیگری ماژول requests رو نصب کنید.
pip install requests
سرویس تشخیص چهره
import requests
API_ENDPOINT = "http://api.hibrainy.com/api/v1/Face/FaceAllFeatures"
API_KEY = "Your Api Key"
image = '1.jpg' # path to image
files = {'Photo': (image, open(image, 'rb'), "multipart/form-data")}
header = {'API-Key': API_KEY}
response = requests.post(API_ENDPOINT, files=files, headers=header)
for i in range(0, len(response.json())):
print('Gender:', response.json()[i]['Gender'])
print('Age:', response.json()[i]['Age'])
print('FaceBox:', response.json()[i]['Rectangle'])
# other Features
This program in GitHub
به خاطر داشته باشید که، مقدار متغیر image برابر است با مسیر عکس و مقدار متغیر API_KEY توی سایت در قسمت داشبورد در قسمت Tokens هست.
سرویس شناسایی چهره: بررسی اینکه چهره های موجود در دو عکس متعلق به یک نفر هستند یا نه
import requests
API_ENDPOINT = "http://api.hibrainy.com/api/v1/Face/FaceVerification"
API_KEY = "Your Api Key"
image1 = '1.jpg' # path to image1
image2 = '2.jpg' # path to image2
files = {'Photo1': (image1, open(image1, 'rb'), "multipart/form-data"), 'Photo2': (image2, open(image2, 'rb'), "multipart/form-data")}
header = {'API-Key': API_KEY}
response = requests.post(API_ENDPOINT, files=files, headers=header)
print('ResultMessage:', response.json()['ResultMessage'])
This program in GitHub
امیدوارم موضوعاتی که مطرح کردم براتون جالب بوده باشه. و بهم در اصلاح کاستی ها در نظرات کمک کنید.
آخرین ویرایش: 21 / 8 / 98
مطلبی دیگر از این انتشارات
3. هوش مصنوعی به زبان خیلی ساده: شبکه عصبی مصنوعی1
مطلبی دیگر از این انتشارات
1. هوش مصنوعی به زبان خیلی ساده: یادگیری ماشین
مطلبی دیگر از این انتشارات
4. هوش مصنوعی به زبان خیلی ساده: شبکه عصبی مصنوعی2