开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 25234|回复: 35
收起左侧

[CC教程] 第四课,图像识别、分类、人脸识别

[复制链接]
发表于 2017-7-15 01:40:05 | 显示全部楼层 |阅读模式   江苏省南京市
本帖最后由 宇智波·佐助 于 2017-7-16 16:34 编辑

课程使用的程序、模型和代码下载和PPT下载:
4.classif_facerec.rar
4.classif_facerec.ppt
地址:https://share.weiyun.com/499c6512fa6ab2eb6fd3d978af6c8cd3

大纲总览
深度学习下的验证码识别教程 点我查看

这节课就不录视频了哈
图像识别、分类,是CNN最强有力的一个功能,也是比较有用的一种技术,能做很多扩展功能。这里我们讲关于分类识别的步骤和注意细节。
准确来说,验证码识别也是一种分类任务,不过是分类的一种特殊形式,多任务分类

多分类的样本不太好找,就找了麻将牌的图片来做演示
图片1.png

图片2.png



分类任务的第一步, 准备样本
我们样本的存放结构是,建立一个samples目录,目录下继续建立我们n个类别的类别文件夹,每个文件夹中再放我们每个类别的样本即可。

图片3.png


第二步,样本增广
由于样本量太少,不足以用来训练,我们可以通过将样本增广的手段扩充样本量。使得训练的模型更具鲁棒性,泛化能力更好。增广的方法,通常有缩放、旋转、镜像、平移、模糊、光照模拟等做法,尽可能的模拟我们识别任务中会遇到的场景来增广他,注意增广产生的背景需要给随即色(避免影响)

这里有提供一个简单的镜像旋转和缩放的增广程序:aug.py,如果你直接执行他,会看到目录下会多了这么些图片
图片4.png



第三步,创建label文件
这里我们使用分类专用的make-label.py生成label文件
图片5.png 图片6.png



第四步,就是选择合适的网络
这里我们选择的是 GoogLeNet网络,修改好分类的输出层为34,然后开始微调基于ImageNet的模型
googleNet有点特殊,因为他有3个loss、和精度,分别是代表三个阶段的分类情况,修改输出层类别为34时必须要3个都修改。
我们可以搜索,loss1、loss2、loss3,就能找到他
通过950次迭代,我们得到一个精度100%的模型。然后我们可以测试一下,程序在:人脸识别/麻将识别、图像识别.e

图片7.png

图片8.png


分类就这么愉快的结束了,主要目的是其过程,我们可以采用很多其他的模型,例如ResNet、VGG、NIN等等,他们都是非常优秀的模型。我们一定要掌握分类网络的训练方法,和注意事项,例如数据增广的问题。

我们基于分类的知识,还可以做到进一步,例如图像分级的任务,比如我们要对猪肉的照片做级别评判。这时候我们可以收集例如5级别的猪肉图片,然后作6类样本去训练,其中5类是猪肉的1-5级,而第六类我们会给其他图片,就是可能造成影响的图片,这类图片我们认为是0级,就是认为这图片不是猪肉的图片(这个设计的必要性根据任务确定就好了)。

其实,人脸识别,也是一种图像识别、分类技术的一个分支。



人脸识别

图片9.png

人脸识别,一直是一个比较高大上的技术,但现在其实也是很容易驾驭他的。而这个技术的主要方法,跟上面我们提到的分类技术,基本上是一样的。我们清楚了人脸识别的技术原理,也就能利用人脸识别的方法,进一步做到图像识别、检索等等。例如百度的以图搜图技术的实现等等

-------------------------------------------------------------------------------------------------------------------------

特征:
对一个图片的一种描述,比如128维特征,即该128个小数值表达了这一幅图,如果这个小数值表达能力足够的好,那么对我们而言,越相同的图片,他的这128个数值就越像。而越不同的,势必就越不像。

CNN有提取特征的能力,只要模型提取特征能力足够好,我们完全可以把图片特征提取出来,保存下来。对于任何一个新图片,我只需要提取他的特征,然后用这个特征在我们保存的库中全部比较一下,就能找到跟他最相似的一些图片,进而识别他。

这里说的模型提取能力足够好,是指在特定任务上,区分能力要足够的好,例如药盒识别,想要区分能力好,用ImageNet的模型是不行的,我们需要一定量的药盒图片做训练,他才能够细粒度的区分每个药盒是什么。

这里说的比较一下,就是把两个图的特征,计算一下夹角余弦距离,得到的值即为两个特征的相似度,就表达了比较的两个图的相似程度,通过这个程度,我们简单的给个阈值,即满足该阈值就是这个目标就好了。

-------------------------------------------------------------------------------------------------------------------------

网络的特征层?
对于一个分类的网络,通常最后我们接的都是softmaxWithLoss,softmaxWithLoss前面是一个n个输出的全连接层InnerProduct,例如如下关系:

Data Layer
...巴拉巴拉
Feat Layer(num output = k)
InnerProduct Layer(num output = n)
SoftmaxWIthLoss
Accuracy

这里我们主要表达的是特征层所在的位置,特征层在Caffe网络中,分类层的前一层,即是。例如上面的例子,我们的特征长度是k(如果不是全连接的话可能比k大),而我们的分类类别是n。

这时候我们可以用“提取特征”函数,来提取该层的特征,实现对输入图做特征提取。也正是利用这个特性,我们完成了人脸识别的核心功能。其他的图像识别也完全一样
图片10.png



-------------------------------------------------------------------------------------------------------------------------

关于人脸识别的细节:
1、第一个坑,不少模型,在lfw上表现精度为99.9%,但是实际使用却不行,是因为用的老外人头训练的,而不是中国人,放在国人上会下降很多直接不可用,例如VGG Face。除非你用很大量的(含有中国人的)库训练。

2、人脸识别的模型目前小老百姓用的,基本都是基于LFW(Labeled Faces in the Wild Home)这个标准评价精度的,而牛逼的公司,则是MegaFace这个百万人脸的库上比较精度。

3、人脸识别的训练,其实就是多分类网络一样的道理,不过需要选择一个非常好的网络、样本、loss和训练手法才能把这件事做好。目前声称厉害的Center Loss实验没啥效果也没深入看过,反正是发CVPR了。

4、开源模型,一般有resnet的、像这里案例给的lightCNN的,大家可以在网络上(github)找到已经开源的精度更好的模型,然后用同样的方法调用他就好了,一定要注意均值和缩放的问题

5、人脸识别的输入图片,需要人脸检测后的结果裁切下来,然后通过检测5个关键点,矫正,最后输入到网络中去,当然如果不对齐,精度其实相差不是特别大,如果你追毛球次可以了解这些。而人脸检测就用MTCNN或者seetaFace开源的算法就足够好了。而MTCNN的检测很好还带关键点。一定要搞清楚你使用的模型是怎么输入图片的,否则你的精度好不起来

6、阈值的选取,最简单的,就是一个一个的实验,哪个好就哪个,一般0.45-0.55(比较严格了)。你想研究的话,专业选手会画ROC曲线,然后选取最合适的阈值

7、绝大部分模型,对模糊的人脸应付都不是太好

https://github.com/CongWeilin/mtcnn-caffe
https://github.com/dlunion/mtcnn
https://github.com/AlfredXiangWu/face_verification_experiment

关于易里面的人脸检测和关键点等方面的,可以参考曾经发的帖子:
http://bbs.eyuyan.com/read.php?tid=396368









评分

参与人数 5好评 +4 精币 +13 收起 理由
猪八戒在看书 + 1 + 2 对楼主的行为,一万个赞!
Patek + 1 + 3 新技能已get√
残留彡 + 1 + 2 小哥不地道啊,不在群里发
sxnbrv + 1 谢谢老师新技能已get√
冰点 + 1 + 5 感谢发布原创作品,精易因你更精彩!

查看全部评分

发表于 2022-6-26 08:13:05 | 显示全部楼层   山西省太原市
感谢分享
回复 支持 反对

使用道具 举报

发表于 2022-3-30 09:50:57 | 显示全部楼层   山东省菏泽市
学习一下
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)
发表于 2019-7-20 16:38:37 | 显示全部楼层   吉林省白山市
高大上啊,看不懂啊
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 4 天

发表于 2019-7-12 11:48:26 | 显示全部楼层   上海市上海市

人工智能啊!好高大上!要是有专用的模块就好了
回复 支持 反对

使用道具 举报

结帖率:67% (2/3)

签到天数: 4 天

发表于 2018-12-21 05:04:06 | 显示全部楼层   河北省石家庄市
好看起来很历害
回复 支持 反对

使用道具 举报

发表于 2018-12-19 21:50:52 | 显示全部楼层   上海市上海市
楼主威武!!!
回复 支持 反对

使用道具 举报

签到天数: 1 天

发表于 2018-11-17 20:52:20 | 显示全部楼层   江苏省苏州市
超级想要,厉害了楼主!
回复 支持 反对

使用道具 举报

发表于 2018-8-27 14:38:41 | 显示全部楼层   湖南省长沙市
厉害厉害…………
回复 支持 反对

使用道具 举报

发表于 2018-6-7 15:38:18 | 显示全部楼层   山东省滨州市
这个技术66666666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表