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

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

در این گام تصویر چهره پیدا شده رو به صورت زیر همتراز می کنیم.

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

ابتدا فیلتر شکن رو فعال کنید. در قسمت تکنولوژی سایت Hibrainy وارد سرویس Face Recognition بشید. در این قسمت شما میتونید هم سرویس تشخیص چهره (Face Detection) که جنسیت و سن تون رو تشخیص میده و همچنین شناسایی چهره (Face Verification) رو آزمایش کنید.
سرویس تشخیص چهره

سرویس شناسایی چهره: بررسی اینکه چهره های موجود در دو عکس متعلق به یک نفر هستند یا نه

وقتی که در سایت 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
به خاطر داشته باشید که، مقدار متغیر 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'])
امیدوارم موضوعاتی که مطرح کردم براتون جالب بوده باشه. و بهم در اصلاح کاستی ها در نظرات کمک کنید.
آخرین ویرایش: 21 / 8 / 98