\n","\n","![Logo 2](img/aitech-logotyp-2.jpg)"]},{"cell_type":"markdown","id":"7a9fde6b","metadata":{"id":"7a9fde6b"},"source":["W poniższych materiałach zaprezentujemy klasyczne metody rozpoznawania twarzy. Opisywane zagadnienia można odnaleźć w *5.2.3 Principal component analysis* R. Szeliski (2022) *Computer Vision: Algorithms and Applications* oraz [dokumentacji](https://docs.opencv.org/4.5.3/da/d60/tutorial_face_main.html).\n","\n","Na początku załadujmy niezbędne biblioteki."]},{"cell_type":"code","source":["from google.colab import drive\n","drive.mount('/content/drive')\n","%cd /content/drive/My Drive/aitech-wko-pub"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"79pcSRy9c_Wf","executionInfo":{"status":"ok","timestamp":1673870478085,"user_tz":-60,"elapsed":22067,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152256"}},"outputId":"e527a916-3b2a-4040-fd9d-6be6ec6f18f9"},"id":"79pcSRy9c_Wf","execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["Mounted at /content/drive\n","/content/drive/My Drive/aitech-wko-pub\n"]}]},{"cell_type":"code","execution_count":2,"id":"1d86977a","metadata":{"id":"1d86977a","executionInfo":{"status":"ok","timestamp":1673870479792,"user_tz":-60,"elapsed":1735,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152256"}}},"outputs":[],"source":["import cv2 as cv\n","import numpy as np\n","import matplotlib.pyplot as plt\n","%matplotlib inline\n","import sklearn.metrics\n","import ipywidgets\n","import os\n","import random"]},{"cell_type":"markdown","id":"c5a62135","metadata":{"id":"c5a62135"},"source":["Rozpakujmy zbiór danych, na którym będziemy pracować:"]},{"cell_type":"code","execution_count":3,"id":"0e0f1723","metadata":{"id":"0e0f1723","executionInfo":{"status":"ok","timestamp":1673870497428,"user_tz":-60,"elapsed":17655,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152256"}}},"outputs":[],"source":["!cd datasets && unzip -qo yaleextb.zip"]},{"cell_type":"markdown","id":"e6a0efb1","metadata":{"id":"e6a0efb1"},"source":["Nasz zbiór zawiera po kilkadziesiąt zdjęć kilkudziesięciu osób, które zostały sfotografowane w różnych warunkach oświetlenia. Wczytane zdjęcia podzielimy na zbiór treningowy i testowy w stosunku 3/1 oraz wyświetlimy kilka przykładowych zdjęć:"]},{"cell_type":"code","execution_count":4,"id":"7b775bbf","metadata":{"colab":{"base_uri":"https://localhost:8080/","height":323},"id":"7b775bbf","executionInfo":{"status":"ok","timestamp":1673870501160,"user_tz":-60,"elapsed":3735,"user":{"displayName":"Cezary Gałązkiewicz","userId":"01409497901784152256"}},"outputId":"bf105f0f-031c-487f-b27e-9bfe7609d53d"},"outputs":[{"output_type":"display_data","data":{"text/plain":["