小编Ale*_*exU的帖子

带有 Mobilenets 的 Tensorflow 对象检测 API 过度拟合自定义多类数据集

该模型过度拟合训练集,无法泛化到测试集。

  • 如何将 dropout 添加到模型的特征提取器部分?(.config 文件只提供了一个键值来将 dropout 添加到框预测器中)

  • 我可以采取哪些其他措施来最大程度地减少过度拟合?

更多详情如下:

我正在尝试在玩具动物数据集上重新训练模型检查点“ssd_mobilenet_v1_coco_11_06_2017”。有 14 个类,每个类有 400-600 个图像。网络在不到 3 万步的时间内学习训练集。张量板。在最初的训练之后,损失似乎仍然相当不稳定,尽管我没有足够的经验来评估这一点。

我正在通过将导出的图形应用于图像并手动检查结果来测试模型。(我只是没有时间正确实施验证)。该模型在与训练集非常相似的条件下拍摄的照片上效果很好。这些不好的测试集图像是从训练集随机删除的,训练集是通过连续拍摄许多图像并稍微改变相机角度而获得的。训练集还包括各种光照条件、背景、扭曲和相机位置。我估计它在来自坏测试集的大约 95% 的图像中获得了正确的类和位置。由此我得出结论,该模型非常适合训练集,并且可以进行一些概括。

然而,该模型在不同时间用不同相机单独拍摄的图片上表现非常差(即该测试集和训练集之间的相关性应该小得多)。我估计在这个好的测试集中的性能大约是 25%。由此我得出结论,该模型过度拟合且无法泛化。

我尝试在 .config 文件中进行一些更改。

  • 将特征提取器和框预测器的 l2_regularizer 权重从 0.00004 增加到 0.0001。

  • 盒子预测设置use_dropouttrue以使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)

python machine-learning object-detection tensorflow

4
推荐指数
2
解决办法
4018
查看次数