
    %h	                     N    d dl Z d dlmZ d dlmZ  G d dej
                        Zy)    N)deform_conv2dc                   .     e Zd Z	 	 	 	 d fd	Zd Z xZS )DeformableConv2dc                    t         t        |           t        |      t        k(  st        |      t
        k(  sJ t        |      t        k(  r|n||f}t        |      t        k(  r|n||f| _        || _        t        j                  |d|d   z  |d   z  ||| j                  d      | _
        t        j                  j                  | j                  j                  d       t        j                  j                  | j                  j                  d       t        j                  |d|d   z  |d   z  ||| j                  d      | _        t        j                  j                  | j                  j                  d       t        j                  j                  | j                  j                  d       t        j                  ||||| j                  |      | _        y )N   r      T)kernel_sizestridepaddingbiasg        )out_channelsr	   r
   r   r   )superr   __init__typetupleintr
   r   nnConv2doffset_convinit	constant_weightr   modulator_convregular_conv)selfin_channelsr   r	   r
   r   r   	__class__s          </var/www/html/mariraj/BiRefNet/models/modules/deform_conv.pyr   zDeformableConv2d.__init__   s    	.0K E)T+->#-EEE%)+%6%%?kkS^E_ $V 5fFF;K99[%&Q%7+a.%H1<,2-1\\*.0 	$**1126
$**//4 ii%&Q%7+a.%H1<,2-1\\*.0 	$--44b9
$--22B7IIk3?2=-3.2ll+/1    c           	         | j                  |      }dt        j                  | j                  |            z  }t	        ||| j
                  j                  | j
                  j                  | j                  || j                        }|S )Ng       @)inputoffsetr   r   r   maskr
   )
r   torchsigmoidr   r   r   r   r   r   r
   )r   xr"   	modulators       r   forwardzDeformableConv2d.forward2   sx     !!!$t':':1'=>>	$$++""''LL;;
 r   )   r   r   F)__name__
__module____qualname__r   r(   __classcell__)r   s   @r   r   r      s     )1Vr   r   )r$   torch.nnr   torchvision.opsr   Moduler    r   r   <module>r2      s      )<ryy <r   