我试图在不使用提供的预训练权重的情况下训练神经网络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。我还尝试降低学习率。但是,到目前为止,这些方法都没有取得良好的结果。
# 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')