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

پیش گفتارتو این مقاله قرار هست از نحوه عملکرد برنامه های شناسایی چهره به صورت خلاصه و با زبانی خیلی ساده، بنویسم. در ادامه سرویس تشخیص و شناسایی چهره سایت Hibrainy رو به صورت آنلاین آزمایش خواهیم کرد. و در نهایت کد استفاده از API اش رو میزنیم.از کاربرد های شناسایی چهره میشه به باز کردن قفل گوشی های هوشمند، جلوگیری از کلاهبرداری از دستگاه های خود پرداز، عدم نیاز به همراه داشتن مدارک شناسایی فرد در بانک، مترو، فرودگاه و سایر مکان هایی که شناسایی فرد لزومی هست، و بسیار کاربرد دیگه، اشاره کرد.به خاطر شرایط نوری نامناسب و کلاه دوستم، کامپیوتر نتونست چهره اش رو تشخیص بدهشما که این مقاله رو می خونید، اگر یک مهندس هوافضا در ناسا هستید یا در سوپر مارکت احمد آقا کار می کنید. یا اگر استاد تمام در دانشگاه MIT هستید و یا چون شرایط طوری بود که نتونستید دیپلمتون رو به اتمام برسونید، ولی علاقمندید راجع به هوش مصنوعی بدونید، لطفا طوری بخونید که قراره کلمه به کلمشو متوجه بشید. اگر غیر این بود، لطفا به من اطلاع بدید. (این متن تا ابد در حال ویرایش هست)اگر هیچ دانشی از هوش مصنوعی و برنامه نویسی ندارید، پیشنهاد میشه ابتدا مقالات زیر را بخونید:«هوش مصنوعی به زبان خیلی ساده - قسمت اول»«هوش مصنوعی به زبان خیلی ساده - قسمت دوم»شناسایی چهرهاگر بخوایم سریع بریم سر اصل مطلب، گام های اصلی در سیستم های شناسایی چهره به صورت زیر هستند:تشخیص چهرههمتراز کردن چهرهاستخراج ویژگی های چهرهمقایسه ویژگی های چهره با پایگاه دادهنتیجه شناسایی چهرهگام اول: تشخیص چهرهجالبه بدونید هر تصویری که ما در کامپیوتر می بینیم در واقع ماتریسی از اعداد، (مثلا چند صد هزار عدد) هستند. در ابتدا با استفاده از الگوریتم های تشخیص چهره که داستان ها و چالش های خودش رو دارند، مختصات چهره موجود در تصویر رو پیدا می کنیم. (در یک تصویر ممکنه چندین چهره وجود داشته باشه)Face Detectionگام دوم: همتراز کردن چهرهدر این گام تصویر چهره پیدا شده رو به صورت زیر همتراز می کنیم.Face Alignmentگام سوم: استخراج ویژگیدر این گام ویژگی های چهره مثل فرم چشم، لب، ابرو و یا رنگ پوست و سایر ویژگی های چهره رو مشخص میکنیم. این کار رو توسط الگوریتم های یادگیری ماشین انجام میشوند. درواقع تو این گام ما تصویر چهره که از هزاران عدد تشکیل شده رو به الگوریتم یادگیری ماشین میدیم. ایشون هم در عوض صد تا عدد بهمون میده که معرف ویژگی های صورت هستند. (به اصطلاح تصویر رو Embedd میکنم و کاهش ابعاد میدیم.)گام چهارم: مقایسه ویژگی های چهره با پایگاه دادهدر این گام ویژگی های صورت فرد مورد نظر رو با دیتابیس مون (جایی که قبلا ویژگی های چهره افرادی که میشناسیم رو ذخیره کردیم) مقایسه کنیم.گام پنجم: نتیجه شناسایی چهرهتو این گام نتیجه گام قبلی بررسی میشه. اگر ویژگی های چهره شخصی که در تصویر وجود داره، به یکی از اعضای دیتابیس مون نزدیک بود، لذا اون دو نفر یک شخص هستند. در غیر این صورت اون شخص در دیتابیسم مون وجود نداره و ناشناس هست.مراحل شناسایی چهره (گام های یکم تا پنجم) در یک تصویربرای تمام چهره های تشخیص داده شده این مراحل رو طی می کنیمآزمایش سرویس تشخیص و شناسایی چهره در سایت Hibrainyابتدا فیلتر شکن رو فعال کنید. در قسمت تکنولوژی سایت Hibrainy وارد سرویس Face Recognition بشید. در این قسمت شما میتونید هم سرویس تشخیص چهره (Face Detection) که جنسیت و سن تون رو تشخیص میده و همچنین شناسایی چهره (Face Verification) رو آزمایش کنید.سرویس تشخیص چهرهFace Detectionسرویس شناسایی چهره: بررسی اینکه چهره های موجود در دو عکس متعلق به یک نفر هستند یا نهFace Verificationاستفاده از API سایت Hibrainyوقتی که در سایت Hibrainy ثبت نام کردید و وارد حساب کابری تون شدید. اگر در منو سمت چپ، قسمت Products بر روی Face کلیک کنید. میتونید به داکیومنت استفاده از API سایت به زبان C# نگاهی بیندازید. منتهی از اونجایی که زبان مورد علاقه من Python هست و البته ساده تر به نظر میرسه، قرار با استفاده زبان Python از API این سایت استفاده کنیم.کافیه با استفاده از pip یا هر روش دیگری ماژول requests رو نصب کنید.pip install requestsسرویس تشخیص چهرهimport requests API_ENDPOINT = &quothttp://api.hibrainy.com/api/v1/Face/FaceAllFeatures&quot API_KEY = &quotYour Api Key&quot image = '1.jpg' # path to image files = {'Photo': (image, open(image, 'rb'), &quotmultipart/form-data&quot)} 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 FeaturesThis program in GitHubبه خاطر داشته باشید که، مقدار متغیر image برابر است با مسیر عکس و مقدار متغیر API_KEY توی سایت در قسمت داشبورد در قسمت Tokens هست.سرویس شناسایی چهره: بررسی اینکه چهره های موجود در دو عکس متعلق به یک نفر هستند یا نهimport requests API_ENDPOINT = &quothttp://api.hibrainy.com/api/v1/Face/FaceVerification&quot API_KEY = &quotYour Api Key&quot image1 = '1.jpg' # path to image1 image2 = '2.jpg' # path to image2 files = {'Photo1': (image1, open(image1, 'rb'), &quotmultipart/form-data&quot), 'Photo2': (image2, open(image2, 'rb'), &quotmultipart/form-data&quot)} 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