从零开始训练Mask RCNN时,损失不会减少(无预先训练的重量)

时间:2019-04-03 10:11:17

标签: python tensorflow keras deep-learning computer-vision

我试图在不使用提供的预训练权重的情况下训练神经网络Mask RCNN(特别是Matterport的实现,可以在这里https://github.com/matterport/Mask_RCNN中找到)。我使用的数据集是“上下文中的公共对象”(可以在http://cocodataset.org/#home处找到),我的目标是执行身份细分。

我尝试用预先训练的权重训练网络,评估后,度量标准的平均精度和平均召回率不为0。但是,当我尝试不加载预先训练的权重进行训练时,AP和AR为0。选中,并且我的网络正在检测某些类(遮罩和边界框),因此我想问题是它们与基本事实不重叠,因此不被视为与之匹配。

当我去张量板检查损失发生了什么时,我可以看到它们显然没有收敛。你们中的任何人是否在没有预先训练权重的情况下训练了网络?我想知道哪个应该是正确的配置和培训时间表,以使AP接近他们论文(https://arxiv.org/pdf/1703.06870.pdf)提出的AP

由于我没有使用预先训练的权重,因此我尝试增加网络“头部”的时间。这是一个resnet50。我还尝试降低学习率。但是,到目前为止,这些方法都没有取得良好的结果。

默认情况下,这是训练时间表,因为我没有使用预先训练的权重,所以我尝试将第一阶段的时期增加到100个。

    # Training - Stage 1
    # Adjust epochs and layers as needed
    print("Training network heads")
    model.train(dataset_train, dataset_val,
                learning_rate=config.LEARNING_RATE,
                epochs=40,
                layers='heads')

    # Training - Stage 2
    # Finetune layers from ResNet stage 4 and up
    print("Training Resnet layer 4+")
    model.train(dataset_train, dataset_val,
                learning_rate=config.LEARNING_RATE / 10,
                epochs=100,
                layers='4+')

    # Training - Stage 3
    # Finetune layers from ResNet stage 3 and up
    print("Training Resnet layer 3+")
    model.train(dataset_train, dataset_val,
                learning_rate=config.LEARNING_RATE / 100,
                epochs=200,
                layers='all')

Example of the loss graphs obtained

0 个答案:

没有答案