|-g\ ddlZddlZejdejejejeddlZddlZddl Z ddl Z ddl m Z ddlmZddl m Z mZddlmZmZmZddlmZmZmZddlmZGdd Zed krddlZd ZeZeeje_eej e_ e j!ej"Z#e j!ej$Z%eej&ej'ej(ej Z)e)e#e%dej*ej+ej dSdS)N)Image) rearrange)r ImageSequence)seed_everythingtiming_decoratorauto_amp_inference)get_parameter_numberset_parameter_grad_false str_to_bool)MV23DPredictorceZdZ d dZejededZ d d Z dS) Views2Meshcuda:0Fc*t||||_|jj|rgdngd|_||_||_t|jjtdt|jjdS)z mv23d_cfg_path: config yaml file mv23d_ckt_path: path to ckpt use_lite: lite version save_memory: cpu auto )device)r)rrrrrrzview2mesh modelN) r mv23d_predictormodelevalorderr save_memoryr printr )selfmv23d_cfg_pathmv23d_ckt_pathruse_liters `/apdcephfs_cq5/share_300600172/huiwenshi/3d_services/repos/hunyuan3d-lite/infer/views_to_mesh.py__init__zViews2Mesh.__init__(s .nnU[\\\ "'')))+3K''''9K9K9K  & !5!;<<< !5d6J6P!Q!QRRRRRz views to meshcp|jr|jj|j|j_t j|j|i|}|jjd|j_n |j|i|}t j|S)Ncpu) rrrtortorchcuda empty_cachecall)rargskwargsress r!__call__zViews2Mesh.__call__8s   -)-)=)C)F)Ft{)S)SD & J " " $ $ $$)T,V,,C)-)=)C)F)Fu)M)MD & &$)T,V,,C     r#Nr'T./outputs/testc |}tj|d|Y|Wttj|tjddd fd |jD} |g| z} d | D} n |d tj|D} | d } | d d| dd z} t||j | || ||tj |S)z can set views_pil, cond_pil simutaously or set gif_pil only seed: int target_face_count: int save_folder: path to save mesh files T)exist_okN)dtypez(n h) (m w) c -> (n m) h w crr)nmcDg|]}tj|S)r fromarray).0idx show_images r! z#Views2Mesh.call..\s'LLL#U_Z_55LLLr#c8g|]}|dSRGBconvertr9imgs r!r<z#Views2Mesh.call..^s$CCC#++e,,CCCr#c8g|]}|dSr>r@rBs r!r<z#Views2Mesh.call..`s$XXX#++e,,XXXr#rr)save_dir image_inputtarget_face_countdo_texture_mapping)osmakedirsrnpasarrayuint8rrIteratorrrpredictr'r(r)) r views_pilcond_pilgif_pilseedrGrH save_folderrEviews image_listrFr;s @r!r*zViews2Mesh.callFs6  Ht,,,,  X%9"2:irx#H#H#H#AQ!MMMJLLLLLLLE"U*JCC CCCJJ  XX 8Nw8W8WXXXJ m ^j!n4  $$ % 1!3 %        r#)rFF)NNNrr/Tr0) __name__ __module__ __qualname__r"r'no_gradrrr.r*r7r#r!rr's>CSSSS U]__o&&  '&_  !!$((((((r#r__main__c\tj}|dtd|dtd|ddt|dd t|d d t|d d td|ddt|ddt|ddt|S)Nz --views_pathT)typerequiredz --cond_pathz --save_folderz./outputs/test/)defaultr]z--mv23d_cfg_pathz./svrm/configs/svrm.yamlz--mv23d_ckt_pathzweights/svrm/svrm.safetensorsz--max_faces_numi_z:max num of face, suggest 90000 for effect, 10000 for speed)r_r]helpz--devicerz --use_litefalsez--do_texture_mapping)argparseArgumentParser add_argumentstrint parse_args)parsers r!get_argsrius,(**NtDDDMdCCCO5FSQQQ.8RY\]]].8W^abbb-u3M  O O OJsCCCL'DDD2G#NNN  """r#)rr )rGrTrH),rIsyspathinsertdirnameabspath__file__timer'randomnumpyrKPILreinopsrr infer.utilsrrrr r r svrm.predictorr rrWrbrir+r rHopen views_pathrU cond_pathcondrrrviews_to_mesh_model max_faces_numrTr7r#r!r}s2.bgoobgoobgooh6O6O&P&PQQSTTT $$$$$$$$MMMMMMMMMMSSSSSSSSSS))))))GGGGGGGGT zOOO # # # 8::DK ..DM)k$*ABBD EJt ' 'E 5:dn % %D$*  =  q .&!4 Cr#