o
    ॵi                      @   s   d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ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 )    )AnyDict)	Pipelines)
OutputKeys)InputModelPipeline)	PIPELINES)is_modelis_official_hub_path)InvokeTasks)
get_logger)module_namec                       s   e Zd ZdZ							d 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	deeef deeef fddZ
  ZS )NeRFReconAccPipelinea   NeRF reconstruction acceleration pipeline
    Example:

    ```python
    >>> from modelscope.pipelines import pipeline
    >>> nerf_recon_acc = pipeline(Tasks.nerf_recon_acc,
                'damo/cv_nerf-3d-reconstruction-accelerate_damo')
    >>> nerf_recon_acc({
            'data_dir': '/data/lego', # data dir path (str)
            'render_dir': 'save_dir', # save dir path (str)
        })
    >>> #
    ```
    blenderT Fx      gpuc	           
         s   t |rtj||dtj||||||d
n|}t jd
d|i|	 t| jts0t	
d td|| _| jdkrE| jdkrEtd| j|| _t	d d	S )ae  
        use model to create a image sky change pipeline for image editing
        Args:
            model (str or Model): model_id on modelscope hub
            data_type (str): currently only support 'blender' and 'colmap'
            use_mask (bool): segment the object or not
            ckpt_path (str): the checkpoint ckpt_path
            save_mesh (bool): render mesh or not
            n_test_traj_steps (int): number of random sampled images for test view, only for colmap data.
            test_ray_chunk (int): ray chunk size for test, avoid GPU OOM
            device (str): only support gpu
        T)	devicemodel_prefetched
invoked_by	data_typeuse_mask	ckpt_path	save_meshn_test_traj_stepstest_ray_chunkmodelz model object is not initialized.r   colmapz%data type {} is not support currentlyzload model doneN )r
   r   from_pretrainedr   PIPELINEsuper__init__
isinstancer   loggererror	Exceptionr   formatr   info)
selfr   r   r   r   r   r   r   r   kwargs	__class__r!   c/home/ubuntu/.local/lib/python3.10/site-packages/modelscope/pipelines/cv/nerf_recon_acc_pipeline.pyr%   !   s4    

zNeRFReconAccPipeline.__init__inputsreturnc                 C      |S Nr!   r,   r1   r!   r!   r0   
preprocessN      zNeRFReconAccPipeline.preprocessinputc                 C   s(   |d }|d }| j || tjdiS )Ndata_dir
render_dirDone)r   nerf_reconstructionr   OUTPUT)r,   r8   r9   r:   r!   r!   r0   forwardQ   s   
zNeRFReconAccPipeline.forwardc                 C   r3   r4   r!   r5   r!   r!   r0   postprocessW   r7   z NeRFReconAccPipeline.postprocess)r   Tr   Fr   r   r   )__name__
__module____qualname____doc__r%   r   strr   r6   r>   r?   __classcell__r!   r!   r.   r0   r      s    "-"*r   N)typingr   r   modelscope.metainfor   modelscope.outputsr   modelscope.pipelines.baser   r   r   modelscope.pipelines.builderr	   modelscope.pipelines.utilr
   r   modelscope.utils.constantr   r   modelscope.utils.loggerr   r'   register_modulenerf_recon_accr   r!   r!   r!   r0   <module>   s   