性别识别中遇到的坑

性别识别中遇到的坑

 

  • 训练数据集中的数据没有经过一定的人工确认,其中出现了明显的打标错误问题(原始图像有一定的重名),导致训练果真精度始终比较低。后期经过手动的分析,找到问题解决
  • 始终以为自己的代码写的有问题,没有效果。实际是调试时使用笔记本跑训练,本身运行比较慢,需要较长时间才能看到算法的效果,大概10个epoch以上,而笔记本跑一个epoch需要半个小时,导致错误的以为程序出错。解决办法:1. 找个跑的块的机器,2. 使用很少的数据进行训练,比如只用固定的32张图片进行训练,这样可以让你快速确认代码问题,比如损失是否有下降之类的。
  • 数据没有预处理,原始数据格式为jpg,每次训练时才进行解压,这个实际上是非常没有效率的,因为解压jpg只能在cpu上进行,GPU在大多数状态都处于等待状态。最好是采用numpy数组,或者是其他非压缩的格式保存。
  • 227*227*3的图片,采用uint8的格式进行保存,10000张的图片大概在2G左右。如果训练数据较少,可以一次性导入内存中进行训练,如果数据量比较大,那么需要使用tfRcord进行处理。
  • 刚开始训练时网络要足够简单,其他的优化方法可以在后期逐步的加入。
  • dropout的效果比l2正则化更好,两者具体的关系还需要进一步的进行验证,比如同时使用,单独使用,各自的权重系数,还有dropout应该加到网络的那些层上等。
  • 在当前例子中,使用灰度图可以达到和彩色图几乎一样的精度。
  • dropout的比例从0.5调整到0.4之后,整体效果变差,验证集的精度下降到了不足90%
  • 使用numpy的mean函数时,如果直接指定dtype为uint8时,会发生截断的错误,方法是在计算完成后再做类型转换
  • 将所有的数据集生成一个较大的tfrecord时,也会导致训练时速度变慢。
  • 性别分类的时最好是新增一类无法分辨性别的类别,而不是仅分为两类
  • 使用train2014数据时出现了灰度图像的jpg,到时生成的trrecords文件格式无法统一
  • 使用match_filenames_once时需要初始化local_variables, 并且start_queue_runner要放到初始化变量之后。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值