该模型过度拟合训练集,无法泛化到测试集。
如何将 dropout 添加到模型的特征提取器部分?(.config 文件只提供了一个键值来将 dropout 添加到框预测器中)
我可以采取哪些其他措施来最大程度地减少过度拟合?
更多详情如下:
我正在尝试在玩具动物数据集上重新训练模型检查点“ssd_mobilenet_v1_coco_11_06_2017”。有 14 个类,每个类有 400-600 个图像。网络在不到 3 万步的时间内学习训练集。张量板。在最初的训练之后,损失似乎仍然相当不稳定,尽管我没有足够的经验来评估这一点。
我正在通过将导出的图形应用于图像并手动检查结果来测试模型。(我只是没有时间正确实施验证)。该模型在与训练集非常相似的条件下拍摄的照片上效果很好。这些不好的测试集图像是从训练集随机删除的,训练集是通过连续拍摄许多图像并稍微改变相机角度而获得的。训练集还包括各种光照条件、背景、扭曲和相机位置。我估计它在来自坏测试集的大约 95% 的图像中获得了正确的类和位置。由此我得出结论,该模型非常适合训练集,并且可以进行一些概括。
然而,该模型在不同时间用不同相机单独拍摄的图片上表现非常差(即该测试集和训练集之间的相关性应该小得多)。我估计在这个好的测试集中的性能大约是 25%。由此我得出结论,该模型过度拟合且无法泛化。
我尝试在 .config 文件中进行一些更改。
将特征提取器和框预测器的 l2_regularizer 权重从 0.00004 增加到 0.0001。
盒子预测设置use_dropout到true以使20%辍学。
我正在使用 Tensorflow 1.4 pip install 和大约 3 周前从 github 克隆的模型。
我使用以下参数调用 object_detection 中的 train.py:
python train.py --logtostderr --train_dir=/home/X/TrainDir/Process --pipeline_config_path=/home/X/ssd_mobilenet_v1_coco.config
Run Code Online (Sandbox Code Playgroud)
我的配置文件如下:
# SSD with Mobilenet v1 configuration for MSCOCO Dataset.
# Users should configure the fine_tune_checkpoint field in …Run Code Online (Sandbox Code Playgroud)