Team Ai
Apppublic

VJyzCELERY/ObjectClassificationPlayground

sourceHugging Facemitupdated 10mo agoView on Hugging Face
0likes
trainer.cpython-312.pyc112 linesDownload Raw Back to __pycache__
1�

2Q6Di3.����ddlmZddlmZmZddlmZddlmZddl	m3cmZddl
m
Z
ddlmZddlZddlZddlZddlm4Z5ddlZddlmZmZmZmZddlmZd�Zdd	�ZGd6�d�Z y)
�)�7Classifier)�ImageDataset�8collate_fn)�9DataLoaderN)�tqdm)�confusion_matrix�classification_report�	roc_curve�auc)�label_binarizec��tj�dz}tjj	|�tj|�y)Nl)�torch�initial_seed�np�random�seed)�	worker_id�worker_seeds  �SD:\Backups\Code\Python\Computer-Vision\LEC\ClassicalObjectClassifier\src\trainer.py�seed_workerrs1���$�$�&��.�K��I�I�N�N�;��10�K�K���c�v11�|j�g}g}g}t||d|��}	tj�5|	D�]\}12}|13jdk(r%|14j15ddvr|16j
dddd	�}17|18j|�}19|j|�}||20�}tj|d�21�}
tj|
d�22�}|j|j�j��|j|
j�j��|j|j�j����	ddd�tj|�}tj|�}tj|�}|j23d}|�t|�D�cgc]}d|����	}}t!||�}t#j$d�
�\}}|j'|�}|j)d�|j+d�|j-d�|j/t|��|j1t|��|j3|d��|j5|�t|�D]-}t|�D]}|j7|||||fdd����/t#j8�t;|||d��}t#j$d�
�\}}|j=d�g}gd�}|D]8}||}|j||dd�|dd�|dd�t?|d�g��:|d}|d } |d!}!|jd"|d�d#d#d#g�|jd$| dd�| dd�| dd�d| vrt?| d��nd#g�|jd%|!dd�|!dd�|!dd�d|!vrt?|!d��nd#g�|jA||d�&�}"|"jCdd	�|j)d'�tE|tGt|���(�}#t#j$d�
�\}$}t|�D]J}tI|#dd�|f|dd�|f�\}%}&}'tK|%|&�}(|jM|%|&||�d)|(d�d*��+��L|jMddgddgd,�-�|j+d.�|j-d/�|j)d0�|jO�|jQd�|||$fS#1swY���xYwcc}w)1NF)�24batch_size�shuffle�num_workers������)��rrr���dimzClass )�r#��figsizezConfusion Matrix�	Predicted�True�K)�rotation�center)�ha�vaT)�target_names�output_dict)���off)�Class�	Precision�Recall�F1�Support�	precisionz.3f�recallzf1-score�support�accuracyz	macro avgzweighted avg�Accuracy�z	Macro AvgzWeighted Avg)�cellText�	colLabels�loczClassification Report)�classesz (AUC=�))�labelz--)�	linestylezFalse Positive RatezTrue Positive Ratez
ROC-AUC Curve))�evalrr�no_grad�ndim�shape�permute�to�softmax�argmax�append�cpu�numpyr�concatenate�ranger�plt�subplots�imshow�	set_title�25set_xlabel�26set_ylabel�27set_xticks�28set_yticks�set_xticklabels�set_yticklabels�text�tight_layoutr	�axis�int�table�scaler�listr29r�plot�legend�grid))�model�val_set�devicerr�class_names�	all_preds�	all_probs�30all_labels�31val_loader�images�labels�logits�probs�preds�y_true�y_pred�y_prob�num_classes�i�cm�cm_fig�ax�im�j�report�cr_fig�32table_data�headers�cls�rowr:�	macro_avg�weighted_avgr_�33y_true_bin�roc_fig�fpr�tpr�_�roc_aucs)                                         r�model_evaluationr�s��	�J�J�L��I��I��J������	�J�34����(�N�F�F��{�{�a��F�L�L��$4��$>�����1�a��3���Y�Y�v�&�F��Y�Y�v�&�F��6�]�F��M�M�&�a�0�E��L�L��A�.�E����U�Y�Y�[�.�.�0�1����U�Y�Y�[�.�.�0�1����f�j�j�l�0�0�2�3�)�35��^�^�J�
'�F�
�^�^�I�
&�F�
�^�^�I�
&�F��,�,�q�/�K���-2�;�-?�@�-?����s�|�-?��@�	�&�&�	)�B����f�-�J�F�B�	���2��B��L�L�#�$��M�M�+���M�M�&���M�M�%��$�%��M�M�%��$�%����{�R��0����{�#�
�;�
���{�#�A��G�G�A�q�"�Q��T�(�x�H�G�=�$� �����
"��� ���F����g�.�J�F�B��G�G�E�N��J�?�G����S�k�������;���$��8�}�S�!��:��s�#���I���36�	���j�!�H��{�#�I��.�)�L������C�.�37�38�39��������[�!�#�40&��X��s�41#��Z� ��42%�*3�y�*@�3�y��#�$�43%�b���������$�S�44)���!�#�45&��46�#�C�47(�-6�,�-F�3�|�I�&�'�48(�B���
�H�H����
�
�E�49�K�K��1���L�L�(�)����U�;�5G�0H�I�J��,�,�v�.�K�G�R�
�;�
���50�1�a�4� 0�&��A��,�?���S�!��c�3�-��51����S�;�q�>�"2�&���
�Q� G��H� �52�G�G�Q��F�Q��F�d�G�+��M�M�'�(��M�M�&�'��L�L��!��I�I�K��G�G�D�M��6�7�"�"�k53���*As�D T)�T6�)T3c�@�eZdZd54dededefd�Zdd�Zd�Zdd�Zd
d	�Z	y)�ModelTrainerNre�	train_setrfc	��tj�}	|�|	j|�t||dtt55|	��|_||_|�t||dtt56��|_nd|_|j|_57||_||_tj|j�|d��|_
|jj!�t#j$�|_||_d|_d|_d|_y)NT)rr�worker_init_fn�	generatorF)rrr�g-C��6?)�lr�weight_decayg)r�	Generator�manual_seedrrr�train_loaderrgrlr@rhrer��optim�Adam�58parameters�	zero_grad�nn�CrossEntropyLoss�	criterion�59return_fig�best_model_state�best_val_acc�	interrupt)60�selfrer�rfrr�rgr�r�gs61          r�__init__zModelTrainer.__init__�s����O�O�����
�M�M�$��&����!�&��
62��������(����%�*��D�O�#�D�O� �=�=�����63�����Z�Z�� 0� 0� 2�r��M��64��65�66�����,�,�.���"��� $��������rc�R�|}t|t�rLtj|d��}t	j67|�j
dddd�j�}|j�j�}|j�j�}|j�j�}|jd}tjt|�t||��}	||	d}tj dt#|	�zdf��}68|69j%dt#|	��}t'|	�D]�\}}
|70j)|d|f�}|j+||
j-ddd��|rd	|||
�d71|||
��}nd	||
�d72||
��}|j/|�|j1d���|73j3�|j4j7|d�
�}g}|D]�}t|tj8�r|j;|��/t=|d�rtj>|�}|jdd\}}d}tAd||z�}tAd||z�}tj ||f|��}|j)d�}|j+|�|j1d�|j;|���|74g|z}|jBstjD�tjF|75�|jBr|Sy)Nr)r]rrr r#�r$zP: z | T: r1F)�show�mode�dr)r%�dpi�o)$�76isinstancerar�stackr�77from_numpyrH�floatrMrNrGr�samplerP�minrQ�figure�len�add_gridspec�	enumerate�add_subplotrS�	transposerTr]r\re�visualize_feature�FigurerL�hasattr�array�maxr�r��close)r��imgsrqrnrh�max_samples�first_image�imgs_npr�indices�fig_predrd�col�idxry�title�raw_features�feature_figs�f�h�wr��fig_w�fig_h�fig�all_figss                          r�visualize_batchzModelTrainer.visualize_batch�s������d�D�!��8�8�D�q�)�D��#�#�D�)�1�1�!�Q��1�=�C�C�E�D��(�(�*�"�"�$���	�	��!�!�#������#�#�%���]�]�1�%�78��-�-��j� 1�3�{�J�3O�P��!�'�!�*�-���:�:�q�3�w�<�'7��&;�<���$�$�Q��G��5��!�'�*�H�C���%�%�d�1�c�6�l�3�B��I�I�g�c�l�,�,�Q��1�5�6���k�%��*�5�6�f�[��PS��=U�<V�W���e�C�j�\���s��}�=���L�L����G�G�E�N�+�	�����z�z�3�3�K�U�3�K�����A��!�S�Z�Z�(��#�#�A�&���q�&�!��H�H�Q�K���7�7�2�A�;�D�A�q��C���1�s�7�O�E���1�s�7�O�E��*�*�e�U�^��=�C�����%�B��I�I�a�L��G�G�E�N�����$�#�(�:��,������H�H�J��	�	�(���?�?��O�rc���|jj�d}t|jdd��}d}d}|D�]\}}|jr�n|j|j�}|j|�}|j||�}	|jj�|	j�|jj�|jd��}79||80|k(j�j�z
}||jd�z
}||	j�z
}|j!||z|	j�����|t#|j�z}||z}||fS)Nr�TrainingF��desc�leaverr!)�acc�loss)re�trainrr�r�rIrgr�r�r��backward�steprK�sum�item�size�set_postfixr�)
r��epoch�81total_loss�82train_pbar�correct�totalr�rn�outputsr�rq�avg_loss�avg_accs
             r�train_one_epochzModelTrainer.train_one_epochsB���83�84�����85��$�+�+�*�5�I�86�����&�L�D�&��~�~���Y�Y�t�{�{�+�F��j�j��&�G��>�>�'�6�2�D�
�J�J� � �"��M�M�O��J�J�O�O���N�N�q�N�)�E�����,�,�.�3�3�5�5�G��V�[�[��^�#�E��$�)�)�+�%�J��"�"�w�u�}�$�)�)�+�"�F�#'�&��D�$5�$5� 6�6���E�/�����rc#��K�g}g}g}g}td|dz�D�]g}|j|�\}}	|jry|j|�|j|	�|j��|j|||zdk(xs|dk(��\}87}}|jry|j|88�|j|�t
d|�d|d�d|	d�d|89d�d	|d��90�||jkDrit
d91|�d|d�d��||_|jj�j�D�
�cic]\}
}|
|j���c}}
|_||	|92||f����It
d|�d|d�d|	d���||	dddf����j|j�?|jj|j�t
d
|jd�d��||||df��ycc}}
w�w)Nrr)�	visualizezEpoch z
 Train Loss: z.4fz | Train Acc : z | Val Loss : z
 | Val Acc : zNew best model found at epoch z (Val Acc: rAzBest model (Val Acc: z) loaded into trainer.model)rPr�r�rLrl�validate�printr�re�93state_dict�items�cloner��load_state_dict)r��epochs�visualize_every�train_losses�train_accuracies�94val_losses�val_accuraciesr��95train_loss�	train_acc�val_loss�val_accr��k�vs               rr�zModelTrainer.trains*���������96����1�f�q�j�)�E�#'�#7�#7��#>� �J�y��~�~�����97�+��#�#�I�.����*�%)�]�]�5�U�_�E\�`a�Ea�Eo�ej�no�eo�]�%q�$�����>�>���!�!�(�+��%�%�g�.���u�g�]�:�c�2B�/�R[�\_�Q`�`n�ow�x{�n|�}J�KR�SV�JW�X�Y��T�.�.�.��:�5�'��W�UX�M�YZ�[�\�(/�D�%�FJ�j�j�F[�F[�F]�Fc�Fc�Fe�,f�Fe�d�a��Q����	�\�Fe�,f�D�)� ��8�G�C�?�?���u�g�]�:�c�2B�/�R[�\_�Q`�a�b� ��4��T�9�9�+*�,� � �,��J�J�&�&�t�'<�'<�=��)�$�*;�*;�C�)@�@[�\�]��+�J�~�d�J�J��-g�s�D2G �4G�BG c�8�|j�y|jj�d}d}d}d}d}d}t|jdd��}	d}98t	j99�5|	D]�\}}|jrn�|j|j�}|j|�}
|j|
|�}||j�z
}|
jd��}|||k(j�j�z
}||jd�z
}|r|�|}|}|}|	j|j�||z����ddd�|t|j�z}||z}|r |�|j!||||j"�}100|||101fS#1swY�MxYw)Nr�102ValidationFr�rr!)r�r�)rlrerDrrrEr�rIrgr�r�rKr�r�r�r�r�rh)r�r�r�r�r�r��val_imgs_display�val_preds_display�val_labels_display�val_pbarr�r�rnr�r�rqr�r�s                  rr�zModelTrainer.validate=s����?�?�"���103�104�����105������� ��!������l��G����
�]�]�_� (���f��>�>�����4�;�;�/���*�*�T�*���~�~�g�v�6���d�i�i�k�)�106����1��-���E�V�O�0�0�2�7�7�9�9������Q��'���!1�!9�'+�$�(-�%�)/�&��$�$�$�)�)�+�7�U�?�$�K�%!)��*��D�O�O� 4�4����o���)�5��&�&�'7�9J�L^�`d�`p�`p�q�C���C���7�_�s
�"C"F�F)N� g����MbP?rMFN)Nr)�107r�)F)108�__name__�109__module__�__qualname__rrr�r�r�r�r��rrr�r��s4��#�j�#�\�#�L�#�J<�~ �8K�@* rr�)rrN)!�	src.modelr�src.dataloaderrr�torch.utils.datar�torch.optimr��torch.nn.functionalr��110functional�Fr�matplotlib.pyplot�pyplotrQrrrNr�torch.nn�time�sklearn.metricsrr	r111r�sklearn.preprocessingrrr�r�rrr�<module>rsS�� �2�'�������
������1��112A#�FK �K r