<jupyter_start><jupyter_text>VGG-KERAS - Face Recognition: ->Not:     Windows artık environment variables pathleri altındaki dll leri bulmayı desteklemediği için "cuda dlib" yolunu manuel belirtmemiz gerekiyor:     CUDA_PATH: "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3" ->Eğer path uzunluğu hatası alıyorsak, direkt regeditten bu pathi ekleyebiliriz:  "\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"->Python içerisinde geçici olarak da tanımlayabiliriz:     os.add_dll_directory(os.path.join(os.environ['CUDA_PATH'], 'bin'))      Eklenen "CUDA_PATH:  "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.3\bin"      1-) Databaseden, Dlib(Face_Recognition) ile Yüzleri Tespit Et ve Görüntülerden Yüzleri Çıkar -> /yuzler klasörü altına kaydet<jupyter_code>os.add_dll_directory(os.path.join(os.environ['CUDA_PATH'], 'bin'))
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential,Model
from tensorflow.keras.layers import ZeroPadding2D,Convolution2D,MaxPooling2D
from tensorflow.keras.layers import Dense,Dropout,Softmax,Flatten,Activation,BatchNormalization
from tensorflow.keras.preprocessing.image import load_img,img_to_array
from tensorflow.keras.applications.imagenet_utils import preprocess_input
import tensorflow.keras.backend as kB
import tensorflow as tf
from imutils import paths
import cv2
import numpy as np
import dlib
import face_recognition
import pickle
import os
import time
imagePaths = list(paths.list_images('../../helper/trainImages'));
for (i, imagePath) in enumerate(imagePaths):
    boxes = [];
    name = imagePath.split(os.path.sep)[-2];
    image = cv2.imread(imagePath);
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    
    boxes = face_recognition.face_locations(gray, model="cnn");
    try:
        os.mkdir("yuzler/"+ name )
    except:
        pass

    #top, right, bottom, left
    for j,(x,y,h,w) in enumerate(boxes):
        print(boxes)
        res = image[x:h, w:y]

        print("yuzler/" + name + "/" + name + str(j)+"-"+str(i) + ".jpg")
        try:
            cv2.imwrite("yuzler/" + name + "/" + name + str(j)+"-"+str(i) + ".jpg", res)
        except:
            pass<jupyter_output>[(743, 1070, 1250, 563)]
yuzler/BlitzKrieg/BlitzKrieg0-0.jpg
[(403, 1087, 697, 793)]
yuzler/BlitzKrieg/BlitzKrieg0-1.jpg
[(315, 1242, 667, 890)]
yuzler/BlitzKrieg/BlitzKrieg0-2.jpg
[(274, 611, 519, 366)]
yuzler/Burak/Burak0-3.jpg
[(210, 1096, 717, 589)]
yuzler/Eva/Eva0-4.jpg
[(476, 1037, 828, 685)]
yuzler/Eva/Eva0-5.jpg
[(145, 1038, 753, 429)]
yuzler/Eva/Eva0-6.jpg
[(476, 1950, 1352, 1074)]
yuzler/Eva/Eva0-7.jpg
[(76, 1374, 953, 497)]
yuzler/Eva/Eva0-8.jpg
[(207, 279, 411, 75)]
yuzler/Eva/Eva0-9.jpg
[(279, 1135, 632, 783)]
yuzler/Eva/Eva0-10.jpg
[(315, 1099, 667, 747)]
yuzler/Fethi/Fethi0-11.jpg
[(119, 346, 289, 176)]
yuzler/Ibrahim/Ibrahim0-12.jpg
[(91, 210, 209, 92)]
yuzler/Ibrahim/Ibrahim0-13.jpg
[(73, 179, 191, 61)]
yuzler/Master/Master0-14.jpg
[(153, 363, 398, 119)]
yuzler/Master/Master0-15.jpg
[(204, 1147, 711, 640)]
yuzler/Scartlett/Scartlett0-16.jpg
[(262, 1358, 614, 1006)]
yuzler/Scartlett/Scartlett0-17.jpg
[(341, 1246, 1071, 516)]
yuzler/Scartlett/Scartlett0-18.jpg
[(169, 685[...]<jupyter_text>2-) VGG-FACE Modelini Oluştur         dis {     width: 1300px;     height:600px;    background-color: 666    }    .ic{        float:left;        width:630px;        height:600px;        border:CCC solid 1px;        margin-right: 10px;        margin-left: 4px;             VGG MİMARİSİ                                  VGGFace<jupyter_code>#VGG FACE Ağını "Keras" ile tanımlıyoruz.
model = Sequential()
model.add(ZeroPadding2D((1,1),input_shape=(224,224, 3)))
model.add(Convolution2D(64, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))	
model.add(Convolution2D(128, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(128, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(256, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(ZeroPadding2D((1,1)))
model.add(Convolution2D(512, (3, 3), activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Convolution2D(4096, (7, 7), activation='relu'))
model.add(Dropout(0.5))
model.add(Convolution2D(4096, (1, 1), activation='relu'))
model.add(Dropout(0.5))
model.add(Convolution2D(2622, (1, 1)))
model.add(Flatten())
model.add(Activation('softmax'))

# VGG Face Modeli için daha önceden eğitilmiş ağırlıkları set ediyoruz.
model.load_weights('../../helper/dat/vgg_face_weights.h5')
# Son Softmax katmanını kaldır ve flatten katmanından çıkış al #2622 birim çıkış olur
vggFace = Model(inputs=model.layers[0].input, outputs=model.layers[-2].output)<jupyter_output><empty_output><jupyter_text>Yüz Encodelarını Oluşturulan CNN Modeli Yardımı ile Çıkar<jupyter_code>#Yüz Ölçülerini Hesapla -> CNN e girdi olarak ver ve çıktıyı al
def encodeHesapla(path = 'yuzler/'):
  encodedsData=[]
  encodedsLabel=[]
  kisiler = []
  faces=os.listdir(path)
  for i,person in enumerate(faces):
    kisiler.append(person)
    goruntuler=os.listdir(path+ '/' + person+'/')
    for goruntu in goruntuler:
      #Keras fonksiyonları ile görüntü ön işleme
      img = load_img( path+ '/' +person+'/'+goruntu,target_size=(224,224))
      img = img_to_array(img)
      img = np.expand_dims(img,axis=0)
      img = preprocess_input(img)
      encode = vggFace(img)
      encodedsData.append(kB.eval(encode))
      # encodedsData.append(np.squeeze(kB.eval(encode)).tolist())
      encodedsLabel.append(i)
  return (encodedsData,encodedsLabel,kisiler)
kisilerDB = []
kisilerTDB = []

#Database encodelarını çıkart
(encodedDB, encodedDBLabel, kisilerDB) = encodeHesapla(path = 'yuzler/');
#Test encodelarını çıkart
(encodedTDB, encodedTDBLabel, kisilerTDB) = encodeHesapla(path = 'test');

encodedDB = np.array(encodedDB);
encodedDBLabel = np.array(encodedDBLabel);
kisilerDB = np.array(kisilerDB);

encodedTDB = np.array(encodedTDB);
encodedTDBLabel = np.array(encodedTDBLabel);
kisilerTDB = np.array(kisilerTDB);<jupyter_output><empty_output><jupyter_text>Öklid Uzunluğu Kullanarak Yüzleri Tahmin Et<jupyter_code>def karsilastirOklid(x, y):
    z = x - y
    dist = np.sqrt(np.sum(np.multiply(z, z)))
    return dist
tahminTest = [];
mesafe = dict();
for i,enc_test in enumerate(encodedTDB):
    araMes = []
    for j,enc_data in enumerate(encodedDB):
        araMes.append(karsilastirOklid(enc_test, enc_data))
    
    minumum = np.min(araMes)
    print(minumum)
    if minumum < 80:
        indis=np.where(araMes == minumum)
        tahminTest.append(kisilerDB[encodedDBLabel[int(indis[0])]])
    else:
        tahminTest.append("Bilinmeyen")
    #end
#end

print("Gerçek:\n \t\t "+ str(kisilerTDB[encodedTDBLabel])+"\n")
print("Tahmin Edilenler:\n \t\t "+ str(tahminTest)+"\n")
len(encodedDB)<jupyter_output><empty_output><jupyter_text>SOFTMAX ile Yüzleri Tahmin Et<jupyter_code>#Softmax ile gelen verileri sınıflandırma işlemi
tahminModel=Sequential()	
tahminModel.add(Dense(units=100, input_dim=encodedDB.shape[2], kernel_initializer='glorot_uniform'))		
tahminModel.add(BatchNormalization())		
tahminModel.add(Activation('tanh'))
tahminModel.add(Dropout(0.3))
tahminModel.add(Dense(units=10,kernel_initializer='glorot_uniform'))
tahminModel.add(BatchNormalization())
tahminModel.add(Activation('tanh'))
tahminModel.add(Dropout(0.2))
tahminModel.add(Dense(units=len(encodedDB), kernel_initializer='he_uniform'))
tahminModel.add(Activation('softmax'))
tahminModel.compile(loss=tf.keras.losses.SparseCategoricalCrossentropy(), optimizer='nadam', metrics=['accuracy'])
def tahmin(img_encode):
      embed = kB.eval(img_encode)
      person = tahminModel.predict(embed)
      name = kisilerDB[encodedDBLabel[np.argmax(person)]]
      return name;<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.15661823589978263, 'fraction_numerical': 0.060633794760324905, 'mean_word_length': 5.27116212338594, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '365908', 'license': 'MIT', 'n_tokens_mistral': 3880, 'n_tokens_neox': 3504, 'n_words': 596, 'path': 'Face/VGG-Keras_face/face_keras.ipynb', 'repo_name': 'blitzkrieg0000/FaceRecognitionProcessesBundle', 'size': '8741'}