《DeepLab-ResNet rebuilt in TensorFlow》代码运行阅读笔记

初步接触图像分割领域,跑一个经典的代码看看效果,挖掘灵感

这是2017年CVPR上的工作《DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs》

ubuntu16下的环境搭建

首先,需要下载以下几个文件:代码链接中的工程文件,deeplab_resnet.ckpt这个训练好的模型参数,VOC2012数据集(其中SegmentationClass需要替换为SegmentationClassAug)。这些东西代码链接中都有,仔细看看。

然后,搭建python2.7下的tensorflow的环境

首先安装anaconda,然后在控制台输入以下命令
conda create -n easytensor27 python=2.7//创建名为easytensor27的虚拟环境
source activate easytensor27            //进入虚拟环境
anaconda search -t conda tensorflow    //查看tensorflow的链接
anaconda show anaconda/tensorflow-gpu   
conda install --channel https://conda.anaconda.org/anaconda tensorflow-gpu //安装tensorflow
python
source activate easytensor27
pip install -r requirements.txt  //进入工程目录下,安装依赖的包

用pycharm打开工程,应用虚拟环境,修改train.py中的三个地方

DATA_DIRECTORY=''中间写数据集存储的地方
load函数中,写上模型参数存储的地方

再根据GPU显存大小,修改一下BATCH_SIZE的大小

即可运行train.py

代码阅读(按照程序运行流程)

  • 命令行参数解析

Python标准库推荐使用的命令行参数解析模块——Argparse

  • add_argument()方法,用来设置程序可接受的命令行参数。
  • 现在要运行程序,就必须设置一个参数(或者有defualt)。
  • parse_args()方法实际上从我们的命令行参数中返回了一些数据
args = get_arguments()
  • 获取窗口大小

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
h, w = map(int, args.input_size.split(','))
input_size = (h, w)
  • 设置graph级别的随机种子

在Graph中,我们通过tf.set_random_seed()函数对该图资源下的全局随机数生成种子进行设置,使得不同Session中的random系列函数表现出相对协同的特征,这就是Graph-Level的表现。

tf.set_random_seed(args.random_seed)
  • 数据获取与线程管理

载入数据的教程
首先要知道TensorFlow(TF)是怎么样工作的。

TF的核心是用C++写的,这样的好处是运行快

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值