|
import os |
|
from pathlib import Path |
|
from dotenv import load_dotenv |
|
import numpy as np |
|
import tensorflow as tf |
|
|
|
load_dotenv() |
|
|
|
class PredictionPipeline: |
|
""" |
|
A class representing a pipeline for making predictions using a pre-trained model. |
|
|
|
Attributes: |
|
filename (str): The filename of the image to predict. |
|
|
|
Methods: |
|
predict() -> int: |
|
Loads a pre-trained model, processes an image, and predicts its class. |
|
""" |
|
def __init__(self,filename): |
|
""" |
|
Initialize the PredictionPipeline class. |
|
|
|
Args: |
|
filename (str): The filename of the image to predict. |
|
""" |
|
self.filename =filename |
|
|
|
def predict(self) -> int: |
|
""" |
|
Perform prediction on the image specified by the filename. |
|
|
|
Returns: |
|
int: The predicted class label. |
|
""" |
|
model = tf.keras.models.load_model("model.keras") |
|
class_labels = ['brightpixel','narrowband', |
|
'narrowbanddrd','noise', |
|
'squarepulsednarrowband','squiggle', |
|
'squigglesquarepulsednarrowband'] |
|
|
|
imagename = self.filename |
|
test_image = tf.keras.preprocessing.image.load_img(imagename, target_size = (256,256)) |
|
test_image = tf.keras.preprocessing.image.img_to_array(test_image) |
|
test_image = np.expand_dims(test_image, axis = 0) |
|
result = np.argmax(model.predict(test_image), axis=1) |
|
return class_labels[int(result)] |