『计算机视觉』Mask-RCNN_训练网络其三:model准备

Posted hellcat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了『计算机视觉』Mask-RCNN_训练网络其三:model准备相关的知识,希望对你有一定的参考价值。

一、模型初始化

1、创建模型并载入预训练参数

准备了数据集后,我们开始构建model,training网络结构上一节已经介绍完了,现在我们看一看训练时如何调用training结构的网络。

技术分享图片

如上所示,我们首先建立图结构(详见上节『计算机视觉』Mask-RCNN_训练网络其二:train网络结构),然后选择初始化参数方案

例子(train_shape.ipynb)中使用的是COCO预训练模型,如果想要"Finds the last checkpoint file of the last trained model in the
model directory
",那么选择"last"选项。

载入参数方法如下,注意几个之前接触不多的操作,

  1. 载入h5文件使用模块为h5py
  2. keras model有属性.layers以list形式返回全部的层对象
  3. keras.engine下的saving模块load_weights_from_hdf5_group_by_name按照名字对应,而load_weights_from_hdf5_group按照记录顺序对应

    def load_weights(self, filepath, by_name=False, exclude=None):
        """Modified version of the corresponding Keras function with
        the addition of multi-GPU support and the ability to exclude
        some layers from loading.
        exclude: list of layer names to exclude
        """
        import h5py
        # Conditional import to support versions of Keras before 2.2
        # TODO: remove in about 6 months (end of 2018)
        try:
            from keras.engine import saving
        except ImportError:
            # Keras before 2.2 used the ‘topology‘ namespace.
            from keras.engine import topology as saving

        if exclude:
            by_name = True

        if h5py is None:
            raise ImportError(‘`load_weights` requires h5py.‘)
        f = h5py.File(filepath, mode=‘r‘)
        if ‘layer_names‘ not in f.attrs and ‘model_weights‘ in f:
            f = f[‘model_weights‘]

        # In multi-GPU training, we wrap the model. Get layers
        # of the inner model because they have the weights.
        keras_model = self.keras_model
        layers = keras_model.inner_model.layers if hasattr(keras_model, "inner_model")            else keras_model.layers

        # Exclude some layers
        if exclude:
            layers = filter(lambda l: l.name not in exclude, layers)

        if by_name:
            saving.load_weights_from_hdf5_group_by_name(f, layers)
        else:
            saving.load_weights_from_hdf5_group(f, layers)
        if hasattr(f, ‘close‘):
            f.close()

        # Update the log directory
        self.set_log_dir(filepath)

2、从h5文件一窥load模式

 

以上是关于『计算机视觉』Mask-RCNN_训练网络其三:model准备的主要内容,如果未能解决你的问题,请参考以下文章

『计算机视觉』RCNN学习_其二:Mask-RCNN

『计算机视觉』Mask-RCNN_其七:Mask生成(待续)

『TensorFlow』分布式训练_其三_多机demo分析(待续)

深度学习与计算机视觉任务应用综述

深度学习在计算机视觉各项任务中的应用

《计算机视觉和图像处理简介 - 中英双语 + 代码实践版》:使用动量优化 Momentum 训练神经网络