
    3gt                     V   d dl Z d dlZd dlZd dlmZ d dl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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	Z.d
 Z/ddZ0ddZ1ddd g fdZ2ddd g d fdZ3ddZ4y)    N)cm)	make_griddraw_keypointsc                 l    t        j                  d|z  | j                         j                               S )Nz&/nobackup/users/camsmith/img/tmp%s.png)pltimsavecpunumpyxys     B/home/cameronsmith/repos/refactor_flowmap_and_splat/vis_scripts.py<lambda>r      s+    

CklmCmnonsnsnun{n{n}8~     )	rearrangerepeat)spatial)defaultdict)IsolationForestc           	      f    t        | d|"t        | j                  d      dz              S |      S )Nz... (x y) c -> ... c x y      ?r   )r   intsize)srcr   s     r   r   r      s2    9S)Cabajc#((SU,Y[J\F]r pqr 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t        |d                  j                  |       }|j	                  |       }|j                  |       dk7  S )Ng{Gz?g\(\?)contamination)	r   maxminfitdecision_functionpredicttorchquantileall)
points
iqr_factor
iso_forestoutlier_scoresq1q3iqrlower_boundupper_boundmasks
             r   filter_pointsr3   "   sL     s3s:c7J/KLPPQWXJ11&9Nf%++r    c
           
      4
    t        t              }
|D ].  }|j                         D ]  \  }}|
|   j                  |        0 d }|dz  dk(  r*|
j                         D ci c]  \  }}| |||       }}}|}|dk(  r;g  _        d _        j                         D ]:  \  }} j                  j                   j                  j                  |             <  j                  j                  d      5   j                  j                  ddt        d         d	z
  d	dd
       _         j                  j                  dd
       _         j                  j                  dd
       _         j                  j                  dd
       _         j                  j#                  dg dd       _         j                  j                  ddddd       _         j                  j)                  dd       _        d d d         j                  j,                  d# fd       } j                  j,                  d# fd       } j                   j.                  d# fd       } j*                  j,                  d# fd       } j                  j.                  d# fd       }t1        j0                          _        nB|dz  dk(  r:|r8t5        j                               D ]  \  }\  }}| j                  |   _         |		 |dk(  ri  _        |	j                         D ci c]c  \  }}||j;                         j=                         dz  j?                  d	dd      jA                  tB        jD                        jG                         e c}}j                         D ]f  \  }}tI        jJ                  |      }| j8                  vr* j                  j                  |       j8                  |<   S| j8                  |   _        h d} j2                  t1        j0                         k  r j                   jL                  r7 j                  jL                  d	z   t        d         z   j                  _&        t1        j0                         d  j&                  jL                  z  z    _        d
}|d!z  dk(  s|rL jO                         jQ                         D ]*  }|jR                  jT                  d"z   |jR                  _*        , y y c c}}w # 1 sw Y   xY wc c}}w )$Nc           
          t        j                  |t        t        t	        |                  d| d|       }d|j
                  j                  _        |j                  t        dddd             |S )Nr   r   )r   r   labelstitleT   )lrtb)margin)
pxlinelistrangelenlayoutr8   
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   F)figurePlaybackTimesteprgb   T)r"   r!   stepinitial_valuedisabledz
Next Frame)rT   z
Prev FramePlayingz	Color Vis)rP   lie_rot	lie_trans)labeloptionsrS   FPS皙?r   )r"   r!   rR   rS   zFPS options)10203060c                 t    j                   j                  dz   t        d         z  j                   _        y NrQ   rP   gui_timestepvaluerC   _model_inputservers    r   rf   zviser_update.<locals>._Z   5    7=7J7J7P7PST7TX[\ghm\nXo6o&--3r   c                 t    j                   j                  dz
  t        d         z  j                   _        y ra   rb   re   s    r   rf   zviser_update.<locals>._\   ri   r   c                     j                   j                  j                  _        j                   j                  j                  _        j                   j                  j
                  _        y N)gui_playingrd   rc   rT   gui_next_framegui_prev_framerf   rh   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 rl   )r   gui_framerate_optionsrd   gui_frameraterp   s    r   rf   zviser_update.<locals>._c   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        rv   rv   )rc   rd   atomicget_clientsvaluescamerapositionflush)rf   current_timestepclientrh   s      r   rf   zviser_update.<locals>._e   s{    %2288 z$00299;yFV\VcVcVlVlmyVyV]]=SyzLLNz zs   ABB      g      ?i  ru   )returnN)+r   rA   itemsappend
loss_plotscam_setgui
add_plotly
add_folder
add_sliderrC   rc   
add_buttonrn   ro   add_checkboxrm   add_dropdowngui_color_choicers   add_button_grouprr   on_click	on_updatetimetime_until_next_render	enumeraterM   wandb_plotsdetachr	   permutetor&   uint8r
   r?   imshowrd   rx   ry   rz   r{   )rh   loss_model_outputrg   ground_truth
resolutionprefixsuffixrR   
wandb_imgsrI   r   rH   vrK   	loss_figsscenerf   irJ   trigger_rerenderr~   s   `  `                  r   viser_updater   6   s    
T	D 779 	CAaGNN1	 Bwz59ZZ\BcaQ}Qq))B	B EQw??$ 	FCAa$$VZZ%:%:!%:%DE	FZZ"":. 	q"(**"7"7PST_`eTfPgijPjqr  CD  OS"7  #U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(	q 
			'	'o 
(o				'	'o 
(o				%	%	F 
&	F 
	%	%	.	.^ 
/^				&	&	 
'	
 '+iik%7A:$$Y__%67 .%1Q,-!!!$+. !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
 $$TYY[0##&BUBUB[B[^_B_cfgrsxgyczAzV%8%8%>&*iik39M9M9S9S3S&S%Dy!|'((*113qFfmmNdNdeqNqV]]5Kq (w C	q 	qD ss   #T8DT"A(TTc	                 ,   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 }t%        |d   j                         j                  dd      j                  ddd      j'                  d|
      j)                         |	      |d<   d|v rt*        j,                  j.                  j1                  |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.                  j1                  |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,d }t%        t3        |d   d!|d   "      j)                         |d   j	                  d            |d#<   t%        t5        j6                  |d$   d   |      j9                  d      t;        |d   ddd f   |d         z  j                  dd      j)                         |d   j	                  d            |d%<   t%        t5        j6                  |d   ddd f   |      j9                  d      t;        |d   ddd f   |d         z  t5        j6                  |d$   d   |      j9                  d      z  j                  dd      j)                         |d   j	                  d            |d&<   t%        t3        |d   j                  dd      t5        j6                  |d   j                  dd      |      j                  dd      j                  ddd      j9                  d      dz  dz   z  d'|d   "      j)                         |d   j	                  d            |d(<   d)|v r?t%        t3        |d)   d!d*"      j)                         |d   j	                  d            |d+<   d,|v r+t%        t3        |d,   d-      j)                         d      |d.<   d/|v rdt=        |d/         D ]S  \  }}t%        t3        |d0|d   j	                  d      "      j)                         |j	                  d            |d1|z  <   U d2|v rPt=        |d2         D ]?  \  }}t%        t3        |d3      j)                         |j	                  d            |d4|z  <   A d5|v r=t%        t3        |d5   d6      j)                         |d5   j	                  d            |d7<   d8|v rpt%        |d8   d d d df   j?                         j)                         d9      |d:<   t%        |d8   d d dd f   j?                         j)                         d9      |d;<   d<|v r@t%        t3        |d<   d=   d>      j)                         |d<   j	                  d            |d?<   d@|v rddAl m!} t3        |d@   j                  dd      dB      }|j                  \  }}}}	  ||d@   j                  dd      d          d   d   } t%        | j)                         |d@   j	                  d            |dD<   |j                         D ]D  \  }}dE|vrt%        t3        |dF      j)                         |j	                  d            |dG|z  <   F |j                         D ]G  \  }}dH|vrt%        t3        |dIz  dJ      j)                         |j	                  d            |dG|z  <   I dK|v r`t%        |dK   j                         j                  dd      j                  ddd      j'                  d|
      j)                         |	      |dL<   dM|v r`t%        |dM   j                         j                  dd      j                  ddd      j'                  d|
      j)                         |	      |dN<   dO|v r`t%        |dO   j                         j                  dd      j                  ddd      j'                  d|
      j)                         |	      |dP<   dQ|v rNt%        |dQ   j                         j                  dd      j)                         jO                         |	d      |dR<   d$|v r@t%        |d$   j                  dd      j                         j)                         dC|	S      |dT<   dU|v r9tQ        jR                  t%        |dU   j                  dd      |	            dIz  |dV<   dW|v rDt%        |dW   j                  dd      j                  ddd      j'                  d|
      |	      |dX<   dY|v rt        jT                  |dY         jW                         sjtQ        jR                  t%        |dY   j                  dZd[      j                  dd      j                  ddd      j'                  d|
      |	            dIz  |d\<   d]|v rtQ        jR                  t%        t3        |d]   d^      j)                         t        |d]                     dIz  |d_<   t%        t3        |dU   |d]   z
  j?                         jY                  d`      da      j)                         t        |d]               |db<   dc|v rBt        jZ                  t        |dc   j                         d         d      }!t]        j^                  dde      }"|"ja                  dfdgh      }#tc        |!|dc   dd d d d d ddf   j)                         j                               D ]K  \  }$}% |#jd                  |%j                         jf                  j!                         di|$j!                         i M |#jh                  jk                  g        |#jl                  jk                  g        |#jn                  jk                  g        |#jq                  djdkl       |"js                          |"jt                  jw                          ty        jz                  |"jt                  j}                         tx        j~                  m      }&|&j                  |"jt                  j                         d d d   dnz         }&t        j                  |&      j                  ddd      dIz  }'t]        j                          |'|do<   t        d      D ]  }(t        d      D ]  })  dp|v r	 dqD ]  }g }Bdr|vr|ds   j9                  d      n|dr   }Ct        t        |C            D ]  }t        t        Cd               D ]  }DC||Dd d d ddf   j)                         j                         }%t        |      rWt-        j                  |%|dp   d d dgf   j                         |dp   z  d d d d d ddf   j                         |         d   }En:|dp   d d dgf   j                         |dp   z  |d d d ddf   j                         }Et        j                  |dp   |d d d ddf   j                         j!                         |%j!                               d d D cg c]  }t        j                  |       c}\  }F}G|F|Gz
  j                         jG                         j                         }Ht        dt|H       t        j                  du|Hi|v       t]        j^                         }"|"ja                  dfdgh      }# |#jd                  |%j                         j                  d      dwdxdy  |#jd                  Ej                         j                  d      dzd{dy t        |%j                         |Ej                               t        |%j                         |Ej                               }J}I|#j                  |I|J       |#j                  |I|J       |#j                  |I|J       t]        j                          t]        jr                          |"jt                  jw                          ty        jz                  |"jt                  j}                         tx        j~                  m      }&|&j                  |"jt                  j                         d d d   dnz         }&Bj                  t        j                  |&      j                  ddd      dIz         t]        j                          t        j                  |Bd      |d||z   <      |ds   dd d d ddf   j)                         j                         }%|dp   dd d d ddf   j)                         j                         }Et        j                  |Ej                         j!                         |%j!                               d d D cg c]  }t        j                  |       c}\  }E}%t]        j^                  dde      }"|"ja                  dfdgh      }# |#jd                  |%j                         jf                  j!                         dwdxdy  |#jd                  |Ej                         jf                  j!                         dzd{dy |#jh                  jk                  g        |#jl                  jk                  g        |#jn                  jk                  g        |#jq                  djdkl       |"js                          |"jt                  jw                          ty        jz                  |"jt                  j}                         tx        j~                  m      }&|&j                  |"jt                  j                         d d d   dnz         }&t        j                  |&      j                  ddd      dIz  }'t]        j                          |'|d}<   	 t        j                  |j                         D ci c]z  \  }}||z   |z   t        j                  |j                  ddd      jO                         j)                         j                  dd      j                         j!                               | c}}       |S c c}w c c}w c c}}w )~NrP   r   rQ   r      r   c                     d| dz   z  S )NrQ   g:0yE> r   s    r   r   zwandb_summary.<locals>.<lambda>   s    Q$Z r   333333?r"   depth_rawrawmagma.visr    nrowz
ref/rgb_gt	poses_lie   r      Fr   	normalizeest/poses_lie_rotest/poses_lie_trans
lie_perpixest/poses_lie_rot_perpixest/poses_lie_trans_perpix	rig_masks)@   r   z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_rgbzbt o (x y) c -> (bt o) c x yzest/rig_masks_rgbrig_masks_unnormr   zest/rig_masks_unnormlevel_scoreszb t l x y -> (b t l) 1 x yzest/level_scorescomposite_weightszb t o (x y) -> (b t o) 1 x yzest/composite_weights_%imask_spatial_scoreszb t o x y -> (b t o) 1 x yzest/mask_spatial_scores_%i	is_staticb t 1 x y -> (b t) 1 x yest/is_statictraj_top_comps)r   zest/top_comps1zest/top_comps2affinity_sim)r   r   zx1 y1 x y -> (x1 y1) 1 x yzest/affinity_simaffinity_emb)pcazbt c x y -> 1 c (bt x) yTzest/affinity_emball_maskzt m x y -> (t m) 1 x yzref/%s	masks_visr   zt m 1 x y c -> (t m) c x ydepth_inpviszest/depth_inpres_depthviszest/res_depthdepthvisz	est/depthnot_skyzref/not_sky)r   r   zest/corr_weightsbwd_flowref/flow_gt_bwd
warp_rgbs_zest/warp_rgbflow_from_posegr[   zest/flow_est_poseflow_from_pose_uncompzm bt c x y -> (bt m) c x yzest/flow_est_pose_uncomp)dimzm bt x y -> (bt m) 1 x yzest/flow_est_pose_uncomp_err	rig_poses)      )figsizeo   3d
projectioncg     K@i)elevazimdtyper   zest/rig_posesc2w_alignedr4   intermed_poses_posesATE:metrics/ATErR   redEstimated Trajectoryr   rX   blackGT Trajectoryest/pose_estzest/pose_est_pretty)^rA   flattenr   shaper   r   typerC   clipr&   
from_numpyr   get_cmapr"   itemr	   r
   squeezer   	unflattenr   korniageometryconversionsquaternion_to_axis_angler   Finterpolate	unsqueezech_fstr   absfeatup.utilr   viewmeanbmm	transposesvdfloatflow_vis_torchflow_to_colorisnananysumrandr   rM   add_subplotzipplotTxaxisset_ticklabelsyaxiszaxis	view_inittight_layoutcanvasdrawnp
frombuffertostring_rgbr   reshapeget_width_heightcloserB   r!   gatherexpandr3   tensormmframe_iscatternumpy_procrustesinverser   
procrustessquaresqrtprintwandblogunbindset_xlimset_ylimset_zlimlegendr   catr   Image)KrI   r   rg   r   r   r   r   rR   
losses_aggr   imslinvrH   r   	wandb_outrot_vis	trans_vislow_resr   r   r   featuresBCHWfeatures_mean
covarianceUSVnum_componentstransformed_features
rig_colorsrJ   axcolorour_posimage_from_plotpose_imgcolor_iview_ipts_allrig_selectionptsr2   cmaprig_ir   pose_iposefrustum_pointsfrustum_worldcamera_centerbottom_leftbottom_right	top_righttop_leftfrustum_linesr@   rP   stride	pt_colorssc	view_name
color_name	pose_imgsr   jgt_pospos_gt_pos_est_atemin_max_sK                                                                              r   wandb_summaryrr     s4   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&|E':'>'>'@'H'H1'M'U'UVWXYZ['\'f'fgijn'o'v'v'x  C  DIl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[8QRru|}~u  /A  /H  /H  /J  P\  ]h  Pi  Pn  Pn  op  Pq  %r	/"2;Q]]<XfKghiKjkr=s=}=}~  >A  BH  IU  Va  Ib  cd  ef  eg  cg  Ih  ip  qr  is  Bt  >tFMgaPQlSYSYS[amnyazaa  AB  bC3D	/06?{[`OabcdedfbfOghoApAzAz{|A}  E  FR  S^  F_  `a  bc  bd  `d  Fe  fm  no  fp  q  BqDEMMR^_mRnopRqryDz  EE  EE  FG  EHBHFMgaPQlSYSYS[amnyazaa  AB  bC7D	34 )2)L<U<]<]^_`a<bdedqdqr}  D  sE  sM  sM  NO  PQ  sR  SZ  e[  ec  ec  df  gi  ej  er  er  st  uv  wx  ey  eC  eC  DE  eF  GI  eI  JL  eL  =M0NQXYZQ[3]]c]c]ekw  yD  lE  lJ  lJ  KL  lM)N	%&\)+4Y|L^?_  aA  DF  6G  6N  6N  6P  Vb  cn  Vo  Vt  Vt  uv  Vw  ,x	()%'0<;WXt1v1}1}1  GH  (I	$%l*\*=>? 	cCAa5>yKilwx}l~  mD  mD  EG  mH  @I  @P  @P  @R  YZ  Y_  Y_  `a  Yb  6cI023	c,\*?@A 	ECAa7@1MiAjAqAqAsz{  {A  {A  BC  {D  8EI2145	El"$-i[8QRl.m.t.t.v  ~J  KV  ~W  ~\  ~\  ]^  ~_  %`	/"<'%.|<L/MaPRQRPRd/S/W/W/Y/`/`/bmr%s	"#%.|<L/MaPQPRd/S/W/W/Y/`/`/bmr%s	"#%(1)L<XY\<]^z2{  3C  3C  3E  LX  Yg  Lh  Lm  Lm  no  Lp  )q	$%%#<7??!DE_`^^
1a $'|N'C'K'KAa'PQU'V#WXY#Z[\#] '01E1L1L1NUabpUqUvUvwxUy'z	$%  " h!Qx(15M)N)U)U)W]^]c]cde]fg	(1*h   " p!a(1S59U)V)])])_efekeklmeno	(1*p %)LYgLhLlLlLnLvLvwxyzL{  MD  MD  EF  GH  IJ  MK  MU  MU  VX  Y]  M^  Me  Me  Mg  mq  Cry'A%)LYgLhLlLlLnLvLvwxyzL{  MD  MD  EF  GH  IJ  MK  MU  MU  VX  Y]  M^  Me  Me  Mg  mq  Cry'A\!)LQ[D\D`D`DbDjDjklmnDoDwDwxyz{|}D~  EI  EI  JL  MQ  ER  EY  EY  E[  ae  ;f9[#9 K)KPYDZD^D^D`DhDhijklDmDtDtDvD|D|D~  EI  TY  ;Z=!9%yQ]^lQmQuQuvwxyQzQ~Q~  RA  RH  RH  RJ  UY  _c  Hdy1C'D[ @\@\]fgrs}g~  hG  hG  HI  JK  hL  RV  ^W  AX  Y\  A\),=">|#	,WcJdJlJlmnopJqJyJyz{|}~  KA  KK  KK  LN  OS  KT  Z^  A_Y~%><'LIY<Z0[0_0_0a)7)E)EiP\]mPnPsPstwxzP{  QD  QD  EF  GH  QI  QQ  QQ  RS  TU  VW  QX  Qb  Qb  ce  fj  Qk  qu  Gv  *w  x{  *{	%&,.0>0L0LYW`am  oF  bG  Hd  Xe  Xl  Xl  XnUXYef}Y~UNA 1B CF1F	,-4=iU_I`am  oF  bG  JG  IL  IL  IN  IR  IR  WX  IR  IY  [u  ?v  ?}  ?}  ?&=>?5A	01 l"::c,{";"?"?"A!"DEaH
JJv&COOCDO,Qr L,Ea!BQBrk,R,Y,Y,[,_,_,ab 	>ME'BGGW[[]__**,=u{{}=	>
#
#
#
#C(

--

(?(?(AR)11#**2M2M2OPTRTPT2UX\2\]!!/2::1QqA#E		%-	/" Qx 7	hG( 6h6h7	hr % 	NFI:KS_:_L)33A6eq  sD  fEE3u:& Ns58}- NA!!Aa2+.557;;=G6{8+D+DWkZ_N`abdecfafNgNoNoNqt  AF  uG  OG  IJ  KL  MO  NO  MO  PR  IR  NS  NW  NW  NY  Z[  N\  ,]  ^_  ,`F"-e"4QsU";"C"C"ETYHZ"Z\]^_`bab`bce\e!f!j!j!l&ELEWEWXcdiXjklmnoqpqoqrtktXuXyXyX{  YB  YB  YD  EL  ER  ER  ET  FU  VX  WX  FY  (Z(8(8(;  (Z$GH )11388:??AC&#&II}c2=

C#//#$/*ORBGGW[[]11!4uCYZBGGVZZ\003gOT!'++-

=c'++-PVPZPZP\>]DKKd+BKKd,CBKKPTVZD[JJL!1!1!3CJJOO4E&(mmCJJ4K4K4MUWU]U]&^O&5&=&=cjj>Y>Y>[\`^`\`>adh>h&iO$$U%5%5o%F%N%NqQRST%UVY%YZIIK7<yy17MInV34-NN		N: W%a"1"Ri0779==?5!!Abqb),33599;7>7I7I&**,J\J\J^_f_l_l_n7oprqr7st!%**1-twJJv&COOCDO,Qr&&(57MN%%''H 	#
#
#
#C(

--

(?(?(AR)11#**2M2M2OPTRTPT2UX\2\]!!/2::1QqA#E		+3	'( 	 
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m (Z( uB Fs   A&AY
N(AYWA?AY
c
                 2   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   j                  ddd      |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 rkt3        j4                  t+        |d$   j                  dd	dd      |"            d%z  |d&<   t3        j4                  t+        |d'   |	dz
  g   |"            d%z  |d(<   d)|v rF	 d*D ]?  }g }d+|vr|d,   j7                  d      n|d+   }t9        t        |            D ]  }t9        t        |d               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                         }t?        j@                  |d)   |d d d d	d-f   j                         j                         |j                               d d D cg c]  }t        j                  |       c}\  }}||z
  jC                         jE                         jG                         }tI        d.|       tK        jL                  d/|i|0       |jO                  d1|j-                         j                         i       tQ        jR                         }|jU                  d2d34      } |jV                  |j                         jY                  d      d5d6d7  |jV                  |j                         jY                  d      d8d9d7 t        |j                         |j                               t[        |j[                         |j[                               }}|j]                  ||       |j_                  ||       |ja                  ||       tQ        jb                          tQ        jd                          |jf                  ji                          tk        jl                  |jf                  jo                         tj        jp                  :      }|js                  |jf                  ju                         d d d-   d;z         }|jO                  t        j                  |      j                  ddd      d%z         tQ        jv                          t        jx                  |d      |d<|z   <     B 	 tK        jL                  |j                         D 
ci c]z  \  }
}||
z   |z   tK        j                  |j                  ddd      j}                         j-                         j                  dd      j                         j                               | c}}
       |S c c}w c c}}
w )=Nr   r   r   r   r   r   r   .r   r   gt_rgbr   r   rQ   z
img/rgb_gtrP   zimg/rgbr   z	img/depthr   r   r   r   r   Fr   r   r   r   r   r   r   r   r   r   render_flowr   zest/render_flow	flow_inp_r   r   r   r   r   r    r   r   r   ATEr   r   r   r   r   r   r   r   r   r   r   )ArA   r   r   rC   r   r   r&   r   r   r   r"   r   r	   r
   r   r   r   r   r   r  r   r   r   r   r   r  r  r  rB   r,  r-  r   r.  r/  r	  r0  r1  r2  r3  r   r   rM   r  r  r4  r!   r5  r6  r7  r8  r  r  r  r   r!  r"  r   r#  r$  r%  r9  r   r  zzr:  )rI   r   rg   r   r   r   r   rR   r;  rU  rH   r   r>  r   r?  r@  rj  r   r   rk  rQ  rl  r   rm  rn  ro  rJ   rO  rp  rq  rR  s                                  r   wandb_summary_splatry    sw	   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)(3;;AaBIl&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&B9[YdMegmnogofpMqw{C|&}  B  'B	#$
 % 	NFI:KS_:_L)33A6eq  sD  fEE3u:& Ns58}- NA!!Aa2+.557;;=G6{8+D+DWkZ_N`abdecfafNgNoNoNqt  AF  uG  OG  IJ  KL  MO  NO  MO  PR  IR  NS  NW  NW  NY  Z[  N\  ,]  ^_  ,`F"-e"4QsU";"C"C"ETYHZ"Z\]^_`bab`bce\e!f!j!j!l&ELEWEWXcdiXjklmnoqpqoqrtktXuXyXyX{  YB  YB  YD  EL  ER  ER  ET  FU  VX  WX  FY  (Z(8(8(;  (Z$GH )11388:??AC&#&II}c2=%%uSZZ\->->-@&AB

C#//#$/*ORBGGW[[]11!4uCYZBGGVZZ\003gOT!'++-

=c'++-PVPZPZP\>]DKKd+BKKd,CBKKPTVZD[JJL!1!1!3CJJOO4E&(mmCJJ4K4K4MUWU]U]&^O&5&=&=cjj>Y>Y>[\`^`\`>adh>h&iO$$U%5%5o%F%N%NqQRST%UVY%YZIIK7<yy17MInV34/NN		N< 	 
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9 (Z6 Fs   b
A?b
c                     t        j                  d|d   d d d ddf   j                         j                         d      }t        j                  d|i       y )Nz
lidar/betar   r   r    )r   r)   zcamera positions)r2  Object3Dr	   r
   r3  )rI   r   rg   r   r   r   point_scenes          r   pose_summaryr}    sU    ..(2A2b1557==?" K 
II!;/0r   )r   rl   )r   )r4   r4   r   N)r4   )5osr   r2  
matplotlibr   cv2torchvisionr   torchvision.utilsr   r   torch.nn.functionalnn
functionalr  r   r
   r   r&   flow_visr  matplotlib.pyplotpyplotr   r   einopsr   r   modelspiqaimageioscipyr   plotly.expressexpressr?   plotly.graph_objectsgraph_objectsgocollectionsr   viser.transforms
transformstfsklearn.ensembler   r  ch_secr3   r   rr  ry  r}  r   r   r   <module>r     s    	    
   6        *~ $      ! #  ,	r	:(Jr\ TV]_efrt KZ Z\ceklxz  CD IV1r   