CR-Gjx / SCC

Pytorch implementation of "Alleviating Semantics Distortion in Unsupervised Low-Level Image-to-Image Translation via Structure Consistency Constraint." (CVPR 2022).
22 stars 1 forks source link

损失函数为负数 #4

Open Idea89560041 opened 1 year ago

Idea89560041 commented 1 year ago

您好,感谢您的代码分享。我和其他几个问题一样,也遇到了损失函数为负值的情况,这种情况需要调大cyclegan的系数,减少scc的系数吗?还有一个问题,使用scc损失的时候,batchsize必须为1吗,期待您的回答。

Idea89560041 commented 1 year ago

batchsize为1的时候,SCC损失确实为负数,请问这个是正常的吗,是需要结合cyclegan损失的和为正数吗

Idea89560041 commented 1 year ago

ersmi = -ersmi.mean(),请问代码这里是负号吗,有些着急,请见谅

CR-Gjx commented 1 year ago

请问可以提供更多数据集信息吗,正常来说,batch-size为1,如果遇到问题,可以尝试调整scc的loss系数,对于色块较大的图片,可以从5开始调,对于色块小的图片,比如cityscape,可以调为0.5

Idea89560041 commented 1 year ago

我是训练的医疗图像,像素为96*96的,单通道,结合cyclegan一起训练的,请问可以直接在ersmi = -ersmi.mean()+1来保证损失为正吗

Idea89560041 commented 1 year ago

还有一个问题,请问这个batch-size必须为1吗,这个是保证scc loss计算的准确性吗,还是batch-size可以加大变成16,32等,谢谢您的解答

CR-Gjx commented 1 year ago

个人认为调整scc的loss系数即可,正常情况下batch-size都设为1,在MNIST的实验里,我设为32或64也没问题

Idea89560041 commented 1 year ago

请问scc loss的值为负数,请问这是正常现象吗,加在cyclegan损失上训练的目的是让这个scc loss的负值越来越大吗,另外batch size调大了不知道影响实验效果吗,设为1实在训练太慢了

Idea89560041 commented 1 year ago

image 另外请问这种图像属于色块较大还是色块较小的图像呢,我目前cyclegan的系数10,scc的系数为1,训练五个小时后仍会有负值出现,开始的时候是没有的,我现在做了一个ersmi = -ersmi.mean()+1这个操作,不知道可不可以,感谢您的回复

CR-Gjx commented 1 year ago

一般是不推荐的,因为+1会改变loss的分布,建议多试试scc的系数,非常感谢你的问题

Idea89560041 commented 1 year ago

感谢您的回复和帮助,我还有最后一个问题。vgg损失也可以约束内容一致性,请问可以和scc一起使用于cyclegan中吗,会不会效果适得其反