RAISR 静态图片超采样算法的理解

本文介绍RAISR图像超分算法,其思想是先双线性插值放大2倍,依据放大图像点周围梯度特征训练不同卷积核,还原时求梯度特征并找到对应卷积核进行卷积运算。还阐述了检测算法步骤,包括预训练模型和超分算法,最后提及工程细节及相关问题。

RAISR(Rapid and Accurate Super Image Resolution)

 

这个算法看了一些介绍 大概理解 了,觉得比较有意思 ,在此记录一下:

思想是先通过双线性插值 放大2倍, 放大2倍的图像里 每个点 根据矩形 周围 [-5, 5] 范围内的梯度特征 作文章, 梯度特征可以版角度 angle, 强度 strength , 相关性coherence 三个参数,

训练阶段 不同角度 、强度、相关性 的组合 训练 不同的卷积核。

还原阶段先求梯度特征,再找到对应的卷积核 ,卷积运算还原。

注 : 此算法测下来与 espcn 速度和质量上都有很大差距。

以下是 检测算法的步骤:

 

一 假定 2 x 2 放大场景,预训练模型

一个点放大到 2x2 产生4个位置, 每个位置为中心生成一个11x11 的块,计算这个块内 由梯度生成的三个特征:  角度(归一化24份),强度(归一化3份),相关性(归一化3份)。

这样 根据特征: 分成 24 x 3 x 3  x 4 个桶, 每个桶 用神经网络 训练 一个 11 x 11 的卷积核。

二 超分算法

2.1  提取图像YPbPr 中 Y 分量作为处理的输入

这个好理解,人眼通常对亮度比较敏感,很多算法只处理Y

 

以下是每个点逐个处理:

2.2 每个点提取水平,垂直周围 [-5,5] 的 11x11 矩形区域 作为特征提取输入, 跟训练时一样。

2.3 先计算 11x11 mat 的 水平梯度和垂直梯度

    工程细节上有些个人的见解:

    梯度矩阵 gx/gy 可以分别用一个 11x11 的矩阵循环使用, 比如每向右移动一个像素 ,其实梯度矩阵就换了一列的数。

        每向下移动一列,梯度矩阵换了一行的数。

        以前的经验是,使用小的循环矩阵,每次扫描时重新计算一行一列梯度会比计算和存储一个大的梯度积分图还快, 

        原因是 积分图在大图像时不容易命中 cpu mem cache.  cpu cache 的速度可能是内存几十甚至上百倍。

          ^

          |

  x,y右移时,这一列可用来存 x + r + 1 这一列的梯度 (r=2时)

 

   B 新的 gx1,gy1 是理论上 gx,gy 矩阵循环移动后的结果, 当成gx,gy 应该不影响最后的计算,下面再细说

 

2.4    gx,gy 均展开成1x121 的向量dx, dy , 再合到一起组成 2x121 的向量 G

G = 「dx

            dy 」

 

2.5  计算 矩阵 X = G * G.T 的特征向量和特征值

 计算公式忘记了, 这里继续说我的观点, 2.3 里得到 gx1, gy1 当成 gx,gy 的情况下计算出来的 X 结果是一致的

 

X = 「 gx1 *gx1.T ,         gx1 * gy1.T

             gy1 * gx1.T,         gy1 * gy1.T 」

 

X 的结果里每个值都是 gx1, gy1 两两4个组合对应元素乘积之和, 同样也等于 gx,gy 对应元素乘积之和

X 为 2x2 的矩阵, 得到特征向量 (fx, fy),  特征 值(r1, r2)

 

2.6 得到 角度 angle, 强度 strength, 一致性coherence 三个参数:

angle = arctan(fy, fx)   

strength =  max(r1, r2) / (r1 + r2)

conherence =  abs(sqrt(r1) - sqrt(r2) )/  abs(sqrt(r1) + sqrt(r2))

 

angle 和 strength, conherence 归一化到 (0~23), (0~3), (0~3)

以前弄过一个不要求精度的查找表的 arctan(dy,dx) 算法, 原理是 在 0~45度范围内 arctan 函数近似 线性, 当 dy 绝对值>dx时 就算 90度 - artan(dx, dy),  

最后 根据dx,dy 正负确定 象限来变换 > 90的情况。 复杂度 两组分支判断 + 一个除法, 比 math 函数 arctan 高不少。

这里分 24 份精度更没大问题。

 

2.7 从预训练模型里算出 卷积核的索引, 然后把目标图像位置换成与卷积核的 卷积

kernel = pretained_kernels[ angle * 9 + 3 * strength + conherence ] [ pos_idx ]

 

kernel 展成 121个元素的一维与 图像 patch 的 121 个元素两两乘积 再求和 -> 卷积

 

2.8 网上说这样处理完之后还要个做个 CT-Bleng算法来消除阴影

这个是否没必要? 有空再研究

最后有个问题, 很多对于视频的处理算法 都要做 "3D" 的处理, 相临帧之间要做个滤波来避免效果的跳变。 

RAISR没想到可以做类似的处理。当然还是要看效果再说有没必要。以前做去雾算法时不平滑相临帧的参数时效果上会闪烁得很厉害。

 

<think> 嗯,用户正在询问ComfyUI工作流生成的视频模糊像雪花的原因。这个问题很具体,看来用户在使用ComfyUI时遇到了视频质量问题。让我仔细分析一下用户提到的"模糊像雪花"这个描述,结合提供的参考资料来思考可能的原因。 从引用[1]中关于UNet模型故障排查的部分,有提到"图像局部扭曲"和"显存爆炸"等问题。用户遇到的雪花状模糊可能和这些技术问题相关。值得关注的是引用[1]中明确列出了模型不匹配的三大症状,其中"图像局部扭曲"直接对应UNet层数不匹配的情况,而"显存爆炸"则可能导致渲染异常。 再看引用[3]提到的MATLAB生成雪花图片算法,虽然这是完全不同的技术,但其中关于雪花图案生成的数学原理——通过分形算法创建六边形晶体结构,倒是给了我一个启发:视频中的雪花噪点是否可能是渲染过程中的数学计算错误导致的? 用户特别提到是"视频"模糊,而不是单张图片,这意味着问题可能出在帧与帧之间的处理上。引用[1]中提到的AnimateDiff插件就是专门处理帧连贯性的,如果这个环节出现问题,很可能导致视频质量下降。 考虑到引用[4]列出的各种负面提示词,用户可能在提示词工程上也有改进空间。那些"模糊"、"变形"、"低质量"等负面词汇如果使用不当,反而可能强化了雪花噪点的效果。 综合来看,可能的原因应该有几个方面:首先是核心的模型匹配问题,特别是UNet架构一致性;其次是显存限制导致的量化失效;然后是视频专用插件如AnimateDiff的配置;最后是提示词中的负面因素被过度强化。 在回答时需要给出具体可操作的解决方案,比如先检查模型哈希值匹配,再测试不同显存模式,同时调整视频帧插值参数。用户明显是个技术使用者,所以可以适当深入技术细节,但要注意用中文解释清楚关键术语。 </think> ComfyUI工作流生成的视频出现"模糊像雪花"的问题,通常由以下原因导致,结合引用内容分析并提供解决方案: --- ### ⚠️ 核心原因及解决方案 1. **模型架构不匹配** - **表现**:视频局部扭曲、雪花噪点、细节失真 - **根源**:UNet层数/结构与Checkpoint模型不兼容(引用[1]) - **解决方案**: - 检查所用**Checkpoint模型**与**UNet架构**是否匹配 - 更换同架构模型(如SD1.5与SD1.5专用工作流配对) 2. **显存不足导致量化失效** - **表现**:动态模糊、雪花状像素块、帧断裂(尤其在视频生成时) - **根源**:FP16/FP8量化失效引发渲染错误(引用[1]) - **解决方案**: ```bash # 启动ComfyUI时启用低显存模式 python main.py --lowvram ``` - 或使用`--medvram`平衡模式 3. **帧间连贯性插件配置错误** - **表现**:帧过渡出现雪花噪点、动态模糊异常(引用[1]的AnimateDiff应用场景) - **根源**: - AnimateDiff插件的帧插值参数(如`denoise=0.7`)设置过高 - 关键帧采样率(`frame_rate`)出模型上限 - **解决方案**: - 降低去噪强度(建议`denoise=0.4~0.6`) - 限制帧率:SD1.5模型建议≤24fps 4. **负面提示词污染(Negative Prompt)** - **表现**:全局雪花噪点、材质失真(引用[4]的负面词汇关联) - **根源**:提示词包含`noisy, blurry, deformed`等破坏性标签 - **解决方案**: - 移除负面提示词中的: `blurry, noisy, deformed, low quality, jpeg artifacts` - 添加正向强化词:`sharp focus, film grain, 4k detail` --- ### ️ 进阶排查流程 ```mermaid graph TD A[雪花模糊症状] --> B{检查模型兼容性} B -->|不匹配| C[更换同架构Checkpoint] B -->|匹配| D{启用--lowvram模式} D -->|症状消失| E[显存不足导致] D -->|仍存在| F[调整AnimateDiff参数] F --> G[降低denoise至0.5] G --> H[限制输出帧率≤24fps] H --> I[净化负面提示词] ``` --- ### 📌 关键操作示例(以AnimateDiff工作流为例) 1. **模型校验**(引用[1]原则) ```python # 在自定义脚本中验证模型哈希值 if get_model_hash("v1-5-pruned-emaonly.safetensors") != "6ce0161689": raise ValueError("UNet架构不兼容!") ``` 2. **视频节点参数优化** - 将`AnimateDiffLoader`的`denoise`从0.7下调至**0.5** - 在`VideoCombine`节点设置`frame_rate=20` 3. **提示词清洗**(对抗引用[4]的负面效应) ```markdown 正向提示词:masterpiece, 8k, sharp focus, cinematic lighting 负面提示词:删除所有模糊/噪点相关词汇,仅保留:text, watermark, signature ``` --- ### 相关问题 1. 如何验证ComfyUI中Checkpoint与UNet的兼容性? 2. AnimateDiff插件导致视频闪烁该如何调试? 3. 哪些显存优化技术能提升ComfyUI视频生成质量? 4. 负面提示词中的哪些词汇最容易导致图像噪点? > 提示:当雪花噪点集中在运动物体边缘时,优先检查帧插值算法;若全屏随机噪点,则需排查显存或模型问题[^1]。可通过逐步禁用插件的方式定位故障模块(如暂停AnimateDiff后生成静态图测试)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

walletiger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值