FCN
通常情况下,FCN可以分为3种:FCN-32、FCN-16、FCN-8(分别表示32倍上采样、16倍上采样、8倍上采样)。
16上采样过程:先把32倍下采样的feature map上采样2倍,变成16倍下采样feature map,再和原来16倍下采样的feature map进行connect操作。最后,16倍双线性插值到原图像大小。
8上采样过程:先把32倍下采样的feature map上采样2倍,变成16倍下采样feature map,再和原来16倍下采样的feature map进行connect操作。将合并后的feature map再和8倍下采样的feature map再进行connect操作。最后,8倍双线性插值到原图像大小。
网络代码地址:https://github.com/aurora95/Keras-FCN/blob/master/models.py
Unet
形状看起来像一个U型,大概的步骤就是先下采样,经历了5个阶段。然后将每个阶段的feature map上采样2倍,将原来对应阶段的feature map进行crop后,进行connect操作。依次类推。
代码地址:https://github.com/zhixuhao/unet/blob/master/model.py
deeplabv1
网络结构就是:FCN + denseCRF.
deeplabv2
ASPP的作用 : 由于同一类的物体在图像中可能有不同的比例,ASPP 有助于考虑不同的物体比例,这可以提高准确性。
网络结构:deeplabv1的升级版,加入了ASPP,其他的和v1类似。
代码地址: https://github.com/DavideA/deeplabv2-keras/blob/master/deeplabV2.py
deeplabv3
网络结构:deeplabv2的改进版,https://blog.csdn.net/u011974639/article/details/79144773博客里说的很好的。
代码地址:https://github.com/fregu856/deeplabv3/blob/master/model/deeplabv3.py
deeplabv3+
网络结构:https://blog.csdn.net/u011974639/article/details/79518175写的很好,可以参考。
代码地址: https://github.com/tensorflow/models/tree/master/research/deeplab。
运行deeplabv3+的注意事项:
1、ModuleNotFoundError: No module named 'deeplab'
在win10下,train、eval、vis的文件中加入
import sys
sys.path.append(r'D:\BGY\python\deeplabV3\models-master\research')
sys.path.append(r'D:\BGY\python\deeplabV3\models-master\research\slim')
2、如果 GPU 显存有限,可以在 ModelZoo 中提供的断点模型 Checkpoints 上进行 finetune,其 batchnorm 参数已经训练过,采用小一点的学习率,并设置 fine_tune_batch_norm = False
3、运行eval时,程序一直停放在INFO:tensorflow:Waiting for new checkpoint at D:/BGY/python/deeplabV3/models-master/research/deeplab/datasets/pascal_voc_seg/exp/train_on_trainval_set/train,这不是错误。同时运行train和eval可以解决。
欢迎大家批评、指正。