
    ]i                     @    d dl Zd dlmZ d dlmZ  G d d          ZdS )    N)preprocess_input)
load_modelc                   ,    e Zd Zi g ddfdZd Zd ZdS )EggClassifier)zAscaris lumbricoideszHookworm eggzTrichuris trichiura)   r   c                     t          |t                    rt          ||          | _        n|| _        || _        || _        d S )N)custom_objects)
isinstancestrr   modelclass_names
input_size)self
model_pathr	   r   r   s        Q/data/users/s19104799/parasitic-detection.dcism.org/backend/src/egg_classifier.py__init__zEggClassifier.__init__   sF     j#&& 	$#J~NNNDJJ#DJ&$    c                 z   g }t          |          D ]'\  }}	 |                     |d                   }| j                            |d          }t	          j        |d                   }t          |d         |                   }| j        |         }	|dk     rd}	d}d}|                                }
|	t          |          ||d         
                                d|
d	<   |                    |
           # t          $ r7 |                                }
dddg d|
d	<   |                    |
           Y %w xY w|S )
Nimager   )verbosegffffff?unknowng        )
class_nameclass_id
confidenceall_predictionsclassification)	enumerate
preprocessr   predictnpargmaxfloatr   copyinttolistappend	Exception)r   cropped_imagesclassification_resultsi	crop_infoprocessed_imagepredictionspredicted_class_idxr   r   results              r   classify_eggszEggClassifier.classify_eggs   sw   !#%n55  	6  	6LAy6"&//)G2D"E"E"j00!0LL&(iA&?&?#";q>2E#FGG
!-.AB
##!*J*,'!$J"))", #$7 8 8",'21~'<'<'>'>	, ,'( '--f5555 6 6 6"))"+ ""%')	, ,'( '--f555556 &%s   CC77=D87D8c                     |                     | j                  }t          j        |                              t          j                  }t          |          }t          j        |d          }|S )Nr   )axis)resizer   r!   arrayastypefloat32r   expand_dims)r   cropped_imager   	img_arrays       r   r   zEggClassifier.preprocess<   s[    $$T_55HUOO**2:66	$Y//	N91555	r   N)__name__
__module____qualname__r   r1   r    r   r   r   r      sX         SSS% % % %%& %& %&N    r   r   )numpyr!   keras.applications.resnet50r   keras.modelsr   r   r>   r   r   <module>rB      sg        8 8 8 8 8 8 # # # # # #= = = = = = = = = =r   