CoolFace
Apppublic

abspython/hate-meme-detect

sourceHugging Faceotherupdated 4y agoView on Hugging Face
0likes
app.py82 linesDownload Raw Back to root
1import streamlit as st2import numpy as np3import joblib4import easyocr5from transformers import pipeline6from keras.utils import load_img7from keras.utils import img_to_array8from PIL import Image9import io10 11from tempfile import NamedTemporaryFile12 13st.set_option('deprecation.showfileUploaderEncoding', False)14 15def load_image(image_file):16	img = Image.open(image_file)17	return img18 19def get_img_prediction(imgpath):    20    img = load_img(imgpath,target_size=(128,128,3))21    img = img_to_array(img)22    img = img/25523 24    X_pred_image = np.array(img)25 26    X_pred_imaged = X_pred_image.reshape(1,128*128*3)27    y_pred_pro = loaded_lgbm.predict_proba(X_pred_imaged)28    return y_pred_pro[0].tolist()29 30 31def get_text_prediction(imgpath):32    result = reader.readtext(imgpath,paragraph="False")33    text = []34    for i in result:35        text.append(i[1])36    text = " ".join(text)37    st.write(text)38    t_pred = get_inference(text)39    t_pred_c = []40    for c in t_pred:41        for a in c.values():42            if a not in ['NEGATIVE','POSITIVE']:43                t_pred_c.append(a)44    return t_pred_c[::-1]45 46 47def pred_label_mean(i_pred,t_pred):48    ensemble_pro = [(g + h) / 2 for g, h in zip(i_pred, t_pred)]49    return ensemble_pro50 51def get_inference(input_text):52  return bert(input_text)53 54 55loaded_lgbm = joblib.load('lgbm_v (2).sav')56 57bert = pipeline("text-classification", return_all_scores=True)58reader = easyocr.Reader(['en'])59st.title('Hateful Memes Classification')60 61image_file = st.file_uploader("Upload Images", type=["png","jpg","jpeg"])62temp_file = NamedTemporaryFile(delete=False)63 64if image_file is not None:65    # To View Uploaded Image66    st.write('Meme Image:')67    temp_file.write(image_file.getvalue())68    imgu = load_img(temp_file.name)69    st.image(imgu)70 71    with st.spinner('Predicting Label..'):72        i_pred = get_img_prediction(temp_file.name)73        t_pred = get_text_prediction(temp_file.name)74        y_pred_both = pred_label_mean(i_pred,t_pred)75        y_pred = y_pred_both.index(max(y_pred_both))76 77        st.write(np.round(np.array(y_pred_both),4))78        if y_pred == 0:79            st.success('Predicted Label: non-hateful meme')80        if y_pred == 1:81            st.success('Predicted Label: hateful meme')82