Path: blob/master/keras/resnet_cam/__pycache__/explainer.cpython-36.pyc
2597 views
3
���[e � @ sN d dl Zd dlmZ d dlmZ d dlmZ d dlm Z m
Z
G dd� d�ZdS )� N)�zoom)�Model)�preprocess_input)�load_img�img_to_arrayc @ sB e Zd ZdZddd�Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dS )�CAMExplainerz$CAM (Class Activation Map) Explainer�� c C s || _ || _d | _d | _d S )N)�model�target_size�class_weights_�resnet50_cam_layers_)�selfr r
� r �?/Users/mingyuliu/machine-learning/keras/resnet_cam/explainer.py�__init__ s zCAMExplainer.__init__c C s@ | j d kr| j� \| _| _ | j|�\| _}| j|�\| _| _| S )N)r �_get_resnet50_cam_infor �_read_and_process_img�img_�_create_cam�cam_Zpredicted_class_)r
�img_path� keras_imgr r r �fit s
zCAMExplainer.fitc C sD dd l j}|j� \}}|j| jdd� |j| jddd� |j� d S )Nr g �?)�alpha�jet)�cmapr )�matplotlib.pyplot�pyplot�subplots�imshowr r �show)r
�plt�fig�axr r r �plot s
zCAMExplainer.plotc C s� | j j|�\}}|jd }|jd }|jd }tj|�}| jd d �|f }tj|�jd|f�}tj||�j||f�} | j d | }
| j d | }t
| |
|fdd�} | |fS )N� � � r )�order�����)r �predict�shape�np�argmaxr �squeeze�reshape�dotr
r )r
�img�before_gap_output�
predictionZ img_widthZ
img_heightZn_activation�predicted_class�dominate_class_weight�camZwidth_scale_ratioZheight_scale_ratior r r r "