
    k\[g[                     Z   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlmZ d dl	Z	d dl
Z
d dlmZmZ d dlmc mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ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' d dl(m)Z* d dl+m,Z, d dl-m.Z/ dd	Z0d
 Z1ddZ2ddd g fdZ3ddd g d fdZ4y)    N)cm)tqdm)	make_griddraw_keypoints)	rearrangerepeat)Image)spatial)defaultdictc           	      f    t        | d|"t        | j                  d      dz              S |      S )Nz... (x y) c -> ... c x y      ?x)r   intsize)srcr   s     //home/cameronsmith/repos/cheaper_flowmap/vis.py<lambda>r      s2    9S)Cabajc#((SU,Y[J\F]r pqr     c                     t        | d      S )Nz... c x y -> ... (x y) c)r   r   s    r   r   r      s    9Q9: r    c
                     t        t              }
|D ].  }|j                         D ]  \  }}|
|   j                  |        0 d }|dz  dk(  r/|
j                         D ci c]  \  }}d|vs| |||       }}}|}|	 j                  j
                  j                  rdddg j                  j
                  j                  d u   z  }|dk(  rIt        j                  j                  |      rt        j                  |       t        j                  |       t        j                  d   j                   d	d        d
z  }t#              }|d   |z  |z  |d<   d   dd dd dd df   j%                         j'                         }|d d dfxx   |d   z  cc<   |d d dfxx   |d   z  cc<   t        j(                         5  t        j*                  d      j-                         }t        j                  g d      j-                         |d ddf<   |dz  dk(  r|rt/        t1        t3        j4                   j                  j6                  d   j9                  dd
d      dd      j9                  d
dd      dd            D ]  \  }}t        j*                  d      d    j;                  t#        |      dd      j-                         }t<        j>                  j@                  jC                  |dd df         |dd dd df<   |ddd f   |dd ddf<   t?        jD                  |d    |jG                         z  d|| j                  j6                        d   ddd df   }|d|z  z   }tI        jJ                  ||jM                         jO                                 t?        jD                  |d|| j                  j6                        d   ddd df   }d d d        t        jP                  |jS                         D cg c]r  }t        jT                  tW        jX                  t[        j\                  t_        j`                  |jc                  d|d   d
z  |d   |z  d                              dz  t c}      dd df   } j                  j
                  j                  Zd|	v rVt3        j4                  |	d   d    |d   |d   d
z  fd      d   j9                  dd
d      }t        jP                  ||fd      }n|}t        jP                  jM                         |fd      }|d te        tg        jf                               |fz  z   }tI        jJ                  ||jO                                |dk(  rg  _4        d _5        j                         D ]:  \  }} jh                  j                   jl                  jo                  |!             <  jl                  jq                  d"      5   jl                  js                  d#dt#        d$   d         dz
  ddd%&       _:         jl                  jw                  d'd%(       _<         jl                  jw                  d)d%(       _=         jl                  j}                  d*d%       _?         jl                  j                  d+g d,d$-       _A         jl                  js                  d.d/dd/d01       _B         jl                  j                  d2d3       _D         jl                  js                  d4d5d6d5d71      x _E        } j                  j6                  d8   j%                         jM                         jO                          _F        d d d         j                  j                  dF fd9       } jx                  j                  dF fd:       } jz                  j                  dF fd;       } j~                  j                  dF fd<       } j                  j                  dF fd=       } jt                  j                  dF fd>       }tg        jf                          _I        g  _J        nz|dz  dk(  rq|rnt/        j                               D ]  \  } \  }}| jh                  |    _K          j                  D ]  }!|!j                           g  _J        d?|v r	t        |d?   j                  d            D ]  }"t        j                  j                  |d?   d|"f   j%                         jM                         jG                         jO                               }# j                  j                   j                  j                  d@|" |#j                         j                  |#j                         d/dAB              j                  j                  d@|" dCddd6g dDE      }$ |		 |dk(  ri  _X        |	j                         D ci c]c  \  }}||j%                         jM                         dz  j9                  dd
d      j                  t        j                        jO                         e c}}j                         D ]f  \  }}t        j                  |      }%| j                  vr* jl                  jo                  |%!       j                  |<   S|% j                  |   _K        h y y c c}}w # 1 sw Y   xY wc c}w # 1 sw Y   xY wc c}}w )GNc           
          t        j                  |t        t        t	        |                  d| d|       }d|j
                  j                  _        |j                  t        dddd             |S )Nr   )r   y)r   r   labelstitleT   )lrtb)margin)
pxlinelistrangelenlayoutr   
automarginupdate_layoutdict)klossfigs      r   make_loss_figz#viser_update.<locals>.make_loss_fig'   s^    ggeCI&6!7cPQ@RZ[\&*

#$rR2">@
r   
   r   depthzoutput/img/opt_vis_%s/flowmap	splattingbwd_flowr      
intrinsics         )r   r   r6      
lie_perpix2   linear)modezrendering interpolation videoF)descleave.zrender_vid_%04d.pngpng)formatwidthheightscale   zest/pose_est_alignedbilinearz	%d_%d.png)figurePlaybackTimesteprgbT)minmaxstepinitial_valuedisabledz
Next Frame)rR   z
Prev FramePlayingz	Color Vis)rM   lie_rot	lie_trans)labeloptionsrQ   FPS皙?r   )rN   rO   rP   rQ   zFPS options)10203060z
Point sizegMbP?g?g{Gz?meansc                 P    j                   j                  j                  _        y N)gui_point_sizevaluepoint_cloud
point_size_servers    r   rf   zviser_update.<locals>._w   s    :@:O:O:U:U&,,7r   c                 z    j                   j                  dz   t        d   d         z  j                   _        y Nr8   rM   r   gui_timesteprb   r(   rf   model_inputrg   s    r   rf   zviser_update.<locals>._y   ;    7=7J7J7P7PST7TX[\ghm\nop\qXr6r&--3r   c                 z    j                   j                  dz
  t        d   d         z  j                   _        y ri   rj   rl   s    r   rf   zviser_update.<locals>._{   rn   r   c                     j                   j                  j                  _        j                   j                  j                  _        j                   j                  j
                  _        y r`   )gui_playingrb   rk   rR   gui_next_framegui_prev_framere   s    r   rf   zviser_update.<locals>._}   sQ    +1+=+=+C+CF(-3-?-?-E-EF!!*-3-?-?-E-EF!!*r   c                 b    t        j                  j                        j                  _        y r`   )r   gui_framerate_optionsrb   gui_frameratere   s    r   rf   zviser_update.<locals>._   s"    7:6;W;W;];]7^&..4r   c                 4   j                   j                  }j                         5  j                         j	                         D ]*  }|j
                  j                  dz   |j
                  _        , 	 d d d        j                          y # 1 sw Y   xY w)N)        rx   rx   )rk   rb   atomicget_clientsvaluescamerapositionflush)rf   current_timestepclientrg   s      r   rf   zviser_update.<locals>._   s{    %2288 z$00299;yFV\VcVcVlVlmyVyV]]=SyzLLNz zs   ABBposesz/colmap/frame_g{Gzt?)wxyzr}   axes_lengthaxes_radiusz/frustum)rH   r   r   )fovaspectrG   color)returnN)]r   r&   itemsappendrunargssave_opt_vis	splat_srcospathexistsshutilrmtreemakedirstorchtensorshaper(   detachcloneno_gradeyecuda	enumerater   Finterpolate
splat_varspermuteexpandkorniageometryconversionsquaternion_to_rotation_matrix	do_renderinversepltimsavecpunumpycatr{   
from_numpynparrayr	   openioBytesIOto_imager   time
loss_plotscam_setgui
add_plotly
add_folder
add_sliderrk   
add_buttonrr   rs   add_checkboxrq   add_dropdowngui_color_choicerv   add_button_groupru   ra   points	on_updateon_clicktime_until_next_renderframesrJ   remover'   r   tfSE3from_matrixscene	add_framerotationr   translationadd_camera_frustumwandb_plotstouint8r$   imshow)&rg   loss_model_outputrm   ground_truth
resolutionprefixsuffixrP   
wandb_imgsr.   r   r-   vr0   	loss_figsr   savedirimsizen_plotsKs	view_posepose_i
alpha_poseinterp_pose_perpix
render_imgsavepath	loss_imgspose_imgvis_imgra   rf   iframeimg_idT_world_camerafrustumr/   s&   `  `                                  r   viser_updater   !   s'   	T	D 779 	CAaGNN1	 Bwz59ZZ\VcaWTUEUQ}Qq))V	V
E &**//">">()K)@AZAZbfAf)gg7ww~~g&g(>KK ||K
399"#>?AI)W$W,q	|$Qrr"1"RaRZ0779??A
1Q3
1Q3]]_ 	f		!))+I"\\'2779Ibqbe Cx{t)24fjjF[F[\hFiFqFqrstuvwFxz|  DL  9M  9U  9U  VW  XY  Z[  9\8u4F *G B%F: */1d);)B)B3z?SUVX)Y)^)^)`&4:OO4O4O4m4mnxy|}~}y  oA  5B&s2A2bqby14>s12v4F&s2A2by1 ( 2 29T?CUC]C]C_3_`abhiklrlvlv  mB  mB  !C  DE  !F  GH  IL  MO  NO  MO  GO  !PJ$%:6%AAHJJx
(8(>(>(@AB !**9QvbAVAVWXYZ[\]`acbcac[cdJ3	f8 II  r{  rB  rB  rD  E  mnu//BJJqzzafntuvnwyznz  DJ  KL  DM  OV  DV  ^_z  P`  Ea  :b  1c   d  eh   h  E  F  GJ  KM  LM  KM  GM  N	::??$$,1G:1U}}Z0F%G%MvVWyY_`aYbdeYeNflvwxyz  C  C  DE  FG  HI  JHii8 4Q7Gg))Z^^-g6q9c$))+&6t%<<<

8GMMO,Qw??$ 	FCAa$$VZZ%:%:!%:%DE	FZZ"":. 		Q"(**"7"7PST_`eTfghTiPjlmPmtu  FG  RV"7  #XF$*JJ$9$9,QU$9$VF!$*JJ$9$9,QU$9$VF!!'!8!8D!IF&,jj&=&=KYv  GL&=  'MF##)::#8#8%RRVYik#8#lF +1::+F+FWo+pF(=CZZ=R=RT`fkqu  }B  RV=R  >W  WF!!::009@@BFFHNNPFM		Q 
			(	(U 
)U				'	'r 
(r				'	'r 
(r				%	%	F 
&	F 
	%	%	.	.^ 
/^				&	&	 
'	8 '+iik% 7A:$$Y__%67 .%1Q,-!!!$+.5u||~5FM,&#L$9$>$>q$AB PF%'VV%7%7W8MaPVh8W8^8^8`8d8d8f8n8n8p8v8v8x%yNMM((&,,*@*@NSYRZB[bpbybyb{  cA  cA  LZ  Lf  Lf  Lh  vy  GL*@  +N  P$ll==PVxW_?`fgqrz~  FO=  PGP !7b6%_i_o_o_qrX[XYZ[Aqxxz~~'+44Qq;>>u{{KQQSSrxxz 	2CAa))A,C***&**BWBW_bBWBcF,>,>q,A.1##A&-	2 G W 	f 	f8 E"		Q 		QP ss4   #k0kHkA7k%2E8k*-A(k7k"*k4c	                 z   t        |d   j                  dd      j                  dddd      j                        }|d   j	                  d      |d   j	                  d      z  |d<   |d   j	                  d      }	|d   j                  dd  }
d }t        |j                               D ]  \  }}t        |      t         k7  r't        |j                        r|j                  d	      }d
|v r|||dz   <   d
|v sPd|vsUt        j                   t        j                  d      |j                         j                         |j                         j!                         z              j#                  d      dd df   ||dz   <    i }|dz  dk(  rt%        |d   j                         j                  dd      j'                         dz  dz   |	      |d<   d|v rt(        j*                  j,                  j/                  |d   dd df         j                  dd      j                  dddd      dz  dz   }|d   ddd f   j                  dd      j                  dddd      dz  dz   }t%        |j'                         |	d      |d<   t%        |j'                         |	d      |d<   d|v r,|
}t%        t1        |d   d|d         j'                         |d   j	                  d            |d<   t%        t3        j4                  |d    d   |      j7                  d      t9        |d   ddd f   |d         z  j                  dd      j'                         |d   j	                  d            |d!<   t%        t3        j4                  |d   ddd f   |      j7                  d      t9        |d   ddd f   |d         z  t3        j4                  |d    d   |      j7                  d      z  j                  dd      j'                         |d   j	                  d            |d"<   t%        t1        |d   j                  dd      t3        j4                  |d   j                  dd      |      j                  dd#      j                  ddd      j7                  d      dz  dz   z  d$|d         j'                         |d   j	                  d            |d%<   d&|v r`t%        |d&   j                         j                  dd      j                  ddd      j;                  d#|
      j'                         |	      |d'<   d(|v r`t%        |d(   j                         j                  dd      j                  ddd      j;                  d#|
      j'                         |	      |d)<   d*|v r`t%        |d*   j                         j                  dd      j                  ddd      j;                  d#|
      j'                         |	      |d+<   d |v r@t%        |d    j                  dd      j                         j'                         d,|	-      |d.<   d/|v r9t=        j>                  t%        |d/   j                  dd      |	            d0z  |d1<   d2|v r/t%        t1        |d2   d3      |d2   j	                  d            |d4<   d5|v rt        j@                  |d5         jC                         sjt=        j>                  t%        |d5   j                  d6d7      j                  dd      j                  ddd      j;                  d#|
      |	            d0z  |d8<   d9|v r	 d:|v rBt%        t1        |d:   d;d         j'                         |d   j	                  d            |d<<   d=|v r	 d>}g }|d?   j7                  d      }d}tE        t        |d               D ]  }|||d d d dd#f   j'                         j                         }t        |      rWt+        jF                  ||d=   d d dgf   jI                         |d=   z  d d d d d dd#f   j                         |         d   }n:|d=   d d dgf   jI                         |d=   z  |d d d dd#f   j                         }tK        jL                  |d=   |d d d dd#f   j                         j!                         |j!                               d d D cg c]  }t        j                  |       c}\  }}||z
  jO                         jQ                         jS                         }tU        d@|       tW        jX                  dA|i|B       t[        j\                         }|j_                  dCdDE      } |j`                  |j                         jc                  d      dFdGdH  |j`                  |j                         jc                  d      dIdJdH t        |j                         |j                               te        |je                         |je                               }}|jg                  ||       |ji                  ||       |jk                  ||       t[        jl                          t[        jn                          |jp                  js                          tu        jv                  |jp                  jy                         tt        jz                  K      } | j}                  |jp                  j                         d d d#   dLz         } |j                  t        j                  |       j                  ddd      d0z         t[        j                          t        j                  |d      |dM|z   <    	 tW        jX                  |j                         D ci c]w  \  }}||z   tW        j                  |j                  ddd      j                         j'                         j                  dd      j                         j!                               y c}}       |S c c}w c c}}w )NNrM   r   r8   r6   r9   r   c                     d| dz   z  S )Nr8   g:0yE> r   s    r   r   zwandb_summary.<locals>.<lambda>   s    Q$Z r   333333?rN   r2   _rawrawmagma.visr>   r   nrowz
ref/rgb_gtr=   r:      Fr   	normalizeest/poses_lie_rot_perpixest/poses_lie_trans_perpix	rig_maskszb t o (x y) 1 -> (b t o) 1 x yr   zest/rig_maskscorr_weightszest/rig_masks_corr_weightedzest/rig_masks_corr_weighted_rgbr;   zbt o (x y) c -> (bt o) c x yzest/rig_masks_rgbdepth_inpviszest/depth_inpres_depthviszest/res_depthdepthvisz	est/depthT)r   r   zest/corr_weightsr5   rH   ref/flow_gt_bwdrig_flow_masksz1 t o x y -> (t o) 1 x yzref/rig_flow_masksflow_from_posegrY   zest/flow_est_posedino_pcadino_clusterszo t (x y) 1 -> (t o) 1 x yzest/dino_clustersc2w_alignedr   ATE:metrics/ATErP   o   3d
projectionredEstimated TrajectorycrV   blackGT Trajectorydtyper9   est/pose_est)Gr&   flattenr   r   r   r   typer(   clipr   r   r   get_cmaprN   itemr   r   squeezer   r   r   r   r   quaternion_to_axis_angler   r   r   	unsqueezech_fst	unflattenflow_vis_torchflow_to_colorisnananyr'   numpy_procrustesr   r
   
procrustessquaremeansqrtprintwandblogr   rJ   add_subplotplotunbindrO   set_xlimset_ylimset_zlimlegendtight_layoutcanvasdrawr   
frombuffertostring_rgbr   reshapeget_width_heightr   closer   r   floatzzr	   )!r.   r   rm   r   r   r   r   rP   
losses_aggr   imslinvr-   r   	wandb_outrot_vis	trans_vislow_res	pose_imgsr   r   jour_posgt_posr   pos_gt_pos_est_ater/   axmin_max_image_from_plots!                                    r   wandb_summaryrV     s   k%(0015==a!AFLLMJu%**1-l5.A.F.Fq.IIJqM	U		 	 	#D	U		!	!"#	&D
C L&&() _!7D=S\QVVV^1a<!ah/a<ENEDTDTUiUWU`U`ahUijkjojojqjvjvjxyzy~y~  zA  zG  zG  zI  kI  VJ  EK  ES  ES  TV  EW  X[  \^  ]^  \^  X^  E_L5,A_
 IBwz!*<+>+B+B+D+L+LQq+Q+X+X+Z[]+]^`+`fj!k	,<'OO//HHVbIcdghjijhjdjIklttuvwxy  B  B  CD  EF  GH  IJ  K  LN  N  OQ  QG$\23rs7;CCAaHPPQRSTUVWXYZ[[\^^I3<W^^=MSWbg3hI015>y?O?O?QW[fk5lI23,&G(1)L<UVv  zA  BC  zD  3E  3L  3L  3N  T`  al  Tm  Tr  Tr  st  Tu  )vIo&6?|\jOklmOnovAw  BB  BB  CD  BE  FL  MY  Ze  Mf  gh  ij  ik  gk  Ml  mt  uv  mw  Fx  BxJQ'RSTU,W]W]W_eqr}e~  fD  fD  EF  fG7HI34:CQ]]S^_dSefghihjfjSklsEtE~E~  @A  FB  CI  JV  Wb  Jc  de  fg  fh  dh  Ji  jq  rs  jt  Cu  FuHIVbcqVrstVuv}H~  II  II  JK  ILFLJQ'RSTU,W]W]W_eqr}e~  fD  fD  EF  fG;HI78 -6i[@Y@a@abcde@fhihuhu  wB  CH  wI  wQ  wQ  RS  TU  wV  W^  i_  ig  ig  hj  km  in  iv  iv  wx  yz  {|  i}  iG  iG  HI  iJ  KM  iM  NP  iP  AQ4RU\]^U_7aagagaio{  }H  pI  pN  pN  OP  pQ-RI)*\)iP\]kPlPpPpPrPzPz{|}~P  QH  QH  IJ  KL  MN  QO  QY  QY  Z\  ]a  Qb  Qi  Qi  Qk  qu  Gv9_+E\)iP\]kPlPpPpPrPzPz{|}~P  QH  QH  IJ  KL  MN  QO  QY  QY  Z\  ]a  Qb  Qi  Qi  Qk  qu  Gv9_+E%iU_H`HdHdHfHnHnopqrHsH{H{|}~  AB  IC  IM  IM  NP  QU  IV  I]  I]  I_  ei  ?jy'=\)9UabpUqUyUyz{|}U~  VC  VC  VE  VL  VL  VN  Y]  cg  Lh95G+H$ND`D`ajkv  xB  lC  lK  lK  LM  NO  lP  VZ  b[  E\  ]`  E`i0A&B{*-6yM]A^_y7z  AL  M]  A^  Ac  Ac  de  Af  .gI*+
 |+EKKM]@^4_4c4c4e-;-I-I)T`aqTrTwTwx{|~T  UH  UH  IJ  KL  UM  UU  UU  VW  XY  Z[  U\  Uf  Uf  gi  jn  Uo  uy  Kz  .{  |  .I)*%l*,5iO@\]y  }D  EF  }G  7H  7O  7O  7Q  Wc  do  Wp  Wu  Wu  vw  Wx  -yI)*	W%//2
s58}% 	FA!Aa2+&--/335G6{8#<#<WkRWFXYZ\][^Y^F_FgFgFilwx}l~F~  AB  CD  EG  FG  EG  HJ  AJ  FK  FO  FO  FQ  RS  FT  $U  VW  $XF%e,QsU3;;=E@RRTUVWXZYZXZ[]T]^bbd&=D=O=OP[\aPbcdefgihigijlclPmPqPqPsPyPyP{  }D  }J  }J  }L  >M  NP  OP  >Q   R 0 0 3   RGH!))+002779C&#II}c*5

C#//#$/"GRBGGW[[]))!,u;QRBGGVZZ\((+gOL'++-

5c'++-

6UDKKd#BKKd$;BKKd<SJJL))+CJJOO,= mmCJJ,C,C,ERXXVO-55cjj6Q6Q6STXVXTX6Y\`6`aOU--o>FFq1McQRIIK/4yy1/EInV+,)	F* 	 
IIlul{l{l}~ehefghvaxAIIaA$6$<$<$>$E$E$G$L$LQq$Q$U$U$W$]$]$_``~3  R0 s   *p2,A<p7
c
                    t        |j                               D ]  \  }
}t        |      t         k7  r't        |j                        r|j                  d      }d|
v r|||
dz   <   d|
v sPd|
vsUt        j                   t        j                  d      |j                         j                         |j                         j                         z              j                  d      dd d	f   ||
d
z   <    i }|d   dz  dz   |d<   |d   j                  ddd      |d<   |d   j                  ddd      |d<   d}d|v rt         j"                  j$                  j'                  |d   dd df         j)                  dd      j                  dd	dd      dz  dz   }|d   ddd f   j)                  dd      j                  dd	dd      dz  dz   }t+        |j-                         |d      |d<   t+        |j-                         |d      |d<   d|v rt         j"                  j$                  j'                  |d   dd df         j)                  dd      j                  dd	dd      dz  dz   }|d   ddd f   j)                  dd      j                  dd	dd      dz  dz   }t+        |j-                         |d      |d<   t+        |j-                         |d      |d<   d |v r=t+        t/        |d    d!      j-                         |d    j1                  d      "      |d#<   d$|v rt3        j4                  t+        |d$   j                  dd	dd      |"            d%z  |d&<   t3        j4                  t+        |	r|d'   d|	dz
  gf   nt        j6                  |d'   ddgf         |"            d%z  |d(<   d)|v r	 d*}g }|d+   j9                  d      }d}t;        t        |d               D ]  }|d,   ddd f   j-                         j                         }t        |      rWt#        j<                  ||d)   d d dgf   j?                         |d)   z  d d d d d d	d-f   j                         |         d   }n:|d)   d d dgf   j?                         |d)   z  |d d d d	d-f   j                         }tA        jB                  |d)   |d d d d	d-f   j                         j                         |j                               d d D cg c]  }t        j                  |       c}\  }}||z
  jE                         jG                         jI                         }tK        d.|       tM        jN                  d/|i|0       tQ        jR                         }|jU                  d1d23      } |jV                  |j                         jY                  d      d4d5d6  |jV                  |j                         jY                  d      d7d8d6 t        |j                         |j                               t[        |j[                         |j[                               }}|j]                  ||       |j_                  ||       |ja                  ||       tQ        jb                          tQ        jd                          |jf                  ji                          tk        jl                  |jf                  jo                         tj        jp                  9      }|js                  |jf                  ju                         d d d-   d:z         }|jw                  t        j                  |      j                  ddd      d%z         tQ        jx                          t        jz                  |d      |d;|z   <    	 tM        jN                  |j                         D 
ci c]z  \  }
}||
z   |z   tM        j                  |j                  ddd      j                         j-                         j                  dd      j                         j                               | c}}
       |S c c}w c c}}
w )<Nr   r   r2   r   r   r   r   .r9   r   gt_rgbr   z
img/rgb_gtrM   r6   r   r8   zimg/rgbr  z	img/depth	poses_lier:   r   r   Fr   zest/poses_lie_rotzest/poses_lie_transr=   r   r   	is_staticzb t 1 x y -> (b t) 1 x yr   zest/is_staticrender_flowrH   zest/render_flow	flow_inp_r  r
  r  r   	lie_posesr;   r  r  r  r  r  r  r  r  r  r  r  r  r  r  )Br&   r   r  r(   r   r  r   r   r   r   rN   r!  r   r   r"  r   r   r   r   r#  r  r   r   r   r   r'  r(  
zeros_liker$  r'   r+  r   r
   r,  r-  r.  r/  r0  r1  r2  r   rJ   r3  r4  r5  rO   r6  r7  r8  r9  r:  r;  r<  r   r=  r>  r   r?  r@  r   rA  r   r   rB  rC  r	   )r.   r   rm   r   r   r   r   rP   rD  view_ir-   r   rG  r   rH  rI  rK  r   r   rL  rM  rN  r   rO  rP  rQ  r/   rR  rS  rT  rU  s                                  r   wandb_summary_splatr`    s	   L&&() _!7D=S\QVVV^1a<!ah/a<ENEDTDTUiUWU`U`ahUijkjojojqjvjvjxyzy~y~  zA  zG  zG  zI  kI  VJ  EK  ES  ES  TV  EW  X[  \^  ]^  \^  X^  E_L5,A_
 I)(3B6r9Il&u-55a!<Ii(4<<QqCIk	
Dl"++DD\R]E^_bcedece_eEfgoopqrst||}~  @A  BC  DE  F  GI  I  JL  L -c"#g6>>qCKKAaPQRSTUVVWYY	(1'..2BW\(]	%&*3I4D4D4FD[`*a	'(|#++DD\R^E_`cdfefdf`fEghppqrstu}}~  AB  CD  EF  G  HJ  J  KM  M .s23w7??!DLLQqQRSTUVWWXZZ	/89It^c/d	,-1:9;K;K;MSWbg1h	./l"$-i[8QRl.m.t.t.v  ~J  KV  ~W  ~\  ~\  ]^  ~_  %`	/"$&4&B&B9\ZgMhMpMpqrstuvwxMy  @D  DE  'F  GJ  'J	#$&4&B&B96<K$Qqz\2%BRBRS^_jSklmopnqlqSrBsD ''	#$ 	W%//2
s58}% 	FA -c!"f5<<>BBDG6{8#<#<WkRWFXYZ\][^Y^F_FgFgFilwx}l~F~  AB  CD  EG  FG  EG  HJ  AJ  FK  FO  FO  FQ  RS  FT  $U  VW  $XF%e,QsU3;;=E@RRTUVWXZYZXZ[]T]^bbd&=D=O=OP[\aPbcdefgihigijlclPmPqPqPsPyPyP{  }D  }J  }J  }L  >M  NP  OP  >Q   R 0 0 3   RGH!))+002779C&#II}c*5

C#//#$/"GRBGGW[[]))!,u;QRBGGVZZ\((+gOL'++-

5c'++-

6UDKKd#BKKd$;BKKd<SJJL))+CJJOO,= mmCJJ,C,C,ERXXVO-55cjj6Q6Q6STXVXTX6Y\`6`aOU--o>FFq1McQRIIK/4yy1/EInV+,+	F. 	 
IIs|  tC  tC  tE  Flolmnovaxu{{199Q1+=+C+C+E+L+L+N+S+STUVW+X+\+\+^+d+d+fgg  F  G5  R2 Fs    aA?a
r`   )r   r   r   N)5r   r   r   r   r1  
matplotlibr   cv2r   torchvisionr   torchvision.utilsr   r   torch.nn.functionalnn
functionalr   r   r   r   r   flow_visr'  matplotlib.pyplotpyplotr   einopsr   r   modelspiqaimageioPILr	   scipyr
   plotly.expressexpressr$   plotly.graph_objectsgraph_objectsgocollectionsr   viser.transforms
transformsr   r%  ch_secr   rV  r`  r   r   r   <module>rz     s         
    6         $       ! # 	r	:U2@ TV]_efrt [z Z\ceklxz  CD Er   