训练过程总结问题(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaomifanhxx/article/details/88082652

    最近在做烟盒检测的U型分类,主要是来查看烟盒的摆放是否是U型排列(相同类别的烟盒)。

    通过目标检测将每一张图含有的烟盒检测出来,并进行分类,并统计每一类烟盒的出现在该图像的频率,一般数目为6个及以上的数量才能构成U型排列,因此,统计出哪类烟盒出现在图像的次数超过6次,并将其生成二值化图,用于U型分类,主要是类似于Minist手写数字,但是在训练过程中遇到了诸多问题。

首先使用了类似Alexnet网络构造的模型,但是train_loss为5.多而且不收敛,train_acc约为.6左右,valid_acc约为0.7左右,两个accuracy基本上都不变化。

可能造成该问题的原因及分析:

(1)正负样本的训练比例是2:1,测试样本为3:1,因此可以大概判断出精确度跟瞎猜一样,根本没有学习到任何东西,可能掉入了局部最优点。解决:训练初期使用较高的学习率。

(2)本来以为是网络的网络结构有问题,但是在分析过程中使用了更深的网络,结果跟使用Alexnet类似,于是分析可能是网络结构太深,直接掉入局部最优点。

(3)还以为是网络初始化的问题,分别使用了xavier,uniform,random_norm参数进行初始化,结果造成的影响均一致,因此判断网络结构以及学习率对其影响更大。

(4)采用了削减网络,由于最大池化层虽然保持了尺度不变性和旋转不变性,但是其减少了全局信息,因此第一步将最大池化层全部剔除并增大学习率,valid_acc在逐步提升,达到了80%.但是,这远远不够,于是采用了只含有两个全连接层的网络结构,结果valid_acc高达98%,由此可见全连接层对于全局信息看的还是清楚。但是,由于使用了全连接层,其参数过大为1GB因此,不再使用全连接层,还是改为了全卷积(通过卷积来调整featuremap的大小)+1Dense,在不断的调解学习率,使得valid_acc为95,其参数只为8M。

(5)在后一次训练期间,由于label的不平衡,所以首先做了dataAugument,随机裁减了正样本作为负样本使用。

(6)由于Maxpooling会使得图像失去全局信息,因此不能使用Maxpooling,但是在实际中U型排列会出现在图像各处,因此我们先将U型排列置于图像中间即对其进行裁剪,然后再送入网络中训练、学习。

针对上述出现的问题,我们进行了一系列的操作。

猜你喜欢

转载自blog.csdn.net/xiaomifanhxx/article/details/88082652