简介
先上GITHUB的地址:
https://github.com/shekkizh/FCN.tensorflow
Tensorflow implementation of Fully Convolutional Networks for Semantic Segmentation (FCNs).
FCN是图像语义分割的经典实现,结合开源的源码来看一下具体的实践。
网络
FCN的网络相对比较简单,卷积层使用了VGG19的框架。全连接层替换成卷积层。
网络框架如下,代码在:
FCN.PY inference函数实现。
网络并不复杂。
数据集
这里主要想说一下,这个开源用的数据集:
The model was applied on the Scene Parsing Challenge dataset provided by MIT http://sceneparsing.csail.mit.edu/
数据集的介绍:
https://github.com/CSAILVision/sceneparsing
Note: annotations masks contain labels ranging from 0 to 150, where 0 refers to “other objects”. We do not consider those pixels in our evaluation.
如:VOC2012,KITTI的语义分割的数据集LABLE图像都是需要用调色板进行数据处理的,RGB某个色值对应某个分类。在sceneparsing的数据集里,LABEL图像的数值就是分类。也算是可以少些预处理代码了。。。。
原始图片和标定图片需要一一对应。
LOSS使用的是像素分类的交叉熵的平均值
loss = tf.reduce_mean((tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,
labels=tf.squeeze(annotation, squeeze_dims=[3]),
name=”entropy”)))
除了DROPOUT可以调,LR可以调,感觉没啥可说的。
改进
1.预处理数据增强没得做,这个可以加一下。~
2.1次读2W条数据稍微有点不怎么靠谱,内存不够的自己改改吧。我凑合可以用。
理解有误的地方
FC6是一个7*7*512的SAME卷积,所以最后的FC8的SHAPE是7*7*NUM_CLASS,原来以为是1*1,理解有严重的偏差,这里记录一下。