CoolFace
Apppublic

Sorobot/Document-modify-Toolkit

sourceHugging Faceapache-2.0updated 2y agoView on Hugging Face
0likes
GeoTr.cpython-38.pyc73 linesDownload Raw Back to __pycache__
1U

2h�Hf�/�@sddlZddlmZddlZddlmZddlmmZddl	m3Z4ddlmZddl
mZGdd�dej�Zd	d5�Zdd�ZGd
d�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Zdd�Zddd�ZGdd�dej�ZGdd�dej�ZdS)�N)�Optional�)�BasicEncoder)�build_position_encoding)�weight_init_csPeZdZd�fdd�	Zeejd�d	d6�Zddd
�Zddd�Z	ddd�Z7�ZS)�	attnLayer��皙�����?�reluFcs�t���tj���d�|_t����fdd�td�D��|_t��|�|_	tj8�d�|_t�|��|_t�
��|_t��fdd�td�D��|_t�
��|_tj9�d�|_t��fdd�td�D��|_tj10�d�|_t|�|_||_dS)N��dropoutc	s"g|]}t�tj���d���qS)r)�copy�deepcopy�nn�MultiHeadAttention��.0�i��d_modelr
�nhead��&D:\CodeProjects\as1\Transform\GeoTr.py�11<listcomp>s�z&attnLayer.__init__.<locals>.<listcomp>���pcsg|]}t�t�����qSr)rrr�	LayerNormr)rrrr&scsg|]}t�tj�d���qS)r)rrr�Dropoutrrrrr,s)�super�__init__rr�	self_attn�	LayerList�range�multihead_attn_list�Linear�linear1rr
�linear2r�norm1�12norm2_list�norm3�dropout1�
dropout2_list�dropout3�_get_activation_fn�13activation�normalize_before)�selfrr�dim_feedforwardr
r0r1��	__class__rrr!
s,	14����15zattnLayer.__init__)�poscCs|dkr|S||S�Nr)r2�tensorr6rrr�with_pos_embed3szattnLayer.with_pos_embedNc	Cs|�||�}}|j|�d�|�d�|�d�|d�}	|	�d�}	||�|	�}|�|�}t||j|j|j|�D]Z\}16}}}
}||�||��d�|�|17|��d�|18�d�|d��d�}	||
|	�}||�}ql|�	|�19|�|�|����}	||�
|	�}|�|�}|S)N)rrr��value�	attn_mask��query�keyr;r<)r9r"�	transposer,r)�zipr%r*r-r(r
r0r'r.r+)r2�tgt�memory_list�tgt_mask�memory_maskr6�20memory_pos�q�k�tgt2�memory�multihead_attn�norm2�dropout2Zm_posrrr�forward_post6s>	�2122���2324zattnLayer.forward_postc25	Cs�|�|�}|�||�}}	|j||	||d�}||�|�}|�|�}|j|�||�|�||�||d�}||�|�}|�|�}|�|�	|�26|�|����}||�|�}|S)Nr:r=)
r)r9r"r,rLrKrMr+r(r
r0r'r.)27r2rBrJrDrEr6rFrIrGrHrrr�forward_preas 	28293031�32zattnLayer.forward_precCs.|jr|�||||||�S|�||||||�Sr7)r1rOrN)r2rBrCrDrEr6rFrrr�forwards"	��zattnLayer.forward)rr	r33rF)NNNN)NNNN)NNNN)�__name__�34__module__�__qualname__r!r�paddle�Tensorr9rNrOrP�
__classcell__rrr4rrs,�&�35/�36"�rcst��fdd�t|�D��S)Ncsg|]}t����qSr)rrr��modulerrr�sz_get_clones.<locals>.<listcomp>)rr#r$)rX�NrrWr�_get_clones�srZcCs>|dkrtjS|dkrtjS|dkr*tjStd|�d���dS)z,Return an activation function given a stringr�gelu�gluz$activation should be relu/gelu, not �.N)�Frr[r\�RuntimeError)r0rrrr/�sr/cs:eZdZdeed��fdd�
Zejejd�dd�Z�ZS)	�TransDecoder���num_attn_layers�37hidden_dimcs0tt|���t|�}t||�|_t|�|_dSr7)r r`r!rrZ�layersr�position_embedding�r2rcrdZ38attn_layerr4rrr!�szTransDecoder.__init__)�image�query_embedc	Cs�|�tj|jd|jd|jdgdd��}|j\}}}}|�d�jdddgd�}|�d�jdddgd�}|jD]}|||g|||gd�}qp|jdddgd��||||g�}|S�	Nrr��bool��dtyper��perm)r6rF�rfrT�ones�shape�flattenr@re�reshape)	r2rhrir6�b�c�h�w�layerrrrrP�s$�39 zTransDecoder.forward)ra�	rQrRrS�intr!rTrUrPrVrrr4rr`�sr`cs6eZdZdeed��fdd�
Zejd�dd�Z�ZS)	�TransEncoderrarbcs0tt|���t|�}t||�|_t|�|_dSr7)r r}r!rrZrerrfrgr4rrr!�szTransEncoder.__init__)rhcCs�|�tj|jd|jd|jdgdd��}|j\}}}}|�d�jdddgd�}|�d�jdddgd�}|jD]}|||g|||gd�}qp|jdddgd��||||g�}|Srjrq)r2rhr6rvrwrxryrzrrrrP�s$�40 zTransEncoder.forward)rar{rrr4rr}�sr}cs&eZdZd�fdd�	Zdd�Z�ZS)�FlowHeadra�csDtt|���tj||ddd�|_tj|dddd�|_t��|_dS)Nrkr��paddingr)	r r~r!r�Conv2D�conv1�conv2�ReLUr)r2�	input_dimrdr4rrr!�szFlowHead.__init__cCs|�|�|�|���Sr7)r�rr�)r2�xrrrrP�szFlowHead.forward)rar)rQrRrSr!rPrVrrr4rr~�sr~cs,eZdZded��fdd�
Zdd�Z�ZS)�UpdateBlockra�rdc41sPtt|���t|dd�|_t�tj|dddd�t��tjddddd��|_	dS)Nrr�rkrr�i@r)42r r�r!r~�	flow_headr�43Sequentialr�r��mask)r2rdr4rrr!�s�zUpdateBlock.__init__cCs(d|�|�}|�|�}||}||fS)Ng�?)r�r�)r2rh�coordsr�ZdflowrrrrP�s44zUpdateBlock.forward)ra)rQrRrSr|r!rPrVrrr4rr��sr�cCsRt�tj|d�tj|d��}tj|ddd�dd�jdd�}|d�|dddg�S)N)�end�����r��axis�float32rmr)rT�meshgrid�arange�stack�astype�tile)�batch�ht�wdr�rrr�coords_grid�s r��bilinearcCs2d|jdd|jdf}dtj|||dd�S)NrrrkT)�size�mode�
align_corners)rsr^�interpolate)�flowr��new_sizerrr�upflow8sr�cs2eZdZdZd
�fdd�	Zd	d45�Zdd�Z�ZS)�OverlapPatchEmbedzImage to Patch Embedding����rk�cs�t���t|t�r|n||f}t|t�r.|n||f}|d|d|d|d|_|_|j|j|_tj|||||dd|ddfd�|_	t�46|�|_|�|j
�dS)Nrrr��strider�)r r!�47isinstance�tuple�H�WZnum_patchesrr��projr�norm�apply�
_init_weights)r2�img_sizeZ48patch_sizer�Zin_chans�	embed_dimr4rrr!s49�&�zOverlapPatchEmbed.__init__cCsZt|tj�rt|ddd�n:t|tj�r8t|ddd�nt|tj�rVt|jddd	d50�dS)NZ
trunc_normal_g{�G�z�?)�std�Constantg�?)r;Zkaiming_normal_�fan_outr)r��nonlinearity)r�rr&rrr��weight)r2�mrrrr�!s�zOverlapPatchEmbed._init_weightscCs`|�|�}|j\}}}}|�d�}tt|j��}d|d<d|d<|j|d�}|�|�}|||fS)Nrrro)r�rsrt�listr$�ndimr@r�)r2r��_r�r�rprrrrP+s515253zOverlapPatchEmbed.forward)r�r�r�rkr�)rQrRrS�__doc__r!r�rPrVrrr4rr�s54r�cs4eZdZ�fdd�Zdd�Zdd�Zdd�Z�ZS)	�GeoTrcs"tt|���d|_}t|dd�|_dd�td�D�|_|jD]}|�|t	d|d��q@d	d�td�D�|_55|j56D] }|�|tjddddd57d��qtdd�td�D�|_
|j
D]}|�|td|d��q�d
d�td�D�|_|jD]}|�|tjdddd��q�t�d|j�|_t|j�|_dS)Nr�instance)�58output_dimZnorm_fncSsg|]}dt|��qS)�
encoder_block��strrrrrrBsz"GeoTr.__init__.<locals>.<listcomp>rkrr�cSsg|]}dt|��qS)�59down_layerr�rrrrrFsrr�cSsg|]}dt|��qS)�
decoder_blockr�rrrrrJscSsg|]}dt|��qS)�up_layerr�rrrrrNsr�T)�scale_factorr�r��Q)r r�r!rdr�fnetr$r��__setattr__r}r�rr�r�r`r��Upsample�	Embeddingrir��update_block)r2Zhdimrr4rrr!;s(6061626364�zGeoTr.__init__c	CsL|j\}}}}t|||�}t||d|d�}t||d|d�}|||fS)Nr)rsr�)	r2�imgrYr�r�r��coodslar�coords0�coords1rrr�initialize_flowXs65zGeoTr.initialize_flowc	Cs�|j\}}}}|�|dddd||g�}tj|dd�}tjd|ddgdd�}|�|dddd||g�}tj||dd�}|jddd	dd66dgd�}|�|dd|d|g�S)Nr�	rrr�rk)�paddingsrr��ro)rsrur^�softmax�unfoldrT�sumr@)r2r�r�rYr�r�r�Zup_flowrrr�
upsample_flow_szGeoTr.upsample_flowcCsn|�|�}t�|�}|�|jd�|�}|�|jd�|�}|�|jd�|�}|�|jd�|�}|�|jd�|�}|jj�d��	d|j67ddg�}|�|jd�||�}	|�|jd�|	��
d�jdddgd�}68|�|jd�||69�}|�|jd�|��
d�jdddgd�}|�|jd�||�}
|�|�\}}}|��}|�|
|�\}}|�|||�}||}|S)Nrrrro)r�r^r�__getattr__r�r�rir��	unsqueezer�rsr�r�rtr@r��detachr�r�)r2rhZfmapZfmap1Zfmap1dZfmap2Zfmap2dZfmap3Zquery_embed0Zfmap3d_Zfmap3du_Zfmap2d_Zfmap2du_Zfmap_outr�r�r�r�Zflow_upZbm_uprrrrPms:7071 ������z
GeoTr.forward)rQrRrSr!r�r�rPrVrrr4rr�:sr�)r�)r�typingrrT�	paddle.nnrZpaddle.nn.functional�72functionalr^Z	extractorrZposition_encodingr�weight_initr�LayerrrZr/r`r}r~r�r�r�r�r�rrrr�<module>s&732