多模态数据加载(图片/音频/视频/文本)
多模态AIAgent开发实践 邓立国、周驰岷、邓淇等 清华大学出版社【行情 报价 价格 评测】-京东
《多模态AI Agent开发实践》1~6章试读-CSDN博客
多模态数据加载是数据处理的第一步,核心是将不同格式、不同来源的多模态数据(本地文件、网络资源)统一转换为LangChain可识别的格式,为后续分割、特征提取及存储奠定基础。本节将基于LangChain 0.3.x版本,详解图片、音频、视频、文本四种核心多模态数据的加载方法,结合qwen-vl-plus大模型的多模态理解能力,实现标准化加载,所有案例均适配指定依赖与.env配置。
5.1.1 依赖确认与环境准备
本章延续前文指定依赖配置,无须额外安装新依赖,若未完成安装,则执行以下命令(与第4章一致):
pip install langchain==0.3.25 langgraph==1.0.5 langchain-core==1.2.7 langchain-community==0.4.1 python-dotenv
大模型API调用仍采用.env文件配置,确保qwen-vl-plus正常调用,基础配置代码(本章案例均需提前执行):
from dotenv import load_dotenv; import os; load_dotenv() # 加载.env文件(QWen_API_KEY=your_key)
from langchain_community.llms import QwenVLPlus
llm = QwenVLPlus(api_key=os.getenv("QWen_API_KEY"), model="qwen-vl-plus", temperature=0.7)
补充依赖说明:视频加载需要依赖opencv-python(第2章已配置)、音频加载依赖whisper(第3章已配置),无须重复安装。
5.1.2 四大类多模态数据加载实操
结合langchain-community 0.4.1版本的Document Loader组件,针对四种核心多模态数据,提供标准化加载方法,每个案例均包含代码实现与效果说明,可直接运行。
5.1.2.1 图片数据加载(JPG/PNG/GIF)
采用LangChain内置的ImageLoader与OpenCVLoader,支持本地图片加载,可直接适配qwen-vl-plus的图像分析需求,代码示例:
# 图片数据加载(本地文件)
from langchain.document_loaders import ImageLoader, OpenCVLoader
# 方法1:ImageLoader(基础加载,转换为LangChain Document格式)
img_loader1 = ImageLoader("industrial_test.jpg")
img_doc1 = img_loader1.load()
print("ImageLoader加载结果(Document格式):", img_doc1[0].page_content) # 输出图像基础信息
# 方法2:OpenCVLoader(结合OpenCV,支持初步预处理)
img_loader2 = OpenCVLoader("industrial_test.jpg")
img_doc2 = img_loader2.load()
# 补充:图像尺寸调整(预处理)
import cv2
img = cv2.imread("industrial_test.jpg")
img_resized = cv2.resize(img, (640, 480)) # 适配qwen-vl-plus图像分析尺寸
cv2.imwrite("industrial_resized.jpg", img_resized)
print("OpenCVLoader加载并预处理完成,图像尺寸:", img_resized.shape)
说明:加载后的图片数据将转换为LangChain Document格式,可直接传入qwen-vl-plus进行图像分析,也可结合后续特征提取步骤处理。
5.1.2.2 音频数据加载(MP3/WAV)
采用WhisperLoader,结合whisper模型实现音频加载与转写,将音频数据转换为文本格式,适配qwen-vl-plus的文本推理需求,代码示例:
# 音频数据加载与转写
from langchain.document_loaders import WhisperLoader
# 加载音频文件(支持MP3/WAV格式),转写为文本
audio_loader = WhisperLoader("industrial_voice.mp3", model="base", language="zh")
audio_doc = audio_loader.load()
# 输出转写文本(可直接传入qwen-vl-plus进行推理)
audio_text = audio_doc[0].page_content
print("音频转写文本:", audio_text)
# 补充:将转写文本存入临时变量,用于后续处理
with open("audio_transcript.txt", "w", encoding="utf-8") as f:
f.write(audio_text)
说明:WhisperLoader可自动完成音频加载与转写,支持多语言,转写后的文本可直接用于Agent决策、Prompt构建,适配多模态交互场景。
5.1.2.3 视频数据加载(MP4/AVI)
视频数据加载需结合OpenCV与LangChain自定义加载逻辑,将视频拆分为帧图像(图片),再进行后续处理,代码示例:
# 视频数据加载(拆分为帧图像)
import cv2
from langchain.document_loaders import ImageLoader
from langchain_core.documents import Document
# 自定义视频加载函数,拆分为帧图像
def video_loader(video_path, frame_interval=10):
cap = cv2.VideoCapture(video_path)
frames = []
frame_count = 0
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 每隔frame_interval帧保存一幅图像
if frame_count % frame_interval == 0:
frame_path = f"video_frame_{frame_count}.jpg"
cv2.imwrite(frame_path, frame)
# 加载帧图像,转换为Document格式
img_loader = ImageLoader(frame_path)
img_doc = img_loader.load()[0]
frames.append(Document(page_content=img_doc.page_content, metadata={"frame_num": frame_count, "frame_path": frame_path}))
frame_count += 1
cap.release()
return frames
# 调用自定义视频加载函数
video_docs = video_loader("industrial_video.mp4", frame_interval=10)
print(f"视频加载完成,共提取{len(video_docs)}帧图像")
print("第一帧图像信息:", video_docs[0].metadata)
说明:视频数据通过拆分为帧图像,转换为LangChain Document格式,可适配qwen-vl-plus的图像分析能力,用于视频异常检测、场景识别等多模态任务。
5.1.2.4 文本数据加载(TXT/PDF/Markdown)
采用LangChain内置的TextLoader、PyPDFLoader、UnstructuredMarkdownLoader,加载不同格式文本数据,统一转换为Document格式,代码示例:
# 文本数据加载(多格式适配)
from langchain.document_loaders import TextLoader, PyPDFLoader, UnstructuredMarkdownLoader
# 1. TXT文件加载
txt_loader = TextLoader("industrial_report.txt", encoding="utf-8")
txt_doc = txt_loader.load()
print("TXT文件加载内容:", txt_doc[0].page_content[:100] + "...")
# 2. PDF文件加载(提取文本)
pdf_loader = PyPDFLoader("industrial_manual.pdf")
pdf_docs = pdf_loader.load() # 按页码拆分,每一页为一个Document
print(f"PDF文件加载完成,共{len(pdf_docs)}页")
# 3. Markdown文件加载
md_loader = UnstructuredMarkdownLoader("industrial_guide.md")
md_doc = md_loader.load()
print("Markdown文件加载内容:", md_doc[0].page_content[:100] + "...")
说明:文本数据是多模态智能体的核心指令与辅助信息来源,加载后可直接用于Prompt构建、Memory存储,适配qwen-vl-plus的文本推理需求。
5.1.3 多模态数据加载注意事项
1. 格式适配
确保加载的多模态文件格式与Loader匹配(如ImageLoader仅支持图片格式),避免加载失败。
2. 路径规范
所有本地文件路径需使用绝对路径或相对路径(确保代码可访问),避免路径错误导致加载失败。
3. 性能优化
视频、大型PDF等数据加载时,可通过设置间隔(如视频帧间隔)、分页加载(如PDF),减少资源占用。
4. 数据备份
加载过程中避免修改原始文件,可将预处理后的文件(如resize后的图片、转写后的文本)保存到指定目录,便于后续复用。

更多推荐



所有评论(0)