PaddlePaddle / PaddleDetection

Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.
Apache License 2.0
12.78k stars 2.88k forks source link

关于PPYOLOERHEAD的疑问 #8067

Open gyc137 opened 1 year ago

gyc137 commented 1 year ago

问题确认 Search before asking

请提出你的问题 Please ask your question

问题有三: 1.PPYOLOERHEAD的前四个epoch用的是static_assigner,之后用的是assigner,请问这样操作的理由是什么呢? 2.我发现在PPYOLOE的配置文件中会对static_assigner、assigner进行定义,但PPYOLOERHEAD的py文件中也会有对二者的定义,且前后两个定义不一样,然后测试发现实际情况是依据的配置文件中的定义,那就是说PPYOLOERHEAD的py文件中对assigner的定义是没用的吗? 3.我自己设计了一个assigner,想要替换掉原本的assigner,应该怎么操作呢?只是改名字的话会报missing assigner的错误。 望解答!

wangxinxin08 commented 1 year ago
  1. PPYOLOERHead没有使用static assigner,见配置文件:https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.6/configs/rotate/ppyoloe_r/_base_/ppyoloe_r_crn.yml#L31, 动态匹配一般需要使用模型的输出来计算metric,训练前期随机初始化得到的metric可能不太高效,所以先使用静态匹配进行匹配训练一段时间后使得模型的输出有意义之后再使用动态匹配。这里没有使用动态匹配是实验的一个结果,另外由于动态匹配会采用InGT的几何先验,保证了即使随机初始化也能保证匹配结果不会太差
  2. 所有模型以配置文件为准,不以默认值为准
  3. 可以看下添加组件的文档:https://github.com/PaddlePaddle/PaddleDetection/blob/release/2.6/docs/advanced_tutorials/MODEL_TECHNICAL.md 大概率是没有注册等实现原因导致的