
    Rg                         d dl mZ d dlmZ d dlm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mZ d d	lmZ d d
lmZ d dlmZ  G d dej2                  j.                  j4                        Zy)    )BytesIO)Path)shuffleN)	rearrangerepeat)FloatUInt8)
DictConfig)Image)Tensor)IterableDataset)commonc                   r    e Zd ZU eed<   eed<   dZeed<   dZeed<   	 d	 ddZ	d	 Z
dd
ZdefdZd Zd Zy)DatasetRealEstate10kcfgchunksg?nearg      $@farNc                     t        |      t        g       k(  r|d   n|| _        || _        || _        || _        t        d      ddg|   z  }|j                         D cg c]  }|j                  dk(  s| c}| _        t        d       y c c}w )Nr   z(/data/scene-rep/Real-Estate-10k/re10k_pttraintestz.torchzmaking data)
typen_skipn_trgt
res_factorvalr   iterdirsuffixr   print)selfnum_query_viewsimslr   r   r   rootpaths           G/home/cameronsmith/repos/refactor_flowmap_and_splat/data/re10k_hires.py__init__zDatasetRealEstate10k.__init__   s     #'v,R"8VAYf$">?76BRSVBWW(,R$++:QtRm Ss   B3Bc                 ,    t        | j                        S N)lenr   )r    s    r%   __len__zDatasetRealEstate10k.__len__$   s    4;;    c                    t        d|       | j                  |   }t        j                  |      }t        d|       ddg}t        d|       |D ]  }t        d       	 | j	                  |d         \  }}	t        |d         }
| j                  | j                  dz   z  }d	}||
kD  r|
dz
  }nt        j                  d	|
|z
  dz
        }t        j                  |||z   | j                        j                         j                  d	|
dz
        j                         }| j                  |D cg c]
  }|d
   |    c}      dz  dz
  }||   }|	|   }	||	|d}t        j                   |d      c S  y c c}w #  t        d       Y 8xY w)Nzloading chunkzdone loading chunkV      z
doing dataexamplecameras   r   images   )rgb
intrinsicsc2wzbad idxg*kʚ?)r   r   torchloadconvert_posesr)   r   r   randomrandintlinspacelongcliptolistconvert_imagesr   make_sampleminintr   sizecontext_indices	get_boundcontext_imagestarget_indicestarget_images)r    idxcontextinput_context
chunk_pathchunkr"   r/   
extrinsicsr5   nendstartidxsimgstrgts                   r%   __getitem__z DatasetRealEstate10k.__getitem__&   s   oc";;s#


:&"3'Xl3 2	G)C )-););GI<N)O&
J	*+kk4;;q=1q5ac#"NN1aeAg6e~~eE#IdkkBGGINNqQRSTQTU\\^ **t+UWX->s-C+UVWXXYZZ%d+
%d+
"%/( %%d62252	 ,Vi s    CE7,E2
;E72E77F	num_viewsc                 |    t        j                  t        | |      t         j                        }t	        |d|      S )Ndtypez-> v)v)r7   tensorgetattrfloat32r   )r    boundrW   values       r%   rF   zDatasetRealEstate10k.get_boundd   s.    
 WT51GeVy11r+   c                 
   |j                   \  }}t        j                  dt        j                        }t	        |d|      j                         }|d d d df   j                  \  }}}}||d d ddf<   ||d d ddf<   ||d d ddf<   ||d d ddf<   t	        t        j                  dt        j                        d|      j                         }	t        |d d d	d f   d
dd      |	d d d df<   |	j                         |fS )N   rY   zh w -> b h w)b   r   r1   r3      zb (h w) -> b h w)hw)	shaper7   eyer^   r   cloneTr   inverse)
r    posesrc   _r5   fxfycxcyw2cs
             r%   r9   z"DatasetRealEstate10k.convert_posesl   s     {{1 YYq6
J!<BBD
q"1"uBB 
1a7 
1a7 
1a7 
1a7 UYYq6!LRRTuQU|-?1JArrE
{{}j((r+   c                    g }|D ]e  }t        j                  t        |j                         j	                                     }|j                   t        j                         |             g t        j                  |      S r(   )
r   openr   numpytobytesappendtfToTensorr7   stack)r    r2   torch_imagesimages       r%   r@   z#DatasetRealEstate10k.convert_images   sf    
  	6EJJwu{{}'<'<'>?@Ee 45	6 {{<((r+   )r3      	   Fr1   )returnN)FT)__name__
__module____qualname__r
   __annotations__listr   floatr   r&   r*   rV   rC   rF   r9   r@    r+   r%   r   r      sZ    	OLD%C FG 
 <|2 2)(
)r+   r   )ior   pathlibr   r:   r   r7   torchvision.transforms
transformsry   einopsr   r   	jaxtypingr   r	   	omegaconfr
   PILr   r   torch.utils.datar   datar   utilsDatasetr   r   r+   r%   <module>r      sJ         # $ "     , z)5;;++33 z)r+   