File size: 1,441 Bytes
4193b64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import requests
import torch
from transformers import AutoModelForCausalLM
from PIL import Image
import gradio as gr

# 加载模型
model = AutoModelForCausalLM.from_pretrained(
    "q-future/one-align", 
    trust_remote_code=True, 
    attn_implementation="eager", 
    torch_dtype=torch.float16, 
    device_map="auto"
)

def score_image(image, task):
    """
    对输入的图像进行评分
    :param image: 输入的图像
    :param task: 任务类型,可以是 "quality" 或 "aesthetics"
    :return: 评分结果
    """
    if task not in ["quality", "aesthetics"]:
        return "任务类型必须是 'quality' 或 'aesthetics'"
    
    # 将图像转换为模型所需的格式
    if isinstance(image, str):
        image = Image.open(requests.get(image, stream=True).raw)
    elif isinstance(image, Image.Image):
        pass
    else:
        return "输入必须是图像 URL 或 PIL 图像"
    
    # 调用模型进行评分
    result = model.score([image], task_=task, input_="image")
    return result

# 创建 Gradio 界面
iface = gr.Interface(
    fn=score_image, 
    inputs=[
        gr.Image(label="输入图像", type="pil"), 
        gr.Dropdown(choices=["quality", "aesthetics"], label="任务类型")
    ], 
    outputs="text",
    title="图像评分模型",
    description="上传图像并选择任务类型(quality 或 aesthetics)来获取评分。"
)

# 启动 Gradio 应用
iface.launch()