conv-neural-network - Yolov4:细分值不同时mAP值不同
问题描述
我对训练自定义数据集生成的 mAP 值有些困惑Yolov4
。如果我理解正确,细分值仅用于RAM
在图像并行处理期间不超载。所以从技术上讲,如果你有batch=32
,那么你是否有 并不重要subdivision=2 or 8
,因为权重将以相同的方式更新。
当我使用 训练我的自定义数据集Yolov4
时,我保留batch=32
但更改了细分值。对于 16 和 4 的细分,mAP 约为 83.6%,当我将细分值更改为 8 时,mAP 为 86.7%。
我很困惑为什么当细分 = 8 时我会得到更好的 mAP。我在https://github.com/pjreddie/darknet/issues/224中读到,权重在经过发送用于并行处理的图像集的迭代后更新,即 batch=32/subdivision=8 = 4,因此权重会在看到一组 4 张图像 8 次后更新(如果我理解正确,我对神经网络比较陌生,并试图理解这一切)。如果细分从 16 变为 8,这是有道理的,因为有更多图像可供网络泛化,但它不能解释为什么 4 的细分与 16 的细分具有几乎相同的 mAP。我希望subdivision=4 的 mAP 将大于 subdivision=8。
另外,y 轴顶部的 mAP 值是训练期间所有计算出的 mAP 的平均值吗?
提前谢谢你!
解决方案
推荐阅读
- elasticsearch - Kibana Dashboard Share 无需登录
- kubernetes - 如何在部署中引用 ReplicaSet?
- c# - 写入我的 Access 数据库时出现语法错误
- javascript - 在 React.js 中,onClick 函数在没有页面刷新的情况下不显示详细信息
- android - 获取 NullPointerException:缺少具有自定义视图 ID 的必需视图
- arrays - Maximize sum of array after applying the given operations on the array
- java - Java 8 和 Java 11 中 LocalDateTime 到毫秒的差异
- oracle - Oracle 中触发器或计划作业中的更新语句?
- .net-core - Serilog 与 Application Insights 的 Azure 功能集成,日志在搜索中可见但未出现在故障事件时间线中
- laravel - 如何更改 Laravel Spark PDF 收据中的默认文本?