
    >|hH
                     6   d dl Z d dlZd dlZd dlm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dk(  rd d	lmZmZ d d
lmZmZmZ nd d	lmZmZ d d
lmZmZmZ  G d de      Z	 ddefdZdej6                  dej8                  fdZy)    N)VGGFace)package_utilsfolder_utils)Logger)
Demographyzextendedmodels.Age)module   )Model
Sequential)Convolution2DFlatten
Activationc                   N    e Zd ZdZd Zdej                  dej                  fdZy)ApparentAgeClientz
    Age model class
    c                 0    t               | _        d| _        y )NAge)
load_modelmodel
model_name)selfs    Z/var/www/html/test/engine/venv/lib/python3.12/site-packages/deepface/extendedmodels/Age.py__init__zApparentAgeClient.__init__   s    \
    imgreturnc                 `    | j                   j                  |d      dd d f   }t        |      S )Nr   )verbose)r   predictfind_apparent_age)r   r   age_predictionss      r   r   zApparentAgeClient.predict#   s/    **,,S!,<QTB 11r   N)	__name__
__module____qualname____doc__r   npndarrayfloat64r    r   r   r   r      s'     22:: 2"** 2r   r   r   c                 
   t        j                         }d}t               } t        |dd      |j                  d   j
                        } t               |      } t        d      |      }t        |j                  |      }t        j                         }t        j                  j                  |dz         d	k7  r2t        j!                  d
       |dz   }t#        j$                  | |d       |j'                  |dz          |S )z_
    Construct age model, download its weights and load
    Returns:
        model (Model)
    e   )r	   r	   predictions)namesoftmax)inputsoutputsz'/.deepface/weights/age_model_weights.h5Tz*age_model_weights.h5 will be downloaded...F)quiet)r   
base_modelr   r   layersoutputr   r   r
   inputr   get_deepface_homeospathisfileloggerinfogdowndownloadload_weights)urlr   classesbase_model_output	age_modelhomer4   s          r   r   r   (   s      E G"JgvMJ5<<XZK[KbKbc!	"34-
9-.?@ U[[2CDI ))+D	ww~~dFFG4O@AAAsF%04"KKLr   r    c                     t        j                  t        t        dd                  }t        j                  | |z        }|S )z
    Find apparent age prediction from a given probas of ages
    Args:
        age_predictions (?)
    Returns:
        apparent_age (float)
    r   r*   )r%   arraylistrangesum)r    output_indexesapparent_ages      r   r   r   R   s6     XXd5C=12N66/N:;Lr   )zWhttps://github.com/serengil/deepface_models/releases/download/v1.0/age_model_weights.h5)r7   r<   numpyr%   deepface.basemodelsr   deepface.commonsr   r   deepface.commons.loggerr   deepface.models.Demographyr   r:   get_tf_major_version
tf_versionkeras.modelsr
   r   keras.layersr   r   r   tensorflow.keras.modelstensorflow.keras.layersr   r   r&   r'   r   r(   r   r   <module>rV      s    	   ' 8 * 1	+	,
 0]//1
?.??9JJ
2
 2 	b%
%T
rzz 
bjj 
r   