机器视觉与影像辨识

第四个范例跟机器视觉与影像辨识有关, 我们先来了解一下什麽是机器视觉.

机器视觉

机器视觉想要做的事情是模仿人类的视觉能力, 让机器也能够了解影片或图中的内容, 例如机器能够知道影片或图片中有没有某种特定的物体.

  • 规则式判断
    机器视觉的应用很早就开始, 例如工厂将机器视觉应用在瑕疵检测, 以自动化的方式取代(或辅助)人工检测.当时的应用以规则式(rule-based)为主, 也就是必需告诉电脑如何判断不同种类的规则内容, 这样电脑在取得影像之後就能协助判断规则是否成立, 达到自动检测的效果.
    以影像的实作面来说, 最常使用的是OpenCV. OpenCV是Intel所开发并开源的专案, 专门用来处理影像或图档, 例如图档的平移旋转水平翻转影像缩放裁剪亮暗调整影像膨胀侵蚀透视转换等功能.
    但以规则式(rule-based)的方式执行影像处理, 只能处理规则有写到的状况, 若遇到新的状况则需要以人工的方式调整规则之後才能处理新的状况.

  • 类神经网路
    近年来, 随着机器学习在影像处理的能力有着显着的增长, 尤其是卷积神经网路(CNN)很适合处理影像领域的资料, 因此影像辨识成为机器学习很热门的领域.
    在影像辨识应用中可分为下列四类

    • 影像分类:单一影像识别, 例如可分辨影像里有狗或有猫
    • 影像分类+定位:除了可以识别单一影像之外, 也可以标示出该影像的位置在哪里, 例如机器可以跟你说图片里有一只狗而且狗的位置在右下方.
    • 物件侦测:在一张有多个物体的图片, 可以将图片中的每一物体分别区分出类别, 而且也能标示出每一物体的位置. 例如在路口的影像之中可以标示出车子在路口的哪个位置, 而且能标注这个物体是车子
    • 语意切割:可以做影像内容的割切, 把该物体的位置、大小、型态描绘出来. 例如标示出路口影像的车子或行人的轮廓.
  • OpenCV与类神经网路的关系.
    虽然OpenCV的规则式判断方法较不具弹性, 但OpenCV的强项是图档的处理. 因此现在一般在做影像处理时, 仍然会套用OpenCV的套件来处理图档, 然後再以CNN进行模型的训练, 两者是相辅相成的关系.

机器视觉的处理流程

在处理机器视觉任务时, 以目前影像辨识的处理方式(也是Nilvana的方式)通常会包含下列流程:

  • 取得影像或图档:可以从公开的dataset取得或自行准备(拍照)训练所需要的照片
  • 资料标注:使用较广泛的监督式学习须将资料进行特徵标注,藉此训练出可用模型
  • 资料前处理:将图档进行裁剪、补满或其它处理,提升模型训练时的效率,也能在模型推论时得到更好的结果
  • 资料扩增:利用不同方式增加有限资料的多样性,例如:水平翻转、色调调整等方式,藉此提高整体资料集的质量
  • 建立资料集版本:资料透过不同方式的前处理及扩增所产生出的不同版本,可将训练出来的模型进行比较,观察出哪些方式可能较适合
  • 执行训练:选择资料集版本、架构、参数、metrics之後执行训练, 取得最佳权重的model
  • 部署模型:将模型部署後提供endpoint, 让外部使用者可以存取endpoint後取得推论结果以进行二次开发.

下一篇我们将使用nilvana执行第一个步骤取得影像或图档.

参考资料

https://opencv.org/


<<:  DAY24 - 现有的专案可以升级的地方(梦)

>>:  Day21 类别与物件--魔术方法construct and deconstruct

Day-17 Excel手把手作图表(二)

今日练习档 ԅ( ¯་། ¯ԅ) 是的,今天即将延续昨天的部分继续设计Excel图表,如果您还没有看...

认识与建立javascript(DAY16)

Javascript是一种直译式语言,直译式就是在执行时会一行一行的动态直译然後执行,在执行上速度会...

简报版-第五章-从手机安全更新认识安全更新年限、回收资料安全与定位追踪

其实原本最初规画想要做Index方式的纪录,然後多增加一些没写到的面向 不过,总是计画赶不上变化 ...

开赛第一天心得

原本是个程序麻瓜 经过了三个月的淬炼 稍微有了一点概念 中间过程中十分痛苦 一度让我以为我原来不会G...

前端工程师也能开发全端网页:挑战 30 天用 React 加上 Firebase 打造社群网站|Day12 文章列表

连续 30 天不中断每天上传一支教学影片,教你如何用 React 加上 Firebase 打造社群...