hellozhuo / pidinet

Code for the ICCV 2021 paper "Pixel Difference Networks for Efficient Edge Detection" (Oral).
Other
445 stars 69 forks source link

输出的图片的含义 #12

Closed yuyouyu32 closed 2 years ago

yuyouyu32 commented 2 years ago

作者你好,你做的实在是太棒了!因为课程要复现论文,我也不是CV领域的,所以我的问题可能有些幼稚,我想询问一下自己的图片输入之后,输出的一张长图片各个小图片是不是不同的edge map的结果?另外输出了一张被裁剪过的图是最终的结果吗?最后我还有一个小问题,我输入了一张1200W像素的图片就提醒我显卡内存不足了,我显卡内存是4G,我主要想知道为什么一张1200W像素的照片为什么能填满4G的显存,如果您有空解答我的问题,我将不胜感激!!!

zhuoinoulu commented 2 years ago

你好, 感谢你的支持. 各个小图片从左至右依次是stage 1-4的edge map和final edge map. 另外那张输出的就是final edge map, 也就是对应小图片里的最后那一张, 只不过小图片都是像素值取反了(黑底变白底), 每一张edge map都是和输入图片分辨率是一样的,没有剪裁. 因为程序占用的内存不只包括输入图片, 还要考虑中间生成的特征图, 所以实际需要的内存要比原图占用的内存大很多. 可以把图片resize一下再运行, 一般resize成几百乘几百效果就差不多了

yuyouyu32 commented 2 years ago

谢谢您的回答!!!祝你科研顺利~

yuyouyu32 commented 2 years ago

您好,抱歉还要打扰您一下,在阅读您的论文的时候,我对您设置的Loss Function有些疑惑。为什么在yi<η时,loss为0,β is the percentage of negative pixel samples and α = λ · (1 − β).这句我也有些疑惑,关于β的定义,negative pixel samples的含义是什么(我真的不了解,不好意思啊)。在Loss Function设置的时候,如果p的值肯定小于1的话,y=0 或者 y>η,两者的Loss都 > 0,如何让PiDiNet学习到边缘的区别?(非常感谢您的回答,也非常抱歉再次打扰您了,如果您有空解答的话,我将不胜感激!!!)

zhuoinoulu commented 2 years ago

你好,这个loss我们照搬的 [RCF, CVPR 2017, TPAMI 2019]. 本质上是binary cross entropy loss. 文中的公式应该加个负号的(感谢你的发现,貌似之前RCF也没加,回头我再确认一下),不然loss算出来就是负数。 这个loss的目的就是当y=0的时候让p靠近0, 因为p越接近0 loss就越小。 y>η时让p靠近1.

zhuoinoulu commented 2 years ago

可以具体参考RCF的描述。简单来说,就是在标注的时候会对图像中每个像素都做标注,negative pixel samples就是标注成背景(y=0)的像素(比如有n个), positive pixel sample就是y>η的像素(有m个),其余的像素既不是背景也不是edge, 不参与loss的计算。β就是n/(n+m).

yuyouyu32 commented 2 years ago

非常感谢您的详细解答!~~再次祝您一切顺利~