File size: 1,849 Bytes
4593d5d
 
 
 
 
 
 
 
 
 
 
 
 
 
9fff2e5
 
4593d5d
 
113622c
4593d5d
7a53eba
113622c
4593d5d
 
7a53eba
 
84e881d
7a53eba
4593d5d
113622c
9c28001
4593d5d
 
 
 
 
 
 
 
 
 
cb6ff81
 
4593d5d
cb6ff81
7a53eba
4593d5d
7a53eba
4593d5d
 
1eff44d
4593d5d
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import easyocr 
from gradio_client import Client, handle_file
import pandas as pd
import gradio as gr

clientImg = Client("dj-dawgs-ipd/IPD-Image-ViT-Finetune")
clientEngText = Client("dj-dawgs-ipd/IPD-Text-English-Finetune")
clientHingText = Client("dj-dawgs-ipd/IPD-Text-Hinglish")

profanity_df = pd.read_csv('Hinglish_Profanity_List.csv' , encoding = 'utf-8')
profanity_hn = profanity_df['profanity_hn']

def extract_text(image):
    reader = easyocr.Reader(['en'])
    data = [result[1] for result in reader.readtext(image)]
    return ' '.join([l for l in data])

def predict(image):
    
    imgResult = clientImg.predict(
        image=handle_file(image),
        api_name="/predict"
    )
    
    label , confidence = imgResult[0]['label'] , float(imgResult[1]['label'])

    if confidence > 0.90:
        return ["hate" , label]
    else:
 
        ocr_text = extract_text(image).lower()
        
        engResult = clientEngText.predict(
		text=ocr_text,
		api_name="/classify_text"
        )
        
        hingResult = clientHingText.predict(
        		text=ocr_text,
        		api_name="/predict"
        )

        profanityFound = any(word in text.split() for word in profanity_hn)
        
        if not profanityFound and (engResult[0] == "NEITHER" or hingResult[0] == "NAG"):
            return ["not_hate" , "No Hate Symbols Detected"]
        else:
            return ["hate" , "No Hate Symbols Detected"]
        
iface = gr.Interface(fn=predict,
                     inputs = gr.Image(type='filepath'),
                     outputs=[gr.Label(label = "Class") , gr.Label(label = "Hate Symbol(if any)")],
                     title = "Hate Speech Detection in Image",
                     description = "Detect hateful symbols or text in Image"
        )
                     
if __name__ == "__main__":
    iface.launch()