一。介绍
cyclegan:例马变成斑马,地图合成
stargan:例人脸合成,变声器
gan:例图像超分率重构与补全
二。对抗生成网络架构原理与实战解析
(1)对抗生成网络通俗解释
1)对抗生成网络:主要是“生成”,即由手上数据生成你想要的效果。
2)超分辨率重构:低分辨率图像经计算机学习,损失函数生成高分辨率图像。例公安人员要求对犯人生成高分辨率图像。
(2)生成器(G)------>判别器(D),生成器最终目的是骗过判别器(预测生成的图片与真实的图片很像);判别器技术也要不断升级,目的是识别出生成出来的东西。例如造假币的技术越来越好,生成出假币出来;然后银行就是判别器(有真币),结合真假两类进行分类,对这些真,假币能判断出来;最后还有一个损失函数的定义。生成器与判别器就是矛盾关系,相互对抗。
(2)损失函数解释说明
损失函数: loss(o,t)=-1/n *(y),其中y=t[i]*log(o[i])+(1-t[i])*log(1-o[i]), y是指以i为变量求总和后的值,t是指概率值(例如标签值)。例如 输入的是三行三列的矩阵,有些值不是0到1范围之间的,故先对这些数据进行一个sigmoid()操作把全部数据搞成0到1之间;标签值也是由三行三列的矩阵构成(0和1构成);然后结合这两种值调用损失函数计算出损失函数值。例如:先求出第一行中的三个损失函数值,r11=y=0*math.log(0.8707)+(1-0)*math.log((1-0.8707));
r12=y=1*math.log(0.7517)+(1-1)*math.log((1-0.7517));
r13=y=1*math.log(0.8162)+(1-1)*math.log((1-0.8162));
r1=loss(o,t)=-1/n *(y)=(-1/3)*(r11+r12+r13);
这里假设输入的第一行的三个值分别是0.8707,0.7517,0.8162;而t[i]分别是0,1,1,也是标签值中的一行三列中的值。同理其它第二行,第三行的损失函数值也是这样求出来即可(例如r2,r3),
最后求出损失函数值是bceloss=(r1+r2+r3)/3; print(bceloss);
上面步骤是说怎样计算损失函数的值。上面的计算损失函数值的步骤其实在torch中已经封装好from torch import nn;
loss=nn.BCEWithLogitsLoss();print(loss(输入的矩阵值,标签的矩阵值));
(3)数据读取模块