deepcache学习笔记

DeepCache
原理
下采样属于浅层特征,上采样属于深层特征,去噪过程中的相邻步骤在深层特征上表现出显著的时间相似性,即连续步骤之间的变化通常较小。
从图中可以看出其实现思路,在上采样的倒数第二块的结果作为cache,和上采样第一个块拼接作为输入到下一个timestep的上采样的倒数第一个块。
扩展 1:N
同一个缓存可以在多个时间步中使用:
-
均匀: 缓存的特征每计算一次,可以在后续的N−1步中重用,总共完整推理 T/N 次。
-
非均匀:靠近开始和结束距离短,中间距离长。
非均匀的原理是由于特征的相似性并不是在所有步骤中都保持不变,因此可以对那些与相邻步骤相似度相对较小的步骤进行更多采样:
第一个公式的意思是首先通过linear_space(start, end, interval) 在 start 到 end 之间(不包括 end)均匀地生成 n 个数字,第二个公式的意思是,通过unique_int(·) 将数值转换为整数,并确保生成的时间步长是唯一的,其中 c 是选择中心时间步长的超参数,时间步长索引的变化呈平方,即随着远离中心时间步长,索引的频率会以平方的方式变化。
deepcache-webui-插件
这边是github上aria1th,https://github.com/aria1th/sd-webui-deepcache-standalone
相似的还有deepcache-forge插件 https://github.com/LoganBooker/sd-deepcache.