continue-revolution / sd-webui-segment-anything

Segment Anything for Stable Diffusion WebUI
3.38k stars 204 forks source link

[Feature] 建议将Segment anything放在一级菜单上 #104

Open amimi818 opened 1 year ago

amimi818 commented 1 year ago

目前的Segment anything扩展是和ControlNet一样嵌入在文生图和图生图页面中,使用起来图片显示区较小且页面上下拖动特别大,不太方便,建议:

  1. 将Segment anything作为一个一级菜单功能,做成独立的页面(类似Extras和Image Browser),页面可以自由设计;
  2. 在Sam页面对图片进行完相关分割处理后,再把处理后的图像/蒙版发送并切换到相应的文生图或图生图的功能区(类似下图Image Browser的发送功能),在相应功能区显示传送过来的图片或蒙版;用户也可以在Sam页面中对处理后图片/蒙版进行保存(相当于有了抠图功能);
  3. 用户可以在文生图或图生图上进行自己的调整/生成(不归Sam管了)。

这样处理,功能切分更清晰也便于用户使用(目前的方式,在点“生成”的时候有点猜盲盒的感觉,因为看不到重绘区和ControlNet区的图像信息)。

此外,还有一个小问题,目前在鼠标点选黑红点时,似乎点中的不是鼠标小手的食指尖部位,有点别扭,不知能不能调整。

上面是我个人在使用中的一点感受,供参考,谢谢。这么好的扩展,如果再提升一下使用便利性,一定会更加受欢迎。

6CAB24C6-8138-4057-AF9D-D0BD07F07C39 3DFAFC07-1290-4583-8185-0A398B73A080
continue-revolution commented 1 year ago

目前的Segment anything扩展是和ControlNet一样嵌入在文生图和图生图页面中,使用起来图片显示区较小且页面上下拖动特别大,不太方便,建议:

  1. 将Segment anything作为一个一级菜单功能,做成独立的页面(类似Extras和Image Browser),页面可以自由设计;
  2. 在Sam页面对图片进行完相关分割处理后,再把处理后的图像/蒙版发送并切换到相应的文生图或图生图的功能区(类似下图Image Browser的发送功能),在相应功能区显示传送过来的图片或蒙版;用户也可以在Sam页面中对处理后图片/蒙版进行保存(相当于有了抠图功能);
  3. 用户可以在文生图或图生图上进行自己的调整/生成(不归Sam管了)。

我觉得这个提议本身还不错,因为本身txt2img和img2img的sam功能就有很大的重合。然而鉴于controlnet也有同样的问题,这个插件已经发布快2个月了,再加上这个更改比较aggressive,我需要在更新我的TODO list之后,再考虑这个更新是否合适,以及该怎么样实现你的feature request,所以可能需要等一段时间。

这样处理,功能切分更清晰也便于用户使用(目前的方式,在点“生成”的时候有点猜盲盒的感觉,因为看不到重绘区和ControlNet区的图像信息)。

我并不觉得是开盲盒,我只是没有把图片发送到重绘区域而已,但是用户只要看到了生成后生成图像右侧的controlnet control image,就可以确认我的插件已经起了作用。

此外,还有一个小问题,目前在鼠标点选黑红点时,似乎点中的不是鼠标小手的食指尖部位,有点别扭,不知能不能调整。

目前的点选是用javascript写的,我目前也接触到了一些用python gradio写的点选项目,也许会考虑在未来的更改中放弃javascript。

amimi818 commented 1 year ago

感谢回复。

确实我的提议是有些颠覆的,所以叫你“继续革命”嘛。

关于盲盒的问题,我的意思是在点”生成“之前,看不到重绘区域和ControlNet区域的图像,心里有点没数(有时候也会忘记勾选Copy to Inpaint Upload & ControlNet Inpainting)。 可不可以在点“生成”之前(比如勾选Copy to Inpaint Upload & ControlNet Inpainting之后),先把Sam处理的结果图片/蒙版发送到重绘区和ControlNet区显示出来呢。

amimi818 commented 1 year ago

得抓紧了,inpaint anything来抢地盘了。。。

https://github.com/Uminosachi/sd-webui-inpaint-anything

continue-revolution commented 1 year ago

inpaint anything不是早就有了吗,我觉得那个工作并不是一个好的工作,很多feature在Grounded-SAM里早就有了。而且我早就注意到这个插件的存在了,我觉得让社区自己做选择就好。

https://github.com/geekyutao/Inpaint-Anything https://github.com/geekyutao/Inpaint-Anything/issues/29

amimi818 commented 1 year ago

我不是希望像inpaint anything那样在扩展里做重绘等工作(各干各的活,重绘工作还是由SD和ControlNet来进行),而是希望像它那样独立成为一个页面,重新设计页面布局及操作,提升使用的便利性,目前Segment anyting的操作有点不太方便,可能会影响很多人的使用感知。

continue-revolution commented 1 year ago

我觉得这个时候(指插件功能趋于完善和成熟,绝大部分用户已经习惯了目前的用法)再做如此大的修改让用户习惯新的用法是有些不太合适了,所以我不太可能在master分支实现你的需求。但是如果我有空的话(至少得等到我的TODO list做完以后,也许得等到数个月后)也许可以在另一个分支实现你的需求,然后让用户自行选择。

chace20 commented 1 year ago

关于盲盒的问题,我的意思是在点”生成“之前,看不到重绘区域和ControlNet区域的图像,心里有点没数(有时候也会忘记勾选Copy to Inpaint Upload & ControlNet Inpainting)。

这个点比较赞同。现在这种隐式处理的方式非常反直觉,我当时是看代码才知道原来是这样用的(也可能是因为我没有去仔细看README,但我觉得大部分用户不会那么仔细去看README的)。之前有个Issue也有人提过这个问题。只能说新手上手成本会有点高,得学习并接受这种用法。

可能把勾选 Copy to Inpaint upload的隐式行为,改成发送到Inpaint并展示会更符合直觉?

我觉得这个时候(指插件功能趋于完善和成熟,绝大部分用户已经习惯了目前的用法)再做如此大的修改让用户习惯新的用法是有些不太合适了

这个也赞成,工具类做break change会有风险,可能不如另外做个独立的插件。另外开源社区更多还是生态互补,没必要别人有的我也要去做一遍,毕竟这也不是一个盈利项目,也不存在抢地盘的问题。

关于一级菜单的问题

目前接触过的几个一级菜单的插件,比如wd-tagger反推、PBRemTools抠图,都是比较独立的工具。跟txt2img、img2img的关联比较少。而SAM插件跟Inpaint、ControlNet深度绑定,独立tab不见得使用上会方便多少,比如需要在独立tab和txt2img、img2img来回切,降低效率。

PS:“这个需求可以做,但是要加钱” (开个玩笑 😄 🐶

continue-revolution commented 1 year ago

这个点比较赞同。现在这种隐式处理的方式非常反直觉,我当时是看代码才知道原来是这样用的(也可能是因为我没有去仔细看README,但我觉得大部分用户不会那么仔细去看README的)。之前有个Issue也有人提过这个问题。只能说新手上手成本会有点高,得学习并接受这种用法。

这种“开盲盒”用法的来源是posex插件(直接把pose发送到ControlNet,无需预处理),主要原因是在posex时期没办法把pose直观的发送到ControlNet。当然另一种做法(指 发送到upload mask)应该也不难,但是是两种逻辑;但是因为ControlNet直到现在都还没有upload mask功能,而我的插件支持在txt2img下使用ControlNet inpainting,我希望txt2ing和img2ing下的用法统一,所以目前还不太可能做成不反直觉的版本。

之后的更新会把给txt2img ControlNet的upload mask功能加回来(之前remove掉了),因为这个PR没有被merge,短期内txt2img ControlNet不可能支持upload mask,而这个更新让txt2img ControlNet突然变得重要。

这个也赞成,工具类做break change会有风险,可能不如另外做个独立的插件。另外开源社区更多还是生态互补,没必要别人有的我也要去做一遍,毕竟这也不是一个盈利项目,也不存在抢地盘的问题。

同意,之后不会有大改,但是还会加feature。我觉得大家都有star是件好事,但是别人有的我可能也会借鉴(如果有必要),比如说很多人都不会配置GroundingDINO,之后可能会支持更易用(没有C++)但是效果和灵活性更差的YOLO。

目前接触过的几个一级菜单的插件,比如wd-tagger反推、PBRemTools抠图,都是比较独立的工具。跟txt2img、img2img的关联比较少。而SAM插件跟Inpaint、ControlNet深度绑定,独立tab不见得使用上会方便多少,比如需要在独立tab和txt2img、img2img来回切,降低效率。

确实,而且我还没收到别的类似的反馈,所以可能要么在一个单独的branch支持这个,要么在主分支让用户自选(不知道能不能做),要么鸽了(大概率,因为没那么多时间)

amimi818 commented 1 year ago

确实,而且我还没收到别的类似的反馈,所以可能要么在一个单独的branch支持这个,要么在主分支让用户自选(不知道能不能做),要么鸽了(大概率,因为没那么多时间)

虽然可能大家没有直接建议做一个一级菜单的反馈,但还是有一些增强性的功能需求的,比如希望分割后的图片/蒙版能保存等等。如果都集中在文生图/图生图界面中,一些附加功能可能太乱了(当然也和插件的功能定位有关)。 如果能单独做一个插件/或让用户自选就更好了,那样就可以秒杀inpaint anything、Remove background等插件。还是希望能把sam/dino做大做强,当然,要看你的时间了。

image
amimi818 commented 1 year ago

目前接触过的几个一级菜单的插件,比如wd-tagger反推、PBRemTools抠图,都是比较独立的工具。跟txt2img、img2img的关联比较少。而SAM插件跟Inpaint、ControlNet深度绑定,独立tab不见得使用上会方便多少,比如需要在独立tab和txt2img、img2img来回切,降低效率。

PS:“这个需求可以做,但是要加钱” (开个玩笑 😄 🐶

你的观点我基本都赞同,只是我实在觉得目前这种上下来回大幅度的拖动太不方便,可能还不如切换tab简便,或许WebUI把“生成”按钮固定了会好点(我看好像已经有人提类似Issue了)。