近期拿caffe来做图片分类。遇到不少问题,同一时候也吸取不少教训和获得不少经验。


先看样例再总结经验。


这是一个2类分类器。分的是条纹衣服和纯色衣服。

先看几张图片。


条纹衣服:

deep learning实践经验总结_权重 deep learning实践经验总结_权重_02deep learning实践经验总结_深度学习_03


纯色衣服:

deep learning实践经验总结_神经网络_04deep learning实践经验总结_数据集_05deep learning实践经验总结_权重_06


肉眼也非常easy辨认出来。

训练出来的模型眼下的准确率是0.75。


为了可视化特征抽取。我把某一层的特征图和权重图也画出来了,这层是当中一个全连接层。


条纹衣服的特征图:

deep learning实践经验总结_数据集_07  deep learning实践经验总结_神经网络_08  deep learning实践经验总结_深度学习_09



纯色衣服的特征图:

deep learning实践经验总结_神经网络_10  deep learning实践经验总结_数据集_11  deep learning实践经验总结_深度学习_12



看条纹衣服的特征图比較有意思,把“条纹”特征给抽取出来了。

或许这就是神经网络奇妙的地方,在没有人的干扰的情况下,居然能学习出来“条纹”特征。



当中一个channel的权重图:

deep learning实践经验总结_深度学习_13


这个就看不出来什么了。以前有一个数据集,训练的是裙子的模型。当我看到权重图是一个裙子轮廓的图。




好了。说了这么多。总结一下经验吧。


1 数据集要保证质量。以前玩过一字领和polo领的分类,刚開始效果非常差,后来发现有一些“错误”的标签。于是把那些样本给去掉。效果好了非常多。

2 learning rate要调整。

有一次训练了非常久。准确率差点儿不变,于是我降低了lr,发现好了非常多。

3 均值化图片。实践证明,均值化后再训练收敛速度更快。准确率更高。



对于深度学习的困惑:感觉准确率是个大问题啊,事实上这也是全部机器学习算法的通病。

对于别人研究提供的数据集,比方imagenet,cifa10,lenet,效果非常好。

可是自己收集的数据集,效果就不是非常理想了。

也就是说,算法不是万能的,仅仅是对于某些数据集有效。


我们能做的。是什么?

1 对于哪些数据集。深度学习比較适合?

2 对于效果差的数据集。怎样能提高准确率?


以前脑海里闪过一个念头。是由上面提到的权重图想到的。

当时看到权重图是一个裙子轮廓的图,心里就想。

这是神经网络自己主动调整出来的权重图,

假设人为加上干预,是否能实现优化呢?