CoolFace
Apppublic

xdecoder/Instruct-X-Decoder

sourceHugging Faceafl-3.0updated 3y agoView on Hugging Face
163likes
xdecoder_head.cpython-38.pyc51 linesDownload Raw Back to __pycache__
1U

2E$�c��@svddlmZddlmZddlmZddlmZddlm	Z	ddl3mZdd	lm
Z
Gd4d�dej�Zedd
��ZdS)�)�Dict)�nn)�	ShapeSpec�)�
register_body)�
build_encoder)�
build_decoder�)�configurablec5s�eZdZeddd�eeefeej	e6eej	ed��fdd��Zeeeefej	e
d�dd	��Zd7d8d9difdd
�Zd10d11d12difdd�Z�ZS)�XDecoderHeadg�?�����)�loss_weight�ignore_value)�input_shape�num_classes�
pixel_decoderr
r�transformer_predictor�transformer_in_featurec13sxt���t|��dd�d�}dd�|D�|_dd�|D�}dd�|D�}	||_d|_||_||_||_	||_14||_d	S)15a1617        NOTE: this interface is experimental.18        Args:19            input_shape: shapes (channels and stride) of the input features20            num_classes: number of classes to predict21            pixel_decoder: the pixel decoder module22            loss_weight: loss weight23            ignore_value: category id to be ignored during training.24            transformer_predictor: the transformer decoder that makes prediction25            transformer_in_feature: input feature name to the transformer_predictor26        cSs27|djS)Nr��stride)�x�r�4/data/arXiv/demo/Demo/xdecoder/body/xdecoder_head.py�<lambda>2�z'XDecoderHead.__init__.<locals>.<lambda>)�keycSsg|]\}}|�qSrr��.0�k�vrrr�28<listcomp>3sz)XDecoderHead.__init__.<locals>.<listcomp>cSsg|]\}}|j�qSrrrrrrr 4scSsg|]\}}|j�qSr)�channelsrrrrr 5s�N)�super�__init__�sorted�items�in_featuresr�
common_strider
r�	predictorrr)29�selfrrrr
rrr�feature_strides�feature_channels��	__class__rrr$s30zXDecoderHead.__init__)r�lang_encoder�extrac
s�|ddd}|dd�|dd}|dkr:�d}n2|dkrL�d}n |d	kr^�d}n||dj}�fd31d�|��D��d��d
d�t||��d|dt|||d|d�d�S)N�MODEL�DECODERZTRANSFORMER_IN_FEATURE�ENCODER�transformer_encoder�	CONVS_DIM�pixel_embeddingZMASK_DIM�multi_scale_pixel_decodercs"i|]\}}|�dkr||�qS)�IN_FEATURESrr��enc_cfgrr�32<dictcomp>Ssz,XDecoderHead.from_config.<locals>.<dictcomp>�IGNORE_VALUE�NUM_CLASSES�LOSS_WEIGHTT)Zmask_classificationr0)rrrrr
rr)r!r&�getrr)�cls�cfgrr/r0Zin_features_type�dec_cfgZ!transformer_predictor_in_channelsrr9r�from_configAs433343536�37��zXDecoderHead.from_configN�segcCs|�||||||�S�N)�layers)r*�features�mask�target_queries�38target_vlp�taskr0rrr�forwarddszXDecoderHead.forwardc	Cs�|j�|�\}}}	|jdkr4|�|	||||||�}39nX|jdkr^|dk	sNtd��|�|||�}40n.|jdkrx|�|||�}41n|�||j||�}42|43S)Nr7r4z.Please use the TransformerEncoderPixelDecoder.r6)r�forward_featuresrr)�AssertionError)r*rGrHrIrJrKr0�
mask_featuresZtransformer_encoder_featuresZmulti_scale_features�predictionsrrrrFgs4445��46zXDecoderHead.layers)�__name__�47__module__�__qualname__r48r�strr�intr�Module�floatr$�classmethod�dictrCrLrF�
__classcell__rrr-rrs �49�("rcCst||||�SrE)r)rArr/r0rrr�get_xdecoder_headysr[N)�typingr�torchr�detectron2.layersr�registryr�encoderr�decoderr�utilsr50rVrr[rrrr�<module>51sc