美文网首页有三AI学院
【学员分享】深度学习计算机视觉,两个星期从入门到上线

【学员分享】深度学习计算机视觉,两个星期从入门到上线

作者: 有三AI | 来源:发表于2018-06-23 15:38 被阅读18次

    Hello,everyone!今天给大家讲述一个深度学习项目。

    在讲这个项目之前,很多业外人士可能不明白人工智能(AI),机器学习(ML),深度学习(DL),这三者是什么关系。先科普一下小常识,它们三者是包含子集关系。即人工智能是最大范畴,包含机器学习,机器学习包含深度学习。

    好了,进入正题。本人所解决的是人脸识别登录的业务,最后抽象为一个深度学习的三分类问题。接下来会以解决问题的顺序进行展开描述。用的深度学习框架是caffe,网络结构是mobilenet。

    01数据的获取

    首先深度学习的数据很重要。而数据集的获取则应该根据业务需求去寻找。本项目是图片数据集的获取,可以从各大开源数据集寻找,之后发现有些类别的数据集量还是不够大,又去各大影视中寻找录屏,然后按帧数切分成图片。

    02数据的清洗

    该部分将消耗大概百分之七十的时间。数据清洗包括对图片数据集的筛选,分类,又称标注数据。尤其是数据的分类很重要。数据分类的准确性可能就决定了你训练模型能否收敛。该部分是个细活,过程比较琐碎,暂时先不说。数据集分为9类,为啥是9类,解决的不是3分类问题吗?因为前期3分类训练模型的准确率不是很高,考虑到3个大类内部的数据方差过大,于是调整策略为训练为9分类问题,最后测试为3分类,因为最后业务解决的还是3分类问题。

    以下是9类图片标注标准:

    03训练模型

    接下来就是训练模型了,模型的训练由于是在服务器上训练,加上模型不是很大,训练很快,正常跑个4个小时左右就可以迭代出一个模型。模型的acc,loss,随迭代次数的关系可以通过绘制图表观看,很直观。训练集上的acc只能做个参考,主要还是最后测试的表现,因为你模型可能参数很多,最后导致模型过拟合。

          该部分还包含模型的调优,也就是调参,这是个学问,值得好好继续学习。

    04测试模型

    该部分是拿一批最接近业务的数据去测试,看每一类准确率。3分类是标注为0,1,2三个大类。由于业务追求0,1,2的准确率很高,允许2的召回率可以低一些,所以测试时要关注这些。

    下面是训练模型在验证集上的表现:

    acc      0.9183

    acc0    0.9676

    acc1     0.8

    acc2     0.9723

    准确率已经达到业务需求了,然后就结束了吗?当然没有。作为一个专业人士,我们要追求细节,哈哈。因为训练的是9分类,我们要看9分类的具体情况,以及那些错分的样本是哪些。

    下面是9类的结果:

    acc           0.9183

    acc0         0.9676

    acc1         0.8748

    acc2         7665

    acc3         0.5178

    acc4         0.8152

    acc5         0.9125

    acc6         0.9837

    acc7         0.5072

    acc8         0.6136

    怎么3,7的准确率那么低,怎么解决了?此处先埋下伏笔。

    祭出大杀器,矩阵统计。

    下图是在服务器上运行结果的矩阵部分截图:

    看着很不舒服,于是把它调整到文本中,方便观看。

    以上矩阵共有arrays1,arrays2,arrays3三个矩阵,每个矩阵的每一行代表真实标签label,共有9行,依次表示label从0到8,每一列代表预测标签predict,共有9列,依次表示predict从0到8,所以每个矩阵都是一个9*9的矩阵。arrays1表示共有81种可能组合,每一个元素表示模型把样本的label预测为predict的可能的个数。例如arrays1[0][0]表示模型把0预测为0的样本共有5975张。arrays2表示模型把样本的label预测为predict的概率总和,例如arrays2[0][0]表示模型把0预测为0的样本概率总和为5.53879372e+03。arrays3表示模型把样本的label预测为predict的概率平均值,arrays3=arrays2/arrays1。例如arrays3[0][0]表示模型把0预测为0的样本概率均值为0.92699476。从arrays3可以看出,主对角线的值(表示模型预测正确的概率均值)还是蛮大的,其它值不是很大,说明模型的整体性能还是挺优的。

    好,下面解决上面埋下的伏笔: 3,7的准确率怎么那么低,答案得在arrays3中寻找,我们得看label为3时,分为predict的情况,从arrays3可以看出,arrays3[3][0]较大,表示模型把3错分为0的概率,再去看对应的arrays1[3][0]=9, 表示模型把3错分为0的样本数为9,数据量不是很大啊,然后我们再去查看这9个样本的情况,发现是自己标注错了,好了,这不是模型的锅,模型是还是不错的。同理,分析7的准确率情况。

    经过以上的环节,基本深度学习的模型可以出第一版本了,之后再根据业务需求看模型是否需要迭代。

    感谢鹏哥带我。

    更多请移步

    1,我的gitchat达人课

    龙鹏的达人课​

    2,AI技术公众号,《与有三学AI》

    一文说说这十多年来计算机玩摄影的历史​

    3,以及摄影号,《有三工作室》

    冯小刚说,“他懂我”​

    相关文章

      网友评论

        本文标题:【学员分享】深度学习计算机视觉,两个星期从入门到上线

        本文链接:https://www.haomeiwen.com/subject/sbiryftx.html