当前位置:AIGC资讯 > AIGC > 正文

解决AI绘画naifu版突破批量100限制

这个问题困扰了我很久,搜遍全网无果,询问大佬无果,我自己摸索的解决方法在本文的最后,如果你没兴趣看问题解决的过程,可以直接看文章最后面的解决办法即可,如果你有兴趣看看,请听我娓娓道来。

AI绘画目前主要分为webui版本和naifu版本,webui版本功能强大,naifu版本使用简单,虽然他们使用相同的模型,但是同样的关键词和设置,产出的图像差别不小,我个人更喜欢naifu版本的出图,尤其是在某些特定词汇下,我发现naifu版本的出图完爆webui。网上搜索了一下,说是webui设置问题,但是即便按照教程设置,webui在特定词汇下的表现仍然不尽人意,想来想去我还是决定使用naifu版本进行批量出图。

但是naifu版本存在一个不足就是,默认最多一次出图100张,而且不好修改。

先来看一下naifu的界面:

默认naifu界面一次性最多出图100张,这个问题在最初的版本就存在,当时我为了多出图,于是修改index.html源码(英文版),找到“Number of Images:”下方的“input type="range" min="1" max="100" step="1"”中的max值为999,控制滑块最大值,成功解决问题,然而目前新版本的naifu,使用这个方法失效了。

中文版的修改办法,修改_naifu_speed\static\_next\static\chunks\pages\index-9063cb5cbe951293.js中的如下图所示的位置,可以搜索“数量”这两个字。

 实测,即时更改了滑块的最大值,并且滑到最右侧,如下图所示,一次仍然只能产出100张图。

尝试很久没有结果,于是我决定在naifu整个网页搜索,因为可以初步判断这个指令是naifu发出的,跟其他模型什么的应该没关系,结合启动bat的内容,更加坚定了我的这一个想法。

于是我在整个naifu目录搜索100这个数值,得到的结果如下:

于是,略过明显不是的结果,然后逐个查看,检查,测试,可惜的是结果仍然一无所获!

尤其是发现\_naifu_speed\hydra_node\sanitize.py中下图这个值的时候,当时真的很高兴,以为终于找到答案了。

 然而,经过修改实测,这并不是想要的值,无效!

这下子这个问题陷入了无解的境地,但是我不愿意放弃呀!

于是我决定亲自调试,由于是python代码,于是我用了pycharm,打开_naifu_speed目录,定位到main.py文件。

因为环境配置问题,只能结合函数以及变量名称,逐步加入print()语句,找到执行顺序,这也是一个比较耗时的过程,于是代码定位到这里,这里是保存影像的位置,其中images变量的大小最大只能为100,那么我只需要改变这个变量的大小不就完事儿了吗?!

 于是跳转+分析+测试,来到了这里:

接着,终于找到了images的产地:

我心想着,我多append几次,说不定可以呢?

结果,数量是上去了,但是生成了4张一样的图!

这肯定不是我想要的,分析了一下,因为重复append的参数是相同的,而我们需要不同的随机初始化参数,不然生成重复的图就没意义了!

于是,又继续分析+测试+跳转,来到这里,经过反复测试这里添加代码可以解决问题:

 简单总结就是,在\_naifu_speed\hydra_node\models.py中,上图的位置,添加如下代码:

        if request.n_samples > 90:
            request.n_samples += 900
            print('{0} pictures will be generated!'.format(request.n_samples))

当然,这段代码是方便我自己使用的,你可以按照自己的想法修改,这段代码的意思是,当输入数量大于90的时候,输入数量会增加900,实测可以正常工作,突破了100的限制,并且没有生成重复的图像!

以上肯定不是最完美的解决办法,但是目前对我来说,终于解决了问题!如果你有更好的方法,欢迎交流讨论!

更新时间 2023-12-19