微信公众号:"算法与编程之美"​

问题描述

在学习卷积神经网络部分内容时,我们通常需要掌握一个十分常见的案例,就是对图像实现卷积并可视化,接下来就用TensorFlow进行案例演示。

解决方案

首先,要绘制图像,需要先了解Matplotlib,它是Python的一个绘图库,是Python中最常用的可视化工具之一,可以非常方便地创建2D图表和一些基本的3D图表。本案例中就要调用Matplotlib来进行绘图。

具体可视化过程,先要读取文件数据然后转化为张量,利用过滤器转换成tf变量。(每个filter通过自己的卷积核集处理数据,形成一个单通道输出,加上偏置项后,我们得到了一个最终的单通道输出。如果存在多个filter,这时我们可以把这些最终的单通道输出组合成一个总输出,它的通道数就等于filter数)。

然后进行卷积过程,最后全局初始化,再判断是否为灰度图片,进行转化后,用plt.show()调用图片显示。

以上,即完成图像可视化过程。



import tensorflow.compat.v1 as tf

tf.disable_v2_behavior()

import   matplotlib.pyplot as plt


#读取jpg文件

original_data =  tf.read_file("img1.jpg")


#解析数据

img_data =  tf.image.decode_jpeg(original_data)

img_data = tf.cast(img_data, tf.float64)


filter =  tf.Variable(tf.random_normal(shape=[5,5,3,3], dtype=tf.float64))


img_filter_data =  tf.nn.conv2d([img_data], filter, [1, 1, 1, 1], padding='SAME')


#值类型转换

img_filter_data_u64 =  tf.cast(img_filter_data, tf.uint64)


with tf.Session() as sess:

     tf.global_variables_initializer().run()


     img_filter_data_u64 = sess.run(img_filter_data_u64)


     b,h,w,c =   (img_filter_data_u64.shape)


     #如果是灰度图片,需转换一下,才能在plt上显示

     if c == 1:

         img_filter_data_u64 = img_filter_data_u64.reshape(b,h,w)

     plt.imshow(img_filter_data_u64[0])

     plt.show()



运行结果:

人工智能 |利用卷积实现图像可视化_python

END

实习主编   |   王楠岚

责       编   |   wrape

 where2go 团队



微信号:算法与编程之美          

人工智能 |利用卷积实现图像可视化_深度学习_02

长按识别二维码关注我们!

“写留言”发表评论,期待您的参与!期待您的转发!