o
    ॵi6
                     @   s   d dl mZmZmZm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mZ d dlmZ d dlmZ d d	lmZ d d
lmZ e ZdgZejeje	jdG dd deZdS )    )AnyDictOptionalUnionN)	Pipelines)BadImageDetecting)
OutputKeys)InputPipeline)	PIPELINES)	LoadImage)Tasks)
get_loggerBadImageDetecingPipeline)module_namec                       s   e Zd ZdZdeeef 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 )r   aB   Image Restoration Pipeline .

    Take bad_image_detecting as an example
    ```python
    >>> from modelscope.pipelines import pipeline
    >>> image_pipeline = pipeline(Tasks.bad_image_detecting, model=model_id)
    >>> image_pipeline("https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/dogs.jpg")

    ```
    modelc                    s\   t  jdd|i| | j  g d| _tj r!td| _	ntd| _	t
d dS )z
        use `model` and `preprocessor` to create a cv image denoise pipeline for prediction
        Args:
            model: model id on modelscope hub.
        r   )u   正常u   花屏u   绿屏cudacpuz#load bad image detecting model doneN )super__init__r   evallabelstorchr   is_availabledevice_deviceloggerinfo)selfr   kwargs	__class__r   h/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/pipelines/cv/bad_image_detecting_pipeline.pyr   #   s   


z!BadImageDetecingPipeline.__init__inputreturnc                 C   s   t |}| |}|S )N)r   convert_to_ndarraypreprocessor)r   r$   imgresultr   r   r#   
preprocess3   s   

z#BadImageDetecingPipeline.preprocessc                 C   s>   t   | |}W d    n1 sw   Y  d|d iS )Noutput)r   no_gradr   )r   r$   r+   r   r   r#   forward9   s   
z BadImageDetecingPipeline.forwardc                    s   |d }t j|dd  }tj|ddd d d d }tj|ddd d d d }dd |D  fd	d|D d
}tj|d tj	|d i}|S )Nr+      )dim)axisr   c                 S   s   g | ]}|qS r   r   ).0scorer   r   r#   
<listcomp>H   s    z8BadImageDetecingPipeline.postprocess.<locals>.<listcomp>c                    s   g | ]} j | qS r   )r   )r2   labelr   r   r#   r4   I   s    )
pred_score
pred_classr7   r8   )
r   softmaxr   numpynpsortargsortr   SCORESLABELS)r   r$   predr3   pred_scorespred_labelsr)   outputsr   r6   r#   postprocess@   s   

z$BadImageDetecingPipeline.postprocess)__name__
__module____qualname____doc__r   r   strr   r	   r   r   r*   r-   rD   __classcell__r   r   r!   r#   r      s    "*)typingr   r   r   r   r:   r;   r   modelscope.metainfor   (modelscope.models.cv.bad_image_detectingr   modelscope.outputsr   modelscope.pipelines.baser	   r
   modelscope.pipelines.builderr   modelscope.preprocessorsr   modelscope.utils.constantr   modelscope.utils.loggerr   r   __all__register_modulebad_image_detectingr   r   r   r   r#   <module>   s"   