山东大学软件学院项目实训纪实(四)

一、个人任务

在近期的项目中,我主要XrayGLM模型的微调工作,旨在使其能够更准确地识别胸部X光片图像并给出相应的诊疗报告。此外,为了构建一个用户友好的交互平台,我还负责了后端代码编写,主要是接口API的连接设计。

二、任务1——效果对比

这部分工作由我和团队成员宗亚静共同完成,具体的结果如下:

2.1 微调

  1. 数据准备:收集并整理了包含正常和异常胸部X光片图像的数据集,并对数据进行了预处理。
  2. 模型加载:加载了预训练的VisualGLM模型,并准备了必要的工具和库。
  3. 模型微调:使用准备好的数据集对模型进行微调,调整模型的参数以更好地适应新的数据分布。

2.2 效果对比

  • 微调前:模型在某些复杂病例上的识别准确率较低,容易误判。
  • 微调后:模型在识别准确率、召回率和F1值等关键指标上均有所提升,特别是在复杂病例上的表现更为出色。

三、任务2——后端代码编写

为了实现前端页面与微调后模型的交互,我负责编写了后端代码,并设计了相应的API接口。以下是我的实现过程:

3.1 API设计

定义了一个名为/getAnswer的POST接口,用于接收前端发送的请求,并返回模型的推理结果。该接口接收一个包含文本、图像编码和历史对话的JSON对象作为输入,并返回包含诊疗报告、历史对话和状态信息的JSON响应。

3.2 接口实现

api.py文件中,我使用FastAPI框架实现了/getAnswer接口。接口内部调用了infer_util.py中的相关函数来处理输入数据并调用模型进行推理。推理结果经过处理后,被封装为一个JSON对象并返回给前端。

以下是api.py中的关键代码片段:

from sat.model import AutoModel  
from infer_util import generate_input, chat, is_chinese  
from fastapi import FastAPI, Request  
import json  
import torch  
from datetime import datetime  
import uvicorn  
  
gpu_number = 0  
model, tokenizer = get_infer_setting(gpu_device=gpu_number)  
  
app = FastAPI()  
  
@app.post('/getAnswer')  
async def xray_glm(request: Request):  
    # 解析前端发送的JSON数据  
    json_post_raw = await request.json()  
    request_data = json.loads(json.dumps(json_post_raw))  
      
    # 处理输入数据并调用模型进行推理  
    input_text, input_image_encoded, history = request_data['text'], request_data['image'], request_data['history']  
    # ...(省略了部分参数设置和数据处理代码)  
      
    with torch.no_grad():  
        answer, history, _ = chat(None, model, tokenizer, input_text, history=history, image=input_image, **gen_kwargs)  
      
    # 封装响应数据并返回给前端  
    now = datetime.now()  
    time = now.strftime("%Y-%m-%d %H:%M:%S")  
    response = {  
        "result": answer,  
        "history": history,  
        "status": 200,  
        "time": time  
    }  
    return response  
  
if __name__ == '__main__':  
    uvicorn.run(app, host='127.0.0.1', port=8080, workers=1)

infer_util.py文件中,定义了一些辅助函数来处理输入数据、调用模型进行推理以及生成输出。这些函数被api.py中的xray_glm函数所调用。

四、总结

在本阶段,我不仅成功地对XrayGLM模型进行了微调,提高了其在胸部X光片图像识别任务上的性能,还设计并实现了一个高效、稳定的后端API接口。这个接口为前端页面提供了与模型进行交互的能力,使用户能够方便地获取诊疗报告并与模型进行交流对话。本阶段让我对深度学习模型的微调、后端开发以及API设计有了更深入的理解和实践经验。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值