Saurav Chaudhari commited on
Commit
cc3131f
·
1 Parent(s): f64c6a8
Files changed (2) hide show
  1. app.py +50 -0
  2. requirements.txt +6 -0
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import pyiqa
3
+ import torch
4
+ import pandas as pd
5
+ from PIL import Image
6
+
7
+ # Initialize device
8
+ device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
9
+
10
+ # Load Models (Pre-selected for variety: Statistical, Perception, Deep Learning)
11
+ # Note: You can add more like 'niqe', 'clipiqa', etc.
12
+ metrics = {
13
+ "BRISQUE (Lower=Better)": pyiqa.create_metric('brisque', device=device),
14
+ "MUSIQ (Higher=Better)": pyiqa.create_metric('musiq', device=device),
15
+ "NIMA (Higher=Better)": pyiqa.create_metric('nima', device=device)
16
+ }
17
+
18
+ def analyze_image(input_img):
19
+ if input_img is None:
20
+ return None
21
+
22
+ # Standardize input for pyiqa
23
+ img_tensor = pyiqa.utils.img2tensor(input_img).unsqueeze(0).to(device)
24
+
25
+ results = []
26
+ with torch.no_grad():
27
+ for name, metric in metrics.items():
28
+ score = metric(img_tensor).item()
29
+ results.append({"Model": name, "Score": round(score, 4)})
30
+
31
+ return pd.DataFrame(results)
32
+
33
+ # Create Gradio Interface
34
+ with gr.Blocks(title="Multi-Model IQA Comparison") as demo:
35
+ gr.Markdown("# 📸 Image Quality Checker")
36
+ gr.Markdown("Upload an image to evaluate its quality score across various SOTA models.")
37
+
38
+ with gr.Row():
39
+ image_input = gr.Image(type="pil", label="Input Image")
40
+ result_table = gr.Dataframe(label="Model Scores")
41
+
42
+ btn = gr.Button("Get Scores")
43
+ btn.click(fn=analyze_image, inputs=image_input, outputs=result_table)
44
+
45
+ gr.Markdown("### Model Descriptions:")
46
+ gr.Markdown("- **BRISQUE:** Statistical model focusing on naturalness and noise.")
47
+ gr.Markdown("- **MUSIQ:** Transformer-based model optimized for varied image sizes.")
48
+ gr.Markdown("- **NIMA:** Neural Aesthetic model that mimics human perception.")
49
+
50
+ demo.launch()
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ pyiqa
2
+ torch
3
+ torchvision
4
+ pandas
5
+ gradio
6
+ Pillow