Opencv 图像识别Android实战(识别扑克牌 5.KNN算法在本例中的应用)

Opencv 图像识别Android实战(识别扑克牌 5.KNN算法在本例中的应用),第1张

         KNN 算法是一种简单、直观、易于理解的分类方法。举一个非常通俗的例子,你要确定一个人是富人还是普通人,还是穷人,你可以看他经常和谁在一起(和谁的距离比较近)他就是那一类人,所谓物以类聚人以群分,就能很好的说明这个KNN的原始思想,这里就不介绍非常学术化的概念了。

        在本例中我们会把所有的样本数据分成如下类别

       0,1,2,3,4,5,6,7,8,9,方块,黑桃,梅花,黑桃,A,J,K,Q以及X这19个类别,每个类别下,我们分别收集了几十个样本,当我们抓取到一个未知的,想知道它到底属于哪一类,只需要和这些类别下的样本分别进行比较,这个未知的和哪一个类别下的更像,那么他就属于哪一个类,在本例中我们更加简化了这种这种算法,对于未知的图像我们只需要找到一个和它最接近的样本,这个样本的类别就定义为这个未知图像的类别。

        这里为什么会有一个X文件夹呢? 想想一下如果抓到一个图像他和哪一类的都不想,那么极有可能他不是我们的要找的目标,这类东西我们我们不关心,就把它单独分成一类,我们可以称之为负样本,凡是不是我们想要的都分到这个类别,不影响我们得到正确的数据。

 得到更多的数据

这无疑是最简单的解决办法,深度学习模型的强大程度取决于你带来的数据。增加验证准确性的最简单方法之一是添加更多数据。如果您没有很多训练实例,这将特别有用。

如果您正在处理图像识别模型,您可以考虑通过使用数据增强来增加可用数据集的多样性。这些技术包括从将图像翻转到轴上、添加噪声到放大图像。如果您是一个强大的机器学习工程师,您还可以尝试使用GANs进行数据扩充。

请注意,您使用的增强技术会更改图像的整个类。例如,在y轴上翻转的图像没有意义!

添加更多的层

向模型中添加更多层可以增强它更深入地学习数据集特性的能力,因此它将能够识别出作为人类可能没有注意到的细微差异。

这个技巧图解决的任务的性质。

对于复杂的任务,比如区分猫和狗的品种,添加更多的层次是有意义的,因为您的模型将能够学习区分狮子狗和西施犬的微妙特征。

对于简单的任务,比如对猫和狗进行分类,一个只有很少层的简单模型就可以了。

更多的层->更微妙的模型

更改图像大小

当您对图像进行预处理以进行训练和评估时,需要做很多关于图像大小的实验。

如果您选择的图像尺寸太小,您的模型将无法识别有助于图像识别的显著特征。

                                 

相反,如果您的图像太大,则会增加计算机所需的计算资源,并且/或者您的模型可能不够复杂,无法处理它们。

常见的图像大小包括64x64、128x128、28x28 (MNIST)和224x224 (vgg -16)

请记住,大多数预处理算法不考虑图像的高宽比,因此较小尺寸的图像可能会在某个轴上收缩。

从一个大分辨率的图像到一个小尺寸的图像,比如28x28,通常会导致大量的像素化,这往往会对你的模型的性能产生负面影响

增加训练轮次

epoch基本上就是你将整个数据集通过神经网络传递的次数。以+25、+100的间隔逐步训练您的模型。

只有当您的数据集中有很多数据时,才有必要增加epoch。然而,你的模型最终将到达一个点,即增加的epoch将不能提高精度。

此时,您应该考虑调整模型的学习速度。这个小超参数决定了你的模型是达到全局最小值(神经网络的最终目标)还是陷入局部最小值。

全局最小是神经网络的最终目标。

减少颜色通道

颜色通道反映图像数组的维数。大多数彩色(RGB)图像由三个彩色通道组成,而灰度图像只有一个通道。

颜色通道越复杂,数据集就越复杂,训练模型所需的时间也就越长。

如果颜色在你的模型中不是那么重要的因素,你可以继续将你的彩色图像转换为灰度。

你甚至可以考虑其他颜色空间,比如HSV和Lab。

RGB图像由三种颜色通道组成:红、绿、蓝。

                                 

转移学习

迁移学习包括使用预先训练过的模型,如YOLO和ResNet,作为大多数计算机视觉和自然语言处理任务的起点。

预训练的模型是最先进的深度学习模型,它们在数百万个样本上接受训练,通常需要数月时间。这些模型在检测不同图像的细微差别方面有着惊人的巨大能力。

这些模型可以用作您的模型的基础。大多数模型都很好,所以您不需要添加卷积和池化。

迁移学习可以大大提高你的模型的准确性~50%到90%!

超参数

上面的技巧为你提供了一个优化模型的基础。要真正地调整模型,您需要考虑调整模型中涉及的各种超参数和函数,如学习率(如上所述)、激活函数、损失函数、甚至批大小等都是非常重要的需要调整的参数。

                                 

总结

这些技巧是希望大家在不知道如何去做的时候可以快速的找到提高的思路。

还有无数其他方法可以进一步优化你的深度学习,但是上面描述的这些方法只是深度学习优化部分的基础。

图像处理

NMOS的电流Id必须从D流到S,而PMOS的电流必须从s流到d一般RDS非常小,在导通时D与S电压几乎一样,G端电压比D端高出一个启动电压,实际上就是G端电压比D端高出一个启动电压,这是N沟道MOS管导通的必要条件。NMOS导通需要gs有一个正压,导通时,必须通过自举电容来获取gs的正压,pmos导通gs需要一个负压,即G端电压要小于s端电压,这样ic实现起来就很方便了,不用之举电容。但是pmos没有nmos流行的原因是,pmos导通压降大,效率低,Pmos的同态电阻比NMOS大,输入电压低,而且还有成本问题,所以开关电源主开关管很少用PMOS导通的意思是作为开关,相当于开关闭合。NMOS的特性,Vgs大于一定的值就会导通,适合用于源极接地时的情况低端驱动,只要栅极电压达到4V或10V就可以了。

视觉算法:机器视觉,专注于机器模拟动物视觉的算法。着重指定图像识别,分类等视觉人物算法。

图像算法:专注于图像类的算法,不强调模拟视觉的功能。着重指图像增强,人像美化(美图),图像修补,就是 photo shop上的算法。

两者采用的基本理论大量交叉。

视觉算法由图像算法和分类和拟合算法组成。

图像算法:边缘提取,图像分割,二值化,各类图像处理都称为图像算法

以云脉身份证识别为例,它的识别过程包括图像预处理,图像分割,特征提取和图像分类。

云脉身份证识别是利用光学字符识别,属于图像识别中的一个分支。

在整个过程设计中,有一些算法,包括灰度直方图,灰度统计,图像阀值分割,中值滤波,定位分割,列分割,细分割,归一化等等算法。

一般来说,人脸识别系统包括图像摄取、人脸定位、图像预处理、以及人脸识别(身份确认或者身份查找)。系统输入一般是一张或者一系列含有未确定身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图象或者相应的编码,而其输出则是一系列相似度得分,表明待识别的人脸的身份。

人脸识别算法分类

基于人脸特征点的识别算法(Feature-based recognition algorithms)。

基于整幅人脸图像的识别算法(Appearance-based recognition algorithms)。

基于模板的识别算法(Template-based recognition algorithms)。

利用神经网络进行识别的算法(Recognition algorithms using neural network)。

基于光照估计模型理论

提出了基于Gamma灰度矫正的光照预处理方法,并且在光照估计模型的基础上,进行相应的光照补偿和光照平衡策略。

优化的形变统计校正理论

基于统计形变的校正理论,优化人脸姿态;强化迭代理论

强化迭代理论是对DLFA人脸检测算法的有效扩展;

独创的实时特征识别理论

该理论侧重于人脸实时数据的中间值处理,从而可以在识别速率和识别效能之间,达到最佳的匹配效果

以上就是关于Opencv 图像识别Android实战(识别扑克牌 5.KNN算法在本例中的应用)全部的内容,包括:Opencv 图像识别Android实战(识别扑克牌 5.KNN算法在本例中的应用)、在做图像处理时,如何提高识别算法的设计与效果的精度、人脸图像识别算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:聚客百科

原文地址: https://juke.outofmemory.cn/life/3667893.html

()
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-25
下一篇 2023-04-25

发表评论

登录后才能评论

评论列表(0条)

保存