DeepPose 实现中遇到的问题:Any input produce the same output

Background

正在实现 DeepPose proposed in this paper

大概就是查了四天的一个bug:

任何输入的图片返回的结果都是一个相同的人形(相对位置)且位置基本不变(绝对位置)

所幸的是在第三天快结束的时候不抱希望的上网查了查发现竟然有很多同样的状况 caffe output same – Google 搜索

然后就浏览了 github, Google Groups, Stack Overflow 上的post

其中github上的最helpful,信息量也最多

Any input produce the same output · Issue #1396 · BVLC/caffe

Helpful Advice

gayhub上的病友很nice,看了看觉得有道理的advice有以下:

  • 调整模型超参数以及参数初始化,比如:”gaussion”改成”xavier”,降低lr,调小fc层的numout等等
  • 换个数据集
  • random_shuffle数据集
  • 检查参数是否都全 0
  • 数据和标签的scale
  • 增加非线性层
  • 调整 weight_decay (可能过大)
  • 换个网络,如更浅的 lenet

My solution

自己估量了下自己的情况,最终做了以下改动

  • 参数初始化:weight 全部 “xavier”,bias 全 0
  • 数据random_shuffle且scale 1/255.,标签仅减去均值不scale
  • fc层的大小相较地减少:$4096 \rightarrow 1024$
  • 改 EuclideanLoss: ${1\over 2 num} \rightarrow {1\over 2 count}$ 并相应的调整 lr

感觉是解决了

由于所做修改次数多,已经无法判断具体哪些操作起关键作用

最终分析所得的原因(不一定正确)是

Hyperparameter(model) & dataset untuning 导致的学习能力低下

BTW

Hartin说可以加一个BN层

conv1conv2 后增加了 BN 和 Scale

大大增加了模型泛化能力

Test的Loss下降了超过 $80\%$ (可能是我的幻觉)

发表评论