作者tay2510 (Tay)
看板deeplearning
标题Re: [问题] 关於Semantic segmentation的一些疑问
时间Sat Mar 3 17:43:26 2018
※ 引述《jackychien (-cx)》之铭言:
: 大家好, 我是deep learning的初学者,目前是使用tensorflow,最近开始找kaggle上的题目练习, 想从一个Semantic segmentation的题目开始,但是遇到了满多问题,因此想要请教版上的各位高手,希望可以厘清一些观念!
: (1). 题目的input图片大小都不固定,本身查到input图片大小对於Fully convolutional network应该不是太大问题,但我比较有疑问的是Semantic segmentation的output是pixelwise prediction,这样的话output layer该怎麽设定?
对 Segmentation 来说, 因为资料通常是"一对"的
今天input做了任何的data augmentation
(resize/flip/zoom/crop/affine...)
output 也要跟着做一模一样的事
对资料本身的处理来说是这样
而layer方面 一般input:output大小都是 1:1
当然你也可以玩 1:x 之类的, 但是没意义
(x > 1): 除非output给你的是向量, 不然没法玩
(x < 1): 还不如train个1:1的, inference完再resize = =
: (2). 我看应用於Semantic segmentation的神经网路架构满多会把前面的layer复制到後面对应相同大小的layer,目的是为了unpooling的时候可以记住当初pooling的时候的最大值的位置吗?有没有其他的目的?
原文底下有人推文说明了, 就不多解释了
: (3). 因为本人电脑烂烂的,常常读取档案时就发生memory error,查过资料说可以用h5py将档案存成hdf5档案,转成hdf5档案後是用批次读取的方式来喂资料,不过一直都不太清楚hdf5档案的好处,是可以减少频繁I/O造成速度问题吗?
哪种memory error? CPU还是GPU的RAM?
一次把整个dataset装到CPU RAM, 当资料量太大时会CPU RAM爆炸
跟
训练时分批次搬资料到GPU RAM, 当batch size太大时GPU RAM会爆炸
这些都跟hdf5无关, 但hdf5的I/O速度确实重要
而且如何作CPU/GPU/CPU RAM/GPU RAM的资源分配,
让整个training pipeline效率最大化, 是需要经过设计的
我举几个案例给你参考
[案例一]
一次读取整个dataset到CPU RAM
training 时批次从 CPU RAM 搬资料到 GPU RAM 走PCIe汇流排
资料直接上高速公路, 完美!
只是你的 CPU RAM 够大吗? 32 GB? 64 GB? 当作业系统死人?
话是这样说, 一般教学型的dataset 大部份都能一次塞进CPU RAM
(ImageNet 可能有点度)
这个案例中 dataset是不是存成h5df完全没有影响
[案例二]
只维持一个固定大小的CPU RAM 当buffer
training 时批次从硬碟搬到 buffer, 再从 buffer搬到GPU RAM
在硬碟搬到buffer这边就塞车了
这种情况下才需要考虑将资料先预存成h5df来缩短读取时间
(SSD硬碟, 多线程处理跟CPU本身也都有影响, 就不多赘述了)
以上说的都是针对整个training的速度作考量
案例一跟存不存成h5df没有关系
案例二存成h5df可以加快training速度
这些都跟你的memory error无关
CPU mem error: 买RAM, 或用案例二的方式
GPU mem error: 付钱给NVIDIA, 或降低batch size (小批处理, 一次只搬一点点)
: (4). 最後不知道关於Semantic segmentation的相关资料有没有比较推荐的书籍/网站/影片?我有自己找过满多次但是感觉资料都满零碎,有简单实作范例的会更好XD
这题请别人回答
: 因为是非本科生,有些问题应该是满脑包的问题XD,先谢谢大家抽空的耐心回答!
: 以上
: -----
: Sent from JPTT on my Sony SGP321.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 75.18.249.47
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/deeplearning/M.1520070209.A.E52.html
1F:推 jackychien: 感谢ta大的回文,解释的非常详细! 03/04 01:19
2F:→ jackychien: 想要确认一下第一个回答的意思,也就是说假设我今天把 03/04 01:19
3F:→ jackychien: 320*512的图片resize成256*256当成input,inference完 03/04 01:19
4F:→ jackychien: 後output也是256*256,我再resize成320*512就是欲得到 03/04 01:19
5F:→ jackychien: 的答案了吗? 03/04 01:19
是的, 如果担心解析度跑掉太多的话, 也可以把原图切成几块 < 256*256的patch
分次作inference後再拼起来
6F:→ jackychien: 两种RAM的问题我都有遇过的样子,GPU RAM是用很小的ba 03/04 01:19
7F:→ jackychien: tch size解决的没错,主要应该还是CPU RAM的问题,要 03/04 01:19
8F:→ jackychien: 搬很多趟才能搬的完XD 03/04 01:19
※ 编辑: tay2510 (75.18.249.47), 03/04/2018 11:11:53
9F:推 jackychien: 了解,终於解决了心中很久的疑惑!XD 03/04 20:05