文心4.5多模态大模型驱动的壁画一站式修复及智能评估系统
1 项目介绍
本项目聚焦于壁画的保护与修复,致力于将AI大模型技术与文化遗产保护深度融合,构建面向文化遗产保护与旅游服务的垂直领域多模态大模型。通过系统整合壁画图像、文物档案、文化释义文本及旅游目的地数据,研发集虚拟修复、智能导览与文化创作为一体的AI系统。项目依托昇腾AI平台和壁画等多源文化资源,构建面向垂直领域的视觉-语言联合大模型,推动AI在文化修复、智能游览、内容生成等场景中的创新应用,旨在通过创新的手段实现壁画的虚拟修复及损伤分割研究,同时探索文化遗产保护的新创业方向。
2 部署指南
本项目微调的大模型可直接基于Fastdeploy部署
# 配置ERNIEKit
!git clone https://github.com/PaddlePaddle/ERNIE
%cd ERNIE
!python -m pip install -r requirements/gpu/requirements.txt
!python -m pip install -e .
%cd ..
# 配置FastDeploy
!python -m pip install fastdeploy-gpu==2.3.0 -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_90/ --extra-index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
# 下载微调过的模型
!aistudio download --model geeet/mural-ERNIE4.5-21B --local_dir ./
# 部署方式
from fastdeploy import LLM, SamplingParams
prompts = [
"3条长短不一的裂痕,局部颜料褪色不均,边缘残缺,背景图案断裂;修复后视觉描述:裂痕隐匿,残缺补全,背景图案连贯,补色过渡稍显生硬;量化指标:PSNR=25dB,SSIM=0.86,MSE=21",
]
# 采样参数
sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = LLM(model="./mural-ERNIE4.5-21B",tensor_parallel_size=1,max_model_len=4096)
# 批量进行推理(llm内部基于资源情况进行请求排队、动态插入处理)
outputs = llm.generate(prompts, sampling_params)
# 输出结果
for output in outputs:
prompt = output.prompt
generated_text = output.outputs.text
3 数据集展示
本项目数据集由ERNIE4.5-VL模型提供修复前后壁画的视觉描述+量化脚本提供的三大量化指标对应美学修复评估语料构成,包含2000条数据样本。以下是数据集展示
# 下载数据集
!aistudio download --dataset geeet/mural --local_dir ./
import json
from typing import Optional, List
def show_jsonl_top_n(file_path, top_n = 10, encoding = "utf-8"):
# 存储读取到的有效数据
valid_records: List[dict] = []
# 统计错误行
error_lines: int = 0
try:
# 打开文件并逐行读取
with open(file_path, "r", encoding=encoding) as f:
for line_num, line in enumerate(f, 1): # line_num 从1开始计数
# 跳过空行
line = line.strip()
if not line:
continue
try:
# 解析 JSON 行
record = json.loads(line)
valid_records.append((line_num, record))
# 达到指定条数后停止读取
if len(valid_records) >= top_n:
break
except json.JSONDecodeError as e:
# 处理 JSON 解析错误
error_lines += 1
print(f"⚠️ 第 {line_num} 行 JSON 格式错误: {str(e)}")
# 展示结果统计
print(f"📊 读取完成 - 有效行数: {len(valid_records)}, 错误行数: {error_lines}\n")
# 展示前 N 条数据
print(f"=== JSONL 文件前 {min(top_n, len(valid_records))} 条数据 ===")
for line_num, record in valid_records:
print(f"\n【第 {line_num} 行】")
# 格式化输出 JSON(缩进2个空格,确保中文正常显示)
print(json.dumps(record, ensure_ascii=False, indent=2))
except FileNotFoundError:
print(f"❌ 错误: 找不到文件 '{file_path}'")
except PermissionError:
print(f"❌ 错误: 没有读取文件 '{file_path}' 的权限")
except Exception as e:
print(f"❌ 未知错误: {str(e)}")
if __name__ == "__main__":
JSONL_FILE_PATH = "mural/sft_train.jsonl"
show_jsonl_top_n(JSONL_FILE_PATH)
4 模型训练
模型训练使用STF-LoRA的微调训练方式,按照数据准备、模型微调和模型权重合并导出流程
# 下载数据集
!aistudio download --dataset geeet/mural --local_dir ./
# 下载模型权重
!aistudio download --model PaddlePaddle/ERNIE-4.5-21B-A3B-Base-Paddle --local_dir baidu/ERNIE-4.5-21B-A3B-Base-Paddle
# 模型微调
erniekit train ERNIE/examples/configs/ERNIE-4.5-21B-A3B/sft/run_sft_lora_8k.yaml model_name_or_path=baidu/ERNIE-4.5-21B-A3B-Base-Paddle
# 权重合并
erniekit train ERNIE/examples/configs/ERNIE-4.5-21B-A3B/sft/run_sft_lora_8k.yaml model_name_or_path=baidu/ERNIE-4.5-21B-A3B-Base-Paddle
5 推理代码
训练好的ERNIEKit权重可以通过集成的CLI工具直接通过FastDeploy部署。
# 注意修改yaml中的模型路径:./output/export
!erniekit server ERNIE/examples/configs/ERNIE-4.5-21B-A3B/run_chat.yaml
!erniekit chat ERNIE/examples/configs/ERNIE-4.5-21B-A3B/run_chat.yaml
6 使用示例
6.1 通过CLI工具使用fastdeploy后端直接推理
# 注意修改yaml中的模型路径
!erniekit server ERNIE/examples/configs/ERNIE-4.5-21B-A3B/run_chat.yaml
!erniekit chat ERNIE/examples/configs/ERNIE-4.5-21B-A3B/run_chat.yaml
文心4.5驱动壁画修复系统
2146

被折叠的 条评论
为什么被折叠?



