本月累计签到次数:

今天获取 积分

视觉技术

视觉技术

590 浏览

干货:工业机器人的眼睛视觉系统该如何选择?

智能制造类 jingjing 2017-03-06 14:36 发表了文章 来自相关话题

1.摄像头和光学部件

这一类通常含有一个或多个摄像头和镜头(光学部件),用于拍摄被检测的物体。根据应用,摄像头可以基于如下标准,黑白、复合彩色(Y/C),RGB彩色,非标准黑白(可变扫描),步进扫描(progressive-scan)或线扫描。



2. 灯光

灯光用于照亮部件,以便从摄像头中拍摄到更好的图像,灯光系统可以在不同形状、尺寸和亮度。一般的灯光形式是高频荧光灯、LED、白炽灯和石英卤(quartz-halogen)光纤。



3. 部件传感器

通常以光栅或传感器的形式出现。当这个传感器感知到部件靠近,它会给出一个触发信号。当部件处于正确位置时,这个传感器告诉机器视觉系统去采集图像。



4. 图像采集卡

也称为视频抓取卡,这个部件通常是一张插在 PC上的卡。

这张采集卡的作用将摄像头与 PC连接起来。它从摄像头中获得数据(模拟信号或数字信号),然后转换成PC 能处理的信息。

它同时可以提供控制摄像头参数(例如触发、曝光时间、快门速度等等)的信号。图像采集卡形式很多,支持不同类型的摄像头,不同的计算机总线。




5. PC平台

计算机是机器视觉的关键组成部分。

应用在检测方面,通常使用 Pentium或更高的 CPU。一般来讲,计算机的速度越快,视觉系统处理每一张图片的时间就越短。

由于在制造现场中,经常有振动、灰尘、热辐射等等,所以一般需要工业级的计算机。




6. 检测软件

机器视觉软件用于创建和执行程序、处理采集回来的图像数据、以及作出“通过/失败(PASS/FAIL)”决定。

机器视觉有多种形式(C 语言库、ActiveX 控件、点击编程环境等等),可以是单一功能(例如设计只用来检测 LCD或 BGA、对齐任务等等),也可以是多功能(例如设计一个套件,包含计量、条形码阅读、机器人导航、现场验证等等)。




7. 数字 I/O和网络连接

一旦系统完成这个检测部分,这部分必须能与外界通信,例如需要控制生产流程、将“通过/失败(PASS/FAIL)”的信息送给数据库。通常,使用一张数字 I/O板卡和(或)一张网卡来实现机器视觉系统与外界系统和数据库的通信。

配置一个基于 PC的机器视觉系统认真的计划和注意细节能帮助你确保你的检测系统符合你的应用需求。如下是你必需考虑的几点:






确定你的目标,这可能是最重要的一步决定在这个检测任务中你需要实现什么,检测任务通常分为如下几类:
 
测量或计量
 
读取字符或编码(条形码)信息。
 
检测物体的状态
 
认知和识别特殊的特性 模式识别
 
将物体与模板进行对比或匹配
 
为机器或机器人导航检测流程可以包含只有一个操作或包含多个与检测任务相关的任务。
 
为了确认你的任务,首先你应该明确为了最大限度检测部件你需要做的测试,也就是你能考虑到会出现的缺陷。


为了明确什么哪个才是最重要的,最好做一张评估表,列出“必须做”和“可以做”的测试。一旦主要的对测试标准满意,随后可以将更多的测试加进去来改善检测过程,一定要记住,添加测试的同时也会增加检测的时间。


确定你需要的速度 –系统检测每一个部件需要多少时间?


这个不只是由 PC的速度决定,还受生产流水线速度的影响。


很多机器视觉包含了时钟/计时器,所以检测操作的每一步所需要的时间都可以准确测量,从这些数据,我们就可以修改我们的程序以满足时间上的要求。通常,一个基于 PC 的机器视觉系统每一秒可以检测 20-25 个部件,与检测部件的多少和处理程序以及计算机的速度有密切关系。


聪明地选择你的硬件


一套机器视觉系统的性能与它的部件密切相关。在选择的过程中,有很多捷径特别在光学成像上可能很大程度降低系统的效率。如下是在选择部件时你必须紧记的几个基本原则。


1.摄像头 摄像头的选择与应用的需求直接相关,通常考虑三点:
 
a)黑白还是彩色;
 
b)部件/目标的运动;
 
c)图像分辨率。
 

在检测应用中大部分使用黑白摄像头,因为黑白图像能提供 90%可视数据,并且比彩色便宜。彩色摄像头主要用于一些需要分析彩色图像的场合里。根据部件在检测时是否移动,决定我们选择标准隔行扫描摄像头还是逐行扫描摄像头。另外,图像的分辨率必须足够高,以提供检测任务需要的足够的数据。最后,摄像头必须质量好和可以避免工业现场中的振动、灰尘和热的影响。


2.光学部件和照明这个至关重要的因素往往被人所忽略。当你使用一个很差的光学部件或照明,就算你使用最好的机器视觉系统,它表现出的性能甚至比不上一个配上良好光学部件和适当照明的低能力系统。光学部件的目标是产生最好和最大可用面积的图像,并且提供最好的图像分辨率。照明的目标是照亮需要测量或检测的部分的关键特征。通常,照明系统的设计由如下因素决定:颜色、纹理、尺寸、外形、反射率等等。


3.图像采集卡虽然图像采集卡只是完整的机器视觉系统的一个部件,但是它扮演一个非常重要的角色。


图像采集卡直接决定了摄像头的接口:黑白、彩色、模拟、数字等等。


使用模拟输入的图像采集卡,目标是尽量不变地将摄像头采集的图像转换为数字数据。使用不正确的图像采集卡可能得到错误的数据。


工业用的图像采集卡通常用于检测任务,多媒体采集卡由于它通过自动增益控制、边沿增强和颜色增强电路来更改图像数据,所以不用在这个领域里。使用数字输入的图像采集卡的目标是将摄像头输出的数字图像数据转换并输送到 PC 中作处理。


考虑各种变化:人类的眼睛和大脑可以在不同的条件下识别目标,但是机器视觉系统就不是这样多才多艺了,它只能按程序编写的任务来工作。了解你的系统能看到什么和不能看到什么能帮助你避免失败(例如将好的部件认为是坏的)或其它检测错误。一般要考虑的包括部件颜色、周围光线、焦点、部件的位置和方向和背景颜色的大变化。


正确选择软件:机器视觉软件是检测系统中的智能部分,也是最核心的部分。软件的选择决定了你编写调试检测程序的时间、检测操作的性能等等。


机器视觉提供了图形化编程界面 (通常称为“Point&Click”) 通常比其他编程语言(例如 VisualC++)容易,但是在你需要一些特殊的特征或功能时有一定的局限性。基于代码的软件包,尽管非常困难和需要编码经验,但在编写复杂的特殊应用检测算法具备更大的灵活性。一些机器视觉软件同时提供了图形化和基于代码的编程环境,提供两方面最好的特征,提供了很多灵活性,满足不同的应用需求。


通信和记录数据:机器视觉系统的总的目标是通过区分好和坏的部件来实现质量检测。为了实现这一功能,这个系统需要与生产流水线通信,这样才可以在发现坏的部件是做某种动作。通常这些动作是通过数字 I/O 板,这些板与制造流水线中的 PLC相连,这样坏的部件就可以跟好的部件分离。例外,机器视觉系统可以与网络连接,这样就可以将数据传送给数据库,用于记录数据以及让质量控制员分析为什么会出现废品。在这一步认真考虑将有助于将机器视觉系统无缝与生产流水线结合起来。需要考虑的问题是:
 
使用了什么类型的 PLC,它的接口如何?
 
需要什么类型的信号?
 
现在使用或必须使用什么类型的网络?
 
在网络上传送的文件格式是什么?通常使用 RS-232端口与数据库通信,来实现对数据的纪录。
 

为以后做准备:当你为机器视觉系统选择部件时,时刻记住未来的生产所需和有可能发生的变动。这些将直接影响你的机器视觉软硬件是否容易更改来满足以后新的任务。提前的准备将不仅仅节约你的时间,而且通过在将来重用现有的检测任务可以降低整个系统的价格。机器视觉系统的性能由最差的部分决定(就像一个木桶的容量由最短的一个木块决定),精度则由它能获取的信息决定。花时间和精力合理配置系统就可以建造一个零故障和有弹性的视觉检测系统。
 
 
更多内容请关注:www.imefuture.com





 
 
 
来源:微信公众号 工控帮 查看全部
1.摄像头和光学部件

这一类通常含有一个或多个摄像头和镜头(光学部件),用于拍摄被检测的物体。根据应用,摄像头可以基于如下标准,黑白、复合彩色(Y/C),RGB彩色,非标准黑白(可变扫描),步进扫描(progressive-scan)或线扫描。



2. 灯光

灯光用于照亮部件,以便从摄像头中拍摄到更好的图像,灯光系统可以在不同形状、尺寸和亮度。一般的灯光形式是高频荧光灯、LED、白炽灯和石英卤(quartz-halogen)光纤。



3. 部件传感器

通常以光栅或传感器的形式出现。当这个传感器感知到部件靠近,它会给出一个触发信号。当部件处于正确位置时,这个传感器告诉机器视觉系统去采集图像。



4. 图像采集卡

也称为视频抓取卡,这个部件通常是一张插在 PC上的卡。

这张采集卡的作用将摄像头与 PC连接起来。它从摄像头中获得数据(模拟信号或数字信号),然后转换成PC 能处理的信息。

它同时可以提供控制摄像头参数(例如触发、曝光时间、快门速度等等)的信号。图像采集卡形式很多,支持不同类型的摄像头,不同的计算机总线。




5. PC平台

计算机是机器视觉的关键组成部分。

应用在检测方面,通常使用 Pentium或更高的 CPU。一般来讲,计算机的速度越快,视觉系统处理每一张图片的时间就越短。

由于在制造现场中,经常有振动、灰尘、热辐射等等,所以一般需要工业级的计算机。




6. 检测软件

机器视觉软件用于创建和执行程序、处理采集回来的图像数据、以及作出“通过/失败(PASS/FAIL)”决定。

机器视觉有多种形式(C 语言库、ActiveX 控件、点击编程环境等等),可以是单一功能(例如设计只用来检测 LCD或 BGA、对齐任务等等),也可以是多功能(例如设计一个套件,包含计量、条形码阅读、机器人导航、现场验证等等)。




7. 数字 I/O和网络连接

一旦系统完成这个检测部分,这部分必须能与外界通信,例如需要控制生产流程、将“通过/失败(PASS/FAIL)”的信息送给数据库。通常,使用一张数字 I/O板卡和(或)一张网卡来实现机器视觉系统与外界系统和数据库的通信。

配置一个基于 PC的机器视觉系统认真的计划和注意细节能帮助你确保你的检测系统符合你的应用需求。如下是你必需考虑的几点:

1.JPG


确定你的目标,这可能是最重要的一步决定在这个检测任务中你需要实现什么,检测任务通常分为如下几类:
 
  • 测量或计量

 
  • 读取字符或编码(条形码)信息。

 
  • 检测物体的状态

 
  • 认知和识别特殊的特性 模式识别

 
  • 将物体与模板进行对比或匹配

 
  • 为机器或机器人导航检测流程可以包含只有一个操作或包含多个与检测任务相关的任务。

 
为了确认你的任务,首先你应该明确为了最大限度检测部件你需要做的测试,也就是你能考虑到会出现的缺陷。


为了明确什么哪个才是最重要的,最好做一张评估表,列出“必须做”和“可以做”的测试。一旦主要的对测试标准满意,随后可以将更多的测试加进去来改善检测过程,一定要记住,添加测试的同时也会增加检测的时间。


确定你需要的速度 –系统检测每一个部件需要多少时间?


这个不只是由 PC的速度决定,还受生产流水线速度的影响。


很多机器视觉包含了时钟/计时器,所以检测操作的每一步所需要的时间都可以准确测量,从这些数据,我们就可以修改我们的程序以满足时间上的要求。通常,一个基于 PC 的机器视觉系统每一秒可以检测 20-25 个部件,与检测部件的多少和处理程序以及计算机的速度有密切关系。


聪明地选择你的硬件


一套机器视觉系统的性能与它的部件密切相关。在选择的过程中,有很多捷径特别在光学成像上可能很大程度降低系统的效率。如下是在选择部件时你必须紧记的几个基本原则。


1.摄像头 摄像头的选择与应用的需求直接相关,通常考虑三点:
 
  • a)黑白还是彩色;

 
  • b)部件/目标的运动;

 
  • c)图像分辨率。

 

在检测应用中大部分使用黑白摄像头,因为黑白图像能提供 90%可视数据,并且比彩色便宜。彩色摄像头主要用于一些需要分析彩色图像的场合里。根据部件在检测时是否移动,决定我们选择标准隔行扫描摄像头还是逐行扫描摄像头。另外,图像的分辨率必须足够高,以提供检测任务需要的足够的数据。最后,摄像头必须质量好和可以避免工业现场中的振动、灰尘和热的影响。


2.光学部件和照明这个至关重要的因素往往被人所忽略。当你使用一个很差的光学部件或照明,就算你使用最好的机器视觉系统,它表现出的性能甚至比不上一个配上良好光学部件和适当照明的低能力系统。光学部件的目标是产生最好和最大可用面积的图像,并且提供最好的图像分辨率。照明的目标是照亮需要测量或检测的部分的关键特征。通常,照明系统的设计由如下因素决定:颜色、纹理、尺寸、外形、反射率等等。


3.图像采集卡虽然图像采集卡只是完整的机器视觉系统的一个部件,但是它扮演一个非常重要的角色。


图像采集卡直接决定了摄像头的接口:黑白、彩色、模拟、数字等等。


使用模拟输入的图像采集卡,目标是尽量不变地将摄像头采集的图像转换为数字数据。使用不正确的图像采集卡可能得到错误的数据。


工业用的图像采集卡通常用于检测任务,多媒体采集卡由于它通过自动增益控制、边沿增强和颜色增强电路来更改图像数据,所以不用在这个领域里。使用数字输入的图像采集卡的目标是将摄像头输出的数字图像数据转换并输送到 PC 中作处理。


考虑各种变化:人类的眼睛和大脑可以在不同的条件下识别目标,但是机器视觉系统就不是这样多才多艺了,它只能按程序编写的任务来工作。了解你的系统能看到什么和不能看到什么能帮助你避免失败(例如将好的部件认为是坏的)或其它检测错误。一般要考虑的包括部件颜色、周围光线、焦点、部件的位置和方向和背景颜色的大变化。


正确选择软件:机器视觉软件是检测系统中的智能部分,也是最核心的部分。软件的选择决定了你编写调试检测程序的时间、检测操作的性能等等。


机器视觉提供了图形化编程界面 (通常称为“Point&Click”) 通常比其他编程语言(例如 VisualC++)容易,但是在你需要一些特殊的特征或功能时有一定的局限性。基于代码的软件包,尽管非常困难和需要编码经验,但在编写复杂的特殊应用检测算法具备更大的灵活性。一些机器视觉软件同时提供了图形化和基于代码的编程环境,提供两方面最好的特征,提供了很多灵活性,满足不同的应用需求。


通信和记录数据:机器视觉系统的总的目标是通过区分好和坏的部件来实现质量检测。为了实现这一功能,这个系统需要与生产流水线通信,这样才可以在发现坏的部件是做某种动作。通常这些动作是通过数字 I/O 板,这些板与制造流水线中的 PLC相连,这样坏的部件就可以跟好的部件分离。例外,机器视觉系统可以与网络连接,这样就可以将数据传送给数据库,用于记录数据以及让质量控制员分析为什么会出现废品。在这一步认真考虑将有助于将机器视觉系统无缝与生产流水线结合起来。需要考虑的问题是:
 
  • 使用了什么类型的 PLC,它的接口如何?

 
  • 需要什么类型的信号?

 
  • 现在使用或必须使用什么类型的网络?

 
  • 在网络上传送的文件格式是什么?通常使用 RS-232端口与数据库通信,来实现对数据的纪录。

 

为以后做准备:当你为机器视觉系统选择部件时,时刻记住未来的生产所需和有可能发生的变动。这些将直接影响你的机器视觉软硬件是否容易更改来满足以后新的任务。提前的准备将不仅仅节约你的时间,而且通过在将来重用现有的检测任务可以降低整个系统的价格。机器视觉系统的性能由最差的部分决定(就像一个木桶的容量由最短的一个木块决定),精度则由它能获取的信息决定。花时间和精力合理配置系统就可以建造一个零故障和有弹性的视觉检测系统。
 
 
更多内容请关注:www.imefuture.com

智造家二维码.jpg

 
 
 
来源:微信公众号 工控帮
7 回答

双目视觉ADAS,是个什么东东?

机械自动化类 寒风刺骨 2016-11-03 11:11 回复了问题 • 8 人关注 来自相关话题 产生赞赏:¥1.00

529 浏览

图像识别与机器学习面临的困难和今后的研究方向

机械自动化类 好先生 2016-06-27 12:41 发表了文章 来自相关话题

图像识别是人工智能领域非常核心的一个课题。同时从研究的角度来看,机器学习也是人工智能下的一个研究方向。因此,这个题目会更容易引起大家的共鸣。
一、什么是图像识别?

图像识别是什么?以这张图像为例,第一个问题是:在这个图像里面有没有街灯。在学术研究中,我们把这个问题叫作图像检测。第二个问题就是把街灯的位置给找出来,这叫做定位。第三个问题是物体的分类和识别,指出这是山,这是树,这个是招牌,建筑。我们可能还会对整张图片做一个场景的分类,是在什么环境下拍照的。它可能是一个室外的图像,关于城市的生活等等。基本上这些就是我们在图像识别里面涉及到的一些可能的研究问题。

二、图像识别有什么应用?

做这些研究可以有哪些用途?比如无人驾驶汽车:如果汽车上有一个带有摄像头的辅助系统,能够识别这个场景下所有的情况,包括车道线,交通标识,障碍物等,这样能够让我们驾驶汽车更方便、更轻松。

另外,一些相机在拍照的时候,在用户摁下快门到一半的时候,相机就会去找到这个图像的人脸在什么地方。找到人脸以后把焦点对焦在脸上,使这个图像能够让人更清楚一点。

还有,我们的计算机里面往往会有成千上万的照片,怎么组织它们,从而用户快速找到一张照片?如果有这样的图像识别系统,我可能会告诉计算机,我要找的照片里有两个人,这个照片是在颐和园照的。

三、图像识别的困难在哪里?

图像识别有很多难点。第一个困难就是它的视点变化很多。当我们对同样一个物体拍照的时候,因为视点不同,得到的图像外观是不一样的。所以对同一个物体这样看或者那样看,看外观非常不一样。但是也许两个不同的物体,外观又可能会很相近。所以这是造成图像识别的一个困难。

第二个难点就是尺度问题。物体在图像中近大远小,这给我们做图像识别会带来一定的难度。

光影的变化一向是计算机视觉特别关心的一个问题,光影变化是图像识别的第三个难点。同样一个人在不同光影下看起来判若两人。

第四个难点是背景复杂。在复杂背景下,找到某一个人带着拐杖,找到一个戴帽子的人难度很大。

第五个难点是遮挡。遮挡是计算机视觉特别关心的一个难点。比如说,这个图片里熙熙攘攘的人中,我们知道这大概是一个女孩:她有棕色的头发,穿着一个短袖衫。我们人的本领很强,这种情况下还能识别出男女。但是计算机现在还做不到这一点。

第六个难点是变形。非钢体在运动的时候会产生变形。同样一匹马在不同的情况下的图像表现会非常不一样。

四、图像识别的发展历史






图像识别刚开始的时候是从单一的物体识别做起。上边这张图像展示的是传统的几何方法的结果。我们的客观世界那么复杂、那么多样,我们该怎么做识别呢?那就先从特别简单的问题做起。这也是我们做科学研究的一般的方法:从简单的问题着手。比如从做积木的识别入手。因为积木有很规范的几种形状。上图是识别出的简单的剃须刀。这些人造的非常规范的几何体的组合,只要识别出长方形、矩形、正方形、三角形等,就会把剃须刀,工具检测和识别得非常好。另外一种方法,是根据外观识别。我不考虑要识别的物体的几何结构,仅仅看它外观长什么样。这里列出的是做人脸检测的例子。

做人脸识别的研究历史相对比较长。大概七几年就开始有这样的研究工作了。直到现在仍然有很多人脸识别的研究工作发表。

另外一个课题就是手写数字识别。手写数字看起来是很简单的事,但是对手写数字识别的研究引发出相当多的研究方法,给我们带来很多的成果,是一个很有意思的课题。此外的课题还有汽车的检测。我这里只是列了这几个。其实同时期还有指纹识别、文字识别OCR等、等。当时有的研究工作已经发展到了产品化的程度,包括OCR和指纹识别。

在2000年之前的图像识别曾经采用过几何的方法、结构的方法、规则的方法,当然也用了一些比较简单的模式识别的方法。

在80年代后期、90年代期间,机器学习领域发生了什么?这个时期的机器学习有了一个飞速的发展,出现了一些了不起的研究成果,包括:支持向量机方法,AdaBoosting方法,计算学习理论等。成果出现。这些都使得机器学习和识别大大的往前走。在2002年后的一段时间里,一个华人女科学家,叫李飞飞,开始用一个新的思路做图像识别。他们希望设计一个统一的框架做图像识别,而不是就事论事地针对一种图像识别任务设计一套专门的方法。他们希望这个统一的框架能识别成千上万种物体。另外,希望机器学习领域的出色成果可以用在图像识别上。她们还借鉴文本分析里的方法-“词袋”(bagofwords)的方法用于图像识别。
 
什么是“词袋”方法?举一个例子。比如要识别一张人脸,我们不考虑人脸结构那么复杂,我们只要看看里面有没有鼻子、眼睛、嘴巴、下巴。有了这些部件,只要这些部件在一起,就说这是一张人脸。你可能会觉得这很简单。

这个方法来源自对文本的研究。在自然语言处理里面,有一个任务是对文本分类。文本分类中就采用了“词袋”方法。

比如说有这样一篇文章,我们想知道这篇文章是属于哪个类别。它是在讨论军事,还是在讨论科学。那么我们怎么做呢?一种办法是按我们通常会想到的方法,就是把每一句话都读懂,做解析,知道句子的语法结构,然后去理解句子的内容。但是,对句子做做语法分析很难,理解句子很难。我们往往做不好,所以就不采用这种方法。实际上,我们可以用一个简单的方法:我们只要看这篇文章出现过哪些词出现的频率高。这篇文章中的高频词是:视觉、感知、脑、神经,细胞,你会说这篇文章属于神经科学类。还有一篇文章,其中的高频词是:中国、贸易、出口、进口、银行、货币等,你会知道这篇文章属于经济类。这个方法不用分析和解析句子和段落的语法结构,而只要把这些高频词放到一块,叫“bagofwords”。

怎样把这种方法用于图像识别呢?在识别图像的时候,我们也可以把图像中的“高频词”放在一起来识别图像。这里的“词”是什么?直观地说就是小的图像块。比如我们要识别一张人脸,这样的图像上就会有像皮肤一样,或者像眼睛一样的图像块。而相对来说,如果识别自行车,就会出现和车有关的图像块,如:车座、车梁。这些图像块就是“词”。这样就可以采用“词袋”方法。实际上,图像中的词不是我们说的这么直观,而是下方这样的图像小块。它是很底层的图像块,非常小,3*3,5*5或者7*7大小的图像块。这样小的图像块不表达很抽象的语义。

这种方法提出后,有很多有意思的相关的论文发表。但是这种方法还有缺陷。我们看这样的几个数字,在图像识别领域有一个物体识别比赛,这个比赛就是给你一些图像,让你去设计和训练你的算法。比赛的时候就是提供一些新的图像,要求算法告诉哪张图片是什么类别。如果预测前5个类别中有标准答案,就算预测正确。否则计算错误。这个比赛在2010年的第一名的成绩是72%,到2011年第一名的成绩是74%。我们知道,全世界那么多优秀的团队,有那么好的资源去做这个事,每年的进步大概就是1%-2%的样子。

在2000年之后这些年,机器学习在做什么事?机器学习仍然是做基础研究,出现了很多优秀成果。其中,2006年Hinton在Science上发表了一篇文章介绍他们的深度学习方法。有人建议Hinton用他们的方法试一试这个物体识别问题。结果在2012年的比赛中,他们获得了第一名,成绩是85%的识别率。后来大家发现这个方法原来那么好,所以大家一拥而上,纷纷用这种方法解决各自关心的问题。为什么人工智能现在这么热?主要就是因为这个原因。

张长水教授的实验室也用这个方法做了交通标识的识别,这是基金委的一个项目。花了很大的力气,成果很好,基本上可以到实用的程度。

五、面临的困难和今后要研究的问题

看起来图像识别已经很好了,很多人很乐观,很多人热血沸腾。其实图像识别还没有做得那么好。有什么样的困难?我们举几个例子。




比如说我们在做图像识别的时候,通常我们要标注数据,就是要标注这是鸟、这是猫。然后用这些图像去做训练。标注数据其实是很头疼的事,很花时间很花钱。李飞飞的项目组收集的第一个数据集有101类物体。这个图像库做得很好,后来一些算法可以在这个数据库上达到99%多的识别率。人们说,这些图像质量太好了,种类也太少。后来她们又做了这个数据库,这个数据库有256种物体,图像也没有对齐得那么好。尽管这样,这个数据库开始太小。

在2009年李飞飞她们发布了新的数据库ImageNet,大概有几千万张图像数据。

标数据是件头疼的事。例如这个数据库就要对每个物体用一个方框框起来,并给出一个类别标号。这是一些典型的图像,给每个物体都要框起来,都要标好这是什么物体。

还有一个图像数据库叫LabelMe。上图是其中一张图像,标得非常细,房屋的外形、轮廓、窗户、汽车、所有草地、马路都标得很清楚。大概有十万多张图片,标得非常好的图像大概一万张。张教授有一次对MIT的一个学生说,你们这个数据库做得真了不起,花了那么大功夫。他说这是另一个学生做的。其实不是那个学生标的图像,大部分图像都是他妈妈标的,他妈妈退休在家,每天给他标数据,做妈妈的多么了不起。

还有一个华人科学家,也很了不起,叫朱松纯。他说我们应该把图像标得更细。例如这张图片,其中的椅子可以标得非常细,座椅、椅背、腿的轮廓都标得很准确。他们还标了各种各样的椅子。他们雇了几十个美工,一天到晚标数据,干了几年,但是数据库才几十万张图片。所以标数据是一个非常花钱的事。因此做机器学习的人就在考虑,能不能不用那么费心去标数据而把图像识别做得更好一点。比如这张图片,只要你就是告诉我,你这张图片有摩托车,你不用说车在哪儿我也能把车检测和识别出来。

现在还有很多问题没解决。比如说我们现在的技术只是对图像做了一些解析,可以识别出这张图中这个部分鸟、这是树,但是没有对这个图片做更深入的理解。例如:这个算法并不知道这些物体之间的关系是什么。而对于我们理解一张图片来说,理解物体之间的关系非常重要。

在这个方面给大家介绍一下我们做的一个工作,叫imagecaption。这件事好几个单位都在做,微软、百度、Google都在做。给大家看的这些结果是实验室在做的工作。Imagecaption这是一个什么样的工作呢?就是你给我一张图片,你不需要告诉我这儿有一只狗,它叼的是一个什么样的东西。你只需要告诉我一只狗在叼着一个飞碟就够了。我们现在就利用这八万多张图片和对应的自然语言的句子来设计一个模型,并且训练这个模型,使得当你给我一张新的图片的时候,这个算法能生成一个自然语言的句子来描述它。比如这是针对对这张图片生成的句子:火车站旁边的轨道上停了一辆火车。再比如这个图像:一群斑马彼此很紧密地站在一起。还有这张图片:一只狗嘴里叼着飞碟。不仅如此,在做这个时候,还得到了另外一些有意思的结果。这个算法里有一个视觉的注意模型。这个模型可以自动找到关心的图像块。在对这张图像生成的句子Abrowncowisstandinginthegrass时,我们看到brown,cow,grass都对应着正确的图像块。大家注意,我们在训练数据里面并没有告诉算法哪一块是牛,哪一块是草地。这说明,这个算法学习到了这些概念。既然是这样,除此以外,其他的概念是不是也能找对?我们就把其他的一些词所对应的图像块找出来,看一看。比如说这一排是消火栓这个词对应的图像块。这是黑猫这个概念。结果都找对了。比较有意思的是,除了名词以外,程序还找到了动词对应的概念。比如说fillwith(把…填满),你会发现图片全是容器里面盛东西。

这个结果很有意思,非常像小孩在成长过程中学习。我们会教一个一岁多的孩子,告诉他“这是一张桌子”,“这是一个激光笔”。我们不会,也无法说:“一张”是量词,“桌子”是关键词。但是孩子慢慢就能学会这些概念。我们的算法也是这样。

上面列举了我们取得的成果。但是,面前还有很多很多的问题没有解决。比如,我们现在看深度网络很有效,但是它为什么有效?我们还不太明白。除此之外还有其他的模型吗?比如说有一些工程上的问题,那么多数据你能算吗?机器跑得动吗?做机器学习的人非常关心这些问题。

另外,比如说这里有一束花。现在算法可以识别出这是一束花。但是它还不能说出哪里是叶子,哪里是花蕊,哪里是花瓣。我们看起来已经取得了那么多的成果,从某种意义上来说我们也可以把它们做成产品,让他为我们服务,但同时我们看到还有更多的问题没有解决得很好,这就需要我们继续努力。

本文基本上是在讲图像。但是我们看到背后用的很多方法都是机器学习的方法。所以是机器学习人的努力,计算机视觉科学家的努力,大家共同的努力,取得了现在的成果。我们可以用这些成果转化成产品,使我们的生活可以更智能化一点。
 
来源:网络 查看全部
图像识别是人工智能领域非常核心的一个课题。同时从研究的角度来看,机器学习也是人工智能下的一个研究方向。因此,这个题目会更容易引起大家的共鸣。
一、什么是图像识别?

图像识别是什么?以这张图像为例,第一个问题是:在这个图像里面有没有街灯。在学术研究中,我们把这个问题叫作图像检测。第二个问题就是把街灯的位置给找出来,这叫做定位。第三个问题是物体的分类和识别,指出这是山,这是树,这个是招牌,建筑。我们可能还会对整张图片做一个场景的分类,是在什么环境下拍照的。它可能是一个室外的图像,关于城市的生活等等。基本上这些就是我们在图像识别里面涉及到的一些可能的研究问题。

二、图像识别有什么应用?

做这些研究可以有哪些用途?比如无人驾驶汽车:如果汽车上有一个带有摄像头的辅助系统,能够识别这个场景下所有的情况,包括车道线,交通标识,障碍物等,这样能够让我们驾驶汽车更方便、更轻松。

另外,一些相机在拍照的时候,在用户摁下快门到一半的时候,相机就会去找到这个图像的人脸在什么地方。找到人脸以后把焦点对焦在脸上,使这个图像能够让人更清楚一点。

还有,我们的计算机里面往往会有成千上万的照片,怎么组织它们,从而用户快速找到一张照片?如果有这样的图像识别系统,我可能会告诉计算机,我要找的照片里有两个人,这个照片是在颐和园照的。

三、图像识别的困难在哪里?

图像识别有很多难点。第一个困难就是它的视点变化很多。当我们对同样一个物体拍照的时候,因为视点不同,得到的图像外观是不一样的。所以对同一个物体这样看或者那样看,看外观非常不一样。但是也许两个不同的物体,外观又可能会很相近。所以这是造成图像识别的一个困难。

第二个难点就是尺度问题。物体在图像中近大远小,这给我们做图像识别会带来一定的难度。

光影的变化一向是计算机视觉特别关心的一个问题,光影变化是图像识别的第三个难点。同样一个人在不同光影下看起来判若两人。

第四个难点是背景复杂。在复杂背景下,找到某一个人带着拐杖,找到一个戴帽子的人难度很大。

第五个难点是遮挡。遮挡是计算机视觉特别关心的一个难点。比如说,这个图片里熙熙攘攘的人中,我们知道这大概是一个女孩:她有棕色的头发,穿着一个短袖衫。我们人的本领很强,这种情况下还能识别出男女。但是计算机现在还做不到这一点。

第六个难点是变形。非钢体在运动的时候会产生变形。同样一匹马在不同的情况下的图像表现会非常不一样。

四、图像识别的发展历史

636026201776638321534.png


图像识别刚开始的时候是从单一的物体识别做起。上边这张图像展示的是传统的几何方法的结果。我们的客观世界那么复杂、那么多样,我们该怎么做识别呢?那就先从特别简单的问题做起。这也是我们做科学研究的一般的方法:从简单的问题着手。比如从做积木的识别入手。因为积木有很规范的几种形状。上图是识别出的简单的剃须刀。这些人造的非常规范的几何体的组合,只要识别出长方形、矩形、正方形、三角形等,就会把剃须刀,工具检测和识别得非常好。另外一种方法,是根据外观识别。我不考虑要识别的物体的几何结构,仅仅看它外观长什么样。这里列出的是做人脸检测的例子。

做人脸识别的研究历史相对比较长。大概七几年就开始有这样的研究工作了。直到现在仍然有很多人脸识别的研究工作发表。

另外一个课题就是手写数字识别。手写数字看起来是很简单的事,但是对手写数字识别的研究引发出相当多的研究方法,给我们带来很多的成果,是一个很有意思的课题。此外的课题还有汽车的检测。我这里只是列了这几个。其实同时期还有指纹识别、文字识别OCR等、等。当时有的研究工作已经发展到了产品化的程度,包括OCR和指纹识别。

在2000年之前的图像识别曾经采用过几何的方法、结构的方法、规则的方法,当然也用了一些比较简单的模式识别的方法。

在80年代后期、90年代期间,机器学习领域发生了什么?这个时期的机器学习有了一个飞速的发展,出现了一些了不起的研究成果,包括:支持向量机方法,AdaBoosting方法,计算学习理论等。成果出现。这些都使得机器学习和识别大大的往前走。在2002年后的一段时间里,一个华人女科学家,叫李飞飞,开始用一个新的思路做图像识别。他们希望设计一个统一的框架做图像识别,而不是就事论事地针对一种图像识别任务设计一套专门的方法。他们希望这个统一的框架能识别成千上万种物体。另外,希望机器学习领域的出色成果可以用在图像识别上。她们还借鉴文本分析里的方法-“词袋”(bagofwords)的方法用于图像识别。
 
什么是“词袋”方法?举一个例子。比如要识别一张人脸,我们不考虑人脸结构那么复杂,我们只要看看里面有没有鼻子、眼睛、嘴巴、下巴。有了这些部件,只要这些部件在一起,就说这是一张人脸。你可能会觉得这很简单。

这个方法来源自对文本的研究。在自然语言处理里面,有一个任务是对文本分类。文本分类中就采用了“词袋”方法。

比如说有这样一篇文章,我们想知道这篇文章是属于哪个类别。它是在讨论军事,还是在讨论科学。那么我们怎么做呢?一种办法是按我们通常会想到的方法,就是把每一句话都读懂,做解析,知道句子的语法结构,然后去理解句子的内容。但是,对句子做做语法分析很难,理解句子很难。我们往往做不好,所以就不采用这种方法。实际上,我们可以用一个简单的方法:我们只要看这篇文章出现过哪些词出现的频率高。这篇文章中的高频词是:视觉、感知、脑、神经,细胞,你会说这篇文章属于神经科学类。还有一篇文章,其中的高频词是:中国、贸易、出口、进口、银行、货币等,你会知道这篇文章属于经济类。这个方法不用分析和解析句子和段落的语法结构,而只要把这些高频词放到一块,叫“bagofwords”。

怎样把这种方法用于图像识别呢?在识别图像的时候,我们也可以把图像中的“高频词”放在一起来识别图像。这里的“词”是什么?直观地说就是小的图像块。比如我们要识别一张人脸,这样的图像上就会有像皮肤一样,或者像眼睛一样的图像块。而相对来说,如果识别自行车,就会出现和车有关的图像块,如:车座、车梁。这些图像块就是“词”。这样就可以采用“词袋”方法。实际上,图像中的词不是我们说的这么直观,而是下方这样的图像小块。它是很底层的图像块,非常小,3*3,5*5或者7*7大小的图像块。这样小的图像块不表达很抽象的语义。

这种方法提出后,有很多有意思的相关的论文发表。但是这种方法还有缺陷。我们看这样的几个数字,在图像识别领域有一个物体识别比赛,这个比赛就是给你一些图像,让你去设计和训练你的算法。比赛的时候就是提供一些新的图像,要求算法告诉哪张图片是什么类别。如果预测前5个类别中有标准答案,就算预测正确。否则计算错误。这个比赛在2010年的第一名的成绩是72%,到2011年第一名的成绩是74%。我们知道,全世界那么多优秀的团队,有那么好的资源去做这个事,每年的进步大概就是1%-2%的样子。

在2000年之后这些年,机器学习在做什么事?机器学习仍然是做基础研究,出现了很多优秀成果。其中,2006年Hinton在Science上发表了一篇文章介绍他们的深度学习方法。有人建议Hinton用他们的方法试一试这个物体识别问题。结果在2012年的比赛中,他们获得了第一名,成绩是85%的识别率。后来大家发现这个方法原来那么好,所以大家一拥而上,纷纷用这种方法解决各自关心的问题。为什么人工智能现在这么热?主要就是因为这个原因。

张长水教授的实验室也用这个方法做了交通标识的识别,这是基金委的一个项目。花了很大的力气,成果很好,基本上可以到实用的程度。

五、面临的困难和今后要研究的问题

看起来图像识别已经很好了,很多人很乐观,很多人热血沸腾。其实图像识别还没有做得那么好。有什么样的困难?我们举几个例子。
2014082916220841841.jpg

比如说我们在做图像识别的时候,通常我们要标注数据,就是要标注这是鸟、这是猫。然后用这些图像去做训练。标注数据其实是很头疼的事,很花时间很花钱。李飞飞的项目组收集的第一个数据集有101类物体。这个图像库做得很好,后来一些算法可以在这个数据库上达到99%多的识别率。人们说,这些图像质量太好了,种类也太少。后来她们又做了这个数据库,这个数据库有256种物体,图像也没有对齐得那么好。尽管这样,这个数据库开始太小。

在2009年李飞飞她们发布了新的数据库ImageNet,大概有几千万张图像数据。

标数据是件头疼的事。例如这个数据库就要对每个物体用一个方框框起来,并给出一个类别标号。这是一些典型的图像,给每个物体都要框起来,都要标好这是什么物体。

还有一个图像数据库叫LabelMe。上图是其中一张图像,标得非常细,房屋的外形、轮廓、窗户、汽车、所有草地、马路都标得很清楚。大概有十万多张图片,标得非常好的图像大概一万张。张教授有一次对MIT的一个学生说,你们这个数据库做得真了不起,花了那么大功夫。他说这是另一个学生做的。其实不是那个学生标的图像,大部分图像都是他妈妈标的,他妈妈退休在家,每天给他标数据,做妈妈的多么了不起。

还有一个华人科学家,也很了不起,叫朱松纯。他说我们应该把图像标得更细。例如这张图片,其中的椅子可以标得非常细,座椅、椅背、腿的轮廓都标得很准确。他们还标了各种各样的椅子。他们雇了几十个美工,一天到晚标数据,干了几年,但是数据库才几十万张图片。所以标数据是一个非常花钱的事。因此做机器学习的人就在考虑,能不能不用那么费心去标数据而把图像识别做得更好一点。比如这张图片,只要你就是告诉我,你这张图片有摩托车,你不用说车在哪儿我也能把车检测和识别出来。

现在还有很多问题没解决。比如说我们现在的技术只是对图像做了一些解析,可以识别出这张图中这个部分鸟、这是树,但是没有对这个图片做更深入的理解。例如:这个算法并不知道这些物体之间的关系是什么。而对于我们理解一张图片来说,理解物体之间的关系非常重要。

在这个方面给大家介绍一下我们做的一个工作,叫imagecaption。这件事好几个单位都在做,微软、百度、Google都在做。给大家看的这些结果是实验室在做的工作。Imagecaption这是一个什么样的工作呢?就是你给我一张图片,你不需要告诉我这儿有一只狗,它叼的是一个什么样的东西。你只需要告诉我一只狗在叼着一个飞碟就够了。我们现在就利用这八万多张图片和对应的自然语言的句子来设计一个模型,并且训练这个模型,使得当你给我一张新的图片的时候,这个算法能生成一个自然语言的句子来描述它。比如这是针对对这张图片生成的句子:火车站旁边的轨道上停了一辆火车。再比如这个图像:一群斑马彼此很紧密地站在一起。还有这张图片:一只狗嘴里叼着飞碟。不仅如此,在做这个时候,还得到了另外一些有意思的结果。这个算法里有一个视觉的注意模型。这个模型可以自动找到关心的图像块。在对这张图像生成的句子Abrowncowisstandinginthegrass时,我们看到brown,cow,grass都对应着正确的图像块。大家注意,我们在训练数据里面并没有告诉算法哪一块是牛,哪一块是草地。这说明,这个算法学习到了这些概念。既然是这样,除此以外,其他的概念是不是也能找对?我们就把其他的一些词所对应的图像块找出来,看一看。比如说这一排是消火栓这个词对应的图像块。这是黑猫这个概念。结果都找对了。比较有意思的是,除了名词以外,程序还找到了动词对应的概念。比如说fillwith(把…填满),你会发现图片全是容器里面盛东西。

这个结果很有意思,非常像小孩在成长过程中学习。我们会教一个一岁多的孩子,告诉他“这是一张桌子”,“这是一个激光笔”。我们不会,也无法说:“一张”是量词,“桌子”是关键词。但是孩子慢慢就能学会这些概念。我们的算法也是这样。

上面列举了我们取得的成果。但是,面前还有很多很多的问题没有解决。比如,我们现在看深度网络很有效,但是它为什么有效?我们还不太明白。除此之外还有其他的模型吗?比如说有一些工程上的问题,那么多数据你能算吗?机器跑得动吗?做机器学习的人非常关心这些问题。

另外,比如说这里有一束花。现在算法可以识别出这是一束花。但是它还不能说出哪里是叶子,哪里是花蕊,哪里是花瓣。我们看起来已经取得了那么多的成果,从某种意义上来说我们也可以把它们做成产品,让他为我们服务,但同时我们看到还有更多的问题没有解决得很好,这就需要我们继续努力。

本文基本上是在讲图像。但是我们看到背后用的很多方法都是机器学习的方法。所以是机器学习人的努力,计算机视觉科学家的努力,大家共同的努力,取得了现在的成果。我们可以用这些成果转化成产品,使我们的生活可以更智能化一点。
 
来源:网络
条新动态, 点击查看
关东明月

关东明月 回答了问题 • 2016-11-03 11:02 • 7 个回复 不感兴趣

双目视觉ADAS,是个什么东东?

赞同来自:

汽车领域的图像识别,关于单目与双目的技术是两条路线(分别涉及“智能识别技术”还是“立体视觉技术”),选择哪条技术路线取决自身对产品的定义与手上的资源是否具备优势。产业的大环境是双目的产业链供应缺乏,双目视觉ADAS就是提供这种供应
汽车领域的图像识别,关于单目与双目的技术是两条路线(分别涉及“智能识别技术”还是“立体视觉技术”),选择哪条技术路线取决自身对产品的定义与手上的资源是否具备优势。产业的大环境是双目的产业链供应缺乏,双目视觉ADAS就是提供这种供应
7 回答

双目视觉ADAS,是个什么东东?

机械自动化类 寒风刺骨 2016-11-03 11:11 回复了问题 • 8 人关注 来自相关话题 产生赞赏:¥1.00

590 浏览

干货:工业机器人的眼睛视觉系统该如何选择?

智能制造类 jingjing 2017-03-06 14:36 发表了文章 来自相关话题

1.摄像头和光学部件

这一类通常含有一个或多个摄像头和镜头(光学部件),用于拍摄被检测的物体。根据应用,摄像头可以基于如下标准,黑白、复合彩色(Y/C),RGB彩色,非标准黑白(可变扫描),步进扫描(progressive-scan)或线扫描。



2. 灯光

灯光用于照亮部件,以便从摄像头中拍摄到更好的图像,灯光系统可以在不同形状、尺寸和亮度。一般的灯光形式是高频荧光灯、LED、白炽灯和石英卤(quartz-halogen)光纤。



3. 部件传感器

通常以光栅或传感器的形式出现。当这个传感器感知到部件靠近,它会给出一个触发信号。当部件处于正确位置时,这个传感器告诉机器视觉系统去采集图像。



4. 图像采集卡

也称为视频抓取卡,这个部件通常是一张插在 PC上的卡。

这张采集卡的作用将摄像头与 PC连接起来。它从摄像头中获得数据(模拟信号或数字信号),然后转换成PC 能处理的信息。

它同时可以提供控制摄像头参数(例如触发、曝光时间、快门速度等等)的信号。图像采集卡形式很多,支持不同类型的摄像头,不同的计算机总线。




5. PC平台

计算机是机器视觉的关键组成部分。

应用在检测方面,通常使用 Pentium或更高的 CPU。一般来讲,计算机的速度越快,视觉系统处理每一张图片的时间就越短。

由于在制造现场中,经常有振动、灰尘、热辐射等等,所以一般需要工业级的计算机。




6. 检测软件

机器视觉软件用于创建和执行程序、处理采集回来的图像数据、以及作出“通过/失败(PASS/FAIL)”决定。

机器视觉有多种形式(C 语言库、ActiveX 控件、点击编程环境等等),可以是单一功能(例如设计只用来检测 LCD或 BGA、对齐任务等等),也可以是多功能(例如设计一个套件,包含计量、条形码阅读、机器人导航、现场验证等等)。




7. 数字 I/O和网络连接

一旦系统完成这个检测部分,这部分必须能与外界通信,例如需要控制生产流程、将“通过/失败(PASS/FAIL)”的信息送给数据库。通常,使用一张数字 I/O板卡和(或)一张网卡来实现机器视觉系统与外界系统和数据库的通信。

配置一个基于 PC的机器视觉系统认真的计划和注意细节能帮助你确保你的检测系统符合你的应用需求。如下是你必需考虑的几点:






确定你的目标,这可能是最重要的一步决定在这个检测任务中你需要实现什么,检测任务通常分为如下几类:
 
测量或计量
 
读取字符或编码(条形码)信息。
 
检测物体的状态
 
认知和识别特殊的特性 模式识别
 
将物体与模板进行对比或匹配
 
为机器或机器人导航检测流程可以包含只有一个操作或包含多个与检测任务相关的任务。
 
为了确认你的任务,首先你应该明确为了最大限度检测部件你需要做的测试,也就是你能考虑到会出现的缺陷。


为了明确什么哪个才是最重要的,最好做一张评估表,列出“必须做”和“可以做”的测试。一旦主要的对测试标准满意,随后可以将更多的测试加进去来改善检测过程,一定要记住,添加测试的同时也会增加检测的时间。


确定你需要的速度 –系统检测每一个部件需要多少时间?


这个不只是由 PC的速度决定,还受生产流水线速度的影响。


很多机器视觉包含了时钟/计时器,所以检测操作的每一步所需要的时间都可以准确测量,从这些数据,我们就可以修改我们的程序以满足时间上的要求。通常,一个基于 PC 的机器视觉系统每一秒可以检测 20-25 个部件,与检测部件的多少和处理程序以及计算机的速度有密切关系。


聪明地选择你的硬件


一套机器视觉系统的性能与它的部件密切相关。在选择的过程中,有很多捷径特别在光学成像上可能很大程度降低系统的效率。如下是在选择部件时你必须紧记的几个基本原则。


1.摄像头 摄像头的选择与应用的需求直接相关,通常考虑三点:
 
a)黑白还是彩色;
 
b)部件/目标的运动;
 
c)图像分辨率。
 

在检测应用中大部分使用黑白摄像头,因为黑白图像能提供 90%可视数据,并且比彩色便宜。彩色摄像头主要用于一些需要分析彩色图像的场合里。根据部件在检测时是否移动,决定我们选择标准隔行扫描摄像头还是逐行扫描摄像头。另外,图像的分辨率必须足够高,以提供检测任务需要的足够的数据。最后,摄像头必须质量好和可以避免工业现场中的振动、灰尘和热的影响。


2.光学部件和照明这个至关重要的因素往往被人所忽略。当你使用一个很差的光学部件或照明,就算你使用最好的机器视觉系统,它表现出的性能甚至比不上一个配上良好光学部件和适当照明的低能力系统。光学部件的目标是产生最好和最大可用面积的图像,并且提供最好的图像分辨率。照明的目标是照亮需要测量或检测的部分的关键特征。通常,照明系统的设计由如下因素决定:颜色、纹理、尺寸、外形、反射率等等。


3.图像采集卡虽然图像采集卡只是完整的机器视觉系统的一个部件,但是它扮演一个非常重要的角色。


图像采集卡直接决定了摄像头的接口:黑白、彩色、模拟、数字等等。


使用模拟输入的图像采集卡,目标是尽量不变地将摄像头采集的图像转换为数字数据。使用不正确的图像采集卡可能得到错误的数据。


工业用的图像采集卡通常用于检测任务,多媒体采集卡由于它通过自动增益控制、边沿增强和颜色增强电路来更改图像数据,所以不用在这个领域里。使用数字输入的图像采集卡的目标是将摄像头输出的数字图像数据转换并输送到 PC 中作处理。


考虑各种变化:人类的眼睛和大脑可以在不同的条件下识别目标,但是机器视觉系统就不是这样多才多艺了,它只能按程序编写的任务来工作。了解你的系统能看到什么和不能看到什么能帮助你避免失败(例如将好的部件认为是坏的)或其它检测错误。一般要考虑的包括部件颜色、周围光线、焦点、部件的位置和方向和背景颜色的大变化。


正确选择软件:机器视觉软件是检测系统中的智能部分,也是最核心的部分。软件的选择决定了你编写调试检测程序的时间、检测操作的性能等等。


机器视觉提供了图形化编程界面 (通常称为“Point&Click”) 通常比其他编程语言(例如 VisualC++)容易,但是在你需要一些特殊的特征或功能时有一定的局限性。基于代码的软件包,尽管非常困难和需要编码经验,但在编写复杂的特殊应用检测算法具备更大的灵活性。一些机器视觉软件同时提供了图形化和基于代码的编程环境,提供两方面最好的特征,提供了很多灵活性,满足不同的应用需求。


通信和记录数据:机器视觉系统的总的目标是通过区分好和坏的部件来实现质量检测。为了实现这一功能,这个系统需要与生产流水线通信,这样才可以在发现坏的部件是做某种动作。通常这些动作是通过数字 I/O 板,这些板与制造流水线中的 PLC相连,这样坏的部件就可以跟好的部件分离。例外,机器视觉系统可以与网络连接,这样就可以将数据传送给数据库,用于记录数据以及让质量控制员分析为什么会出现废品。在这一步认真考虑将有助于将机器视觉系统无缝与生产流水线结合起来。需要考虑的问题是:
 
使用了什么类型的 PLC,它的接口如何?
 
需要什么类型的信号?
 
现在使用或必须使用什么类型的网络?
 
在网络上传送的文件格式是什么?通常使用 RS-232端口与数据库通信,来实现对数据的纪录。
 

为以后做准备:当你为机器视觉系统选择部件时,时刻记住未来的生产所需和有可能发生的变动。这些将直接影响你的机器视觉软硬件是否容易更改来满足以后新的任务。提前的准备将不仅仅节约你的时间,而且通过在将来重用现有的检测任务可以降低整个系统的价格。机器视觉系统的性能由最差的部分决定(就像一个木桶的容量由最短的一个木块决定),精度则由它能获取的信息决定。花时间和精力合理配置系统就可以建造一个零故障和有弹性的视觉检测系统。
 
 
更多内容请关注:www.imefuture.com





 
 
 
来源:微信公众号 工控帮 查看全部
1.摄像头和光学部件

这一类通常含有一个或多个摄像头和镜头(光学部件),用于拍摄被检测的物体。根据应用,摄像头可以基于如下标准,黑白、复合彩色(Y/C),RGB彩色,非标准黑白(可变扫描),步进扫描(progressive-scan)或线扫描。



2. 灯光

灯光用于照亮部件,以便从摄像头中拍摄到更好的图像,灯光系统可以在不同形状、尺寸和亮度。一般的灯光形式是高频荧光灯、LED、白炽灯和石英卤(quartz-halogen)光纤。



3. 部件传感器

通常以光栅或传感器的形式出现。当这个传感器感知到部件靠近,它会给出一个触发信号。当部件处于正确位置时,这个传感器告诉机器视觉系统去采集图像。



4. 图像采集卡

也称为视频抓取卡,这个部件通常是一张插在 PC上的卡。

这张采集卡的作用将摄像头与 PC连接起来。它从摄像头中获得数据(模拟信号或数字信号),然后转换成PC 能处理的信息。

它同时可以提供控制摄像头参数(例如触发、曝光时间、快门速度等等)的信号。图像采集卡形式很多,支持不同类型的摄像头,不同的计算机总线。




5. PC平台

计算机是机器视觉的关键组成部分。

应用在检测方面,通常使用 Pentium或更高的 CPU。一般来讲,计算机的速度越快,视觉系统处理每一张图片的时间就越短。

由于在制造现场中,经常有振动、灰尘、热辐射等等,所以一般需要工业级的计算机。




6. 检测软件

机器视觉软件用于创建和执行程序、处理采集回来的图像数据、以及作出“通过/失败(PASS/FAIL)”决定。

机器视觉有多种形式(C 语言库、ActiveX 控件、点击编程环境等等),可以是单一功能(例如设计只用来检测 LCD或 BGA、对齐任务等等),也可以是多功能(例如设计一个套件,包含计量、条形码阅读、机器人导航、现场验证等等)。




7. 数字 I/O和网络连接

一旦系统完成这个检测部分,这部分必须能与外界通信,例如需要控制生产流程、将“通过/失败(PASS/FAIL)”的信息送给数据库。通常,使用一张数字 I/O板卡和(或)一张网卡来实现机器视觉系统与外界系统和数据库的通信。

配置一个基于 PC的机器视觉系统认真的计划和注意细节能帮助你确保你的检测系统符合你的应用需求。如下是你必需考虑的几点:

1.JPG


确定你的目标,这可能是最重要的一步决定在这个检测任务中你需要实现什么,检测任务通常分为如下几类:
 
  • 测量或计量

 
  • 读取字符或编码(条形码)信息。

 
  • 检测物体的状态

 
  • 认知和识别特殊的特性 模式识别

 
  • 将物体与模板进行对比或匹配

 
  • 为机器或机器人导航检测流程可以包含只有一个操作或包含多个与检测任务相关的任务。

 
为了确认你的任务,首先你应该明确为了最大限度检测部件你需要做的测试,也就是你能考虑到会出现的缺陷。


为了明确什么哪个才是最重要的,最好做一张评估表,列出“必须做”和“可以做”的测试。一旦主要的对测试标准满意,随后可以将更多的测试加进去来改善检测过程,一定要记住,添加测试的同时也会增加检测的时间。


确定你需要的速度 –系统检测每一个部件需要多少时间?


这个不只是由 PC的速度决定,还受生产流水线速度的影响。


很多机器视觉包含了时钟/计时器,所以检测操作的每一步所需要的时间都可以准确测量,从这些数据,我们就可以修改我们的程序以满足时间上的要求。通常,一个基于 PC 的机器视觉系统每一秒可以检测 20-25 个部件,与检测部件的多少和处理程序以及计算机的速度有密切关系。


聪明地选择你的硬件


一套机器视觉系统的性能与它的部件密切相关。在选择的过程中,有很多捷径特别在光学成像上可能很大程度降低系统的效率。如下是在选择部件时你必须紧记的几个基本原则。


1.摄像头 摄像头的选择与应用的需求直接相关,通常考虑三点:
 
  • a)黑白还是彩色;

 
  • b)部件/目标的运动;

 
  • c)图像分辨率。

 

在检测应用中大部分使用黑白摄像头,因为黑白图像能提供 90%可视数据,并且比彩色便宜。彩色摄像头主要用于一些需要分析彩色图像的场合里。根据部件在检测时是否移动,决定我们选择标准隔行扫描摄像头还是逐行扫描摄像头。另外,图像的分辨率必须足够高,以提供检测任务需要的足够的数据。最后,摄像头必须质量好和可以避免工业现场中的振动、灰尘和热的影响。


2.光学部件和照明这个至关重要的因素往往被人所忽略。当你使用一个很差的光学部件或照明,就算你使用最好的机器视觉系统,它表现出的性能甚至比不上一个配上良好光学部件和适当照明的低能力系统。光学部件的目标是产生最好和最大可用面积的图像,并且提供最好的图像分辨率。照明的目标是照亮需要测量或检测的部分的关键特征。通常,照明系统的设计由如下因素决定:颜色、纹理、尺寸、外形、反射率等等。


3.图像采集卡虽然图像采集卡只是完整的机器视觉系统的一个部件,但是它扮演一个非常重要的角色。


图像采集卡直接决定了摄像头的接口:黑白、彩色、模拟、数字等等。


使用模拟输入的图像采集卡,目标是尽量不变地将摄像头采集的图像转换为数字数据。使用不正确的图像采集卡可能得到错误的数据。


工业用的图像采集卡通常用于检测任务,多媒体采集卡由于它通过自动增益控制、边沿增强和颜色增强电路来更改图像数据,所以不用在这个领域里。使用数字输入的图像采集卡的目标是将摄像头输出的数字图像数据转换并输送到 PC 中作处理。


考虑各种变化:人类的眼睛和大脑可以在不同的条件下识别目标,但是机器视觉系统就不是这样多才多艺了,它只能按程序编写的任务来工作。了解你的系统能看到什么和不能看到什么能帮助你避免失败(例如将好的部件认为是坏的)或其它检测错误。一般要考虑的包括部件颜色、周围光线、焦点、部件的位置和方向和背景颜色的大变化。


正确选择软件:机器视觉软件是检测系统中的智能部分,也是最核心的部分。软件的选择决定了你编写调试检测程序的时间、检测操作的性能等等。


机器视觉提供了图形化编程界面 (通常称为“Point&Click”) 通常比其他编程语言(例如 VisualC++)容易,但是在你需要一些特殊的特征或功能时有一定的局限性。基于代码的软件包,尽管非常困难和需要编码经验,但在编写复杂的特殊应用检测算法具备更大的灵活性。一些机器视觉软件同时提供了图形化和基于代码的编程环境,提供两方面最好的特征,提供了很多灵活性,满足不同的应用需求。


通信和记录数据:机器视觉系统的总的目标是通过区分好和坏的部件来实现质量检测。为了实现这一功能,这个系统需要与生产流水线通信,这样才可以在发现坏的部件是做某种动作。通常这些动作是通过数字 I/O 板,这些板与制造流水线中的 PLC相连,这样坏的部件就可以跟好的部件分离。例外,机器视觉系统可以与网络连接,这样就可以将数据传送给数据库,用于记录数据以及让质量控制员分析为什么会出现废品。在这一步认真考虑将有助于将机器视觉系统无缝与生产流水线结合起来。需要考虑的问题是:
 
  • 使用了什么类型的 PLC,它的接口如何?

 
  • 需要什么类型的信号?

 
  • 现在使用或必须使用什么类型的网络?

 
  • 在网络上传送的文件格式是什么?通常使用 RS-232端口与数据库通信,来实现对数据的纪录。

 

为以后做准备:当你为机器视觉系统选择部件时,时刻记住未来的生产所需和有可能发生的变动。这些将直接影响你的机器视觉软硬件是否容易更改来满足以后新的任务。提前的准备将不仅仅节约你的时间,而且通过在将来重用现有的检测任务可以降低整个系统的价格。机器视觉系统的性能由最差的部分决定(就像一个木桶的容量由最短的一个木块决定),精度则由它能获取的信息决定。花时间和精力合理配置系统就可以建造一个零故障和有弹性的视觉检测系统。
 
 
更多内容请关注:www.imefuture.com

智造家二维码.jpg

 
 
 
来源:微信公众号 工控帮
529 浏览

图像识别与机器学习面临的困难和今后的研究方向

机械自动化类 好先生 2016-06-27 12:41 发表了文章 来自相关话题

图像识别是人工智能领域非常核心的一个课题。同时从研究的角度来看,机器学习也是人工智能下的一个研究方向。因此,这个题目会更容易引起大家的共鸣。
一、什么是图像识别?

图像识别是什么?以这张图像为例,第一个问题是:在这个图像里面有没有街灯。在学术研究中,我们把这个问题叫作图像检测。第二个问题就是把街灯的位置给找出来,这叫做定位。第三个问题是物体的分类和识别,指出这是山,这是树,这个是招牌,建筑。我们可能还会对整张图片做一个场景的分类,是在什么环境下拍照的。它可能是一个室外的图像,关于城市的生活等等。基本上这些就是我们在图像识别里面涉及到的一些可能的研究问题。

二、图像识别有什么应用?

做这些研究可以有哪些用途?比如无人驾驶汽车:如果汽车上有一个带有摄像头的辅助系统,能够识别这个场景下所有的情况,包括车道线,交通标识,障碍物等,这样能够让我们驾驶汽车更方便、更轻松。

另外,一些相机在拍照的时候,在用户摁下快门到一半的时候,相机就会去找到这个图像的人脸在什么地方。找到人脸以后把焦点对焦在脸上,使这个图像能够让人更清楚一点。

还有,我们的计算机里面往往会有成千上万的照片,怎么组织它们,从而用户快速找到一张照片?如果有这样的图像识别系统,我可能会告诉计算机,我要找的照片里有两个人,这个照片是在颐和园照的。

三、图像识别的困难在哪里?

图像识别有很多难点。第一个困难就是它的视点变化很多。当我们对同样一个物体拍照的时候,因为视点不同,得到的图像外观是不一样的。所以对同一个物体这样看或者那样看,看外观非常不一样。但是也许两个不同的物体,外观又可能会很相近。所以这是造成图像识别的一个困难。

第二个难点就是尺度问题。物体在图像中近大远小,这给我们做图像识别会带来一定的难度。

光影的变化一向是计算机视觉特别关心的一个问题,光影变化是图像识别的第三个难点。同样一个人在不同光影下看起来判若两人。

第四个难点是背景复杂。在复杂背景下,找到某一个人带着拐杖,找到一个戴帽子的人难度很大。

第五个难点是遮挡。遮挡是计算机视觉特别关心的一个难点。比如说,这个图片里熙熙攘攘的人中,我们知道这大概是一个女孩:她有棕色的头发,穿着一个短袖衫。我们人的本领很强,这种情况下还能识别出男女。但是计算机现在还做不到这一点。

第六个难点是变形。非钢体在运动的时候会产生变形。同样一匹马在不同的情况下的图像表现会非常不一样。

四、图像识别的发展历史






图像识别刚开始的时候是从单一的物体识别做起。上边这张图像展示的是传统的几何方法的结果。我们的客观世界那么复杂、那么多样,我们该怎么做识别呢?那就先从特别简单的问题做起。这也是我们做科学研究的一般的方法:从简单的问题着手。比如从做积木的识别入手。因为积木有很规范的几种形状。上图是识别出的简单的剃须刀。这些人造的非常规范的几何体的组合,只要识别出长方形、矩形、正方形、三角形等,就会把剃须刀,工具检测和识别得非常好。另外一种方法,是根据外观识别。我不考虑要识别的物体的几何结构,仅仅看它外观长什么样。这里列出的是做人脸检测的例子。

做人脸识别的研究历史相对比较长。大概七几年就开始有这样的研究工作了。直到现在仍然有很多人脸识别的研究工作发表。

另外一个课题就是手写数字识别。手写数字看起来是很简单的事,但是对手写数字识别的研究引发出相当多的研究方法,给我们带来很多的成果,是一个很有意思的课题。此外的课题还有汽车的检测。我这里只是列了这几个。其实同时期还有指纹识别、文字识别OCR等、等。当时有的研究工作已经发展到了产品化的程度,包括OCR和指纹识别。

在2000年之前的图像识别曾经采用过几何的方法、结构的方法、规则的方法,当然也用了一些比较简单的模式识别的方法。

在80年代后期、90年代期间,机器学习领域发生了什么?这个时期的机器学习有了一个飞速的发展,出现了一些了不起的研究成果,包括:支持向量机方法,AdaBoosting方法,计算学习理论等。成果出现。这些都使得机器学习和识别大大的往前走。在2002年后的一段时间里,一个华人女科学家,叫李飞飞,开始用一个新的思路做图像识别。他们希望设计一个统一的框架做图像识别,而不是就事论事地针对一种图像识别任务设计一套专门的方法。他们希望这个统一的框架能识别成千上万种物体。另外,希望机器学习领域的出色成果可以用在图像识别上。她们还借鉴文本分析里的方法-“词袋”(bagofwords)的方法用于图像识别。
 
什么是“词袋”方法?举一个例子。比如要识别一张人脸,我们不考虑人脸结构那么复杂,我们只要看看里面有没有鼻子、眼睛、嘴巴、下巴。有了这些部件,只要这些部件在一起,就说这是一张人脸。你可能会觉得这很简单。

这个方法来源自对文本的研究。在自然语言处理里面,有一个任务是对文本分类。文本分类中就采用了“词袋”方法。

比如说有这样一篇文章,我们想知道这篇文章是属于哪个类别。它是在讨论军事,还是在讨论科学。那么我们怎么做呢?一种办法是按我们通常会想到的方法,就是把每一句话都读懂,做解析,知道句子的语法结构,然后去理解句子的内容。但是,对句子做做语法分析很难,理解句子很难。我们往往做不好,所以就不采用这种方法。实际上,我们可以用一个简单的方法:我们只要看这篇文章出现过哪些词出现的频率高。这篇文章中的高频词是:视觉、感知、脑、神经,细胞,你会说这篇文章属于神经科学类。还有一篇文章,其中的高频词是:中国、贸易、出口、进口、银行、货币等,你会知道这篇文章属于经济类。这个方法不用分析和解析句子和段落的语法结构,而只要把这些高频词放到一块,叫“bagofwords”。

怎样把这种方法用于图像识别呢?在识别图像的时候,我们也可以把图像中的“高频词”放在一起来识别图像。这里的“词”是什么?直观地说就是小的图像块。比如我们要识别一张人脸,这样的图像上就会有像皮肤一样,或者像眼睛一样的图像块。而相对来说,如果识别自行车,就会出现和车有关的图像块,如:车座、车梁。这些图像块就是“词”。这样就可以采用“词袋”方法。实际上,图像中的词不是我们说的这么直观,而是下方这样的图像小块。它是很底层的图像块,非常小,3*3,5*5或者7*7大小的图像块。这样小的图像块不表达很抽象的语义。

这种方法提出后,有很多有意思的相关的论文发表。但是这种方法还有缺陷。我们看这样的几个数字,在图像识别领域有一个物体识别比赛,这个比赛就是给你一些图像,让你去设计和训练你的算法。比赛的时候就是提供一些新的图像,要求算法告诉哪张图片是什么类别。如果预测前5个类别中有标准答案,就算预测正确。否则计算错误。这个比赛在2010年的第一名的成绩是72%,到2011年第一名的成绩是74%。我们知道,全世界那么多优秀的团队,有那么好的资源去做这个事,每年的进步大概就是1%-2%的样子。

在2000年之后这些年,机器学习在做什么事?机器学习仍然是做基础研究,出现了很多优秀成果。其中,2006年Hinton在Science上发表了一篇文章介绍他们的深度学习方法。有人建议Hinton用他们的方法试一试这个物体识别问题。结果在2012年的比赛中,他们获得了第一名,成绩是85%的识别率。后来大家发现这个方法原来那么好,所以大家一拥而上,纷纷用这种方法解决各自关心的问题。为什么人工智能现在这么热?主要就是因为这个原因。

张长水教授的实验室也用这个方法做了交通标识的识别,这是基金委的一个项目。花了很大的力气,成果很好,基本上可以到实用的程度。

五、面临的困难和今后要研究的问题

看起来图像识别已经很好了,很多人很乐观,很多人热血沸腾。其实图像识别还没有做得那么好。有什么样的困难?我们举几个例子。




比如说我们在做图像识别的时候,通常我们要标注数据,就是要标注这是鸟、这是猫。然后用这些图像去做训练。标注数据其实是很头疼的事,很花时间很花钱。李飞飞的项目组收集的第一个数据集有101类物体。这个图像库做得很好,后来一些算法可以在这个数据库上达到99%多的识别率。人们说,这些图像质量太好了,种类也太少。后来她们又做了这个数据库,这个数据库有256种物体,图像也没有对齐得那么好。尽管这样,这个数据库开始太小。

在2009年李飞飞她们发布了新的数据库ImageNet,大概有几千万张图像数据。

标数据是件头疼的事。例如这个数据库就要对每个物体用一个方框框起来,并给出一个类别标号。这是一些典型的图像,给每个物体都要框起来,都要标好这是什么物体。

还有一个图像数据库叫LabelMe。上图是其中一张图像,标得非常细,房屋的外形、轮廓、窗户、汽车、所有草地、马路都标得很清楚。大概有十万多张图片,标得非常好的图像大概一万张。张教授有一次对MIT的一个学生说,你们这个数据库做得真了不起,花了那么大功夫。他说这是另一个学生做的。其实不是那个学生标的图像,大部分图像都是他妈妈标的,他妈妈退休在家,每天给他标数据,做妈妈的多么了不起。

还有一个华人科学家,也很了不起,叫朱松纯。他说我们应该把图像标得更细。例如这张图片,其中的椅子可以标得非常细,座椅、椅背、腿的轮廓都标得很准确。他们还标了各种各样的椅子。他们雇了几十个美工,一天到晚标数据,干了几年,但是数据库才几十万张图片。所以标数据是一个非常花钱的事。因此做机器学习的人就在考虑,能不能不用那么费心去标数据而把图像识别做得更好一点。比如这张图片,只要你就是告诉我,你这张图片有摩托车,你不用说车在哪儿我也能把车检测和识别出来。

现在还有很多问题没解决。比如说我们现在的技术只是对图像做了一些解析,可以识别出这张图中这个部分鸟、这是树,但是没有对这个图片做更深入的理解。例如:这个算法并不知道这些物体之间的关系是什么。而对于我们理解一张图片来说,理解物体之间的关系非常重要。

在这个方面给大家介绍一下我们做的一个工作,叫imagecaption。这件事好几个单位都在做,微软、百度、Google都在做。给大家看的这些结果是实验室在做的工作。Imagecaption这是一个什么样的工作呢?就是你给我一张图片,你不需要告诉我这儿有一只狗,它叼的是一个什么样的东西。你只需要告诉我一只狗在叼着一个飞碟就够了。我们现在就利用这八万多张图片和对应的自然语言的句子来设计一个模型,并且训练这个模型,使得当你给我一张新的图片的时候,这个算法能生成一个自然语言的句子来描述它。比如这是针对对这张图片生成的句子:火车站旁边的轨道上停了一辆火车。再比如这个图像:一群斑马彼此很紧密地站在一起。还有这张图片:一只狗嘴里叼着飞碟。不仅如此,在做这个时候,还得到了另外一些有意思的结果。这个算法里有一个视觉的注意模型。这个模型可以自动找到关心的图像块。在对这张图像生成的句子Abrowncowisstandinginthegrass时,我们看到brown,cow,grass都对应着正确的图像块。大家注意,我们在训练数据里面并没有告诉算法哪一块是牛,哪一块是草地。这说明,这个算法学习到了这些概念。既然是这样,除此以外,其他的概念是不是也能找对?我们就把其他的一些词所对应的图像块找出来,看一看。比如说这一排是消火栓这个词对应的图像块。这是黑猫这个概念。结果都找对了。比较有意思的是,除了名词以外,程序还找到了动词对应的概念。比如说fillwith(把…填满),你会发现图片全是容器里面盛东西。

这个结果很有意思,非常像小孩在成长过程中学习。我们会教一个一岁多的孩子,告诉他“这是一张桌子”,“这是一个激光笔”。我们不会,也无法说:“一张”是量词,“桌子”是关键词。但是孩子慢慢就能学会这些概念。我们的算法也是这样。

上面列举了我们取得的成果。但是,面前还有很多很多的问题没有解决。比如,我们现在看深度网络很有效,但是它为什么有效?我们还不太明白。除此之外还有其他的模型吗?比如说有一些工程上的问题,那么多数据你能算吗?机器跑得动吗?做机器学习的人非常关心这些问题。

另外,比如说这里有一束花。现在算法可以识别出这是一束花。但是它还不能说出哪里是叶子,哪里是花蕊,哪里是花瓣。我们看起来已经取得了那么多的成果,从某种意义上来说我们也可以把它们做成产品,让他为我们服务,但同时我们看到还有更多的问题没有解决得很好,这就需要我们继续努力。

本文基本上是在讲图像。但是我们看到背后用的很多方法都是机器学习的方法。所以是机器学习人的努力,计算机视觉科学家的努力,大家共同的努力,取得了现在的成果。我们可以用这些成果转化成产品,使我们的生活可以更智能化一点。
 
来源:网络 查看全部
图像识别是人工智能领域非常核心的一个课题。同时从研究的角度来看,机器学习也是人工智能下的一个研究方向。因此,这个题目会更容易引起大家的共鸣。
一、什么是图像识别?

图像识别是什么?以这张图像为例,第一个问题是:在这个图像里面有没有街灯。在学术研究中,我们把这个问题叫作图像检测。第二个问题就是把街灯的位置给找出来,这叫做定位。第三个问题是物体的分类和识别,指出这是山,这是树,这个是招牌,建筑。我们可能还会对整张图片做一个场景的分类,是在什么环境下拍照的。它可能是一个室外的图像,关于城市的生活等等。基本上这些就是我们在图像识别里面涉及到的一些可能的研究问题。

二、图像识别有什么应用?

做这些研究可以有哪些用途?比如无人驾驶汽车:如果汽车上有一个带有摄像头的辅助系统,能够识别这个场景下所有的情况,包括车道线,交通标识,障碍物等,这样能够让我们驾驶汽车更方便、更轻松。

另外,一些相机在拍照的时候,在用户摁下快门到一半的时候,相机就会去找到这个图像的人脸在什么地方。找到人脸以后把焦点对焦在脸上,使这个图像能够让人更清楚一点。

还有,我们的计算机里面往往会有成千上万的照片,怎么组织它们,从而用户快速找到一张照片?如果有这样的图像识别系统,我可能会告诉计算机,我要找的照片里有两个人,这个照片是在颐和园照的。

三、图像识别的困难在哪里?

图像识别有很多难点。第一个困难就是它的视点变化很多。当我们对同样一个物体拍照的时候,因为视点不同,得到的图像外观是不一样的。所以对同一个物体这样看或者那样看,看外观非常不一样。但是也许两个不同的物体,外观又可能会很相近。所以这是造成图像识别的一个困难。

第二个难点就是尺度问题。物体在图像中近大远小,这给我们做图像识别会带来一定的难度。

光影的变化一向是计算机视觉特别关心的一个问题,光影变化是图像识别的第三个难点。同样一个人在不同光影下看起来判若两人。

第四个难点是背景复杂。在复杂背景下,找到某一个人带着拐杖,找到一个戴帽子的人难度很大。

第五个难点是遮挡。遮挡是计算机视觉特别关心的一个难点。比如说,这个图片里熙熙攘攘的人中,我们知道这大概是一个女孩:她有棕色的头发,穿着一个短袖衫。我们人的本领很强,这种情况下还能识别出男女。但是计算机现在还做不到这一点。

第六个难点是变形。非钢体在运动的时候会产生变形。同样一匹马在不同的情况下的图像表现会非常不一样。

四、图像识别的发展历史

636026201776638321534.png


图像识别刚开始的时候是从单一的物体识别做起。上边这张图像展示的是传统的几何方法的结果。我们的客观世界那么复杂、那么多样,我们该怎么做识别呢?那就先从特别简单的问题做起。这也是我们做科学研究的一般的方法:从简单的问题着手。比如从做积木的识别入手。因为积木有很规范的几种形状。上图是识别出的简单的剃须刀。这些人造的非常规范的几何体的组合,只要识别出长方形、矩形、正方形、三角形等,就会把剃须刀,工具检测和识别得非常好。另外一种方法,是根据外观识别。我不考虑要识别的物体的几何结构,仅仅看它外观长什么样。这里列出的是做人脸检测的例子。

做人脸识别的研究历史相对比较长。大概七几年就开始有这样的研究工作了。直到现在仍然有很多人脸识别的研究工作发表。

另外一个课题就是手写数字识别。手写数字看起来是很简单的事,但是对手写数字识别的研究引发出相当多的研究方法,给我们带来很多的成果,是一个很有意思的课题。此外的课题还有汽车的检测。我这里只是列了这几个。其实同时期还有指纹识别、文字识别OCR等、等。当时有的研究工作已经发展到了产品化的程度,包括OCR和指纹识别。

在2000年之前的图像识别曾经采用过几何的方法、结构的方法、规则的方法,当然也用了一些比较简单的模式识别的方法。

在80年代后期、90年代期间,机器学习领域发生了什么?这个时期的机器学习有了一个飞速的发展,出现了一些了不起的研究成果,包括:支持向量机方法,AdaBoosting方法,计算学习理论等。成果出现。这些都使得机器学习和识别大大的往前走。在2002年后的一段时间里,一个华人女科学家,叫李飞飞,开始用一个新的思路做图像识别。他们希望设计一个统一的框架做图像识别,而不是就事论事地针对一种图像识别任务设计一套专门的方法。他们希望这个统一的框架能识别成千上万种物体。另外,希望机器学习领域的出色成果可以用在图像识别上。她们还借鉴文本分析里的方法-“词袋”(bagofwords)的方法用于图像识别。
 
什么是“词袋”方法?举一个例子。比如要识别一张人脸,我们不考虑人脸结构那么复杂,我们只要看看里面有没有鼻子、眼睛、嘴巴、下巴。有了这些部件,只要这些部件在一起,就说这是一张人脸。你可能会觉得这很简单。

这个方法来源自对文本的研究。在自然语言处理里面,有一个任务是对文本分类。文本分类中就采用了“词袋”方法。

比如说有这样一篇文章,我们想知道这篇文章是属于哪个类别。它是在讨论军事,还是在讨论科学。那么我们怎么做呢?一种办法是按我们通常会想到的方法,就是把每一句话都读懂,做解析,知道句子的语法结构,然后去理解句子的内容。但是,对句子做做语法分析很难,理解句子很难。我们往往做不好,所以就不采用这种方法。实际上,我们可以用一个简单的方法:我们只要看这篇文章出现过哪些词出现的频率高。这篇文章中的高频词是:视觉、感知、脑、神经,细胞,你会说这篇文章属于神经科学类。还有一篇文章,其中的高频词是:中国、贸易、出口、进口、银行、货币等,你会知道这篇文章属于经济类。这个方法不用分析和解析句子和段落的语法结构,而只要把这些高频词放到一块,叫“bagofwords”。

怎样把这种方法用于图像识别呢?在识别图像的时候,我们也可以把图像中的“高频词”放在一起来识别图像。这里的“词”是什么?直观地说就是小的图像块。比如我们要识别一张人脸,这样的图像上就会有像皮肤一样,或者像眼睛一样的图像块。而相对来说,如果识别自行车,就会出现和车有关的图像块,如:车座、车梁。这些图像块就是“词”。这样就可以采用“词袋”方法。实际上,图像中的词不是我们说的这么直观,而是下方这样的图像小块。它是很底层的图像块,非常小,3*3,5*5或者7*7大小的图像块。这样小的图像块不表达很抽象的语义。

这种方法提出后,有很多有意思的相关的论文发表。但是这种方法还有缺陷。我们看这样的几个数字,在图像识别领域有一个物体识别比赛,这个比赛就是给你一些图像,让你去设计和训练你的算法。比赛的时候就是提供一些新的图像,要求算法告诉哪张图片是什么类别。如果预测前5个类别中有标准答案,就算预测正确。否则计算错误。这个比赛在2010年的第一名的成绩是72%,到2011年第一名的成绩是74%。我们知道,全世界那么多优秀的团队,有那么好的资源去做这个事,每年的进步大概就是1%-2%的样子。

在2000年之后这些年,机器学习在做什么事?机器学习仍然是做基础研究,出现了很多优秀成果。其中,2006年Hinton在Science上发表了一篇文章介绍他们的深度学习方法。有人建议Hinton用他们的方法试一试这个物体识别问题。结果在2012年的比赛中,他们获得了第一名,成绩是85%的识别率。后来大家发现这个方法原来那么好,所以大家一拥而上,纷纷用这种方法解决各自关心的问题。为什么人工智能现在这么热?主要就是因为这个原因。

张长水教授的实验室也用这个方法做了交通标识的识别,这是基金委的一个项目。花了很大的力气,成果很好,基本上可以到实用的程度。

五、面临的困难和今后要研究的问题

看起来图像识别已经很好了,很多人很乐观,很多人热血沸腾。其实图像识别还没有做得那么好。有什么样的困难?我们举几个例子。
2014082916220841841.jpg

比如说我们在做图像识别的时候,通常我们要标注数据,就是要标注这是鸟、这是猫。然后用这些图像去做训练。标注数据其实是很头疼的事,很花时间很花钱。李飞飞的项目组收集的第一个数据集有101类物体。这个图像库做得很好,后来一些算法可以在这个数据库上达到99%多的识别率。人们说,这些图像质量太好了,种类也太少。后来她们又做了这个数据库,这个数据库有256种物体,图像也没有对齐得那么好。尽管这样,这个数据库开始太小。

在2009年李飞飞她们发布了新的数据库ImageNet,大概有几千万张图像数据。

标数据是件头疼的事。例如这个数据库就要对每个物体用一个方框框起来,并给出一个类别标号。这是一些典型的图像,给每个物体都要框起来,都要标好这是什么物体。

还有一个图像数据库叫LabelMe。上图是其中一张图像,标得非常细,房屋的外形、轮廓、窗户、汽车、所有草地、马路都标得很清楚。大概有十万多张图片,标得非常好的图像大概一万张。张教授有一次对MIT的一个学生说,你们这个数据库做得真了不起,花了那么大功夫。他说这是另一个学生做的。其实不是那个学生标的图像,大部分图像都是他妈妈标的,他妈妈退休在家,每天给他标数据,做妈妈的多么了不起。

还有一个华人科学家,也很了不起,叫朱松纯。他说我们应该把图像标得更细。例如这张图片,其中的椅子可以标得非常细,座椅、椅背、腿的轮廓都标得很准确。他们还标了各种各样的椅子。他们雇了几十个美工,一天到晚标数据,干了几年,但是数据库才几十万张图片。所以标数据是一个非常花钱的事。因此做机器学习的人就在考虑,能不能不用那么费心去标数据而把图像识别做得更好一点。比如这张图片,只要你就是告诉我,你这张图片有摩托车,你不用说车在哪儿我也能把车检测和识别出来。

现在还有很多问题没解决。比如说我们现在的技术只是对图像做了一些解析,可以识别出这张图中这个部分鸟、这是树,但是没有对这个图片做更深入的理解。例如:这个算法并不知道这些物体之间的关系是什么。而对于我们理解一张图片来说,理解物体之间的关系非常重要。

在这个方面给大家介绍一下我们做的一个工作,叫imagecaption。这件事好几个单位都在做,微软、百度、Google都在做。给大家看的这些结果是实验室在做的工作。Imagecaption这是一个什么样的工作呢?就是你给我一张图片,你不需要告诉我这儿有一只狗,它叼的是一个什么样的东西。你只需要告诉我一只狗在叼着一个飞碟就够了。我们现在就利用这八万多张图片和对应的自然语言的句子来设计一个模型,并且训练这个模型,使得当你给我一张新的图片的时候,这个算法能生成一个自然语言的句子来描述它。比如这是针对对这张图片生成的句子:火车站旁边的轨道上停了一辆火车。再比如这个图像:一群斑马彼此很紧密地站在一起。还有这张图片:一只狗嘴里叼着飞碟。不仅如此,在做这个时候,还得到了另外一些有意思的结果。这个算法里有一个视觉的注意模型。这个模型可以自动找到关心的图像块。在对这张图像生成的句子Abrowncowisstandinginthegrass时,我们看到brown,cow,grass都对应着正确的图像块。大家注意,我们在训练数据里面并没有告诉算法哪一块是牛,哪一块是草地。这说明,这个算法学习到了这些概念。既然是这样,除此以外,其他的概念是不是也能找对?我们就把其他的一些词所对应的图像块找出来,看一看。比如说这一排是消火栓这个词对应的图像块。这是黑猫这个概念。结果都找对了。比较有意思的是,除了名词以外,程序还找到了动词对应的概念。比如说fillwith(把…填满),你会发现图片全是容器里面盛东西。

这个结果很有意思,非常像小孩在成长过程中学习。我们会教一个一岁多的孩子,告诉他“这是一张桌子”,“这是一个激光笔”。我们不会,也无法说:“一张”是量词,“桌子”是关键词。但是孩子慢慢就能学会这些概念。我们的算法也是这样。

上面列举了我们取得的成果。但是,面前还有很多很多的问题没有解决。比如,我们现在看深度网络很有效,但是它为什么有效?我们还不太明白。除此之外还有其他的模型吗?比如说有一些工程上的问题,那么多数据你能算吗?机器跑得动吗?做机器学习的人非常关心这些问题。

另外,比如说这里有一束花。现在算法可以识别出这是一束花。但是它还不能说出哪里是叶子,哪里是花蕊,哪里是花瓣。我们看起来已经取得了那么多的成果,从某种意义上来说我们也可以把它们做成产品,让他为我们服务,但同时我们看到还有更多的问题没有解决得很好,这就需要我们继续努力。

本文基本上是在讲图像。但是我们看到背后用的很多方法都是机器学习的方法。所以是机器学习人的努力,计算机视觉科学家的努力,大家共同的努力,取得了现在的成果。我们可以用这些成果转化成产品,使我们的生活可以更智能化一点。
 
来源:网络