
    ;g                     h   d dl 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mZmZ d dl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Zd dlZd Zd dlZ ej4                  d      Zej9                  d	d
eddd       ej9                  ddeddd       ej9                  dddd       ej9                  ddd       ej9                  dded       ej9                  ded       ej9                  ddedd        ej9                  d!d"ed#d$        ej9                  d%ed d&        ej9                  d'ed(d)        ej9                  d*ed+d,        ej9                  d-e ed.      d,        ej9                  d/d0dd12       ej9                  d3ed4d5        ej9                  d6ddd72       ej9                  d8eddd9       ej9                  d:edd;        ej9                  d<ed d=        ej9                  d>d0dd?2       ej9                  d@d0ddA2       ej9                  dBdddC2       dEdDZ y)F    N)partial)tqdmtrange)	rearrangerepeat)
functionalc           
          t        | t              r@| j                         D ci c]$  \  }}|t        t	        j
                  |            & c}}S | j                         S c c}}w )N)
isinstancedictitemsto_gputorchtensorcuda)obkvs      6/home/cameronsmith/repos/cheaper_flowmap/args_setup.pyr   r      sK    jY[]aNbrxxzJtq!6%,,q/22JqhjhohohqqJs   )A!zsimple training job)descriptionz-nz--name Fzwandb training name)typedefaultrequiredhelpz-cz--init_ckptzIFile for checkpoint loading. If folder specific, will use latest .pt filez-oz--online
store_true)r   actionz--viserz-dz	--datasethydrant)r   r   z	--imgpathz-bz--batch_size   z,number of videos/sequences per training step)r   r   r   z-vz	--vid_len   z*video length or number of images per batchz--n_workersz number of workers per dataloaderz--until_savei  z number of steps until model savez--lrg-C6?zlearning ratez--n_train_stepsg    חAz	--overfitTz$Whether to overfit on a single scene)r   r   r   z--until_img2   z%Number of steps until image summary. z--load_savezVWhether to load the previously saved data if overfitting (to avoid running flow again)z--splat_srczsplat src pt filez--time_stridezYNumber of frames to flatten in the encoder like a temporal convolution (to save memory). z--n_skipz@Number of frames to skip between adjacent frames in dataloader. z--use_gt_intrinsicszZWhether to use GT intrinsics instead of predicting them. Useful for pretraining scene rep.z--point_trackzWhether to use point trackingz--export_poseszExport poses when overfittingc                    t         j                  |       } t        j                         }t	        j
                         }t        d|        t        j                  dd| j                  rdnd| j                  d      }t        j                  j                  d       d	|_        t        j                  |j                  d
       t        j                   t        j"                  j%                  |j                  d             t        j                   t        j"                  j%                  |j                  d             | |_        ||_        | j(                  rt)        j*                         |_        t/        j0                  | j2                  | j4                  dz   | j6                        |_        t;        j<                  |       j?                         |_         | jB                  t        j"                  jE                  t        j"                  jG                  | jB                              r| jB                  n_tI        tK        jJ                  t        j"                  j%                  | jB                  d            t        j"                  jL                        }|j@                  jO                  tQ        jR                  |      d   d       |S )Nzuser=cameronsmithbusinessbiasingonlinedisabledz
/tmp/wandb)entityprojectmodenamedir.z/tmpT)exist_okzcheckpoint*zvideo*r   )pathnum_trgtn_skipz*.pt)keymodel_state_dictF)strict)*parser
parse_argsargparse	Namespacegetpassgetuserprintwandbinitr$   r)   runlog_codesave_dirosmakedirssaver-   joinargsviserViserServerviser_serverdataImageFolderimgpathvid_lenr/   datasetmodelsFlowMapr   model	init_ckptisfile
expandusermaxglobgetctimeload_state_dictr   load)rC   valselfuserr<   	ckpt_files         r   make_runr[   1   s   T"DD??D	E$. **29VZVaVa(gqw{  xA  xA  HR  TC	IIsDMKKt,	JJrww||DMM=9:	JJrww||DMM845DIDJzzU%6%6%84$ ##t||A~W[WbWbcDL%**,DJ~~!&(ggnnRWW5G5G5W&XDNN^abfbkbklnlslslxlxy}  zH  zH  IO  mP  cQ  WY  W^  W^  Wg  Wg  _h	

""5::i#89K#LTY"ZK    )NF)!r?   randomtimerS   sysnumpynp	functoolsr   r   r   einopsr   r   torch.nnr   Fr:   r   rL   vis_scriptsrG   r7   rD   r   r5   ArgumentParserr3   add_argumentstrintfloatr[    r\   r   <module>rm      sn         # $        q 	 	 	 -B	C   DBK`  a   DSu  S^   _   DU<  H   Iu\  B   D3y  A   Kc"  5   Dc!Ao  p   D3q>j  k   Ms1:\  ]   NC=_  `   Fd  H   %3s3x_  U   KlHn  o   MB<c  d   M5  Ld   e   MD%M`  a   O#a  >Y   Z   JS8z  {   )4  So   p   OT,Lk  l   $eLNm  nr\   