Ethium's picture
Update app.py
b32bffa verified
raw
history blame contribute delete
No virus
2.13 kB
__all__ = ['is_glaucoma', 'learn', 'classify_image', 'categories', 'image', 'label', 'examples', 'intf']
from fastai.vision.all import *
import gradio as gr
from PIL import Image
def get_x(row, is_test=False):
image_path = path_image_combined / (row['id_code'])
transformed_image = custom_transform(image_path)
# Check the label of the current image and apply augmentations if it belongs to the minority class
if not is_test and row['label'] == 1:
transformed_image = additional_augmentations(transformed_image)
return Image.fromarray(transformed_image)
# Define how to get the labels
def get_y(row):
return row['label'] # adjust this depending on how your csv is structured
# Define the transformations
def custom_transform(image_path):
image = cv2.imread(str(image_path)) # Read the image file.
if image is None:
return None
# Convert the image from BGR to RGB
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Apply filters and transformations
# Gaussian filter
image = cv2.GaussianBlur(image, (5, 5), 0)
# Histogram Equalization
img_yuv = cv2.cvtColor(image, cv2.COLOR_RGB2YUV)
img_yuv[:,:,0] = cv2.equalizeHist(img_yuv[:,:,0])
image = cv2.cvtColor(img_yuv, cv2.COLOR_YUV2RGB)
# Median filter
image = cv2.medianBlur(image, 3)
# Bypass filter (leaving the image unchanged)
# (add any specific implementation if needed)
# Sharpening filter
kernel = np.array([[0, -1, 0],
[-1, 5,-1],
[0, -1, 0]])
image = cv2.filter2D(image, -1, kernel)
# Resize the image to a target size of 224x224 pixels.
image = cv2.resize(image, (224, 224))
return image
learn = load_learner('your_model.pkl')
categories = ('Glaucoma Present','Glaucoma Absent')
def predict(img):
pred,pred_idx,probs = learn.predict(img)
return dict(zip(categories, map(float,probs)))
image = gr.inputs.Image(shape=(512,512))
label = gr.outputs.Label()
intf = gr.Interface(fn=predict, inputs=image, outputs=label)
intf.launch(inline=False)