o
    ॵi                     @   s   d dl Z d dlZ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 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 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 )    N)AnyDict)Image)	Pipelines)
OutputKeys)InputPipeline)	PIPELINES)	LoadImage)Config)	ModelFileTasks)
get_logger)module_namec                       s   e Zd Zdef fddZ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 )ImageReidPersonPipelinemodelc                    s   t |ts	J dt jd|dd| td|  tj|t	j
}t|}|jj}| j| j| _| j  tt|jjt tj|jj|jjdg| _dS )z8
            model: model id on modelscope hub.
        zmodel must be a single strF)r   auto_collatezloading model config from dir )meanstdN )
isinstancestrsuper__init__loggerinfoospathjoinr   CONFIGURATIONr   	from_filer   cfgtodeviceevalTComposeResizeINPUT	SIZE_TESTToTensor	Normalize
PIXEL_MEAN	PIXEL_STDval_transforms)selfr   kwargscfg_pathr!   	__class__r   f/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/pipelines/cv/image_reid_person_pipeline.pyr      s   

z ImageReidPersonPipeline.__init__inputreturnc                 C   s2   t |}| |}|d}|| j}d|iS )Nr   img)r
   convert_to_imgr.   	unsqueezer"   r#   )r/   r5   r7   r   r   r4   
preprocess.   s
   


z"ImageReidPersonPipeline.preprocessc                 C   s,   |d }|  |}|   }tj|iS )Nr7   )r   detachcpunumpyr   IMG_EMBEDDING)r/   r5   r7   img_embeddingr   r   r4   forward5   s   

zImageReidPersonPipeline.forwardinputsc                 C   s   |S )Nr   )r/   rA   r   r   r4   postprocess;   s   z#ImageReidPersonPipeline.postprocess)__name__
__module____qualname__r   r   r   r   r   r:   r@   rB   __classcell__r   r   r2   r4   r      s
    "*r   )!mathr   typingr   r   torchtorchvision.transforms
transformsr%   PILr   modelscope.metainfor   modelscope.outputsr   modelscope.pipelines.baser   r   modelscope.pipelines.builderr	   modelscope.preprocessors.imager
   modelscope.utils.configr   modelscope.utils.constantr   r   modelscope.utils.loggerr   r   register_moduleimage_reid_personr   r   r   r   r4   <module>   s&   