SSD(Single Shot MultiBox Detector)的solver参数 test_initialization的说明塈解决训练时一直停在Iteration 0的问题

前阵子训练过一次SSD模型,训练后发现数据集有问题,修改了数据集后,今天准备再做一次SSD训练时,如下执行训练代码:

python ./examples/ssd/ssd_pascal.py 

到了开始迭代时,一直停在Iteration 0,进行不下去。。。

对于还不完全熟悉SSD代码结构的我来说,遇到这个问题当时脑子一下子就懵了,一时不知是哪里出了问题。因为我之前已经成功做过一次训练,此次训练只是训练数据集不一样,并没对训练参数和模型做任何修改,怎么就不对了呢?

最后想到我在第一次训练的时候,修改过solver参数中的test_initialization的值(定义在$ssd_root/examples/ssd/ssd_pascal.py line 388),会不会是它的问题呢? 于是尝试将之修改为默认值False,再开始训练,则一切正常。

原因分析

我们知道,训练过程一般都比较漫长,所以caffe在设计的时候允许中断训练,当Ctrl-c中断训练时,Caffe会自动保存一份训练快照。 如下图,会在$ssd_root/models对应模型文件夹下生成代表当前完成的迭代次数的快照文件,后缀为_32和_47的文件分别代表32次和47次迭代时的快照

solver参数中的test_initialization表示是否可以用上次保存的snapshot来继续训练,如果为True,则下次开始训练的时候,caffe会自动从这个目录下加载最近一次迭代的模型,继续训练,以节省时间。 如果是False,则会从0开始重新迭代。所以这个参数的默认值是False。 我在第一次训练的时候,将这个参数改为了True。 这样听起来没啥问题,但如果你重新开始训练的时候,$ssd_root/models对应模型的文件夹下并没有任何快照,如test_initialization被设置为True,因为caffe找不到快照文件,就会导致迭代一直停留在Iteration 0。所以这种情况下应该把test_initialization置为False,训练就能正常进行下去了。 根据这个现象,我觉得这应该是训练代码的一个bug,代码的健壮性有问题,但因为对Caffe代码结构还不熟悉,所以我是没办法修改它,期待官方版本改进。

参考资料

《Caffe代码解读(四):solver_param》

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏测试开发架构之路

前端之bootstrap模态框

  简介:模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。...

2875
来自专栏Python研发

搜索框

964
来自专栏章鱼的慢慢技术路

使用Photoshop合成两张不完整的图片

1332
来自专栏非著名程序员

Android学习第六弹之 Android字体大小自适应不同分辨率的方法

Android字体大小自适应不同分辨率 非著名程序员 今天有人问我,android系统不同分辨率,不同大小的手机,字体大小怎么去适应呢?其实字体的适应和图片的适...

18610
来自专栏自动化测试实战

HTML第三课——css【3】

25312
来自专栏魏艾斯博客www.vpsss.net

在线生成透明圆角图片工具 不用 ps 生成圆角图片方法

魏艾斯博客更新博文都要加上图片,最近感觉自己博文列表的图片不够美观,而别人的博文列表图片是带有圆角的,和矩形图片相比圆角图片看上去比较美观,于是也想照着操作一下...

2896
来自专栏非著名程序员

Android字体大小怎么自适应不同分辨率?

今天有人问我,android系统不同分辨率,不同大小的手机,字体大小怎么去适应呢?其实字体的适应和图片的适应是一个道理的。 一、 原理如下: 假设需要适应320...

2248
来自专栏hbbliyong

WPF模板

先来个模板: <ControlTemplate x:Key="button" TargetType="Button"> <Border ...

3254
来自专栏韩东吉的Unity杂货铺

零基础入门 15: UGUI Button

按钮对于一个应用或者游戏来说。必不可少,今天这篇分享,来说下UGUI里的按钮,Button组件。

1011
来自专栏企鹅号快讯

关于响应式前端WEB

响应式 Web 设计 -Viewport什么是 Viewport? viewport 是用户网页的可视区域。 viewport 翻译为中文可以叫做"视区"。 手...

1867

扫码关注云+社区