bilibili / ailab

5.63k stars 552 forks source link

一些问题 #37

Open oblessnoob opened 2 years ago

oblessnoob commented 2 years ago

为何1倍非超分反而不计划支持降噪?不超分也不降噪好像就是原图吧。。感觉好像降噪的定义和原来waifu2x不太一样,现在对于降噪的定义是什么?

现在这个“景深虚化”的追求感觉对于主观上的清晰度会有影响,未来会不会有锐度更高的模型?

另外快速模型势必要改架构吧,反正大概率也没法无缝兼容原来waifu2x的工程,是不是要考虑扔掉cunet然后再往里扔点这几年的新trick?比如classsr,ms3conv,ghostnet,动态卷积甚至是vit这种“dssq”架构

lj1995-computer-vision commented 2 years ago

1、有关1x我更烦恼的是怎么保留纹理,因为最低级别的降噪程度目前也自带一定纹理丢失,所以很可能训练的时候就不加噪了(除非想到了其他的保留纹理的方式,那就保留和2x3x4x一样的档位设置)。根据我的经验,为了纹理的保留,有必要再大尺度下进行计算(学界比较传统的认知是,在LR尺度下做主力运算性价比最高)。 参数的命名是根据训练加噪的程度来的,没有根据实际的降噪程度来命名,你提到的命名问题(有没有必要以实际降噪效果、程度作为命名),我之后想一下 2、锐度和纹理保留是一个很难平衡的trade-off,是可以继续加锐,因为我认为现在锐度已经很高(可能都过于高了)了,所以没有训练更高锐度的档位。现在的锐度已经观察到一些bad case了。 3、我调研过一些轻量化的训练方法和模块,不过等新的轻量级模型出来,大概率就不叫CUGAN了(因为结构没法再基于CUNet了)。 (1)我很喜欢ClassSR这种原理简单又有用的idea,但是他不适用CUNet结构,因为切patch了看不到全局,会丢失景深区域识别和纹理保留的特性; (2)MS3Conv本质上是一种结构上的改进。它的ab对照数据里,CARN是2018出的一篇指标很弱的baseline(SRResNet也是指标很弱的,baseline弱,提点很容易),文章2020年发表,参数/计算量上的提升其实不一定追得上2年的时代差带来的进步;另外太过复杂的结构会降低推理的效率(ESRGAN里面的RRDB就是一个非常正面的例子,结构简单有效,推理效率高),比起Flops我还是更想看到延迟或者吞吐这样的指标;比指标,我希望是看到以RCAN作为baseline的提升。 (3)改ViT的话,推理速度可能会比ESRGAN更慢。ViT系模型结构是实际推理效率远低于你能在论文里看到的FLOPS和参数量指标的结构,跑过的都懂。固然可以通过优化推理框架来提升ViT的推理速度,但是投入相同的研究成本,VGG也可以变得伟大。ViT的更大的意义我认为是提高领域的指标上限(从而开放pretrain模型给小数据集fine tune),条件是超大的训练集,代价是巨大无比,不过这个仓库不玩刷点哈~比较偏向实际,以及要多照顾大众普通玩家; (4)GhostNet用在图像识别上是有效的,但是我以前在low-level领域用他代替过conv跑过实验,掉点了,比较遗憾。


悄悄告诉你,根据我的经验,对于二次元超分来说,网络结构不是最重要的,PSNR也不是很重要(如果有更好的衡量动画重建质量的指标,求科普),我们其实应该去思考一些更本质的东西。

oblessnoob commented 2 years ago

1、有关1x我更烦恼的是怎么保留纹理,因为最低级别的降噪程度目前也自带一定纹理丢失,所以很可能训练的时候就不加噪了(除非想到了其他的保留纹理的方式,那就保留和2x3x4x一样的档位设置)。根据我的经验,为了纹理的保留,有必要再大尺度下进行计算(学界比较传统的认知是,在LR尺度下做主力运算性价比最高)。 参数的命名是根据训练加噪的程度来的,没有根据实际的降噪程度来命名,你提到的命名问题(有没有必要以实际降噪效果、程度作为命名),我之后想一下 2、锐度和纹理保留是一个很难平衡的trade-off,是可以继续加锐,因为我认为现在锐度已经很高(可能都过于高了)了,所以没有训练更高锐度的档位。现在的锐度已经观察到一些bad case了。 3、我调研过一些轻量化的训练方法和模块,不过等新的轻量级模型出来,大概率就不叫CUGAN了(因为结构没法再基于CUNet了)。 (1)我很喜欢ClassSR这种原理简单又有用的idea,但是他不适用CUNet结构,因为切patch了看不到全局,会丢失景深区域识别和纹理保留的特性; (2)MS3Conv本质上是一种结构上的改进。它的ab对照数据里,CARN是2018出的一篇指标很弱的baseline(SRResNet也是指标很弱的,baseline弱,提点很容易),文章2020年发表,参数/计算量上的提升其实不一定追得上2年的时代差带来的进步;另外太过复杂的结构会降低推理的效率(ESRGAN里面的RRDB就是一个非常正面的例子,结构简单有效,推理效率高),比起Flops我还是更想看到延迟或者吞吐这样的指标;比指标,我希望是看到以RCAN作为baseline的提升。 (3)改ViT的话,推理速度可能会比ESRGAN更慢。ViT系模型结构是实际推理效率远低于你能在论文里看到的FLOPS和参数量指标的结构,跑过的都懂。固然可以通过优化推理框架来提升ViT的推理速度,但是投入相同的研究成本,VGG也可以变得伟大。ViT的更大的意义我认为是提高领域的指标上限(从而开放pretrain模型给小数据集fine tune),条件是超大的训练集,代价是巨大无比,不过这个仓库不玩刷点哈~比较偏向实际,以及要多照顾大众普通玩家; (4)GhostNet用在图像识别上是有效的,但是我以前在low-level领域用他代替过conv跑过实验,掉点了,比较遗憾。

悄悄告诉你,根据我的经验,对于二次元超分来说,网络结构不是最重要的,PSNR也不是很重要(如果有更好的衡量动画重建质量的指标,求科普),我们其实应该去思考一些更本质的东西。

感谢长回复 1x训练时输入那边不加噪也不下采样还剩什么呢?是加一些传统噪声以外的artifact吗

classsr切patch看不到全局的事。。其实cugan的ncnn实现那边已经有个gap sync了(这边的实现没试过不知道orz),就算分了tile也能借助gap的真·全局感受野得到正确的景深信息不会再出block了,如果你们算力和头发足够薅的话也可以再深挖一下?(其实还有个脑洞,patch切法好像也可以偷师视频编解码那边二叉树宏块划分的想法,大片一致纹理直接划一个块内之类的)

ghost操作按他们的用法本来就会造成网络容量的下降,掉点也。。挺正常吧(除非是当加入新特征的用法提了容量还掉点就怪了) ghostsr没有直接用depthwise conv,换成shift操作了,看实验部分好像掉的也不多,计算量下降挺明显

(刚才不小心手贱close了,其实还有其它我看见过觉得可能有用的trick可是这里地方太小我写不下(x

lj1995-computer-vision commented 2 years ago

1、有关1x我更烦恼的是怎么保留纹理,因为最低级别的降噪程度目前也自带一定纹理丢失,所以很可能训练的时候就不加噪了(除非想到了其他的保留纹理的方式,那就保留和2x3x4x一样的档位设置)。根据我的经验,为了纹理的保留,有必要再大尺度下进行计算(学界比较传统的认知是,在LR尺度下做主力运算性价比最高)。 参数的命名是根据训练加噪的程度来的,没有根据实际的降噪程度来命名,你提到的命名问题(有没有必要以实际降噪效果、程度作为命名),我之后想一下 2、锐度和纹理保留是一个很难平衡的trade-off,是可以继续加锐,因为我认为现在锐度已经很高(可能都过于高了)了,所以没有训练更高锐度的档位。现在的锐度已经观察到一些bad case了。 3、我调研过一些轻量化的训练方法和模块,不过等新的轻量级模型出来,大概率就不叫CUGAN了(因为结构没法再基于CUNet了)。 (1)我很喜欢ClassSR这种原理简单又有用的idea,但是他不适用CUNet结构,因为切patch了看不到全局,会丢失景深区域识别和纹理保留的特性; (2)MS3Conv本质上是一种结构上的改进。它的ab对照数据里,CARN是2018出的一篇指标很弱的baseline(SRResNet也是指标很弱的,baseline弱,提点很容易),文章2020年发表,参数/计算量上的提升其实不一定追得上2年的时代差带来的进步;另外太过复杂的结构会降低推理的效率(ESRGAN里面的RRDB就是一个非常正面的例子,结构简单有效,推理效率高),比起Flops我还是更想看到延迟或者吞吐这样的指标;比指标,我希望是看到以RCAN作为baseline的提升。 (3)改ViT的话,推理速度可能会比ESRGAN更慢。ViT系模型结构是实际推理效率远低于你能在论文里看到的FLOPS和参数量指标的结构,跑过的都懂。固然可以通过优化推理框架来提升ViT的推理速度,但是投入相同的研究成本,VGG也可以变得伟大。ViT的更大的意义我认为是提高领域的指标上限(从而开放pretrain模型给小数据集fine tune),条件是超大的训练集,代价是巨大无比,不过这个仓库不玩刷点哈~比较偏向实际,以及要多照顾大众普通玩家; (4)GhostNet用在图像识别上是有效的,但是我以前在low-level领域用他代替过conv跑过实验,掉点了,比较遗憾。 悄悄告诉你,根据我的经验,对于二次元超分来说,网络结构不是最重要的,PSNR也不是很重要(如果有更好的衡量动画重建质量的指标,求科普),我们其实应该去思考一些更本质的东西。

感谢长回复 1x训练时输入那边不加噪也不下采样还剩什么呢?是加一些传统噪声以外的artifact吗

classsr切patch看不到全局的事。。其实cugan的ncnn实现那边已经有个gap sync了(这边的实现没试过不知道orz),就算分了tile也能借助gap的真·全局感受野得到正确的景深信息不会再出block了,如果你们算力和头发足够薅的话也可以再深挖一下?(其实还有个脑洞,patch切法好像也可以偷师视频编解码那边二叉树宏块划分的想法,大片一致纹理直接划一个块内之类的)

ghost操作按他们的用法本来就会造成网络容量的下降,掉点也。。挺正常吧(除非是当加入新特征的用法提了容量还掉点就怪了) ghostsr没有直接用depthwise conv,换成shift操作了,看实验部分好像掉的也不多,计算量下降挺明显

(刚才不小心手贱close了,其实还有其它我看见过觉得可能有用的trick可是这里地方太小我写不下(x

1、你可以看下Real-ESRGAN的论文,劣化方式和pipeline是有很多类型和组合的,加噪声只是其中一个

2、ncnn-cugan的gap sync,cugan的不同patch,用的同一套参数;classsr的不同patch,用的是不同大小的网络结构和参数,怎么sync呢

3、如果没记错的话,我channel double了的

oblessnoob commented 2 years ago

1、有关1x我更烦恼的是怎么保留纹理,因为最低级别的降噪程度目前也自带一定纹理丢失,所以很可能训练的时候就不加噪了(除非想到了其他的保留纹理的方式,那就保留和2x3x4x一样的档位设置)。根据我的经验,为了纹理的保留,有必要再大尺度下进行计算(学界比较传统的认知是,在LR尺度下做主力运算性价比最高)。 参数的命名是根据训练加噪的程度来的,没有根据实际的降噪程度来命名,你提到的命名问题(有没有必要以实际降噪效果、程度作为命名),我之后想一下 2、锐度和纹理保留是一个很难平衡的trade-off,是可以继续加锐,因为我认为现在锐度已经很高(可能都过于高了)了,所以没有训练更高锐度的档位。现在的锐度已经观察到一些bad case了。 3、我调研过一些轻量化的训练方法和模块,不过等新的轻量级模型出来,大概率就不叫CUGAN了(因为结构没法再基于CUNet了)。 (1)我很喜欢ClassSR这种原理简单又有用的idea,但是他不适用CUNet结构,因为切patch了看不到全局,会丢失景深区域识别和纹理保留的特性; (2)MS3Conv本质上是一种结构上的改进。它的ab对照数据里,CARN是2018出的一篇指标很弱的baseline(SRResNet也是指标很弱的,baseline弱,提点很容易),文章2020年发表,参数/计算量上的提升其实不一定追得上2年的时代差带来的进步;另外太过复杂的结构会降低推理的效率(ESRGAN里面的RRDB就是一个非常正面的例子,结构简单有效,推理效率高),比起Flops我还是更想看到延迟或者吞吐这样的指标;比指标,我希望是看到以RCAN作为baseline的提升。 (3)改ViT的话,推理速度可能会比ESRGAN更慢。ViT系模型结构是实际推理效率远低于你能在论文里看到的FLOPS和参数量指标的结构,跑过的都懂。固然可以通过优化推理框架来提升ViT的推理速度,但是投入相同的研究成本,VGG也可以变得伟大。ViT的更大的意义我认为是提高领域的指标上限(从而开放pretrain模型给小数据集fine tune),条件是超大的训练集,代价是巨大无比,不过这个仓库不玩刷点哈~比较偏向实际,以及要多照顾大众普通玩家; (4)GhostNet用在图像识别上是有效的,但是我以前在low-level领域用他代替过conv跑过实验,掉点了,比较遗憾。 悄悄告诉你,根据我的经验,对于二次元超分来说,网络结构不是最重要的,PSNR也不是很重要(如果有更好的衡量动画重建质量的指标,求科普),我们其实应该去思考一些更本质的东西。

感谢长回复 1x训练时输入那边不加噪也不下采样还剩什么呢?是加一些传统噪声以外的artifact吗 classsr切patch看不到全局的事。。其实cugan的ncnn实现那边已经有个gap sync了(这边的实现没试过不知道orz),就算分了tile也能借助gap的真·全局感受野得到正确的景深信息不会再出block了,如果你们算力和头发足够薅的话也可以再深挖一下?(其实还有个脑洞,patch切法好像也可以偷师视频编解码那边二叉树宏块划分的想法,大片一致纹理直接划一个块内之类的) ghost操作按他们的用法本来就会造成网络容量的下降,掉点也。。挺正常吧(除非是当加入新特征的用法提了容量还掉点就怪了) ghostsr没有直接用depthwise conv,换成shift操作了,看实验部分好像掉的也不多,计算量下降挺明显 (刚才不小心手贱close了,其实还有其它我看见过觉得可能有用的trick可是这里地方太小我写不下(x

1、你可以看下Real-ESRGAN的论文,劣化方式和pipeline是有很多类型和组合的,加噪声只是其中一个

2、ncnn-cugan的gap sync,cugan的不同patch,用的同一套参数;classsr的不同patch,用的是不同大小的网络结构和参数,怎么sync呢

3、如果没记错的话,我channel double了的

看了下论文,去掉noise和downsample之后就只剩blur和jpeg了,1x的计划就是专心去模糊和去块不管噪声了吗? 但实际上我之前手头确实见到过日历扫图的情况,分辨率超高但杂色非常严重,几个卷积算法全都扑街,最后用ps的去杂色把杂色去掉了但变得非常模糊(甚至ps这个算法自己就有非常严重的切割线就很迷),1x的降噪去杂色应该也是有应用面的

不同分支出来的特征图送到公用的se之前加个1x1卷积统一一下channel数目再gap会不会有用?se出来的向量也改成给不同模型用不同的参数( 或者说把控制分支规模的方式从修改宽度改成修改深度,改分组卷积之类不修改特征图通道数的方式构建小分支做提速也有希望能跨模型共用se 不过多个模型共用一套se总感觉训练上会出幺蛾子