
    %h                     J    d dl mZ d dlmZmZ  G d dej
                        Zy)    N)build_act_layerbuild_norm_layerc                   4     e Zd ZdZ	 	 	 	 	 d fd	Zd Z xZS )	StemLayerz Stem layer of InternImage
    Args:
        in_channels (int): number of input channels
        out_channels (int): number of output channels
        act_layer (str): activation layer
        norm_layer (str): normalization layer
    c                 
   t         |           t        j                  ||ddd      | _        t        ||dd      | _        t        |      | _        t        j                  ||ddd      | _	        t        ||dd      | _
        y )N      )kernel_sizestridepaddingchannels_first)super__init__nnConv2dconv1r   norm1r   actconv2norm2)selfin_channelsinter_channelsout_channels	act_layer
norm_layer	__class__s         >/var/www/html/mariraj/BiRefNet/models/refinement/stem_layer.pyr   zStemLayer.__init__   s     	YY{-+,&''(	*

 &J(8:J

 #9-YY~++,&''(	*

 &*&68H

    c                     | j                  |      }| j                  |      }| j                  |      }| j                  |      }| j	                  |      }|S )N)r   r   r   r   r   )r   xs     r   forwardzStemLayer.forward'   sH    JJqMJJqMHHQKJJqMJJqMr   )   0   `   GELUBN)__name__
__module____qualname____doc__r   r"   __classcell__)r   s   @r   r   r      s#     ! " ! 
2r   r   )torch.nnr   models.modules.utilsr   r   Moduler    r   r   <module>r1      s     B(		 (r   