报告日期:2024年8月18日
项目负责人:Li Zhang
前言
本项目开发了一个基于多模态技术的智能对话机器人,专注于批改数学题的应用场景。该机器人能够识别用户上传的手写数学题图片,解析其中的算式,并对其进行批改,给出正确或错误的反馈。项目亮点在于结合了图像处理和自然语言处理的技术,实现了从图像到文字再到反馈的多模态信息处理,为教育领域的智能化批改提供了创新的解决方案。
提示:以下是本篇文章正文内容,下面案例可供参考
一、技术方案与实施步骤
本项目采用了以下模型组合:
视觉识别模型:microsoft/phi-3-vision-128k-instruct,用于从手写数学题图片中提取文本信息。
自然语言处理模型:meta/llama-3.1-405b-instruct,用于解析识别出的算式,并对其进行计算和批改。
选择这些模型的原因在于,它们在图像识别和文本生成任务中都表现出了高水平的性能,能够保证多模态任务的准确性和实时性。
二、数据的构建
项目数据主要来源于手写数学题的图片。我们收集了多种手写风格的数学题图片,并对其进行了标注,作为视觉模型的训练和测试数据。数据经过清洗、标注后,使用适当的预处理手段确保了输入数据的质量,以提升模型的识别准确率。
1.功能整合
本项目实现了多模态功能的整合,具体如下:
图像到文本:利用视觉模型提取手写数学题中的文字信息。
文本到计算与反馈:使用自然语言处理模型解析提取的算式,进行计算,并生成批改结果(正确或错误)。
结果展示:通过Gradio接口将批改后的结果以图片的形式展示给用户,使用户能够直观地看到批改结果。
2.实施步骤:
环境搭建:
开发环境基于Python,并使用Anaconda管理依赖库。开发环境配置包括:
Python 3.9
NVIDIA CUDA Toolkit 11.8
PyTorch 2.0
Pillow(用于图像处理)
Gradio(用于前端展示)
LangChain库(用于模型调用与链式操作)
3. 代码实现:
关键代码实现包括:
from langchain_nvidia_ai_endpoints import ChatNVIDIA
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableBranch, RunnableLambda
import os
import base64
import io
from PIL import Image
# Set the API key
os.environ["NVIDIA_API_KEY"] = "nvapi-********" ##自己区NIM申请API key吧
# Helper functions
def image2b64(image_file):
with open(image_file, "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
return image_b64
def