
    >|h                     8   d dl mZ d dlZd dlZd dlZd dlZd dlmZm	Z	 d dl
mZ d dlmZ  ed      Z ej                         Z ej"                         Zedk(  rd d	lmZmZ d d
lmZmZmZmZmZ nd d	lmZmZ d d
lmZmZmZmZmZ  G d de      Z	 ddefdZy)    )ListN)package_utilsfolder_utils)Logger)FacialRecognitionzbasemodels.FbDeepFace)module   )Model
Sequential)Convolution2DMaxPooling2DFlattenDenseDropoutc                   @    e Zd ZdZd Zdej                  dee   fdZ	y)DeepFaceClientz#
    Fb's DeepFace model class
    c                     t         dk(  r#t        dkD  rt        dt          dt         d      t               | _        d| _        d| _        d| _        y )	N      zdDeepFace model requires LocallyConnected2D but it is no longer supported after tf 2.12 but you have .z . You need to downgrade your tf.DeepFace)   r      )tf_majortf_minor
ValueError
load_modelmodel
model_nameinput_shapeoutput_shape)selfs    ]/var/www/html/test/engine/venv/lib/python3.12/site-packages/deepface/basemodels/FbDeepFace.py__init__zDeepFaceClient.__init__-   sW    q=X]//7j(Cce 
  \
$%     imgreturnc                 f    | j                  |d      j                         d   j                         S )z
        find embeddings with OpenFace model
        Args:
            img (np.ndarray): pre-loaded image in BGR
        Returns
            embeddings (list): multi-dimensional vector
        F)trainingr   )r   numpytolist)r"   r&   s     r#   find_embeddingszDeepFaceClient.find_embeddings;   s.     zz#z.446q9@@BBr%   N)
__name__
__module____qualname____doc__r$   npndarrayr   floatr,    r%   r#   r   r   (   s*    !
C2:: 
C$u+ 
Cr%   r   r'   c           	      t   t         dk(  rddlm} nddlm} t	               }|j                  t        ddddd	             |j                  t        d
ddd             |j                  t        dddd             |j                   |dddd             |j                   |ddddd             |j                   |dddd             |j                  t        d             |j                  t        ddd             |j                  t        dd             |j                  t        d d!d"             t        j                         }t        j                  j                  |d#z         d$k7  ret         j#                  d%       |d&z   }t%        j&                  | |d'(       t)        j*                  |d)      5 }|j-                  |d*z          d+d+d+       |j/                  |d#z          t1        |j2                  d   j4                  |j2                  d,   j6                  -      }|S # 1 sw Y   ZxY w).zA
    Construct DeepFace model, download its weights and load
    r	   r   )LocallyConnected2D    )   r8   reluC1)r   r      )
activationnamer    r;   r   sameM2)	pool_sizestridespaddingr=      )	   rD   C3)r<   r=   L4)   rG   L5)rA   r<   r=   )   rI   L6F0)r=   r   F7g      ?D0)rater=   i!  softmaxF8z:/.deepface/weights/VGGFace2_DeepFace_weights_val-0.9034.h5Tz=VGGFace2_DeepFace_weights_val-0.9034.h5 will be downloaded...z>/.deepface/weights/VGGFace2_DeepFace_weights_val-0.9034.h5.zipF)quietrz/.deepface/weights/N)inputsoutputs)r   keras.layersr6   tensorflow.keras.layersr   addr   r   r   r   r   r   get_deepface_homeospathisfileloggerinfogdowndownloadzipfileZipFile
extractallload_weightsr
   layersinputoutput)urlr6   
base_modelhomerg   zip_refdeepface_models          r#   r   r   H   s    1}3>JNNb(vDm\ NN<!QTRSNN=VTJKNN%b&V$OPNN%b&!UYZ[NN%b&V$OPNN7%&NN5&t<=NN7$/0NN5)$?@ ))+D	ww~~dYYZ^bbSTXXsF%0 __VS) 	=Wt&;;<	= D#__` *"3"3A"6"<"<jFWFWXZF[FbFbcN	= 	=s    H..H7)z}https://github.com/swghosh/DeepFace/releases/download/weights-vggface2-2d-aligned/VGGFace2_DeepFace_weights_val-0.9034.h5.zip) typingr   rZ   ra   r_   r*   r1   deepface.commonsr   r   deepface.commons.loggerr   !deepface.models.FacialRecognitionr   r]   get_tf_major_versionr   get_tf_minor_versionr   keras.modelsr
   r   rV   r   r   r   r   r   tensorflow.keras.modelsrW   r   r   r4   r%   r#   <module>ru      s     	    8 * ?	.	/
 .=--/-=--/q=.  : C& CB 	H/
/r%   