o
    *j	                     @   s   d dl mZmZ d dl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 e Zejejejd
G dd deZdS )    )AnyDictN)	Pipelines)
OutputKeys)InputPipeline)	PIPELINES)	LoadImage)	ModelFileTasks)
get_logger)module_namec                	       s   e Zd ZdZdef fddZ	ddededeee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 )ImageFaceFusionPipelinea  
    Image face fusion pipeline.

    Examples:

    >>> from modelscope.pipelines import pipeline
    >>> image_face_fusion = pipeline(Tasks.image_face_fusion,
                   model='damo/cv_unet-image-face-fusion_damo')
    >>> image_face_fusion({
            'template': 'facefusion_template.jpg', # template path (str)
            'image': 'facefusion_user.jpg', # user path (str)
        })
       {
        "output_img": [H * W * 3] 0~255, we can use cv2.imwrite to save output_img as an image.
        }
    modelc                    s$   t  jdd|i| td dS )z
        use `model` to create image-face-fusion pipeline for prediction
        Args:
            model: model id on modelscope hub.
        r   z!image face fusion model init doneN )super__init__loggerinfo)selfr   kwargs	__class__r   s/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/pipelines/cv/image_face_fusion_pipeline.pyr   %   s   z ImageFaceFusionPipeline.__init__Ntemplateuserreturnc                 C   s>   t |tu r|d }|d }t|}t|}||d}|S )Nr   r   )r   r   )typedictr	   Zconvert_to_ndarray)r   r   r   template_imguser_imgresultr   r   r   
preprocess.   s   


z"ImageFaceFusionPipeline.preprocessinputc                 C   s*   |d }|d }| j ||}d|i}|S )Nr   r   outputs)r   Z	inference)r   r#   r   r    outputr!   r   r   r   forward;   s
   zImageFaceFusionPipeline.forwardinputsc                 C   s   |d }t j|iS )Nr$   )r   Z
OUTPUT_IMG)r   r'   Z
output_imgr   r   r   postprocessB   s   
z#ImageFaceFusionPipeline.postprocess)N)__name__
__module____qualname____doc__strr   r   r   r   r"   r&   r(   __classcell__r   r   r   r   r      s    

"*r   )typingr   r   numpynpZmodelscope.metainfor   Zmodelscope.outputsr   Zmodelscope.pipelines.baser   r   Zmodelscope.pipelines.builderr   Zmodelscope.preprocessorsr	   Zmodelscope.utils.constantr
   r   Zmodelscope.utils.loggerr   r   Zregister_moduleZimage_face_fusionr   r   r   r   r   <module>   s   