Team Ai
Apppublic

Adamfan/objectdetection

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

20e:h^$��z�ddlmZddlmZddlZddlZddlm	Z	d�Z3dd	�Zdd4�ZGd�d��Z
dd�Zdd�ZdS)�)�PathN�)�generalc�R�gd�}|dd�dd�f|z�d��S)N)�rg�������?g�������?�r)�sum)�x�ws  �B/content/drive/MyDrive/demo_yolov7_torch26/yolov7/utils/metrics.py�fitnessr
s5�����A�
�a�a�a��!��e�H�q�L���a� � � �F�.�c	�V�tj|��}||||||}}}tj|��}	|	jd}5tjddd��g}}tj|6|jdf��tj|7df��tj|8df��}}}
t
|	��D�]e\}}||k}||k���}|���}|dks|dkr�Ed||z9�d��}||�d��}||dzz}tj	||||dd�dfd���||<|||zz}tj	||||dd�dfd���||<t|jd��D]b}t|dd�|f|dd�|f|���\|
||f<}}|r/|dkr)|�tj	|||�����c��gd|z|z||zdzz}|r�t|||
t|��d	z|��t||t|��d10z|d���t||t|��d
z|d���t||t|��dz|d���|�d�����}|dd�|f|dd�|f|
|dd�|f|	�d��fS)a Compute the average precision, given the recall and precision curves.11    Source: https://github.com/rafaelpadilla/Object-Detection-Metrics.12    # Arguments13        tp:  True positives (nparray, nx1 or nx10).14        conf:  Objectness value from 0-1 (nparray).15        pred_cls:  Predicted object classes (nparray).16        target_cls:  True object classes (nparray).17        plot:  Plot precision-recall curve at mAP@0.518        save_dir:  Plot save directory19    # Returns20        The average precision as computed in py-faster-rcnn.21    rri�g��ؗ�Ҝ<N)�left)�	v5_metric�zPR_curve.pngzF1_curve.png�F1)�ylabelzP_curve.png�	PrecisionzR_curve.png�Recall�int32)�np�argsort�unique�shape�linspace�zeros�	enumerater	�cumsum�interp�range�22compute_ap�append�
plot_pr_curver�
plot_mc_curve�mean�argmax�astype)�tp�conf�pred_cls�23target_clsr�plot�save_dir�names�i�unique_classes�nc�px�py�ap�p�r�ci�c�n_l�n_p�fpc�tpc�recall�	precision�j�mpre�mrec�f1s                            r�ap_per_classrFsO��	�24�D�5���A��A���Q���!��h��B��Y�z�*�*�N�	�	�a�	 �B��[��A�t�
$�
$�b��B��x��R�X�a�[�)�*�*�B�H�b�$�Z�,@�,@�"�(�B�PT�:�BV�BV�1��B��>�*�*�9�9���A���M���Q��#�#�%�%���e�e�g�g���!�8�8�s�a�x�x���r�!�u�9�$�$�Q�'�'�C��Q�%�,�,�q�/�/�C��C�%�K�(�F��I�r�c�D��G�8�V�A�A�A�q�D�\��B�B�B�A�b�E��s�S�y�)�I��I�r�c�D��G�8�Y�q�q�q�!�t�_�1�E�E�E�A�b�E��2�8�A�;�'�'�
9�
9��(2�6�!�!�!�Q�$�<��1�1�1�a�4��\e�(f�(f�(f�%��2�q�5�	�4���9�A��F�F��I�I�b�i��D�$�7�7�8�8�8��
9�25�Q����a�!�e�e�m�	$�B��U��b�"�b�$�x�.�.�>�"A�5�I�I�I��b�"�d�8�n�n�~�=�u�T�R�R�R�R��b�!�T�(�^�^�m�;�U�;�W�W�W�W��b�!�T�(�^�^�m�;�U�8�T�T�T�T�26����27�28�����A��Q�Q�Q��T�7�A�a�a�a��d�G�R��A�A�A�q�D��>�+@�+@��+I�+I�I�Irc��|rtjdg|dgf��}n"tjdg||ddzgf��}tjdg|dgf��}tjtj�tj|������}d}|dkr@tjddd��}tjtj|||��|��}n`tj|dd	�|d	d�k��d}tj	||dz||z29||dzz��}|||fS)30aL Compute the average precision, given the recall and precision curves31    # Arguments32        recall:    The recall curve (list)33        precision: The precision curve (list)34        v5_metric: Assume maximum recall to be 1.0, as in YOLOv5, MMDetetion etc.35    # Returns36        Average precision, precision curve, recall curve37    r��?�����g{�G�z�?r"rr�eN)38r�concatenate�flip�maximum�39accumulater�trapzr"�wherer	)	r@rArrDrC�methodr40r7r2s	         rr$r$Qs8���C��~��t�V�c�U�3�4�4����~��t�V�f�R�j�4�.?�-@�A�B�B��
�>�B�4��R�D�1�2�2�D��7�2�:�(�(������7�7�8�8�D��F�
�����K��1�c�"�"��
�X�b�i��4��.�.��
2�
2����H�T�!�"�"�X��c�r�c��*�+�+�A�.��
�V�T�!�a�%�[�4��7�*�d�1�q�5�k�9�
:�
:��
�t�T�>�rc�0�eZdZdd�Zd�Zd�Zdd�Zd	�Zd41S)
�ConfusionMatrix��?��������?c�r�tj|dz|dzf��|_||_||_||_dS)Nr)rr�matrixr4r,�	iou_thres)�selfr4r,rXs    r�__init__zConfusionMatrix.__init__ss9���h��Q���Q��/�0�0��������	�"����rc��||dd�df|jk}|dd�df���}|dd�df���}tj|dd�dd�f|dd�dd�f��}t	j||jk��}|djd�r6t	jt	j	|d��||d|dfdd�dffd���42�����}|djddkr�||dd�df���ddd�}|tj|dd�dfd�	��d}||dd�df���ddd�}|tj|dd�dfd�	��d}ntjd43��}|jddk}|����tj��\}	}44}t'|��D]`\}}
|	|k}|r7t)|��dkr$|j|
||45|fxxdz
cc<�D|j|j|
fxxdz
cc<�a|rDt'|��D]6\}}t/|46|k��s|j||jfxxdz
cc<�5dSdS)ai47        Return intersection-over-union (Jaccard index) of boxes.48        Both sets of boxes are expected to be in (x1, y1, x2, y2) format.49        Arguments:50            detections (Array[N, 6]), x1, y1, x2, y2, conf, class51            labels (Array[M, 5]), class, x1, y1, x2, y252        Returns:53            None, updates confusion matrix accordingly54        Nrr�rrrIT)�return_index)r�)r,�intr�box_iou�torchrPrXr�cat�stack�cpu�numpyrrrr�	transposer*�int16r r	rWr4�any)rY�55detections�labels�56gt_classes�detection_classes�iour57�matches�n�m0�m1�_r2�gcrB�dcs                r�
process_batchzConfusionMatrix.process_batchys�� �58�1�1�1�a�4� 0�4�9� <�=�59��A�A�A�q�D�\�%�%�'�'�60�&�q�q�q�!�t�,�0�0�2�2���o�f�Q�Q�Q����U�m�Z����2�A�2��->�?�?���K��d�n�,�-�-���Q�4�:�a�=�	'��i���Q��!2�!2�C��!��a��d�61�O�A�A�A�t�G�4L� M�q�Q�Q�U�U�W�W�]�]�_�_�G���t�z�!�}�q� � �!�'�!�!�!�Q�$�-�"7�"7�"9�"9�$�$�B�$�"?�@��!�"�)�G�A�A�A�q�D�M��"M�"M�"M�a�"P�Q��!�'�!�!�!�Q�$�-�"7�"7�"9�"9�$�$�B�$�"?�@��!�"�)�G�A�A�A�q�D�M��"M�"M�"M�a�"P�Q����h�v�&�&�G��M�!��q� ���%�%�'�'�.�.�r�x�8�8�	��B���z�*�*�	.�	.�E�A�r��a��A��
.�S��V�V�q�[�[���B� 1�"�Q�%� 8�8�9�9�9�Q�>�9�9�9�9���D�G�R�K�(�(�(�A�-�(�(�(�(��	2�"�#4�5�5�
2�
2���2��2��7�|�|�2��K��D�G��,�,�,��1�,�,�,��	2�	2�
2�
2rc��|jS)N)rW)rYs rrWzConfusionMatrix.matrix�s62���{�r�rc�(�	ddl}|j|j�d���d|jdz��dzz}t63j||dk<tjdd���}|�	|jdkrd	nd64���dt|��cxkodkncot|��|jk}|�||jd
kddiddd|r|dgznd|r|dgznd����d��|j
d�d��|j
d�d��|�t#|��dzd���dS#t$$r}Yd}~dSd}~wwxYw)Nrrg�����ư>g{�G�zt?)��	T��figsize�tight_layout�2rHg�������?)�65font_scale�c��size��Blues�.2fz
background FP�autoz
background FN)�annot�	annot_kws�cmap�fmt�square�xticklabels�yticklabels)rrr�True�	Predictedzconfusion_matrix.png����dpi)�seabornrWr	�reshaper4r�nan�plt�figure�set�len�heatmap�
set_facecolor�axes�66set_xlabel�67set_ylabel�savefigr�	Exception)rYr0r1�sn�array�figrj�es        rr/zConfusionMatrix.plot�s���	� � � � ��K�4�;�?�?�1�#5�#5�#=�#=�a���1��#M�#M�PT�#T�U�E�#%�6�E�%�%�-� ��*�W�4�@�@�@�C��F�F�T�W�r�\�\�c�c�s�F�;�;�;��#�e�*�*�)�)�)�)�r�)�)�)�)�D�s�5�z�z�T�W�/D�F��J�J�u�D�G�b�L�V�Q�K�g�[`�im�@F�#R�5�O�+<�#<�#<�F�@F�#R�5�O�+<�#<�#<�F�
�
T�
T�Ta�Ta�bk�Tl�Tl�Tl��H�Q�K�"�"�6�*�*�*��H�Q�K�"�"�;�/�/�/��K�K��X���)?�?�S�K�I�I�I�I�I���	�	�	��D�D�D�D�D�����	���s�E8E<�<68F�Fc69��t|jdz��D]B}td�t	t70|j|�������CdS)Nr� )r#r4�print�join�map�strrW)rYr2s  rr�zConfusionMatrix.print�sV���t�w��{�#�#�	6�	6�A��#�(�(�3�s�D�K��N�3�3�4�4�5�5�5�5�	6�	6rN)rTrU)rwr)�__name__�71__module__�__qualname__rZrurWr/r�rrrrSrSqsj������#�#�#�#�&2�&2�&2�P�������&6�6�6�6�6rrS�pr_curve.pngc��tjdddd���\}}tj|d���}dt	|��cxkrdkrKnnHt|j��D]2\}}|�||d||�d||dfd	���72���3n|�||dd���|�||�d��d
dd|dd�df���z���|�	d��|�73d��|�dd��|�dd��tj
dd���|�t|��d���dS)Nr�rz�Tr{)�axisr�r��.3f��	linewidth�label�grey�r��colorr^�bluezall classes %.3f mAP@0.5�r�r�r�rr�g�p=74ף�?r�75upper left��bbox_to_anchor�locr�r�)r��subplotsrrcr�r �Tr/r(r�r��set_xlim�set_ylim�legendr�r)	r5r6r7r0r1r��axr2�ys	         rr&r&�s����l�1�a��d�C�C�C�G�C��	��"�1�	�	�	�B��3�u�:�:������������b�d�O�O�	L�	L�D�A�q��G�G�B��Q��q��.J�.J�B�q�!�t�H�.J�.J�.J�G�K�K�K�K�	L�	����B�!�6��2�2�2��G�G�B�����76�77�a�v�=W�Z\�]^�]^�]^�`a�]a�Zb�Zg�Zg�Zi�Zi�=i�G�j�j�j��M�M�(�����M�M�+�����K�K��1�����K�K��1�����J�i�\�:�:�:�:��K�K��X���C�K�(�(�(�(�(r�mc_curve.png�78Confidence�Metricc��tjdddd���\}}dt|��cxkrdkr9nn6t|��D]%\}}	|�||	d||�����&n|�||jdd�	��|�d��}	|�||	d79dd|	���d
�d||	���d�����|�	|��|�80|��|�dd��|�dd��tj
dd���|�t|��d���dS)Nrr�Tr{rr�r�r�r�r^r�zall classes r�z at r�r�r�r�r�r�r�)r�r�r�r r/r�r(�maxr)r�r�r�r�r�r�r)81r5r6r0r1�xlabelrr�r�r2r�s82          rr'r'�s����l�1�a��d�C�C�C�G�C���3�u�:�:������������b�M�M�	=�	=�D�A�q��G�G�B��Q��q��m�G�<�<�<�<�	=�	����B�D�A�V��4�4�4�83����84�85�A��G�G�B��Q�f�4h�1�5�5�7�7�4h�4h�4h�TV�WX�W_�W_�Wa�Wa�Tb�4h�4h�4h�G�i�i�i��M�M�&�����M�M�&�����K�K��1�����K�K��1�����J�i�\�:�:�:�:��K�K��X���C�K�(�(�(�(�(r)FFrr)F)r�r)r�rr�r�)�pathlibr�matplotlib.pyplot�pyplotr�rerrarwrr
rFr$rSr&r'rrr�<module>r�s�����������������������������!�!�!�<J�<J�<J�<J�~����@H6�H6�H6�H6�H6�H6�H6�H6�Z)�)�)�)�()�)�)�)�)�)r