o
    *jX
                     @   s   d dl mZmZ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 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ejeje	jdG dd deZdS )    )AnyDictOptionalUnionN)
transforms)	Pipelines)Model)RRDBImageDebanding)
OutputKeys)InputPipeline)	PIPELINES)	LoadImage)Tasks)
get_logger)module_namec                       s   e Zd Zdeeef f fddZdedeee	f fddZ
e deee	f deee	f f fdd	Zd
eee	f deee	f fddZ  ZS )ImageDebandingPipelinemodelc                    sJ   t  jdd|i| | j  tj rtd| _dS td| _dS )a  The inference pipeline for image debanding.

        Args:
            model (`str` or `Model` or module instance): A model instance or a model local dir
                or a model id in the model hub.
            preprocessor (`Preprocessor`, `optional`): A Preprocessor instance.
            kwargs (dict, `optional`):
                Extra kwargs passed into the preprocessor's constructor.

        Example:
            >>> import cv2
            >>> from modelscope.outputs import OutputKeys
            >>> from modelscope.pipelines import pipeline
            >>> from modelscope.utils.constant import Tasks
            >>> debanding = pipeline(Tasks.image_debanding, model='damo/cv_rrdb_image-debanding')
                result = debanding(
                    'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/debanding.png')
            >>> cv2.imwrite('result.png', result[OutputKeys.OUTPUT_IMG])
        r   cudacpuN )	super__init__r   evaltorchr   Zis_availableZdevice_device)selfr   kwargs	__class__r   q/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/modelscope/pipelines/cv/image_debanding_pipeline.pyr      s
   

zImageDebandingPipeline.__init__inputreturnc                 C   s<   t |}tt g}||}d|d| ji}|S )Nsrcr   )r   Zconvert_to_imgr   ZComposeZToTensorZ	unsqueezetor   )r   r!   ZimgZtest_transformsresultr   r   r    
preprocess4   s
   
z!ImageDebandingPipeline.preprocessc                    s   t  |S )N)r   forward)r   r!   r   r   r    r'   ;   s   zImageDebandingPipeline.forwardinputsc                 C   sN   |d  dd tj ddd d d d d d d df }tj|iS )NZoutputsr   g     o@      )	Zsqueezetyper   Zuint8r   Zpermutenumpyr
   Z
OUTPUT_IMG)r   r(   Z
output_imgr   r   r    postprocess?   s   (
z"ImageDebandingPipeline.postprocess)__name__
__module____qualname__r   r	   strr   r   r   r   r&   r   Zno_gradr'   r.   __classcell__r   r   r   r    r      s    (*r   )typingr   r   r   r   r   Ztorchvisionr   Zmodelscope.metainfor   Zmodelscope.models.baser   Z$modelscope.models.cv.image_debandingr	   Zmodelscope.outputsr
   Zmodelscope.pipelines.baser   r   Zmodelscope.pipelines.builderr   Zmodelscope.preprocessorsr   Zmodelscope.utils.constantr   Zmodelscope.utils.loggerr   loggerZregister_moduleZimage_debandingr   r   r   r   r    <module>   s"   