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

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

欢迎加入团队圈子!与作者面对面!直接点击!

问题描述

在学习卷积神经网络部分内容时,我们通常需要掌握一个十分常见的案例,就是对图像实现卷积并可视化,接下来就用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()

 

运行结果:

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

END

实习主编   |   王楠岚

责       编   |   wrape

 where2go 团队


   

微信号:算法与编程之美          

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

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

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!