自己最近想要根据自己的硬件情况,定一个目标检测的主干网络,当然检测方法、fpn、检测层数等等影响到目标检测结果的东西,也都在考虑范围之类。我先写关于主题超参数调解,后面附一些个人对于检测方法的选择。
个人觉得超参数调解这个位置,其实并不是很好做,论文和代码中自带的参数确实是比瞎试要强,但是根据实际的项目需求,你需要在别人训练好的模型上改很多东西,因此原始自带的学习参数可能并不适合你,还有就是发出来顶会论文的机构,硬件配置都很高,一般公司很难达到这种情况,反正我们是一家小公司,硬件上一个1080ti或者2080ti为主,趋向于好一点的个人学习的机器。公司在深度学习这个方向也倾向于降低硬件成本和开发实际产品。
初始化学习率:
一篇公众号的文章:
写的很好
初始化学习率这一块,我查看了一些博客,觉得下面的这两个还是有一些借鉴价值的
https://baijiahao.baidu.com/s?id=1591271039698173396&wfr=spider&for=pc
https://www.cnblogs.com/bonelee/p/8578481.html
第一个网址下有这么一张图,从图中看,感觉好像学习率很好选择,我经过一些试验差不多就能够找到,类似于good learning rate,就是loss下降很快,最小值比较低,结果后来我发现了一个下降更快,最小值更低的学习率。这个位置我想说的就是你很难找到一个最好的学习率,在你认为比较好的学习率上可能还有更好的学习率,这玩应相对而言,你很难找到一个最好的,比如说:对于一批样本和一个网络架构,0.005482是最好的学习率, 当你试验到0.00542,0.00549之间就没有办法试验下去了,太费劲了,有时候0.0008啥的学习率也能取得还可以的效果,很容易误导你,有时候两个学习率需要到好几十万步,甚至上百万步,才能决出胜利,就是更好的学习率才能反超好的学习率,真的是超级费劲,还有就是当你的batch-size比较小的时候,无论是损失还是验证结果都会抖动的很厉害,这个真的是很尴尬,因为你无法确定你当前学习率表现出的结果是不是因为样本,是不是只是暂时的领先。
请大牛指点