tensorflow测试gpu代码_FCN网络结构之Tensorflow框架复现中BUG

v2-b5a134ffe28a93de9a576aaf55706e04_1440w.jpg?source=172ae18b

写在前面:“纸上得来终觉浅,绝知此事要躬行”,看了一段时间图像语义分割相关方面的论文,熟知“FCN”、“U-Net”、“SegNet”、“DeepLab”等网络结构,但如何实现这些想法还是一头雾水,按捺不住想去复现的心思,于是,先从深度学习语义分割的奠基网络结构“FCN”开始。本文主要记录了FCN网络结构复现过程中出现的Bug及解决方法,最后介绍了一些GPU显存占用率和利用率的查询,仅供参考。

一、计算机软硬件环境

操作系统:windows 7 64位;

Python:3.5

GPU:NVIDIA GTX 1070Ti

Tensorflow:Tensorflow-GPU 1.10.0

CUDA:9.0

CUDNN:7.6.3.30

二、调试BUG

FCN(Fully Convolutional Networks,全卷积神经网络),在经典的VGGNet的基础上,去掉VGG网络最后的全连接层,换为卷积层,能对图像进行分割,生成和原图一样的尺寸输出,然后经过Softmax就能对图像的每个像素进行分类。具体的网络结构如下:

v2-bd73562a29bfc21873a4ff0b1aaf73d7_b.jpg

论文参考《Fully Convolutional Networks for Semantic Segmentation》,原论文作者提供了基于Caffe框架的源代码参考,见

shelhamer/fcn.berkeleyvision.org​github.com
v2-17e193538c6e101f9eb61237d40967ac_ipico.jpg

鉴于Tensorflow框架的蓬勃发展,另外一位作者提供了基于Tensorflow框架的源代码参考,见

shekkizh/FCN.tensorflow​github.com
v2-9cba65424b199345371b092d70215e07_ipico.jpg

并在MIT提供的场景解析挑战数据集上做了训练和测试。

下载源代码,代码的实现中有四个Python文件,分别是FCN.py,BatchDatasetReader.py,TensorFlowTtils.py和read_MITSceneParsingData.py。将这四个文件放在一个当面目录,运行FCN.py程序,程序即可自动下载VGG网络的权重参数和训练用到的数据集,当然,亦可自行下载VGG网络权重数据集

http://www.vlfeat.org/matconvnet/models/beta16/imagenet-vgg-verydeep-19.mat​www.vlfeat.org

和数据集

http://data.csail.mit.edu/places/ADEchallenge/ADEChallengeData2016.zip​data.csail.mit.edu

下载完毕后放到相应位置,权重参数放置路径为

./Model_zoo/imagenet-vgg-verydeep-19.mat,训练数据集放置路径为

./Data_zoo/MIT_SceneParsing/ADEChallengeData2016.zip,

并对ADEChallengeData2016.zip进行解压,需要特别注意的是,解压后ADEChallengeData2016中的文件务必放在

./Data_zoo/MIT_SceneParsing/ADEChallengeData2016路径下,

而不是

./Data_zoo/MIT_SceneParsing/ADEChallengeData2016/ADEChallengeData2016路径下。

运行FCN.py,相继出现如下问题。

1、TypeError: 'NoneType' object is not subscriptable

v2-8c12614401be25c0abe44ecb7c9f342a_b.jpg

报这个错,请再次确认权重参数和训练数据集路径是否正确,尤其是ADEChallengeData2016.zip包含的文件及文件夹务必在

./Data_zoo/MIT_SceneParsing/ADEChallengeData2016路径下;同时,删除

./Data_zoo//MIT_SceneParsing路径下的MITSceneParsing.pickle文件,并重启kernel运行。

2、ValueError: Cannot feed value of shape (0,) for Tensor 'input_image:0', which has shape '(?, 224, 224, 3)'或者出现如下的相关东西

v2-98ed3305172cd55676feec8325565fdf_b.jpg

报这个错,主要是read_MITSceneParsingData.py程序中将“”误用为“/”,导致提取出的filename不正确所致。

源代码为:

v2-2f1af80f122cad7b3afcad6222b8b797_b.jpg

将“/”更改为“”即可;

v2-6974156d2c91ee3ea58bd0b3e06f4a73_b.jpg

同时,删除./Data_zoo//MIT_SceneParsing路径下的MITSceneParsing.pickle文件,然后重启kernel运行。

三、GPU运行信息查询

如果安装的是GPU版本的Tensorflow,且计算机上有支持的GPU,也正确安装了显卡驱动、CUDA和cuDNN,默认情况下,Session会在GPU上运行。下面介绍如何查询GPU的显存占用率和GPU的利用率。

首先将C:Program FilesNVIDIA CorporationNVSMI加入系统环境变量,然后打开CMD窗口,并输入:nvidia-smi.exe –l 5,即可每5秒刷新一次相关信息,如下图所示,图中GPU显存占用为860MB,GPU利用率为10%。

v2-1c8473ec64cf86331edc3a0201e98c65_b.jpg

下图为正在进行深度学习时的GPU使用相关信息。由图可知,此时GPU显存占用为7933MB,GPU利用率为98%,从另外一个角度可知,GPU此时已经被正确利用起来了。

v2-e8d6888c4d67c0592d5ecff3b4917094_b.jpg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值