Team Ai
Modelpublic

fernandoperlar/preprocessing_image

sourceHugging Faceupdated 5y agoView on Hugging Face
0likes
Model.cpython-38.pyc72 linesDownload Raw Back to __pycache__
1U

2�T�a��@s�ddlmZddlmZddlmZddlZddl	Z3ddlZddl
mZmZmZmZmZmZmZddlmZddlmZddlTGdd	�d	�ZdS)4�)�FilterN)�	callbacks�models�layers�utils�losses�
preprocessing�backend)�metrics)�5optimizers�)�*c@s\eZdZddd�Zdd�Zdd�Zddd	�Zddd�Zdd
d�Zdd�Z	dd�Z6dd�Zd7S)�ModelTcCs�||_||_|��|_d|j�d�dd|_d|_t�|j|�tj	j8|jd|j�d�ddd�|rp|j��|r�t�
t�d|j�d���t�d	�t��dS)9N�	./output/z	/weights_z{epoch:03d}z.hdf5rz10/model.pngT)�to_file�show_shapes�show_layer_names�off)�name�filter�_Model__create_model�model�weights_path�11best_epoch�computer�create_output_folderr�	vis_utils�12plot_model�summary�plt�imshow�imread�axis�show)�selfrr�newr�plot�r'�=c:\Users\ferna\Desktop\mammo-echo-thermo\src\scripts\Model.py�__init__
s13 1415zModel.__init__cs�G�fdd�dtj��t��}|�tjdd��|��|jd��|�tjdddd	��|�tjd16d��|�tjdddd	��|�t�	��|�tj17dd
��|�tjddd	��|�tj18dd
��|�tjddd	��|S)Ncs2eZdZ��fdd�Zdd�Z�fdd�Z�ZS)z)Model.__create_model.<locals>.FilterLayercs$||_t�|�jfddi|��dS)NrZfilter_layer)r�superr))r$r�kwargs)�FilterLayer�	__class__r'r(r)#sz2Model.__create_model.<locals>.FilterLayer.__init__cSs6|j}t�|j|gtjg�\}t�|�}|�|�|S�N)�shape�tf�py_functionr�float32r	�
stop_gradient�	set_shape)r$�imager/r'r'r(�call(s192021z.Model.__create_model.<locals>.FilterLayer.callcs22t���Sr.)r*�23get_config)r$�r-r'r(r70sz4Model.__create_model.<locals>.FilterLayer.get_config)�__name__�24__module__�__qualname__r)r6r7�
__classcell__r'�r,r8r(r,"sr,)��i�)r/)r� )r?r?�relu)�25activation)�rC)�	pool_size皙�����?)�raterC�softmax)r�Layerr�26Sequential�add�Inputr�Conv2D�MaxPooling2D�GlobalAveragePooling2D�Dropout�Dense)r$rr'r=r(Z__create_model!szModel.__create_modelc	CsR|jjtjtjdd�dgd�td|j�d�d��}|�|j�	��W5QRXdS)Ng{�G�zt?)�
learning_rate�accuracy)�loss�	optimizerr27rz/model.json�w)28r�compiler�binary_crossentropyr�Adam�openr�write�to_json)r$Z	json_filer'r'r(rVEsz
Model.compilec29sG�fdd�dtj�}tj|jd|r(dndddd�}||j|j�}|jj|�|rTdnd|||gd	�}	|j|_|�rtj	�30d31�t��tj|	j
ddd
�tj|	j
ddd
�tj|	j
ddd
�tj|	j
ddd
�t�d�t�d�t�d�tjdd�t��dS)Ncs"eZdZdd�Zd�fdd�	ZdS)zModel.fit.<locals>.GetProgresscSs||_||_d|_d|_dS)Nr)rr�
best_accuracyr)r$rrr'r'r(r)Msz'Model.fit.<locals>.GetProgress.__init__Ncs�|d|jkr|d|_||_td|j�d�d|d�d��d�dt|dd��d�|jj|jdd	��d32d�|d�kr�tdd33d�dS)
N�val_accuracyz
Model z -> zEpoch r�/zAccuracy (Validation): rC��epoch�)�end�34)r\r�printr�roundr�format)r$r`�logs��epochsr'r(�on_epoch_endSs35����z+Model.fit.<locals>.GetProgress.on_epoch_end)N)r9r:r;r)rjr'rhr'r(�GetProgressLsrkr]rrT�max)�monitor�verbose�save_best_only�mode)rirn�validation_datarZggplotrSz
Training loss)�label�val_losszValidation lossrRzTraining accuracyzValidation accuracyzTraining Loss and AccuracyzEpoch #z
Loss/Accuracyz36lower left)�loc)r�Callback�ModelCheckpointrrr�fitrr�style�use�figurer&�history�title�xlabel�ylabel�legendr#)37r$�train_generator�validation_generatorrirnr&rk�38checkpointZget_progressr{r'rhr(rwKs>39�40��414243z	Model.fitNcCs,t�|dkr |jj|jdd�n|�|_dS)Nrr_)r�44load_modelrrfrr)r$�pathr'r'r(r��szModel.load_modelc
Cs8|dk	r|�|�tj|j�|�dd�}t�|j|�}tj|t�	|j45�d�jtj
jdd�t��tt�|j|��|dd}|dd}|dd}|dd}t||�t||||�}	tdt|	d��|t||�}46td	t|47d��|t||�}td48t|d��|t||�}tdt|d��dS)N������r")�confusion_matrix�display_labelsr)�cmap�xticks_rotationrz	Accuracy:�zSpecificity:zSensitivity:z49Precision:)r��np�argmaxr�predictr50r��classes�ConfusionMatrixDisplay�unique�labelsr&r�cm�Bluesr#rd�classification_report�floatre)
r$r�r��predictionsr�ZTPZTNZFPZFNrR�specificity�sensitivity�	precisionr'r'r(�evaluate�s&51$ zModel.evaluatecCs�t�t�|j�tj��d�dd}tj|dd�}|�|�}|�	|j|�\}}t52jdddd	�\}}|d�|d�|d�
tj�|j��|d�tj�|��|d�
d53|j���|d�|�|d�
dt�|j�|�d����t54��dS)
Nr2g�?��rr�rr?)��)�figsizezReal class: rCzPredicted class: )�cv�cvtColorr!r5�
COLOR_BGR2RGB�astyper��expand_dimsZ_Model__compute_heatmapZ_Model__get_heatmapr�subplotsr �	set_title�osr��basenamer�array_to_img�categoryr�rr�r#)r$r5�img�heatmap�jet_heatmap�superimposed_img�fig�axr'r'r(�visualize_heatmap�s$55&zModel.visualize_heatmapc		Cs�|jjdd�}tj|jjg|j|jjgd�}t���8}||�\}}|�|dd�df|�}tj	|dd�}W5QRX|d|dtj56f}t�|�}t�|d�tj
�|�}|��S)	NrC)�index)�inputs�outputsr)rrrCr�r.)r�	get_layerrr�input�outputr0�GradientTape�gradient�reduce_mean�newaxis�squeeze�maximum�math�57reduce_max�numpy)	r$r5Z58last_layerZ59grad_model�tapeZmodel_output�gradsZpooled_gradsr�r'r'r(�compute_heatmap�s6061zModel.compute_heatmapcCs�tjj|dd�}tj�|�}t�d�}|t�d��dd�dd�f}|t�d|�}tj�	|�}|�62|jd|jdf�}tj�|�}|d	|}tj�	|�}||fS)63N�	grayscale)�64color_mode�jet�r?r�rrrE)rr5�load_img�img_to_arrayr��get_cmapr��arange�uint8r��resizer/)r$r�r�r�r�Z65jet_colorsr�r�r'r'r(�get_heatmap�s66zModel.get_heatmap)TTT)TT)N)N)r9r:r;r)rrVrwr�r�r�r�r�r'r'r'r(rs67$68?6970r)�loggingr�matplotlib.pyplot�pyplotrZ
matplotlib.cmr�r�r��cv2r��71tensorflowr0�kerasrrrrrrr	�sklearnr72Ztensorflow.kerasr�Miscrr'r'r'r(�<module>s$