当前位置: 首页 > news >正文

从0开始学习计算机视觉--Day02--数据驱动

上次我们在课程里了解到,亚马逊网站在当时构建了一个在那时候最大的供AI训练的数据集,为了推广这个测试,他们举办了比赛邀请了许多的参赛者,识别图片的标准是输出的类别中只要在前面五个里包含了正确答案就算识别成功。在这个过程中,AI识别的错误率从25.6%,最终降低到了5.1%,在当时达到了比赛方派出了一个博士花费几周时间去识别图片的错误率,这表明了AI从不可实现到在实际应用中的允许的错误率。其中,在2012年,错误率有了一个明显的降低,这得益于当时所提出的一个算法:卷积神经网络,而这个也是计算机视觉中的重点模型。

在当时的imagenet比赛初期,识别图像的算法依旧是采用分层式的结构:先是计算一些图像的特征和局部不变特征,通过一些池化操作(一般会取窗口内的最大值或平均值作为输出,能够减少数据量,保留重要特征,达到降低复杂度,增强鲁棒性的效果)后,再通过一些多层处理(通过多层对数据进行处理,实现模拟人眼处理特征的过程,即从简单到复杂特征的识别)后,最终将结果描述符传递给线性SVM。在这个方法中,依然保有最开始识别图像的思路:采取分层式的结构,识别边界与不变特征。而等到2012年的获胜者采用卷积神经网络后,后面几年的获胜者全都采用了神经网络,且层数越来越高。

其实卷积神经网络并不是2012年前几年发明的,相反其在90年代就已经出现,在当时被用于识别手写的支票和信件。那么是什么促使了这种经典算法在经过几十年后又能登上科技前列的舞台呢?一个原因是因为计算能力的更新。有一个大家都默认的理论尽管用的是经典算法,但只要想方设法把模型的架构扩大,那么就会取得更好的效果,而在2012年时有了90年代所不具备的能够实现并行计算的GPU,所以可以说只要算力足够,不断的扩大模型架构和规模就是能提升效果。第二个原因是在以前并没有那么多的带标签的数据供模型训练,模型也就没能展现出那么优秀的能力,毕竟算法模型是需要庞大的数据来打基础的,并不仅仅取决于其运行逻辑和计算能力,需要一个成长的过程。

数据驱动方法

图像分类,是一个计算机视觉中真正核心的任务,更具体的说,当我们做图像分类时,分类系统接受一些输入图像,并且此时系统已经知道了一些图片的分类,而计算机的任务就是观看图片并给出标签。在计算机中呈现图片的方式是一大堆数字,可能是一些800×600的像素,每个像素由三个数字组成,给出像素红绿蓝三个值。这个就叫做语义鸿沟,因为对于一张猫咪的标签或概念是我们人为赋予的,这种语义概念和计算机接收到的像素值完全不一样。另一方面,也许图片只是修改了不起眼的一部分,甚至仅仅只是将图片进行了左右翻转,并没有影响到图片还是一只猫,但在像素的层面上发生了很大的改变,这同样会影响计算机做出判断。除了图片的视角以外,图片里的主体猫,也可能会发生许多改变,例如只是露出背影,摆出了奇怪的姿势,拍照的光影条件不同,对于这些不同的情况,算法的结果应该是鲁棒(系统、模型或算法在面对异常输入、干扰或不确定环境时,仍能保持稳定性和正常功能的能力)的。

想要写出直接识别图片的算法,是一件比较苦难的事情,因为像之前说的,计算机需要找到主体的边缘,然后简化主体的部分,然后多次判断并组合结果才能识别一个种类的图片。但是世界上有那么多不同的图片,通过这种方法去识别很不现实。这就引出了数据驱动这个方法,我们不写具体的规则来识别一只猫或一条鱼,我们选择直接在网上下载很多不同种类的图片作为数据集,然后训练机器对图片进行分类,机器会用某种方式来总结各个图片的特征并生成一个模型,给出识别不同种类图片的核心要素,最后再用新的图片来验证模型识别的效果好坏。将这个过程简化为写两个函数,第一个函数负责接收图片及其标签并输出模型,第二个函数负责接受刚才的模型并对图片进行分类。这种算法比较简单,仅仅是用不同种类的图片训练模型,然后模型在预测时,会选择一个跟预测图片最相似的图片的标签作为结果,结果虽然很多时候并不准确,但算法的逻辑是比较直接的。

在对比图片是否不同时,我们通常会用一个叫做L1距离的方法,即将两幅图片的对应位置的像素作差,并将差值的绝对值加在一起(前提是图片的尺寸是一样的),如果差值小于0.1×总像素数×225,则认为两张图片是相同的。

学习来源于斯坦福教程:Stanford University CS231n: Deep Learning for Computer Vision

相关文章:

  • 一、什么是生成式人工智能
  • linux生产环境下根据关键字搜索指定日志文件命令
  • 嵌入式开发之嵌入式系统硬件架构设计时,如何选择合适的微处理器/微控制器?
  • TC、TM、RM如何协同解决分布式事务难题
  • 深入理解 Cross-Entropy 损失函数:从原理到实践
  • 5.5 misc驱动框架
  • SIEMENS 标准程序解读 ---> Fanuc(法那科)机器手通讯交互程序
  • csp基础之进制转换器
  • `shallowReactive` 与 `shallowRef`:浅层响应式 API
  • RA4M2开发涂鸦模块CBU(3)----定时器GPT-PWM调光
  • 【软考高级系统架构论文】论企业集成平台的理解与应用
  • Springfox使用详解
  • CPU Cache 的映射与寻址
  • Vue+spring boot前后端分离项目搭建---小白入门
  • Qt + C++ 入门2(界面的知识点)
  • UML:状态图介绍与绘制
  • 【FineDance】舞蹈多样性的得来
  • 通过 Lambda + API Gateway + 外部 API 实现。
  • 在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义
  • 使用Node.js开发服务端接口
  • 17网站一起做网店广州新塘/网络公司名字
  • 网站定制微安电力案例/免费的html网站
  • 做明星简介网站侵权吗/阜阳seo
  • wordpress怎么让网页支持多国语言/seo常见的优化技术
  • 网站怎么做好/排名优化工具下载
  • 供应链网站制作/高权重外链