Team Ai
Apppublic

Adamfan/objectdetection

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

20e:hk<��8�ddlZddlZddlZddlZddlZddlZddlZddlmZddl	m3Z4ddlmZddl
Z
ddlmcmZddlmZddlmcmZddlZ	ddlZn
#e$rdZYnwxYweje��Zedefd���Zd)d�Zefd�Z ee��j!fd	�Z"d*d�Z#d�Z$d+d�Z%d�Z&d,d�Z'd�Z(ej)fd�Z*d�Z+d-d�Z,d�Z-d.d�Z.d/d�Z/d0d �Z0d1d!�Z1Gd"�d#��Z2Gd$�d%e
jj3j4j5��Z6d&�Z7Gd'�d(ej8��Z9dS)2�N)�contextmanager)�deepcopy)�Path�5local_rankc#�K�|dvrtj���dV�|dkr tj���dSdS)zm6    Decorator to make all processes in distributed training wait for each local_master to do something.7    )�����rNr)�torch�distributed�barrier)rs �F/content/drive/MyDrive/demo_yolov7_torch26/yolov7/utils/torch_utils.py�torch_distributed_zero_firstr
s\����8�� � �
��!�!�#�#�#�	�E�E�E��Q���
��!�!�#�#�#�#�#���c��tj|��|dkrd\t_t_dSd\t_t_dS)Nr)FT)TF)r	�manual_seed�cudnn�	benchmark�
deterministic)�seeds r�init_torch_seedsr'sF��	��d�����q�y�y�/:�,����,�,�,�/:�,����,�,�,rc��tj�t|�����j��}|j�d|j�d|j��S)N�-)�datetime�
fromtimestampr�stat�st_mtime�year�month�day)�path�ts  r�
date_modifiedr!0sM����'�'��T�9�10���(9�(9�(B�C�C�A��f�(�(�q�w�(�(���(�(�(rc���d|�d�}	tj|dtj������dd�S#tj$r}Yd}~dSd}~wwxYw)Nzgit -C z  describe --tags --long --alwaysT)�shell�stderrr�)�11subprocess�check_output�STDOUT�decode�CalledProcessError)r�s�es   r�git_describer-6sy��8�$�8�8�8�A���&�q��Z�=N�O�O�O�V�V�X�X�Y\�Z\�Y\�]�]���(�����r�r�r�r�r��������s�:A�A�Ar%c12���dt��p
t���dtj�d�}|���dk}|rdt13jd<n=|r;|t14jd<tj���sJd|�d����|otj���}|r�tj�	��}|d	kr|r||zd15ksJd|�d|�����dt|��z}t|r|�d
��nt|����D]J\}}tj�|��}	||d16krdn|�d|�d|	j�d|	jdz�d�z
}�Kn|dz
}t"�t'j��dkr(|����dd��n|��tj|rdnd��S)NuYOLOR 🚀 z torch � �cpuz-1�CUDA_VISIBLE_DEVICESz!CUDA unavailable, invalid device z17 requested�rzbatch-size z not multiple of GPU count �,r%zCUDA:z (z, izMB)18zCPU19�Windows�ascii�ignore�cuda:0)r-r!r	�__version__�lower�os�environ�cuda�is_available�device_count�len�	enumerate�split�range�get_device_properties�name�total_memory�logger�info�platform�system�encoder)�device)20rK�21batch_sizer+r0r<�n�space�i�d�ps22          r�
select_devicerR?s��T�l�n�n�7�
���T�T��@Q�T�T�T�A�23�,�,�.�.�E�24!�C�25�a�-1��26�)�*�*�	�a�-3��27�)�*��z�&�&�(�(�`�`�*`�f�*`�*`�*`�`�`�(��7�0�u�z�.�.�0�0�D��	��J�#�#�%�%���q�5�5�Z�5���>�Q�&�&�&�(`�j�(`�(`�]^�(`�(`�&�&�&��c�!�f�f����6�G�f�l�l�3�/�/�/�u�Q�x�x�H�H�	c�	c�D�A�q��28�0�0��3�3�A�
�!�q�&�&�B�B�e�b�b�!�b�b�q�v�b�b���R[�A[�b�b�b�b�A�A�	c�	29�W���30�K�K���8I�8I�Y�8V�8V����31�32�!�!�'�8�4�4�4�\]�^�^�^��<�D�3���e�4�4�4rc��tj���rtj���t	j��S�N)r	r<r=�synchronize�time�rr�time_synchronizedrXYs8���z��� � �!�
�33��� � � ��9�;�;�r�dc��|p3tjtj���rdnd��}|�|��}d|_t
tj|j|jdkrtj�	d��nd��t
ddd	�d34d	�dd�d
d�dd�dd����t|t��r|n|gD�]h}t|d��r|�|��n|}t|d��rAt|tj
��r'|jtjur|���n|}ddgd�}}}	t#j||fd���ddzdz}n	#d}YnxYwt'|��D]�}	t)��|d<||��}35t)��|d<	|36������}	t)��|d<n#t/d��|d<YnxYw||d|dz37dz|zz
}||d|dz38dz|zz
}��t|tj
��rt1|j��nd}t|39tj
��rt1|40j��nd}t|t4j��r8t+td�|���D������nd}
t
|
d�|d�|d �|d �t;|��d�t;|��d������jdS)!Nr7r0Tr<rr%�41�Paramsz>12s�GFLOPSzforward (ms)z>16sz
backward (ms)�inputz>24s�output�to�half�)rbrbrbF��inputs�verbose�e��A�r2�nani��listc3�>K�|]}|���V��dSrT��numel��.0�xs  r�	<genexpr>zprofile.<locals>.<genexpr>�s*����7�7�1�Q�W�W�Y�Y�7�7�7�7�7�7r�12z12.4gz16.4g)r	rKr<r=r`�
requires_grad�printr8�typerC�42isinstanceri�hasattr�Tensor�dtype�float16ra�thop�profilerBrX�sum�backward�float�tuple�shape�nn�Module�43parameters�str)ro�opsrMrK�m�dtf�dtbr �flops�_�y�s_in�s_outrQs              rr{r{`sN���
U�u�|��44�0G�0G�0I�0I�$T�H�H�u�U�U�F�	���V���A��A�O�	�%�45�V�[�QW�Q\�`f�Qf�Qf�%�*�*J�*J�1�*M�*M�*M�ln�o�o�o�	�46u�x�47u�48u�h�49u�50u�^�51u�52u�/�53u�54u�X_�55u�56u�fn�57u�58u�59u�v�v�v��s�D�)�)�
4�S�S��u�]�]��#�A�t�,�,�3�A�D�D��L�L�L�!����6�*�*�n�z�!�U�\�/J�/J�n�q�w�Z_�Zg�Og�Og�A�F�F�H�H�H�mn���"�l�l�l�!�S��	��L��A�4��?�?�?��B�S�H�1�L�E�E��	��E�E�E�����q���60	,�61	,�A�$�&�&�A�a�D���!���A�$�&�&�A�a�D�
$��E�E�G�G�$�$�&�&��(�*�*��!����
$��U�|�|��!��������A�a�D�1�Q�4�K�4�'�!�+�+�C��A�a�D�1�Q�4�K�4�'�!�+�+�C�C�!+�A�u�|�!<�!<�H�u�Q�W�~�~�~�&��",�Q���"=�"=�I��a�g����6��<F�q�"�)�<T�<T�[�C��7�7������7�7�7�7�7�8�8�8�Z[��
��[�[�u�[�[�C�[�[�s�[�[�#�d�)�)�[�[�#�e�*�*�[�[�[�\�\�\�\�1]�]s�$F�F62�7H�Hc�d�t|��tjjtjjfvSrT)rtr��parallel�DataParallel�DistributedDataParallel)�models r�is_parallelr��s"����;�;�2�;�3�R�[�5X�Y�Y�YrrWc�H�����fd�|���D��S)Nc����i|]=\�}��v�	t�fd��D�����$|j��jk�:�|��>S)c3� �K�|]}|�vV��	dSrTrW)rnro�ks  �rrpz-intersect_dicts.<locals>.<dictcomp>.<genexpr>�s'�����>W�>W�!�q�A�v�>W�>W�>W�>W�>W�>Wr)�anyr�)rn�vr��db�excludes  @��r�63<dictcomp>z#intersect_dicts.<locals>.<dictcomp>�sa����s�s�s�T�Q��1��7�7�3�>W�>W�>W�>W�w�>W�>W�>W�;W�;W�7�\]�\c�gi�jk�gl�gr�\r�\r�A�q�\r�\r�\rr)�items)�dar�r�s ``r�intersect_dictsr��s)����s�s�s�s�s�R�X�X�Z�Z�s�s�s�src��|���D]t}t|��}|tjur� |tjurd|_d|_�=|tjtjtj	tj64fvrd|_�udS)Ng����MbP?g���Q��?T)�modulesrtr��Conv2d�BatchNorm2d�eps�momentum�	Hardswish�	LeakyReLU�ReLU�ReLU6�inplace)r�r�r s   r�initialize_weightsr��s}��
�]�]�_�_������G�G����	�>�>��
�"�.�
 �
 ��A�E��A�J�J�
�2�<���r�w���A�
A�
A��A�I���rc�D���fd�t|j��D��S)Nc�:��g|]\}}t|����|��SrW)ru)rnrOr��mclasss   �r�65<listcomp>z find_modules.<locals>.<listcomp>�s,���P�P�P�$�!�Q�*�Q��:O�:O�P�A�P�P�Pr)r@�module_list)r�r�s `r�find_modulesr��s(���P�P�P�P�)�E�$5�6�6�P�P�P�Prc��d\}}|���D]4}||���z
}||dk���z
}�5||zS)N)rbrbr)r�rlr|)r��a�brQs    r�sparsityr��sX���D�A�q�
�
�
�
�
����	�Q�W�W�Y�Y���	�a�1�f�\�\�^�^�����q�5�Lr�333333�?c�B�ddlmcmcm}t	dd���|���D]M\}}t
|tj��r.|�|d|���|�	|d���Nt	dt|��z��dS)NrzPruning model... r%)�end�weight)rD�amountz %.3g global sparsity)�torch.nn.utils.pruner��utils�pruners�
named_modulesrur��l1_unstructured�remover�)r�r�r�rDr�s     rr�r��s���(�(�(�(�(�(�(�(�(�(�(�(�	�66�2�&�&�&�&��&�&�(�(�&�&���a��a���#�#�	&��!�!�!�(�6�!�B�B�B��L�L��H�%�%�%��	�67!�H�U�O�O�683�4�4�4�4�4rc	�R�tj|j|j|j|j|j|jd����d���	|j69j��}|j70����
|jd��}tj|j71�tj|j|jz������}|j72�tj||���
|j73j����|j�8tj|j74�d��|j75j���n|j}|j|j76�|j���tj|j|jz����z77}|j�tj||�dd�����d��|z��|S)NT)�kernel_size�stride�padding�groups�biasFrr�rKr2)r�r��in_channels�out_channelsr�r�r�r��requires_grad_r`r�rK�clone�viewr	�diag�div�sqrtr��running_var�copy_�mmr�r��zeros�size�mul�running_mean�reshape)�conv�bn�	fusedconv�w_conv�w_bn�b_conv�b_bns       r�fuse_conv_and_bnr��s����	�$�*��+�&*�&6�!%��"&�,�!%��#�
%�%�%�&4�^�E�%:�%:�2�2�d�k�>P�;Q�;Q�
��[�
�
�
 �
 �
%�
%�d�&7��
<�
<�F��:�b�i�m�m�E�J�r�v���/F�$G�$G�H�H�I�I�D�
����5�8�D�&�1�1�6�6�y�7G�7M�N�N�O�O�O�MQ�I�L]�U�[���)�)�!�,�,�T�[�5G�
H�
H�
H�
H�cg�cl�F�
�7�R�Y�]�]�2�?�3�3�7�7��78�2�>�TV�TZ�CZ�8[�8[�\�\�\�D�
�N�����$����r�1�(=�(=�>�>�F�F�r�J�J�T�Q�R�R�R��rF�c��td�|���D����}td�|���D����}|r�tddz��t|�����D]�\}\}}|�dd��}td|||j|���t|j	��|�79��|���fz����	dd	lm
}t|d80��r4tt!|j�����d��nd}	t%jd|j�d
d��|	|	ft-|�����j���}81|t1|��|82fd���ddzdz}t3|t��r|n||g}d||dz|	z|dz|	zz}n#t4t6f$rd}YnwxYwt8�dt=t|��������d|�d|�d|����dS)Nc3�>K�|]}|���V��dSrTrkrms  rrpzmodel_info.<locals>.<genexpr>�s*����
4�
4�A�a�g�g�i�i�
4�
4�
4�
4�
4�
4rc3�LK�|]}|j�	|���V�� dSrT)rrrlrms  rrpzmodel_info.<locals>.<genexpr>�s1����
G�
G�A�q��
G�a�g�g�i�i�
G�
G�
G�
G�
G�
Grz %5s %40s %9s %12s %20s %10s %10s)�layerrD�gradientr�r��mu�sigmazmodule_list.r%z$%5g %40s %9s %12g %20s %10.3g %10.3gr)r{r�� r2�ch�r�Frcrfrgz
, %.1f GFLOPSzModel Summary: z	 layers, z
 parameters, z83 gradients) r|r�rsr@�named_parameters�replacerrrlrir��mean�stdrzr{rv�max�intr�r	r��yaml�get�nextrKrru�ImportError�	ExceptionrFrGr?r�)
r�re�img_size�n_p�n_grOrDrQr{r��imgr��fss
             r�84model_infor��s���85
�
4�
4��!1�!1�!3�!3�
4�
4�
4�864�874�C�88
�
G�
G��!1�!1�!3�!3�
G�
G�
G�89G�90G�C��[�
�0�3v�v�w�w�w�%�e�&<�&<�&>�&>�?�?�	[�	[�L�A�y��a��<�<���3�3�D��8��d�A�O�Q�W�W�Y�Y��Q�W�
�
�q�v�v�x�x�QR�QV�QV�QX�QX�Y�Z�
[�
[�
[�
[�� � � � � � �5<�U�H�5M�5M�U��S���)�)�+�+�,�,�b�1�1�1�SU���k�1�e�j�n�n�T�1�5�5�v�v�F�t�TY�Td�Td�Tf�Tf�Og�Og�On�o�o�o�����������F�F�F�q�I�C�O�RS�S��)�(�D�9�9�S�8�8��(�?S��
����� 3�f� <�x��{� J�V� S�
T������#����
���������K�K�l�#�d�5�=�=�?�?�&;�&;�"<�"<�l�l�s�l�l�Y\�l�l�hj�l�l�m�m�m�m�ms�DH�H,�+H,�	resnet101rgc�V�tjj|d���}|jjjd}t
jtj	|��d���|j_91t
jtj	||��d���|j_||j_|S)NT)�92pretrainedr2)rr)�torchvision�models�__dict__�fcr�r�r��	Parameterr	r�r��out_features)rDrMr��filterss    r�load_classifierr�s�����'��-��>�>�>�E��h�o�#�A�&�G��L���Q���t�D�D�D�E�H�M��l�5�;�q�'�#:�#:�$�O�O�O�E�H�O��E�H���Lr��?r�c	�8����dkr|S|jdd�\}}t|�z��t|�z��f}tj||dd���}|s��fd�||fD��\}}tj|d||dz93d||dz94gd	�95��S)Nrrg�bilinearF)r��mode�
align_cornersc�J��g|]}tj|�z�z���z�� SrW)�math�ceil)rnro�gs�ratios  ��rr�zscale_img.<locals>.<listcomp>s0���C�C�C�q�D�I�a�%�i�"�n�-�-��2�C�C�Crrr2g��S㥛�?)�value)r�r��F�interpolate�pad)r�r�96same_shaper�h�wr+s ` `   r�	scale_imgr�s�������|�|��97��y����}���1�
��U��^�^�S��U��^�^�,���m�C�a�j��N�N�N���	D�C�C�C�C�C�Q��F�C�C�C�D�A�q��u�S�1�a�!�A�$�h��1�q��t�8�4�E�B�B�B�Brc���|j���D]C\}}t|��r||vs|�d��s||vr�2t	|||���DdS)Nr�)rr�r?�98startswith�setattr)r�r��includer�r�r�s      r�	copy_attrrsv���99� � �"�"�����1���L�L�	�Q�g�-�-�!�,�,�s�2C�2C�-�q�G�|�|���A�q�!�����	�rc�(�eZdZdZd100d�Zd�Zdd�Zd	S)�ModelEMAa  Model Exponential Moving Average from https://github.com/rwightman/pytorch-image-models101    Keep a moving average of everything in the model state_dict (parameters and buffers).102    This is intended to allow functionality like103    https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage104    A smoothed version of the weights is necessary for some training schemes to perform well.105    This class is sensitive where it is initialized in the sequence of model init,106    GPU assignment and distributed training wrappers.107    ���H.��?rc���tt|��r|jn|�����|_||_�fd�|_|j���D]}|�d���dS)Nc�@���dtj|dz��z108zS)Nr2i�)r
�exp)ro�decays �r�<lambda>z#ModelEMA.__init__.<locals>.<lambda>s!���u��D�H�a�R�$�Y�,?�,?�(?�@�rF)	rr��module�eval�ema�updatesr$r�r�)�selfr�r$r)rQs  `  r�__init__zModelEMA.__init__s�����K��,>�,>�I�E�L�L�E�J�J�O�O�Q�Q������@�@�@�@��109���$�$�&�&�	$�	$�A�
���U�#�#�#�#�	$�	$rc���tj��5|xjdz
c_|�|j��}t	|��r|j���n|���}|j������D]9\}}|j	j110r(||z}|d|z111||���zz
}�:	ddd��dS#1swxYwYdS)Nr2r)r	�no_gradr)r$r�r&�112state_dictr(r�rx�is_floating_point�detach)r*r�rP�msdr�r�s      r�updatezModelEMA.update!s.��
�]�_�_�	4�	4��L�L�A��L�L��113�114�4�<�(�(�A�/:�5�/A�/A�Y�%�,�)�)�+�+�+�u�GW�GW�GY�GY�C���+�+�-�-�3�3�5�5�
4�
4���1��7�,�4���F�A��"�q�&�C��F�M�M�O�O�3�3�A��
4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�CC.�.C2�5C2rW��
process_group�reducerc�4�t|j|||��dSrT)rr()r*r�rr�s    r�update_attrzModelEMA.update_attr-s���$�(�E�7�G�4�4�4�4�4rN)r r)rWr3)�__name__�115__module__�__qualname__�__doc__r+r2r7rWrrrr
sU��������$�$�$�$�1164�1174�1184�5�5�5�5�5�5rrc��eZdZd�ZdS)�BatchNormXdc��dSrTrW)r*r^s  r�_check_input_dimzBatchNormXd._check_input_dim3s	��	�rN)r8r9r:r?rWrrr=r=2s#������	�	�	�	�	rr=c�R�|}t|tjjjj��r�t}t
|j|j|j	|j119|j��}|j120rCtj��5|j
|_
|j|_ddd��n#1swxYwY|j|_|j|_|j|_t%|d��r|j|_|���D](\}}|�|t-|�����)~|S)N�qconfig)rur	r�r��	batchnorm�
SyncBatchNormr=�num_featuresr�r��affine�track_running_statsr-r�r�r�r��num_batches_trackedrvrA�named_children�121add_module�revert_sync_batchnorm)r&�
module_output�new_clsrD�childs     rrJrJ>sa���M��&�%�(�*�4�B�C�C�3���#�F�$7�/5�z�6�?�/5�}�/5�/I�K�K�
��=�	1�����
1�
1�'-�}�
�$�%+�[�
�"�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1�&,�%8�
�"�$*�$6�
�!�,2�,F�
�)��6�9�%�%�	3�$*�N�M�!��,�,�.�.�E�E���e�� � ��'<�U�'C�'C�D�D�D�D���s�9B�B"�%B"c�(��eZdZd�fd�	Zdd�Z�xZS)�TracedModelN�r�r�c����tt|�����td��|j|_|j|_||_t|j��|_|j�d��|j�	��|jjd|_122d|j_tj
dd||��}tj�|j|d���}|�d	��td123��||_|j�|��|j124�|��td��dS)Nz" Convert model to Traced-model... r0rTr2r�F)�strictztraced_model.ptz traced_script_module saved! z model is traced! 125)�superrOr+rsr��namesr�rJr`r'�detect_layer�tracedr	�rand�jit�trace�save)r*r�rKr��rand_example�traced_script_module�	__class__s      �rr+zTracedModel.__init__Ys7���
�k�4� � �)�)�+�+�+�
�2�3�3�3��l����[��126���127�*�4�:�6�6��128��129�
�
�e�����130������ �J�,�R�0��� ��131���z�!�Q��(�;�;��$�y���t�z�<�PU��V�V���!�!�"3�4�4�4�
�-�.�.�.�)��132��133�
�
�f��������V�$�$�$�
�$�%�%�%�%�%rFc�Z�|�|��}|�|��}|SrT)r�rU)r*ro�augmentr{�outs     r�forwardzTracedModel.forwardss)���j�j��m�m������$�$���134r)NNrP)FF)r8r9r:r+ra�
__classcell__)r]s@rrOrOWsQ�������&�&�&�&�&�&�4�������rrO)r)r%N)rYN)rW)r�)Fr�)r�rg)rFr�)rWrW):r�loggingr
r:rHr&rV�135contextlibr�copyr�pathlibrr	�torch.backends.cudnn�backendsr�torch.nnr��torch.nn.functional�136functionalrr�rzr��	getLoggerr8rFr�r
r�__file__r!�parentr-rRrXr{r�r�r�r�r�r�r�r�r�rrrrr�rB�137_BatchNormr=rJr�rOrWrr�<module>rps[��������������	�	�	�	�������������%�%�%�%�%�%�����������������$�$�$�$�$�$�$�$�$����������������������K�K�K�K�������D�D�D�����	��	�8�	$�	$���$�S�$�$�$���$�;�;�;�;� �)�)�)�)��d�8�n�n�+�����5�5�5�5�4���$]�$]�$]�$]�NZ�Z�Z�t�t�t�t�138	�	�	� "�y�Q�Q�Q�Q�139���5�5�5�5����.n�n�n�n�0����&140C�141C�142C�143C�����"5�"5�"5�"5�"5�"5�"5�"5�J144�145�146�147�148�%�(�"�,�7�149�150�151����2�����"�)�����s�A�A�A