o
    *j	                     @   s   d dl mZ d dlmZmZ d dlZd dlZd dl	Z	d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZmZ d dlm Z  ddl!m"Z" e  Z#ej$ej%ej%dG dd de"Z&dS )    N)AnyDict)	Pipelines)FaceAttributeRecognition)
align_face)
OutputKeys)pipeline)InputPipeline)	PIPELINES)	LoadImage)	ModelFileTasks)
get_logger   )FaceProcessingBasePipeline)module_namec                       s   e Zd Zdef fddZdedeeef f fddZdeeef deeef fdd	Z	d
eeef deeef fddZ
  ZS ) FaceAttributeRecognitionPipelinemodelc                    s   t  jdd|i| t|tj}td|  t	tj
 r&dd nd}t||d}|| _|| _	td dd	g}g d
}||g| _dS )z
        use `model` to create a face attribute recognition pipeline for prediction
        Args:
            model: model id on modelscope hub.
        r   zloading model from zcuda:r   cpu)Z
model_pathdevicezload model doneZMaleZFemale)	z0-2z3-9z10-19z20-29z30-39z40-49z50-59z60-69z70+N )super__init__ospjoinr   ZTORCH_MODEL_FILEloggerinfotorchr   cudaZis_availabler   fairfacemap_list)selfr   kwargsZ	ckpt_pathr   r    Z	male_listZage_list	__class__r   |/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/pipelines/cv/face_attribute_recognition_pipeline.pyr      s   
z)FaceAttributeRecognitionPipeline.__init__inputreturnc                    s(   t  |}|d u ri }d |d< |S |S NZimg)r   
preprocess)r"   r'   resultZrtn_dictr$   r   r&   r*   7   s   z+FaceAttributeRecognitionPipeline.preprocessc                 C   sH   |d d u rt jd t jd iS | |d }|d usJ t j|t j| jiS r)   )r   ZSCORESZLABELSr    r!   )r"   r'   Zscoresr   r   r&   forward?   s
   z(FaceAttributeRecognitionPipeline.forwardinputsc                 C   s   |S )Nr   )r"   r-   r   r   r&   postprocessF   s   z,FaceAttributeRecognitionPipeline.postprocess)__name__
__module____qualname__strr   r	   r   r   r*   r,   r.   __classcell__r   r   r$   r&   r      s
    "*r   )'Zos.pathpathr   typingr   r   Zcv2numpynpZPILr   Zmodelscope.metainfor   Z/modelscope.models.cv.face_attribute_recognitionr   Z0modelscope.models.cv.face_recognition.align_facer   Zmodelscope.outputsr   Zmodelscope.pipelinesr   Zmodelscope.pipelines.baser	   r
   Zmodelscope.pipelines.builderr   Zmodelscope.preprocessorsr   Zmodelscope.utils.constantr   r   Zmodelscope.utils.loggerr    r   r   Zregister_moduleZface_attribute_recognitionr   r   r   r   r&   <module>   s.   