BiRefNet icon indicating copy to clipboard operation
BiRefNet copied to clipboard

动态模型的一点小疑惑

Open Code-dogcreatior opened this issue 3 months ago • 13 comments

我注意到动态模型范围是256x256~2304x2304,但是其实这并不意味input在这个限制中对吧,那么如果比如直接扔进去一个3000x3000或者更大的,我想知道的是这个效果实际上会有什么偏移或者变化嘛?因为我在考虑为了效率有没有必要直接限制在2304最大边长再扔进去。

Code-dogcreatior avatar Aug 30 '25 06:08 Code-dogcreatior

分辨率不在训练时见过的范围内, 多少是会效果变差的. 可以看BiRefNet_dynamic的模型主页里和BiRefNet的对比. 当然你也可以先试试, 直接用我那个在线demo就好. 对于dynamic的模型, 不输入input resolution, 就是会原分辨率直接推理的.

ZhengPeng7 avatar Aug 30 '25 06:08 ZhengPeng7

okok,我也发现了这个问题,我搞得比较简单,直接前端pica做了压缩,不过我肉眼看到大致问题是如果对于动态模型大于2304后,那么图像的例如发丝交替部分会被识别到,但其实是背景,总体测完还是感觉2304是一个最优了,再大(例如3300px)部分情况(例如带有挂饰相对尺寸大一些感觉会被卷积到剔除,但是2304不会),感谢超快的回答!

I like code! @.***

Code-dogcreatior avatar Aug 30 '25 06:08 Code-dogcreatior

确实的, 可以理解为>2304的对模型来说是一种意义上的zero-shot. 那可以呀, 可以2304先用着👍

ZhengPeng7 avatar Aug 30 '25 06:08 ZhengPeng7

Image Image Image

上面三幅图分别为另一个工具测试抠图,动态模型和刚提到的工具放大结果对比,实际上这个也困惑我很久了,原图大小其实是1706x1280,远小于2304,但是为什么依然可能如截图所示出现类似锯齿的现象?早在最初general模型1024发布时,其实我做了很多测试,发现1024模型对于1440resize有 嗯 非常离谱的提升效果,只不过忽略那些快速增加的推理显存占用来说是一个快速提升的方式,而且在很多场景下都适配,一定程度也改善了锯齿问题,所以我当时认为问题是出在了图像resize后还原回原图时,如果尺寸差距过大则会放大锯齿状而导致的问题,但是最近发现其实在较为直(其实是我理解的直)物体例如这个蒲公英问题上,我不认为图像尺寸缩放逻辑依然会对其导致一些影响,所以从学术角度上比较好奇,想了解一下是什么原因导致的,我看了论文,但是没太理解过程中哪一步可能会影响到这里?但是感觉就是 理论上不应该会出现这个问题,因为部分情况下效果还是很不戳的!!!

Code-dogcreatior avatar Sep 04 '25 04:09 Code-dogcreatior

感觉提供详细的反馈. 这后面两幅分别是什么的结果图呢? 之前确实也以为有很多锯齿是可能resize导致的, 而不是单纯预测的问题, 以为dynamic这样可以更好地缓解这问题. 不过较直也是可能的, 除非插值的方向刚好是线条延展的方向, 你可以想象一下.

ZhengPeng7 avatar Sep 04 '25 14:09 ZhengPeng7

三幅图中第二幅是dynamic放大图,第三幅是第一幅图替换背景后的放大图,仅作为对比出现。我注意论文中提到了auxiliary gradient supervision,梯度按照我的理解应该是为了体现颜色或亮度变化率的表现,但是这里有没有可能会导致模型对于边界追求而对齐像素网格导致的?我总是觉得商用模型他们在流畅度上一些处理并不应该采用类似于抗锯齿技术,我以前也有过一些测试,但是适配图像区间很小,而且很容易出现过度分割图像问题,导致边缘外扩。

Code-dogcreatior avatar Sep 05 '25 02:09 Code-dogcreatior

不好意思, 不知道什么原因之前看了后忘记回了😂 今天又来回顾issue有没有遗漏的才看到.

第三张图的效果感觉确实好不少啊, "替换背景后的放大图"的意思就是说他是Ground Truth图是吧. 但第二张图那种对于发丝突出部分的时黑时白的问题其实是深度模型比较general的问题, 而不一定是锯齿的问题 (锯齿也会导致, 但按我的理解这导致的图会比较规律的zigzag) -- 其实就是对于那些区域, 模型的置信度很低, 因为很细模型不缺准他是一起的物体区域还是背景, 所以某根发丝的中间有些部分有黑灰的.

这个是一个比较独立普遍的问题, 我后续也会对他尝试进行专门攻克的, 希望后续能集成进来.

ZhengPeng7 avatar Nov 11 '25 07:11 ZhengPeng7

我尝试修改了各种环节的resize流程 包括fast-foreground-estimation 发现都有这个锯齿问题 我参照InSPyReNet这个项目进行了改进但是仍然没有效果

InSPyReNet的数据集为1024x1024 我输入了同一张为8k*8k的图像 无论如何InSPyReNet都会将边缘进行某种抗锯齿处理 但是我的尝试并没有解决问题 左图为BiRefNet生成 右图为InSPyReNet生成

Image Image

EndrrSB avatar Nov 16 '25 14:11 EndrrSB

Hi, @EndrrSB , 我有点困惑, 你这里框住的两者我感觉InSPyReNet好像都是能多预测一些像素, 但是没有太明白你说的锯齿的问题, 两者框内看起来都不是太有锯齿?

ZhengPeng7 avatar Nov 16 '25 15:11 ZhengPeng7

Hi, @EndrrSB , 我有点困惑, 你这里框住的两者我感觉InSPyReNet好像都是能多预测一些像素, 但是没有太明白你说的锯齿的问题, 两者框内看起来都不是太有锯齿?

应该是截图压缩了的问题 左图有极为明显的 上采样缩放问题(我的推测)

Image

EndrrSB avatar Nov 16 '25 15:11 EndrrSB

我这里确实看不出来的. 而且如果是8k x 8k, 那么1024x1024的结果图resize过去确实是很可能有锯齿的, 尤其是代码里直接用LINEAR的插值.

ZhengPeng7 avatar Nov 16 '25 15:11 ZhengPeng7

如果InSPyReNet能多预测像素的话 那应该不会出现大面积黏在一起的情况 这种情况看起来像超分算法中的效果 再加上BiRefNet结果出现的 锯齿像素 我第一时间想到的就是resize问题 而不是模型的问题

EndrrSB avatar Nov 16 '25 15:11 EndrrSB

InSPyReNet有384x384的模型我测试一下看看效果如何再来讨论

EndrrSB avatar Nov 16 '25 15:11 EndrrSB

我来了 InSPyReNet的384x384没模型输出结果有严重问题mask有严重偏移 无法加入比

我放了之前对比的原图在这里 我目前没有思路继续测试了 看看之后空了再想想办法 谢谢大佬 https://drive.google.com/file/d/1oOYlX6disUqIYVo07lV1gCGQOmZ8pyke/view?usp=sharing

EndrrSB avatar Dec 09 '25 17:12 EndrrSB

好的, 但是你的google drive文件夹没有开共享, 我申请了, 你开给我 我可以给你看看.

ZhengPeng7 avatar Dec 09 '25 21:12 ZhengPeng7

你可以看下他预处理图像那里, 我记得InSpyReNet默认是1280x1280 还是说长边控制到1280 然后比例不变地去resize的.

ZhengPeng7 avatar Dec 10 '25 07:12 ZhengPeng7

我照搬了InSpyReNet的所有形式的预处理方法和resize恢复原图大小的方法均没办法找出问题 让后又测了几十张8k图片 发现只有那一张会出现这种问题 而且问题集中在人物左边的部分 右边几乎没有这种问题 感觉实际上就是上文提到的太细的地方置信度低的问题 是我没仔细看耽误大佬时间了 🙇‍♀️(鞠躬) 谢谢大佬一直耐心解答

EndrrSB avatar Dec 11 '25 17:12 EndrrSB

客气啦, 那确实是太巧了. 有问题可以随时re-open issue继续留言哈.

ZhengPeng7 avatar Dec 11 '25 22:12 ZhengPeng7