o
    ॵi	                     @   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   f/home/ubuntu/.local/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	   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   	inference)r   r$   r    r!   outputr"   r   r   r   forward;   s
   zImageFaceFusionPipeline.forwardinputsc                 C   s   |d }t j|iS )Nr%   )r   
OUTPUT_IMG)r   r)   
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npmodelscope.metainfor   modelscope.outputsr   modelscope.pipelines.baser   r   modelscope.pipelines.builderr   modelscope.preprocessorsr	   modelscope.utils.constantr
   r   modelscope.utils.loggerr   r   register_moduleimage_face_fusionr   r   r   r   r   <module>   s   