o f@sddlZddlZddlZd5ddZd6dd Zd6d d Zd6d d Zd6ddZe d6ddZ e d6ddZ e d6ddZ dej dej dej fddZd7dej dedej fddZd7dej dedej fdd Zd!d"Zd#d$Zd8dd&d'd(Zd)d*Zd+d,Zd9d/d0Zd:d3d4ZdS);NH.!??皙?@@c Csnt|d}tjd|dddgd| |ddgdd|| ||d|| ||ggdgtj|dS)Nr)rrrdtypedevice)nptantorchtensorfloat32)fovxaspectnfr xr*/home/gustavo/Documentos/CRM/util/utils.py perspectives*rcCs6tjddd|gddd|gddd|ggdgtj|dS)Nrrrrrrr )rrr)ryzr rrr translates  rcCsJt|t|}}tjgdd|| dgd||dggdgtj|dS)N)rrrrrrr r sincosrrrar scrrrrotate_xs   r$cCsJt|t|}}tj|d|dggd| d|dggdgtj|dS)Nr)rrrrrr rr rrrrotate_ys r%cCsJt|t|}}tj|| ddg||ddggdgdgtj|dS)Nr)rrrrrr rr rrrrotate_z's r&cCstjj|ddgd}t|dddf|dddf|dddf<t|dddf|dddf|dddf<|tjj|ddd}tj|ddgddgddggdd }d |ddddf<tjj| ||dgd|dddddf<tj |tj |d S) NsizerrrTaxiskeepdimsconstantmoderr r randomnormalcrosslinalgnormpaduniformrrr)btr mrrr!batch_random_rotation_translation.s00"*r;cCstjjddgd}t|d|d|d<t|d|d|d<|tjj|ddd}tj|ddgddggdd }d |d <tjj| |dgd|dddf<tj |tj |d S) Nr'r(rrrTr*r-r.rr'r'r r0)r9r r:rrrrandom_rotation_translation9"r=cCstjjddgd}t|d|d|d<t|d|d|d<|tjj|ddd}tj|ddgddggdd }d |d <tgd tj |dddf<t j |t j |d S)Nr'r(rrrTr*r-r.rr<)rrrr ) r r1r2r3r4r5r6arrayastyperrr)r r:rrrrandom_rotationEr>rArrreturncCstj||dddS)NrT)keepdim)rsum)rrrrrdotQsrE#B ;epscCsttjt|||dS)N)min)rsqrtclamprErrGrrrlengthUsrLcCs|t||SN)rLrKrrrsafe_normalizeYsrNcCs(||kr||Stdd|| |S)N )max)iter warmup_iterscheduler_decayrrr lr_schedule]s  rUcCsZ|d}|dk}||||8<||||d||<|dS)Nruint8)detachcpunumpyrHrQr@)depthvalidrrr trans_depthds  r]rO)outcCsft|tjsJ|durt|jj}|durt|jj}|dks$Jtj|d d|||dS)Nr)rHrQr^) isinstancerTensorfinfor rQrHrJ unsqueezenansum)inputnanposinfneginfr^rrr nan_to_numls rhcCsJt|d}dd|D}Wdt|S1swYt|S)NrcSsg|]}|qSr)strip).0namerrr xszload_item..)open readlinesset)filepathritemsrrr load_itemvs  rscCsji}t|d$}|D]}|d}d|dd||d<q Wd|S1s.wY|S)Nri,rr)rnrosplitjoinrj)rq uuid2promptrline list_linerrr load_prompt{s     rzffffff?Fc Cs|dkr|S|j\}}}} t||t| |} } tjjj|| | fdddd} t||} || d| | d}}|dkrW| | dddd||| ||| f<nEt|D]@}t | |}t | |}|dkr|dks{|dks{|dkrd}d}| || |dd|||| ||||| |f<q[|dkr| St|D]#}t|D]}| ||ddddft d d|d 7<qq| S) NrbilinearF)r)r/ align_cornersrrTg?rV) shapeintrnn functional interpolatesqueeze zeros_likeranger1randint) image_tensorscaler#shiftrgb aug_shiftBCHWnew_Hnew_W resized_image backgroundstart_ystart_xirandxrandyjrrrresize_and_center_images0 * :  6rrTc Cst||||||d}|durltj|ddddgd} tj|ddddgddd} tj|ddddgdd} tj|d dddgdd} tj|dd ddgdd} tj|dd ddgddd}ntj|ddddgd} tj|ddddgddd} tjtj|dd ddgdddddgd} tjtj|ddddgdddddgd} tj|ddddgdddd} tj|d dddgddd}|d krD| dd| d<| dd| d<| dd| d<| dd| d<| dd| d<| dd| d<| dd| d<| dd| d<| dd| d<| dd| d<|dd|d<|dd|d<tj| | | fdd }tj| | |fdd }tj||f|d }|S) N)rr#rrrFrrr)kdimsr~r'T)dim)rrrot90flipcat) triview_colorrblenderr#rrfixrrtriview_color0triview_color1triview_color2triview_color3triview_color4triview_color5color_tensor1_gtcolor_tensor2_gtcolor_tensor_gtrrrget_tris>$&$..*$ r)rrrrNrM)rF)rONN)r{rrFr)rTrr{rFFr)rZr rr1rrr$r%r&no_gradr;r=rAr`rEfloatrLrNrUr]rhrsrzrrrrrrs0