o
    ॵi                     @   s   d dl Z d dlmZ d dlmZm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 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)collatescatter)	Pipelines)VisionMiddlewareModel)
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 )VisionMiddlewarePipelinemodelc                    s^   t  jdd|i| | j | _| j  ttdt tj	g dg ddg| _
dS )z
        use `model` to create a vision middleware pipeline for prediction
        Args:
            model: model id on modelscope hub.
        r   )   r   )g
ףp=
?gv/?gCl?)gZd;O?gy&1?g?)meanstdN )super__init__r   cudaeval
transformsComposeResizeToTensor	Normalize	transform)selfr   kwargs	__class__r   f/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/pipelines/cv/vision_middleware_pipeline.pyr      s   
z!VisionMiddlewarePipeline.__init__inputreturnc                 C   sR   t |}| |}t|gdd}t| j jr't|t| j j	gd }|S )N   )samples_per_gpur   )
r   convert_to_imgr!   r   nextr   
parametersis_cudar   device)r"   r'   imgdatar   r   r&   
preprocess/   s   

z#VisionMiddlewarePipeline.preprocessc                 C   s>   t   | j|dd}|W  d    S 1 sw   Y  d S )Nzseg-voc)	task_name)torchno_gradr   )r"   r'   resultsr   r   r&   forward;   s   
$z VisionMiddlewarePipeline.forwardinputsc                 C   s   |S )Nr   )r"   r8   r   r   r&   postprocessA   s   z$VisionMiddlewarePipeline.postprocess)__name__
__module____qualname__strr   r	   r   r   r2   r7   r9   __classcell__r   r   r$   r&   r      s
    "*r   )(mathos.pathpathosptypingr   r   numpynpr4   torchvision.transformsr   mmcv.parallelr   r   modelscope.metainfor   &modelscope.models.cv.vision_middlewarer   modelscope.outputsr   modelscope.pipelines.baser	   r
   modelscope.pipelines.builderr   modelscope.preprocessorsr   modelscope.utils.configr   modelscope.utils.constantr   r   modelscope.utils.loggerr   loggerregister_moduleimage_segmentationvision_middleware_multi_taskr   r   r   r   r&   <module>   s,   