CoolFace
Apppublic

Mjolnir65/FasterRCNN

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
transform.cpython-311.pyc111 linesDownload Raw Back to __pycache__
1�

2���gp/����ddlZddlmZmZmZmZmZddlZddlZddlm	Z	m3Z4ddlmZej
jde5de6fd���Zej
jd	e7defd8���Z		dde9deded
eeee10fdeeeefdee11eeee12fffd�ZGd�de	j��Zde13deedeede14fd�Zde15deedeede16fd�ZdS)�N)�Any�Dict�List�Optional�Tuple)�nn�Tensor�)�	ImageList�image�returnc�H�ddlm}|�|��dd�S)Nr)�	operators�����)�17torch.onnxr�shape_as_tensor)rrs  �R/home/gaurav/Documents/assignment-3-gaurav-behera/q1/modify/detection/transform.py�_get_shape_onnxrs1��$�$�$�$�$�$��$�$�U�+�+�B�C�C�0�0��vc��|S�N�)rs r�_fake_cast_onnxrs	��
�Hr�
self_min_size�
self_max_size�target�18fixed_sizec���tj��rt|��}nOtj���r"tj|jdd���}n|jdd�}d}d}d}|�|d|dg}�n<tj���stj��r�tj|���	tj19���}	tj|���	tj20���}21t|��}t|��}tj||	z||22z��}
tj��rt|
��}nI|
���}n4t|��}	t|��}23t||	z||24z��}d}tjj�|d||d|d���d}|�||fSd	|vrm|d	}tjj�|dd�df���|||�25��dd�df���}||d	<||fS)Nrr26r)�dtypeT�bilinearF)�size�scale_factor�mode�recompute_scale_factor�
align_corners�masks)r"r#r%)�torchvision�_is_tracingr�torch�jit�is_scripting�tensor�shape�min�to�float32�max�floatr�itemr�27functional�interpolate�byte)rrrrr�im_shaper"r#r%�min_size�max_size�self_min_size_f�self_max_size_f�scale�masks               r�_resize_image_and_masksr?sm���� � �$�"�5�)�)���	��	�	�	!�	!�$��<���B�C�C� 0�1�1����;�r�s�s�#�� $�D�$(�L�-1�����1�
�z�!�}�-����9�!�!�#�#�	S�{�'>�'@�'@�	S��y��*�*�-�-�E�M�-�B�B�H��y��*�*�-�-�E�M�-�B�B�H�#�M�2�2�O�#�M�2�2�O��I�o��8�/�H�:T�U�U�E��&�(�(�
,�.�u�5�5���$�z�z�|�|����8�}�}�H��8�}�}�H��}�x�7���9Q�R�R�L�!%���H��+�+�
�d��
�!�
�5��

,�
�
��
	�E��~��f�}���&����g����x�"�.�.�����D��M���!�!��<�`v�/�28�29�30�!�!�Q�$������	
���w���&�=�rc���eZdZdZ		ddededeedeeded	eeeefd31e	f�fd�
Z32	d deed
eeee
efdeeeeee
efffd�Zdedefd�Zdeedefd�Z	d dedeee
efdeeeee
efffd�Zejjd!deededefd���Zdeeedeefd�Zd!deededefd�Zdeee
efdeeeefdeeeefdeee
effd�Zde
fd�Z�xZS)"�GeneralizedRCNNTransformah33    Performs input / target transformation before feeding the data to a GeneralizedRCNN34    model.35 36    The transformations it performs are:37        - input normalization (mean subtraction and std division)38        - input / target resizing to match min_size / max_size39 40    It returns a ImageList for the inputs, and a List[Dict[Tensor]] for the targets41    � Nr9r:�42image_mean�	image_std�size_divisibler�kwargsc���t�����t|ttf��s|f}||_||_||_||_||_	||_43|�dd��|_dS)N�_skip_resizeF)
�super�__init__�44isinstance�list�tupler9r:rCrDrEr�poprH)	�selfr9r:rCrDrErrF�	__class__s	        �rrJz!GeneralizedRCNNTransform.__init__as���	���������(�T�5�M�2�2�	#� �{�H� ��
� ��
�$���"���,���$���"�J�J�~�u�=�=����r�images�targetsr
c���d�|D��}|�?g}|D]8}i}|���D]45\}}|||<�|�|���9|}tt|����D]�}||}	|�||nd}46|	���dkrtd|	j�����|�|	��}	|�|	|47��\}	}48|	||<|�|49�|50||<��d�|D��}|�	||j51���}g}|D]N}
tjt|
��dkd|
����|�|
d|
d	f���Ot||��}||fS)52Nc��g|]}|��Srr��.0�imgs  r�53<listcomp>z4GeneralizedRCNNTransform.forward.<locals>.<listcomp>ys��(�(�(�#�#�(�(�(r�zFimages is expected to be a list of 3d tensors of shape [C, H, W], got c�,�g|]}|jdd���S)rN�r.rUs  rrXz4GeneralizedRCNNTransform.forward.<locals>.<listcomp>�s"��8�8�8�#�s�y����~�8�8�8r)rE�zMInput tensors expected to have in the last two elements H and W, instead got rr54)�items�append�range�len�dim�55ValueErrorr.�	normalize�resize�batch_imagesrEr*�_assertr)rOrQrR�targets_copy�t�data�kr�ir�target_index�image_sizes�image_sizes_list�56image_size�57image_lists               r�forwardz GeneralizedRCNNTransform.forwardvs���)�(��(�(�(����5857�L��
*�
*��*,���G�G�I�I� � �D�A�q��D��G�G��#�#�D�)�)�)�)�"�G��s�6�{�{�#�#�59	*�60	*�A��1�I�E�)0�)<�7�1�:�:�$�L��y�y�{�{�a��� �!w�jo�ju�!w�!w�x�x�x��N�N�5�)�)�E�"&�+�+�e�\�"B�"B��E�<��F�1�I��"�|�'?�)���61��8�8��8�8�8���"�"�6�$�:M�"�N�N��24��%�	D�	D�J��M��J���1�$�l�`j�l�l�
�
�
�
�#�#�Z��]�J�q�M�$B�C�C�C�C��v�'7�8�8�62��7�"�"rrc�"�|���std|j�d����|j|j}}t	j|j||���}t	j|j||���}||dd�ddfz63|dd�ddfzS)NzOExpected input images to be of floating type (in range [0, 1]), but found type z instead�r �device)�is_floating_point�	TypeErrorr rtr*�	as_tensorrCrD)rOrr rt�mean�stds      rrcz"GeneralizedRCNNTransform.normalize�s����&�&�(�(�	��8�"'�+�8�8�8���
���U�\�v����t��e�F�K�K�K���o�d�n�E�&�I�I�I����Q�Q�Q��d�]�+�+�s�1�1�1�d�D�=�/A�A�Arrjc64���ttjd���dt	t|�����������}||S)z�65        Implements `random.choice` via torch ops, so it can be compiled with66        TorchScript and we use PyTorch's RNG (not native RNG)67        r68g)�intr*�empty�uniform_r3r`r4)rOrj�indexs   r�torch_choicez%GeneralizedRCNNTransform.torch_choice�sJ��69�E�K��N�N�+�+�C��s�1�v�v���?�?�D�D�F�F�G�G����x�rrc��|jdd�\}}|jr&|jr||fS|�|j��}n
|jd}t|||j||j��\}}|�||fS|d}t|||f|jdd���}||d<d|vr-|d}t|||f|jdd���}||d<||fS)Nr������boxes�	keypoints)70r.�trainingrHrr9r?r:r�resize_boxes�resize_keypoints)rOrr�h�wr"�bboxr�s        rrdzGeneralizedRCNNTransform.resize�s��71�{�2�3�3����1��=�	%�� �
%��f�}�$��$�$�T�]�3�3�D�D��=��$�D�/��t�T�]�F�TX�Tc�d�d�
��v��>��&�=� ��g����D�1�a�&�%�+�b�c�c�*:�;�;����w���&� � ��{�+�I�(��Q��F�E�K����<L�M�M�I�"+�F�;���f�}�rc�&�72�g}t|d�����D]��73tjtj�74fd�|D�����tj�����tj��}|�|����|}tj	|d�tj��|z��|z�tj��|d<tj	|d�tj��|z��|z�tj��|d<t|��}g}|D]�}d�t|t|j����D��}tj
j�|d|dd|dd|df��}	|�|	����tj|��S)Nrc�*��g|]}|j���Srr[)rVrWrks  �rrXz?GeneralizedRCNNTransform._onnx_batch_images.<locals>.<listcomp>�s���/O�/O�/O���	�!��/O�/O�/Orr75r\c��g|]76\}}||z77��Srr)rV�s1�s2s   rrXz?GeneralizedRCNNTransform._onnx_batch_images.<locals>.<listcomp>�s ��O�O�O�V�R���R��O�O�Or)r_rar*r2�stackr0r1�int64r^�ceilrM�zipr.rr5�pad)rOrQrEr:�78max_size_i�stride�padded_imgsrW�padding�79padded_imgrks          @r�_onnx_batch_imagesz+GeneralizedRCNNTransform._onnx_batch_images�s�������v�a�y�}�}���'�'�	(�	(�A���5�;�/O�/O�/O�/O��/O�/O�/O�#P�#P�#S�#S�TY�Ta�#b�#b�c�c�f�f�gl�gr�s�s�J��O�O�J�'�'�'�'����z�8�A�;�>�>�%�-�#@�#@�F�"J�K�K�f�T�X�X�Y^�Yd�e�e�����z�8�A�;�>�>�%�-�#@�#@�F�"J�K�K�f�T�X�X�Y^�Yd�e�e������?�?��80���	+�	+�C�O�O�s�8�U�3�9�=M�=M�/N�/N�O�O�O�G���,�0�0��q�'�!�*�a��QR��UV�X_�`a�Xb�6c�d�d�J����z�*�*�*�*��{�;�'�'�'r�the_listc��|d}|dd�D]0}t|��D]\}}t|||��||<��1|S)Nrr81)�	enumerater2)rOr��maxes�sublistr~r4s      r�max_by_axisz$GeneralizedRCNNTransform.max_by_axis�s`����������|�	7�	7�G�(��1�1�
7�
7���t�"�5��<��6�6��e���
7��rc���tj��r|�||��S|�d�|D����}t	|��}t|��}t
tjt	|d��|z��|z��|d<t
tjt	|d��|z��|z��|d<t|��g|z}|d�82|d��}t|jd��D]P}||}||d|jd�d|jd�d|jd�f�
|���Q|S)Nc�6�g|]}t|j����Sr)rLr.rUs  rrXz9GeneralizedRCNNTransform.batch_images.<locals>.<listcomp>�s ��$G�$G�$G��T�#�)�_�_�$G�$G�$Grr83r\r)r(r)r�r�r3rLr{�mathr�r`�new_fullr_r.�copy_)	rOrQrEr:r��batch_shape�batched_imgsrkrWs	         rrez%GeneralizedRCNNTransform.batch_images�sg���"�$�$�	C��*�*�6�>�B�B�B��#�#�$G�$G��$G�$G�$G�H�H���~�&�&����>�>���$�)�E�(�1�+�$6�$6��$?�@�@�6�I�J�J�����$�)�E�(�1�+�$6�$6��$?�@�@�6�I�J�J�����6�{�{�m�h�.���a�y�)�)�+�q�9�9���|�)�!�,�-�-�	W�	W�A���)�C���N�c�i��l�N�N�c�i��l�N�N�c�i��l�N�J�K�Q�Q�RU�V�V�V�V��r�result�image_shapes�original_image_sizesc�P�|jr|Stt|||����D]}\}\}}}|d}t|||��}|||d<d|vr$|d}	t	|	||��}	|	||d<d|vr$|d}84t|85||��}86|87||d<�~|S)Nr�r'r�)r�r�r�r��paste_masks_in_imager�)rOr�r�r�rk�pred�im_s�o_im_sr�r'r�s           r�postprocessz$GeneralizedRCNNTransform.postprocesss����=�	��M�'0��V�\�K_�1`�1`�'a�'a�	3�	3�#�A�#��d�F���M�E� ���f�5�5�E�!&�F�1�I�g���$����W�
��,�U�E�6�B�B��%*��q�	�'�"��d�"�"� ��-�	�,�Y��f�E�E�	�)2��q�	�+�&���
rc��|jj�d�}d}||�d|j�d|j�d�z
}||�d|j�d|j�d�z
}|d	z
}|S)88N�(z89    zNormalize(mean=z, std=�)zResize(min_size=z, max_size=z, mode='bilinear')z90))rP�__name__rCrDr9r:)rO�
format_string�_indents   r�__repr__z!GeneralizedRCNNTransform.__repr__sx���>�2�5�5�5�
����G�\�\�D�O�\�\�4�>�\�\�\�\�
��G�p�p�T�]�p�p�t�}�p�p�p�p�
����
��r)rBNr)rB)r��91__module__�__qualname__�__doc__r{rr3rrrrJr	r�strrrqrcrrdr*r+�unusedr�r�rer�r��
__classcell__)rPs@rrArAUs��������	�	�"!�04�>�>��>��>���K�	>�92��;�>��
>��U�3��8�_�-�>��>�>�>�>�>�>�,RV�'#�'#��6�l�'#�-5�d�4��V��;L�6M�-N�'#�	�y�(�4��S�&�[�(9�#:�;�;�	<�'#�'#�'#�'#�R	B�v�	B�&�	B�	B�	B�	B��d�3�i��C�����/3�������c�6�k�*�+��93�v�x��S�&�[� 1�2�2�	3�	����:�Y��(�(��f��(�s�(�TZ�(�(�(���(�*�D��c��O���S�	�������4��<����f�����(��T�#�v�+�&�'���5��c��?�+��#�5��c��?�3�	�9495�d�3��;��	 �����,�#��������rrAr��
original_size�new_sizec����fd�t||��D��}|\}}����}tj���rK|dd�dd�df|z}|dd�dd�df|z}tj|||dd�dd�dffd���}n |dxx|zcc<|dxx|zcc<|S)Nc���g|]R\}}tj|tj�j���tj|tj�j���z��SS�rs�r*r-r1rt)rV�s�s_origr�s   �rrXz$resize_keypoints.<locals>.<listcomp> sd������
�A�v�	��Q�e�m�I�4D�E�E�E�96�,�v�U�]�9�;K�97L�98L�99L�	M���rrr100r\�ra).r).r101)r��cloner*�_C�_get_tracing_stater�)	r�r�r��ratios�ratio_h�ratio_w�resized_data�resized_data_0�resized_data_1s	`        rr�r�s��������X�}�5�5����F�102��G�W��?�?�$�$�L��x�"�"�$�$�(�%�a�a�a����A�g�.��8��%�a�a�a����A�g�.��8���{�N�N�L�QR�QR�QR�TU�TU�TU�WX�QX�DY�#Z�`a�b�b�b����V�����'�����V�����'�����rr�c�����fd�t||��D��}|\}}��d��\}}}}	||z}||z}||z}|	|z}	tj||||	fd���S)Nc���g|]R\}}tj|tj�j���tj|tj�j���z��SSr�r�)rVr�r�r�s   �rrXz resize_boxes.<locals>.<listcomp>2sb������
�A�v�	��Q�e�m�E�L�A�A�A�103�,�v�U�]�5�<�104H�105H�106H�	I���rr107r�)r��unbindr*r�)108r�r�r�r��ratio_height�ratio_width�xmin�ymin�xmax�ymaxs109`         rr�r�1s���������X�}�5�5����F�110!'��L�+�"�\�\�!�_�_��D�$��d��+��D��+��D��,��D��,��D��;��d�D�$�/�Q�7�7�7�7r)NN)r��typingrrrrrr*r(rr	rprr+r�rr3rr{r�r?�ModulerAr�r�rrr�<module>r�s������3�3�3�3�3�3�3�3�3�3�3�3�3�3�����������������!�!�!�!�!�!����1�6�1�f�1�1�1���1����
�v�
�%�
�
�
���
�+/�,0�:�:��:��:��:�
�T�#�v�+�&�'�	:�111��s�C�x��)�:��6�8�D��f��-�.�.�/�
:�:�:�:�zG�G�G�G�G�r�y�G�G�G�T���t�C�y��D�QT�I��Z`�����$
8��
8�t�C�y�
8�D��I�
8�RX�
8�
8�
8�
8�
8�
8r