yun-liu / RCF

Richer Convolutional Features for Edge Detection
Other
761 stars 259 forks source link

请问 BSDS500 的 human performance 是如何计算出来的? #92

Open desti-nation opened 5 years ago

desti-nation commented 5 years ago

以及多个 groundtruth 融合为一个的计算方法,是不是因文章而异呢

yun-liu commented 5 years ago

我看到提human performance最早的文章是这篇Learning to detect natural image boundaries using local brightness, color, and texture cues,Malik大佬2004年的tpami,但是他也没有说具体的做法;但是估计就是找一个人标了一些图片,去和ground truth比。

yun-liu commented 5 years ago

多个ground truth的融合,目前看到的代码里都是采用取平均的方式

desti-nation commented 5 years ago

谢谢您 非常感谢

ZhouCX117 commented 2 years ago

@yun-liu 您好,我看RCF里面用的是最后一个结果来比对groundtruth里面的多个结果来取得的ODS。您的意思是将提供的多个groudtruth求平均得到一个groundtruth(类似于一个label的生成过程),然后再与这多个grooundtruth求ODS嘛?

我这样计算了一下,得到的ODS远大于0.803,0.9以上的水平。请问您有空再看下这个问题吗?

yun-liu commented 2 years ago

@ToBeNormal 不是这样的。关于怎么评测边缘质量这个问题,您可以阅读一下benckmark里的评测代码:https://www2.eecs.berkeley.edu/Research/Projects/CS/vision/grouping/resources.html

简单来说,是将预测结果与每个ground-truth对比,再整合所有ground-truth的对比结果得到最终的评测结果。

yun-liu commented 2 years ago

@ToBeNormal 我不太懂您的问题到底是啥。如果您问的是Human performance是怎么计算的,请参考我上面的回答;或者建议您直接向数据集的提供者咨询

我看到提human performance最早的文章是这篇Learning to detect natural image boundaries using local brightness, color, and texture cues,Malik大佬2004年的tpami,但是他也没有说具体的做法;但是估计就是找一个人标了一些图片,去和ground truth比。

ZhouCX117 commented 2 years ago

@yun-liu 您好,感谢您的回复。那我明白了。我之前的理解是,直接用数据集中的ground truth和ground truth来做多对多的对比得到。您说另外找一个人标这些测试图片,去和gt做对比倒也合理,但是不是对这个人有所选择。

一个预测结果和每个grouth-truth做对比的流程,也就是现在的评测指标计算方法我是清楚的。我现在遇到的问题就是如果有多个预测结果,而且我不想给他融合成一个结果的情况下,我应该怎么计算评测指标?

也就是多个预测结果和每个ground truth对比后,如何计算ods和ois。

yun-liu commented 2 years ago

@ToBeNormal 一般情况下,模型的预测只能有一个结果,不光边缘检测,其他问题也是。试想一下,现实中的application,也不可能出现输出N个结果的情形。如果您不融合,那就有N个预测,分别评测获得N个预测的结果。

我猜测您可能在想,怎么用这N个结果一起去评测,获得一个更好的评测结果。那这样就是不公平的对比了,相当于是,您想从N个结果里手动地(和ground-truth对比后)去挑一个最好的。这个想法是不符合实验规范的。

ZhouCX117 commented 2 years ago

@yun-liu 您好,感谢您的回复。现有的方法是先将多个side output的结果做融合得到一个prediction然后和每个ground truth对比求出ods、ois等性能。

不知是否可以,先将每个side output的结果和每个ground truth做对比得出性能指标,然后再在性能指标level上进行融合呢?

yun-liu commented 2 years ago

@ToBeNormal 上面给您解释了,您的这个想法是不符合实验规范的。不能拿测试集的ground truth去refine预测的结果

@ToBeNormal 一般情况下,模型的预测只能有一个结果,不光边缘检测,其他问题也是。试想一下,现实中的application,也不可能出现输出N个结果的情形。如果您不融合,那就有N个预测,分别评测获得N个预测的结果。

我猜测您可能在想,怎么用这N个结果一起去评测,获得一个更好的评测结果。那这样就是不公平的对比了,相当于是,您想从N个结果里手动地(和ground-truth对比后)去挑一个最好的。这个想法是不符合实验规范的。