我正在尝试建立神经风格转移模型,我正在中型网站上关注此文章
“ https://medium.com/tensorflow/neural-style-transfer-creating-art-with-deep-learning-using-tf-keras-and-eager-execution-7d541ac31398”
但输出图像完全失败
我正在使用vgg19模型。
我曾尝试将学习率更改为100。 1.0的学习率给出了全黑的图像。
内容和样式损失权重也已调整,内容损失权重= 100样式权重= 10
def content_loss(input_img,content_img):
“”返回内容丢失
内容损失= 0.5 *(input_img-content_img)^ 2
input_img =生成的图像
content_img =原始内容图像
“”
input_img = tf.reshape(input_img,[input_img.shape [1],input_img.shape [2],input_img.shape [3]])
损失= -tf.reduce_mean(tf.square(content_img-input_img))
损失= tf.reshape(损失,(1,1))
回损
def gram_matrix(input_mat):
“”返回语法矩阵
*克矩阵是矩阵的点积,用于计算特征图之间的相似度
*将矩阵转换为向量的高度和宽度
*点积将导致尺寸为nxn的矩阵,其中n为否。的功能图
“”
# 长度宽度
lw = input_mat.shape [1] * input_mat.shape [2]
渠道= input_mat.shape [3]
#重塑向量以将其转换为向量
向量= tf.reshape(input_mat,[lw,通道])
gram_matrix = tf.matmul(tf.transpose(vector),vector)
#通过将像素强度除以宽度进行归一化
返回gram_matrix / tf.cast(input_mat.shape [0],dtype = tf.float32)
def style_loss(input_img,style_img):
“”返回样式丢失
*样式损失是样式图像和生成的图像的gram矩阵的均方差,
input_img =生成的图像
style_img =原始样式图片
“”
#计算语法矩阵
style_gram = gram_matrix(style_img)
input_gram = gram_matrix(input_img)
#计算损失
style_l = -tf.reduce_mean(tf.square(style_gram-input_gram))
style_l = tf.reshape(style_l,(1,1))
返回style_l
如果您需要更多详细信息,请发表评论。谢谢。
输出图像: