图文理解
1. 什么是图文理解任务?
理解(Image-Text-to-Text)是一项利用大模型进行推理的任务,通过输入图像和相关文本提示(Prompt),生成与图像内容和文本提示相匹配的自然语言描述。该任务结合了图像感知与语言生成技术,广泛应用于创意内容生成、图像理解辅助、问答系统等多个场景。
2. 典型应用场景
- 图像描述生成:针对输入的图片生成对其内容的详细文字描述,例如新闻配图说明、社交媒体发布内容。
- 视觉问答:结合提示文本,回答与图像内容相关的问题,例如“图片中的动物是如何分布的?”。
- 创意辅助:根据图片与文本关键词进行扩展性创意内容生成,例如为电影或广告创作相关的脚本或故事背景。
- 图像超分辨解析:将复杂图像内容通过文本生成进行更细致的语义分析,例如科学研究中的数据标注辅助。
3. 影响推理效果的关键因素
模型选择
不同模型在图像分析能力和语言生成能力上表现有所不同,应根据具体任务需求选择合适的模型。
参数调整
以下是影响图文转文本效果的重要参数:
温度(Temperature)
- 控制生成文本的创造性程度。
- 温度高(如
1.0
):生成内容具有更多变化和丰富性,但可能失去严谨性。 - 温度低(如
0.1
):生成内容更加精准稳定,但可能较少创意。
- 温度高(如
- 应用场景:适用于根据需要调整文本生成的自由度与精确度。
最大长度(Max Length)
- 限制生成文本的长度,确保输出符合用户需求。例如,为短摘要设置较短的长度,为内容分析生成较长的文本。
- 应用场景:控制图文描述的详细性和简洁性。
Top-K 采样
- 限制模型在生成时只考虑概率最高的
K
个候选词。- 较小的
K
值:生成内容更正式、更准确,但可能降低创意性。 - 较大的
K
值:能够生成更多样化和富有想象力的文本内容。
- 较小的
- 应用场景:
- 强调严谨性:使用较小的
top_k
值。 - 强调多样性:使用较大的
top_k
值。 - 未设置时:代表不启用
top_k
采样。
- 强调严谨性:使用较小的
Top-P 采样
- 根据累计概率动态选择生成词汇。
- 高
top_p
值:生成内容较为丰富,具有多样性。 - 低
top_p
值:生成内容更严谨和聚焦于主要描述或回答。
- 高
- 应用场景:设置为中间值时,可平衡随机性和稳健性。
重复惩罚(Repetition Penalty)
- 降低模型重复生成短语或句子的可能性。较高的重复惩罚可以避免冗余信息,提升生成质量。
- 应用场景:在生成对图像内容的描述时避免重复信息,使生成的文本更顺畅和连贯。
图像相关性(Image Context Bias)
- 控制生成文本与输入图像的关联深度。
- 高偏向程度:生成结果高度聚焦于图像内容本身。
- 低偏向程度:生成结果结合图像内容和提示文本进行发散性创意。
- 应用场景:根据任务重点调整结果的图像内容专注度.
4. 代码调用示例
import requests
url = "https://xxxxxxxxxxxx.space.opencsg.com/v1/chat/completions" #endpoint url
headers = {
'Content-Type': 'application/json'
}
data = {
"model": "xzgan001/InternVL2_5-1B",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": [
{"type":"image_url", "image_url":{"url":"https://opencsg.com/images/landing_boosting_models.png"}},
{"type":"text", "text":"Describe this image."}
]
}
],
"stream": True,
"temperature": 0.2,
"max_tokens": 200,
"top_k": 10,
"top_p": 0.9,
"repetition_penalty": 1
}
response = requests.post(url=url, json=data, headers=headers, stream=True)
response.raise_for_status()