
     h                         d dl Z d dlmZ d dlZd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 Z eee      Zd Zd Zd Zd Zy)    Nc                     |  d| S )N_ )ijs     F/home/cameronsmith/repos/controll3r/dust3r/dust3r/cloud_opt/commons.pyedge_strr	      s    S!:    c                     t        |  | fS N)r	   )ijs    r   i_j_ijr      s    R="r
   c                 b    t        | |   j                         ||   j                         z        S r   )floatmean)conf_iconf_jedges      r   	edge_confr      s,    ""$vd|'8'8'::;;r
   c                 `    | D ci c]  \  }\  }}||ft        |||       c}}}S c c}}}w r   )r   )edgesr   r   er   r   s         r   compute_edge_scoresr      s3    BGHHYQAQFIffa00HHHs   )c                 n    t        | t              sJ t        j                  |       j	                  d      S )NF)
isinstancedictnnParameterDictrequires_grad_xs    r   NoGradParamDictr"      s+    aA--e44r
   c                 D   t        d | D              dz   }d g|z  }t        |       D ]v  \  }\  }}t        ||   j                  dd       }t        ||   j                  dd       }	||   r||   |k(  s
J d|        ||   r||   |	k(  s
J d|        |||<   |	||<   x |S )Nc              3   2   K   | ]  }t        |        y wr   )max).0r   s     r   	<genexpr>zget_imshapes.<locals>.<genexpr>"   s     'AQ's      r      zincorrect shape for image )r%   	enumeratetupleshape)
r   pred_ipred_jn_imgsimshapesr   r   r   shape_ishape_js
             r   get_imshapesr3   !   s    '''!+FvHu% 	6Aqq	!,-q	!,-A;A;')K-Gs+KKA;A;')K-Gs+KK Or
   c                 l    | dk(  rd }|S | dk(  rd }|S | dk(  rd }|S | dv rd }|S t        d	|       )
Nlogc                 "    | j                         S r   )r5   r    s    r   conf_trfzget_conf_trf.<locals>.conf_trf2   s    r
   sqrtc                 "    | j                         S r   )r8   r    s    r   r7   zget_conf_trf.<locals>.conf_trf4   s    r
   m1c                     | dz
  S )Nr(   r   r    s    r   r7   zget_conf_trf.<locals>.conf_trf6   s
    !r
   )idnonec                     | S r   r   r    s    r   r7   zget_conf_trf.<locals>.conf_trf8   s    r
   zbad mode for mode=)
ValueError)moder7   s     r   get_conf_trfrA   0   sb    u}' O 
( O 
#
 O	 
	! O .011r
   c                 N    | |z
  j                         j                  d      |z  S N)dim)squaresumabweights      r   l2_distrL   >   s&    UNN  R (612r
   c                 2    | |z
  j                  d      |z  S rC   )normrH   s      r   l1_distrO   B   s    ULLRL 6)*r
   )l1l2c                     t        j                  |       }|t        j                  t        j                  |             z  S r   )torchsignlog1pabsr!   rT   s     r   signed_log1prX   I   +    ::a=D%++eiil+++r
   c                     t        j                  |       }|t        j                  t        j                  |             z  S r   )rS   rT   expm1rV   rW   s     r   signed_expm1r\   N   rY   r
   c                     d| cxk  rdk  sJ  J |||z
  dt        j                  | t         j                  z        z   z  dz  z   S )Nr   r(   r)   )npcospitlr_startlr_ends      r   cosine_schedulere   S   sE    ;Q;;X&1RVVAI->+>?AAAr
   c                 8    d| cxk  rdk  sJ  J |||z
  | z  z   S )Nr   r(   r   ra   s      r   linear_schedulerg   X   s*    ;Q;;v(A---r
   )rS   torch.nnr   numpyr^   r	   r   r   r   r"   r3   rA   rL   rO   r   	ALL_DISTSrX   r\   re   rg   r   r
   r   <module>rk      sa      <I5
3+ G(	,
,
B
.r
   