o
    ߥi,                     @   s   d dl mZ d dlmZ d dlZd dl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jejejd
G dd deZdd ZdS )    N)Optional)
functional)Models)Tensor
TorchModel)MODELS)MattingNetwork)	ModelFileTasks)
get_logger)module_namec                       s"   e Zd Zdef fddZ  ZS )VideoMattingNetwork	model_dirc                    sp   t  j|g|R i | t|tj}tj|dd}t | _	d|
 v r)|d }| j	j|dd | j	  d S )Ncpu)map_locationmodel_state_dictT)strict)super__init__ospjoinr	   TORCH_MODEL_FILEtorchloadr   modelkeysload_state_dicteval)selfr   argskwargs
model_pathparams	__class__ b/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/models/cv/video_human_matting/model.pyr      s   zVideoMattingNetwork.__init__)__name__
__module____qualname__strr   __classcell__r%   r%   r#   r&   r      s    r   c                 C   sF   t | d }|ddd}t|}|d d d d d d d f }|S )Ng     o@   r      )npfloat32	transposer   
from_numpy)imageframe_npframe_tensorimage_tensorr%   r%   r&   
preprocess!   s
   
r6   )os.pathpathr   typingr   numpyr.   r   torchvisiontorch.nnr   Fmodelscope.metainfor   modelscope.models.baser   r   modelscope.models.builderr   /modelscope.models.cv.video_human_matting.modelsr   modelscope.utils.constantr	   r
   modelscope.utils.loggerr   register_modulevideo_human_mattingr   r6   r%   r%   r%   r&   <module>   s"   