grounding目标检测任务,训练效果不好,询问优化意见
任务背景: 我做了一个目标检测任务,其中包含多项目标检测类别,该任务中的类别大部分是一些事件(特定场景中的人或物满足某种状态)。
使用模型:InternVL2_5_MPO
训练阶段,设计训练prompt: 由于这些类别大部分都是事件,比较特殊,并不类似于“猫”、“狗”等通用类别;进而,该任务的类别需要精准描述且描述语句通常较长;因此,为了减少模型预测时的输入token数,训练样本的prompt采用都两轮对话的形式:先询问并回答类别定义,后询问并回答类别坐标框(模型预测时只使用后者问答,以减少输入token)。 训练prompt示例:
[{"from": "human", "value": "在xxx场景中,以下事件的定义是什么?请使用json格式回答:\n事件a\n事件b\n事件c"},
{"from": "gpt", "value": "{'事件a': '事件a的定义或描述', '事件b': '事件b的定义或描述', '事件c': '事件c的定义或描述'}"},
{"from": "human", "value": "
{"from": "gpt", "value": "事件a
另外,为了提高模型对单个事件的理解,我会放入对单个事件的问答,prompt格式如上。
验证阶段结果: 单个事件检测:precision精准度低,recall召回高。我发现bbox框中的错误情况有两种:1. 检测类别事件a,但是bbox框中实际内容为事件b。2. bbox框中的内容并非检测的任何类别,仅仅是人或物。
多个事件检测:precision精准度低,recall召回低。错误情况为:1. 什么都检测不出来。2. 只检测出非任何目标事件类别的人或物。3. 分类错误,框中是事件a,但是分类为事件b
个人问题:
- 上述训练prompt的设计是否不太合适?
- InternVL2_5_MPO模型是否不太适合做目标检测任务?
- 在工业AI应用上,其实大部分视觉任务还是目标检测、分割等,简单对话并不能满足应用,InternVL系列是否可以针对上述视觉任务出一个针对性的模型?
- 如果要出这么个模型,我希望你们能够考虑到复杂含义类别的处理,即某些目标类别具备复杂条件或含义(如上面我的任务)。使得模型预测时,不需要输入复杂的长文本描述。
上面陈述显示有些错误,所有事件左右都有用特殊符包裹
<ref>事件a</ref>
我看了一下 https://github.com/OpenGVLab/InternVL/blob/main/internvl_chat/eval/refcoco/evaluate_grounding.py,里面输出的 bounding_box 会 normalize 1000,然后再乘以原始图像的长宽
我看了一下 https://github.com/OpenGVLab/InternVL/blob/main/internvl_chat/eval/refcoco/evaluate_grounding.py,里面输出的 bounding_box 会 normalize 1000,然后再乘以原始图像的长宽
嗯嗯,我有做相关处理,训练时按照官方给的normlize归一化到1000,预测时,我会将其逆转回来
不是InternVL2_5的问题,是所有基于(图像特征提取映射+LLM)的模型架构的VLM模型都不适合目标检测的任务。
我想请教一下!您的任务也带box,然后我理解InternVL它会动态处理输入图片。您是直接把box缩放到[0,1000]尺度,还是先让box随着动态处理图片(到448的整数倍),然后再把box缩放到[0,1000]
我想请教一下!您的任务也带box,然后我理解InternVL它会动态处理输入图片。您是直接把box缩放到[0,1000]尺度,还是先让box随着动态处理图片(到448的整数倍),然后再把box缩放到[0,1000]
只是训练时候box的数值归一化到1000,与图像无任何关系,图像不需要做什么调整