深度学习(6)--神经风格迁移与可视化卷积神经网络(tensorflow实现,可视化卷积神经网络,卷积核输出源码)

对神经风格迁移有个大致理解,实现应该是件有趣的事情。对可视化卷积神经网络进行研究,代码测试。

上一篇:深度学习(5)--目标检测小总结(目标检测,人脸识别,目标识别与定位,YOLO算法,bounding box,边框回归)https://blog.csdn.net/qq_36187544/article/details/92795952

下一篇:深度学习(7)-RNN(网络模式,典型应用场景,梯度修剪,GRU,LSTM,双向RNN,深度RNN)https://blog.csdn.net/qq_36187544/article/details/93052465


目录

神经风格迁移

可视化理解卷积神经网络

卷积核输出的可视化源码


神经风格迁移

很有趣的一个应用,利用内容(content,C)和风格(style,S)生成新图像,这叫神经风格迁移,这是一个生成的过程:

在训练网络时,代价函数分为两部分,一部分为内容代价函数,一部分为风格代价函数,αβ为权重系数:


可视化理解卷积神经网络

可视化CNN每一层输出可以帮助理解CNN到底学习到了什么,一般来讲,浅层学习到的是基本特征(比如线条),越高层学习到的特征越深入(比如一张完整图像)。

卷积核输出的可视化(Visualizing intermediate convnet outputs (intermediate activations),即可视化卷积核经过激活之后的结果。能够看到图像经过卷积之后结果,帮助理解卷积核的作用
卷积核的可视化(Visualizing convnets filters),帮助我们理解卷积核是如何感受图像的
热度图可视化(Visualizing heatmaps of class activation in an image),通过热度图,了解图像分类问题中图像哪些部分起到了关键作用,同时可以定位图像中物体的位置。(这篇文章介绍的挺好:https://blog.csdn.net/weiwei9363/article/details/79112872)

卷积核输出的可视化源码

其实这个过程较为简单,做个记录,主要分为几步:1.微修改网络,输出中间层,2.sess.run输出具体tensor值,3.可视化

首先略微修改网络,让其能够输出某一层的参数,如下,skljdfasf这个参数就是想要输出的InceptionV3网络的某中间层:

在网络返回参数时添上这个中间层参数:

调用这个网络返回也得相应修改,out11111就是获取了中间层:

sess.run输出具体值:

再对具体值输出成图片:

# 注意,这里的output_img的shape应当为[?,?]或者[?,?,3]这种数据输出。这里out_howjdfk输出shape为(1,13,221,64),所以out_howjdfk[0][:,:,0]表示通道一的图
output_img = np.hstack([out_howjdfk[0][:,:,0]])
# vstack在竖直方向上堆叠,因为这里的图片是长条形,所以竖直堆叠看的清一些
# output_img = np.vstack([out_howjdfk[0][:,:,i] for i in range(len(out_howjdfk[0][0][0]))])
cv2.namedWindow('ouput_image', cv2.WINDOW_AUTOSIZE)
cv2.imshow('ouput_image', output_img)
cv2.waitKey(0)

竖直堆叠输出,原图都是试纸,可以看见基本的雏形:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值