From b41d511d0e8d9c5d07f038ee902df2c6a07265d4 Mon Sep 17 00:00:00 2001 From: vladislavovich-d <48733961+vladislavovich-d@users.noreply.github.com> Date: Mon, 13 May 2019 12:18:37 +0300 Subject: [PATCH] Add files via upload --- Face_Recognition/Python_FaceRec.ipynb | 757 ++++++++++++++++++++++++++ 1 file changed, 757 insertions(+) create mode 100644 Face_Recognition/Python_FaceRec.ipynb diff --git a/Face_Recognition/Python_FaceRec.ipynb b/Face_Recognition/Python_FaceRec.ipynb new file mode 100644 index 0000000..562f77e --- /dev/null +++ b/Face_Recognition/Python_FaceRec.ipynb @@ -0,0 +1,757 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 205, + "metadata": {}, + "outputs": [], + "source": [ + "import glob,os\n", + "\n", + "import numpy as np\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from PIL import Image " + ] + }, + { + "cell_type": "code", + "execution_count": 239, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Input your start number of photo: 1\n", + "Number of images: 400\n", + "Size of picture:(112, 92)\n", + "Sample: 0\n", + "Number of photo: 1\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def preprocesing (path):\n", + " #counting the number of pictures\n", + " path = \"faces/s*/*.pgm\"\n", + " start_photo = int(input('Input your start number of photo: '))\n", + " index1 = start_photo - 1\n", + " files = glob.glob(path)\n", + " strings = len(files)\n", + " print(f'Number of images: {strings}')\n", + "\n", + " #counting the size of picture\n", + " fname = files[index]\n", + " picture = np.array(Image.open(fname))\n", + " columns = picture.shape[0]*picture.shape[1]\n", + " height = picture.shape[0]\n", + " width = picture.shape[1]\n", + " picture_size = picture.shape\n", + " print(f'Size of picture:{picture_size}')\n", + " print(f'Sample: {index1}\\nNumber of photo: {start_photo}')\n", + " plt.imshow(picture, 'gray')\n", + " return files,strings,columns,picture_size,height,width,index1\n", + "\n", + "#picture test \n", + "files, strings, columns, picture_size,height,width, index1 = preprocesing(path)\n", + "pic_size = picture_size" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset shape: (400, 10304)\n", + "Labels shape: (400, 1)\n", + "Pic size (112, 92)\n" + ] + } + ], + "source": [ + "def create_matrix (files, strings, columns):\n", + " string = 0\n", + " labels = []\n", + " data = np.zeros((strings, columns))\n", + " for f in files:\n", + " pctr = np.array(Image.open(f))\n", + " pctr = pctr.reshape(1, pctr.shape[0] * pctr.shape[1])\n", + " \n", + " #create dataset\n", + " data[string, :] = pctr\n", + " string += 1 \n", + " \n", + " #create labels for pictures\n", + " fname,ext = os.path.splitext(f)\n", + " _,name,indx, = fname.split('/')\n", + " labels.append(int(name[1:]))\n", + " labels=np.array(labels).reshape(len(labels),1)\n", + " return data, labels\n", + "\n", + "#creating dataset from pictures\n", + "data, labels = create_matrix (files,strings,columns)\n", + "print('Dataset shape: ', data.shape)\n", + "print('Labels shape: ', labels.shape)\n", + "print('Pic size ',pic_size)" + ] + }, + { + "cell_type": "code", + "execution_count": 241, + "metadata": {}, + "outputs": [], + "source": [ + "def vectorization(v, w = (height,width)):\n", + " picture = v.reshape(w[0],w[1])\n", + " return picture\n", + "\n", + "def print_picture(ind, data, labels ,size = (height,width)):\n", + " picture = vectorization(data[ind], size)\n", + " plt.imshow(picture, 'gray')\n", + " plt.title(f'label:{(np.squeeze(labels)[ind])}')" + ] + }, + { + "cell_type": "code", + "execution_count": 242, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "print_picture(index1, data, labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 243, + "metadata": {}, + "outputs": [], + "source": [ + "def choice_ind(ind1, ind2):\n", + " \n", + " #correct indet while 1st elem has 0 \n", + " ind1 -= 1\n", + " ind2 -= 1\n", + " \n", + " #select index\n", + " ind1 = [i + 10 for i in range(ind1 - 10,390,10)]\n", + " ind2 = [i + 10 for i in range(ind2 - 10,390,10)]\n", + " test_index = np.concatenate((ind1, ind2))\n", + " \n", + " return test_index" + ] + }, + { + "cell_type": "code", + "execution_count": 244, + "metadata": {}, + "outputs": [], + "source": [ + "def split(data, ind1 = 9 , ind2 = 10):\n", + " \n", + " #create index\n", + " index = choice_ind(ind1, ind2)\n", + " \n", + " #create test dataset\n", + " test_set = data[index,:]\n", + " test_labels = labels[index]\n", + " \n", + " #create train dataset\n", + " train_set = np.delete(data, index, axis = 0)\n", + " train_labels = np.delete(labels, index)\n", + " train_labels = train_labels.reshape(len(train_labels),1)\n", + " \n", + " return train_set, train_labels, test_set, test_labels\n" + ] + }, + { + "cell_type": "code", + "execution_count": 245, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train set shape>> (320, 10304) train labels shape>> (320, 1)\n", + "Test set shape>> (80, 10304) test labels shape>> (80, 1)\n" + ] + } + ], + "source": [ + "train_set, train_labels, test_set, test_labels = split(data)\n", + "print(f'Train set shape>> {train_set.shape} train labels shape>> {train_labels.shape}')\n", + "print(f'Test set shape>> {test_set.shape} test labels shape>> {test_labels.shape}')\n", + "train_origin=train_set\n", + "test_origin=test_set" + ] + }, + { + "cell_type": "code", + "execution_count": 246, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#test trains_dataset\n", + "print_picture(index1, train_set, train_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 247, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#test dataset of test samples\n", + "print_picture(index1, test_set, test_labels)" + ] + }, + { + "cell_type": "code", + "execution_count": 248, + "metadata": {}, + "outputs": [], + "source": [ + "def identify_face(train_set, unknown_set):\n", + " minimal_dist = []\n", + " \n", + " #create vector of indexes\n", + " for ind in range (unknown_set.shape[0]):\n", + " dist = np.linalg.norm(train_set - unknown_set[ind,:], axis = 1, keepdims = True)\n", + " minimal_dist.append(np.argmin(dist))\n", + " pred_index = np.array(minimal_dist).reshape(len(minimal_dist), 1)\n", + " return pred_index\n", + " \n", + "def accuracy(train_labels, test_labels, pred_index, index = 1):\n", + " if index: \n", + " yhat = np.squeeze(train_labels[pred_index])\n", + " else:\n", + " yhat = pred_index\n", + " ytest = np.squeeze(test_labels)\n", + " compare = yhat == ytest\n", + " err_index = np.where(compare == False)\n", + " true_index = np.where(compare == True)\n", + " true_ans = sum(compare)\n", + " accur = (true_ans / test_labels.shape[0]) * 100\n", + " return accur, err_index, true_index\n" + ] + }, + { + "cell_type": "code", + "execution_count": 278, + "metadata": {}, + "outputs": [], + "source": [ + "def recognition(train_set, train_labels, test_set, test_labels, figsize = (10, 10), \n", + " index = 1, norm = 0, axis = 0, pca_flag = False, pca_nrg = 0.98, log = True, lbp_flag = False):\n", + " \n", + " if lbp_flag:\n", + " train_set = create_lbp_set(train_set)\n", + " test_set = create_lbp_set(test_set)\n", + " \n", + " #Normaliz\n", + " if norm == 1:\n", + " train_set = subtract_mean(train_set, axis = axis)\n", + " test_set = subtract_mean(test_set, axis = axis)\n", + " elif norm == 2:\n", + " train_set = standart_norm(train_set, axis = axis)\n", + " test_set = standart_norm(test_set, axis = axis)\n", + " \n", + " if pca_flag:\n", + " if norm == 0:\n", + " print('You need normalization!')\n", + " train_set, transform_pca = pca(train_set, pca_nrg = pca_nrg, log = log)\n", + " test_set = np.dot(transform_pca, test_set.T).T\n", + " \n", + " pred_index = identify_face(train_set, test_set)\n", + " \n", + " accur, err_index, true_index = accuracy(train_labels, test_labels, pred_index, index = index)\n", + " if log:\n", + " print(f'Accuracy >> {accur}%', )\n", + " \n", + " return accur" + ] + }, + { + "cell_type": "code", + "execution_count": 280, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy >> 96.25%\n" + ] + }, + { + "data": { + "text/plain": [ + "96.25" + ] + }, + "execution_count": 280, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Simple recognition result\n", + "recognition(train_set, train_labels, test_set, test_labels)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Normalization & Optimization" + ] + }, + { + "cell_type": "code", + "execution_count": 281, + "metadata": {}, + "outputs": [], + "source": [ + "def subtract_mean(x, axis=0):\n", + " return x - x.mean(axis = axis,keepdims = True)\n", + "\n", + "def standart_norm(X, axis = 0):\n", + " A = (X - X.mean(axis = axis, keepdims = True)) / X.std( axis = axis, keepdims = True)\n", + " return A" + ] + }, + { + "cell_type": "code", + "execution_count": 282, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalization by features(subtract mean)\n", + "Accuracy >> 96.25%\n" + ] + }, + { + "data": { + "text/plain": [ + "96.25" + ] + }, + "execution_count": 282, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('Normalization by features(subtract mean)')\n", + "recognition(train_set, train_labels, test_set, test_labels,norm = 1, axis = 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 283, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalization by samples(subtract mean)\n", + "Accuracy >> 95.0%\n" + ] + }, + { + "data": { + "text/plain": [ + "95.0" + ] + }, + "execution_count": 283, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('Normalization by samples(subtract mean)')\n", + "recognition(train_set, train_labels, test_set, test_labels,norm = 1, axis = 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 284, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalization by features(standart norm)\n", + "Accuracy >> 96.25%\n" + ] + }, + { + "data": { + "text/plain": [ + "96.25" + ] + }, + "execution_count": 284, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('Normalization by features(standart norm)')\n", + "recognition(train_set, train_labels, test_set, test_labels,norm = 2, axis = 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 285, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalization by samples(standart norm)\n", + "Accuracy >> 95.0%\n" + ] + }, + { + "data": { + "text/plain": [ + "95.0" + ] + }, + "execution_count": 285, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print('Normalization by samples(standart norm)')\n", + "recognition(train_set, train_labels, test_set, test_labels,norm = 2, axis = 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### *Accuracy didn't grow up after standart & subtract method of noemlization!*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# PCA method" + ] + }, + { + "cell_type": "code", + "execution_count": 293, + "metadata": {}, + "outputs": [], + "source": [ + "def pca(X, pca_nrg = 0.98, log = False):\n", + " #Create covariance matrix\n", + " C = np.dot(X, X.T)\n", + " \n", + " #Find out eigenvalues and eigenvectors\n", + " eig, eig_v = np.linalg.eig(C)\n", + " \n", + " #Choose type of pca model\n", + " if (type(pca_nrg) == float or type(pca_nrg) == np.float64) and (pca_nrg < 1):\n", + " n = X.shape[1]\n", + " p = 1\n", + " i = 0\n", + " while p>pca_nrg:\n", + " i += 1\n", + " ind = np.argsort(-eig)[:n - i]\n", + " p = np.sum(eig[ind]) / np.sum(eig)\n", + " important_v = eig_v[ind] \n", + " elif pca_nrg == 1:\n", + " important_v = eig_v \n", + " else:\n", + " ind_big = np.argsort(-eig)[:int(pca_nrg)]\n", + " important_v = eig_v[ind_big]\n", + " W = np.dot(important_v,X)\n", + " X_pca=np.dot(W,X.T)\n", + " if log:\n", + " print(f'pca_energy >> {pca_nrg}, the number of components >> {X_pca.T.shape[1]}')\n", + " print(f'shape train dataset after projection into PCA subspace {X_pca.T.shape}') \n", + " return X_pca.T,W" + ] + }, + { + "cell_type": "code", + "execution_count": 297, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalization by features(subtract_mean)\n", + "pca_energy >> 0.95, the number of components >> 161\n", + "shape train dataset after projection into PCA subspace (320, 161)\n", + "Accuracy >> 95.0%\n", + "\n", + "\n", + "pca_energy >> 0.96, the number of components >> 180\n", + "shape train dataset after projection into PCA subspace (320, 180)\n", + "Accuracy >> 95.0%\n", + "\n", + "\n", + "pca_energy >> 0.97, the number of components >> 202\n", + "shape train dataset after projection into PCA subspace (320, 202)\n", + "Accuracy >> 96.25%\n", + "\n", + "\n", + "pca_energy >> 0.98, the number of components >> 229\n", + "shape train dataset after projection into PCA subspace (320, 229)\n", + "Accuracy >> 96.25%\n", + "\n", + "\n", + "pca_energy >> 0.99, the number of components >> 264\n", + "shape train dataset after projection into PCA subspace (320, 264)\n", + "Accuracy >> 96.25%\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print(\"Normalization by features(subtract_mean)\")\n", + "for pca_nrg in [0.95, 0.96, 0.97, 0.98, 0.99]:\n", + " acc = recognition(train_set,train_labels,test_set,test_labels, norm=1, axis=0, pca_flag=True, pca_nrg = pca_nrg)\n", + " print(f'\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": 298, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalization by features(standart_norm)\n", + "pca_energy >> 0.95, the number of components >> 163\n", + "shape train dataset after projection into PCA subspace (320, 163)\n", + "Accuracy >> 95.0%\n", + "\n", + "\n", + "pca_energy >> 0.96, the number of components >> 182\n", + "shape train dataset after projection into PCA subspace (320, 182)\n", + "Accuracy >> 95.0%\n", + "\n", + "\n", + "pca_energy >> 0.97, the number of components >> 204\n", + "shape train dataset after projection into PCA subspace (320, 204)\n", + "Accuracy >> 95.0%\n", + "\n", + "\n", + "pca_energy >> 0.98, the number of components >> 231\n", + "shape train dataset after projection into PCA subspace (320, 231)\n", + "Accuracy >> 95.0%\n", + "\n", + "\n", + "pca_energy >> 0.99, the number of components >> 265\n", + "shape train dataset after projection into PCA subspace (320, 265)\n", + "Accuracy >> 95.0%\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print(\"Normalization by features(standart_norm)\")\n", + "for pca_nrg in [0.95, 0.96, 0.97, 0.98, 0.99]:\n", + " acc = recognition(train_set,train_labels,test_set,test_labels, norm=2, axis=0, pca_flag=True, pca_nrg = pca_nrg)\n", + " print(f'\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": 299, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalization by samples(subtract_mean)\n", + "pca_energy >> 0.95, the number of components >> 125\n", + "shape train dataset after projection into PCA subspace (320, 125)\n", + "Accuracy >> 88.75%\n", + "\n", + "\n", + "pca_energy >> 0.96, the number of components >> 146\n", + "shape train dataset after projection into PCA subspace (320, 146)\n", + "Accuracy >> 88.75%\n", + "\n", + "\n", + "pca_energy >> 0.97, the number of components >> 171\n", + "shape train dataset after projection into PCA subspace (320, 171)\n", + "Accuracy >> 87.5%\n", + "\n", + "\n", + "pca_energy >> 0.98, the number of components >> 203\n", + "shape train dataset after projection into PCA subspace (320, 203)\n", + "Accuracy >> 88.75%\n", + "\n", + "\n", + "pca_energy >> 0.99, the number of components >> 247\n", + "shape train dataset after projection into PCA subspace (320, 247)\n", + "Accuracy >> 88.75%\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print(\"Normalization by samples(subtract_mean)\")\n", + "for pca_nrg in [0.95, 0.96, 0.97, 0.98, 0.99]:\n", + " acc = recognition(train_set,train_labels,test_set,test_labels, norm=1, axis=1, pca_flag=True, pca_nrg = pca_nrg)\n", + " print(f'\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": 300, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalization by samples(standart_norm)\n", + "pca_energy >> 0.95, the number of components >> 129\n", + "shape train dataset after projection into PCA subspace (320, 129)\n", + "Accuracy >> 88.75%\n", + "\n", + "\n", + "pca_energy >> 0.96, the number of components >> 150\n", + "shape train dataset after projection into PCA subspace (320, 150)\n", + "Accuracy >> 87.5%\n", + "\n", + "\n", + "pca_energy >> 0.97, the number of components >> 175\n", + "shape train dataset after projection into PCA subspace (320, 175)\n", + "Accuracy >> 90.0%\n", + "\n", + "\n", + "pca_energy >> 0.98, the number of components >> 207\n", + "shape train dataset after projection into PCA subspace (320, 207)\n", + "Accuracy >> 90.0%\n", + "\n", + "\n", + "pca_energy >> 0.99, the number of components >> 250\n", + "shape train dataset after projection into PCA subspace (320, 250)\n", + "Accuracy >> 88.75%\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print(\"Normalization by samples(standart_norm)\")\n", + "for pca_nrg in [0.95, 0.96, 0.97, 0.98, 0.99]:\n", + " acc = recognition(train_set,train_labels,test_set,test_labels, norm=2, axis=1, pca_flag=True, pca_nrg = pca_nrg)\n", + " print(f'\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}