Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VOD adjustment #4

Open
Cuviews opened this issue Jul 23, 2024 · 4 comments
Open

VOD adjustment #4

Cuviews opened this issue Jul 23, 2024 · 4 comments
Labels
question Further information is requested

Comments

@Cuviews
Copy link

Cuviews commented Jul 23, 2024

Question

您好,我想基于relation detr做一些视频的任务,对你的框架上做了一些更改,数据加载更换成了cocoVID,帧作为bs,target只读1帧,目前模型方面使用encoder对多帧建模,decoder还是单帧,训练loss下降正常,测试都正常,可是ap全为0,可能某些关键的接口可能不太适配?请问有哪些需要注意的地方吗,非常感谢!!

补充信息

No response

@Cuviews Cuviews added the question Further information is requested label Jul 23, 2024
@Cuviews
Copy link
Author

Cuviews commented Jul 23, 2024

image

@xiuqhou
Copy link
Owner

xiuqhou commented Jul 23, 2024

Hi,很高兴您打算将RelationDETR扩展到视频领域。我对视频检测/跟踪的任务并不是很了解,下面是一些我觉得可能存在问题的地方和调试建议,仅供参考。

  1. 建议先不要一次性做太多改动,先保持RelationDETR结构不变,只输入1帧视频和1帧target,这样相当于batch_size=1的图片检测任务。如果这都训不出来,估计是输入格式有问题。
  2. 训练时我们要求的bounding_box格式是[x1, y1, x2, y2],图片需要已经完成归一化;推理时图片不能进行resize,必须是原图大小送进去,不需要进行归一化和数据增强。建议可以先用COCO数据集调试,看一下输入格式和修改后的cocoVID输入格式是否一致。
  3. 我们用的pycocotools包来评测模型的性能,不知道能不能用来评测视频任务。你可以先把模型的输入输出保存下来,可视化看一看是否正常,也许是输出正常但评测有问题。
  4. 也许AP=0是因为视频任务比较难训练,你可以加载我们的预训练模型做微调,看看对AP有提升没。

@Cuviews
Copy link
Author

Cuviews commented Jul 25, 2024

您好,我发现您把nestedtensor包括别的预处理拆分了,eval的transform放在模型的最开始,这样做是为什么,非常感谢!!

@xiuqhou
Copy link
Owner

xiuqhou commented Jul 25, 2024

Hi,很高兴你对这部分有疑问,我们确实是经过考虑后才选择不用nestedtensor,以及选择将eval_transform集成到模型。

  • 通常的模型在推理前需要对图片进行resize,推理后将结果重新变换回原图尺寸,用户需要自己进行resize、normalize操作,不便于使用。设想一下,假如我得到了某个导出的ONNX模型,我怎么知道要resize成大的图片输入进去呢?另外这些模型的输入可能还要包含图片原始尺寸等额外信息,有些模型分析库只支持单个Tensor输入的模型,就不太方便与这些包集成。
  • 而将eval_transform集成到模型中时,只需要读取图片转为tensor,其他处理都由模型完成,还可以将eval_transform作为模型的Module来使用GPU加速。我们参考pytorch官方实现的FasterRCNN,您可以看下torchvision.models.detection.faster_rcnn,他就是将预处理集成到模型中了。集成后推理过程非常简单,您可以看inference.ipynb中图片读取到输入模型的部分。
  • 我们没有使用nestedtensor,是考虑到低版本pytorch可能不支持。NestedTensor能完成的操作,用常规的Tensor+Mask也可以完成。像facebookresearch的DETR项目,也就只在backbone这1步用了NestedTensor,所以我觉得用NestedTensor没带来多少价值。另外也是为了和其他检测模型的输入格式统一,DETR的输入是nestedTensor,其他像FasterRCNN之类的模型可不是。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants