计算机视觉高级阶段要讲的内容:
目标检测:检测出图片里面有几个目标物体,并且定位
OCR(光学字符识别):从图片里面识别和提取文字
人脸检测与人脸识别:检测人脸和识别人脸
人通过学习后,找到规律,知道以后在图片的哪个位置画框 。
同样,机器也是一样的,但和人不同的是需要成千上万的图片进行训练来学会这种规律。
通过不断降低损失函数的值,来不断训练,框框越接近理想状态,损失函数越小。损失函数越小,模型越优化。
图像识别包括图像分类、图像的目标检测、OCR、人脸识别,是一个统称的概念,只要是去识别理解图像的内容,我们就称之为图像识别。
目标检测
目标检测(Object Detection)的任务是找出图像中所有感兴趣的目标(物体),确定它们的类别和位置,是计算机视觉领域的核心问题之一。由于各类物体有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具有挑战性的问题。
1.计算机视觉中关于图像识别的四大类任务:
(1)分类-Classfication:解决“是什么?”的问题,即给定一张图片或一段视频判断里面包含什么类别的目标。
解释:把它划分到某个类别(手写体识别、猫狗分类、水果分类)。
视屏分类的本质就是图像分类(足球比赛分类到体育,一个人唱歌划分到文艺汇演)。
(2)定位-Location:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。
(3)检测-Detection:解决“在哪里?是什么?”的问题,即定位出这个目标的位置并且知道目标物是什么。
解释:“在哪里”是一个定位问题,回归问题(x、y、width、height),“是什么”是一个分类问题,所以目标检测是分类问题和回归问题的叠加。
分类问题可以使用交叉熵作为损失函数;回归问题可以使用均方差作为损失函数。
loss = cross_entropy(y,y')+avg_err_equare(y,y')两个损失函数叠加到一起作为目标检测的损失函数。
(4)分割-Segmentation:分为实例的分割(Instance-level)和场景分割(Scene-level),解决“每一个像素属于哪个目标物或”
解释:要把猫、鸭的边缘精确的分割出来。图像分割实际上是要理解图像的场景和边缘。
四点知识的图解:
2.目标检测的核心问题
(1)分类问题:即图片(或某个区域)中的图像属于哪个类别。
可以使用任意一个图像分类模型(VGG)去做分类。只要精度能够达到我的要求
(2)定位问题:目标可能出现在图像的任何位置。
回归的输入是图像,输出是n组(x,y,w,h)这个数据,是狗的定位?是鸭子的定位?
(3)大小问题:目标有各种不同的大小。
(4)形状问题:目标可能有各种不用的形状。
两阶段检测:先生成候选区,再做分类、回归。检测速度慢、准确度高
先进行区域生成,该区域称之为region proposal(简称RP,一个有可能包含待检测物体的预选框),再通过卷积神经网络进行样本分类。又叫做感兴趣区,一个可能存在目标物体的区域。
任务流程:特征提取-->生成RP-->分类/定位回归。
常见tow stage目标检测算法有:R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN。
一阶段检测:直接做分类、回归。检测速度快、准确度低。
不用RP,直接在网络中提取特征来预测物体分类和位置。
人物流程:特征提取-->分类/定位问题。
常见的one stage目标检测算法有:OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等。
(速度越快,准确度越低,速度越慢,准确度越高)
有些模型速度和准确度可以兼顾,但是总的来说两阶段检测要比一阶段检测的速度慢、准确度高。
目标检测的应用
1)人脸检测
- 智能门控
- 员工考勤签到
- 智慧超市
- 人脸支付
- 车站、机场实名认证
- 公共安全:逃犯抓捕、走失人员检测
人脸检测只检测出哪些地方有人脸,人脸识别是对人的身份进行确认。
2)行人检测
- 智能辅助驾驶
- 智能监控(有没有人翻越围墙)
- 暴恐检测(根据面向识别暴恐倾向)
- 移动侦测(本来不能被移动的东西被移走了)、区域入侵检测、安全帽/安全带检测
3)车辆检测
- 自动驾驶
- 违章检测、关键通道检测
- 广告检测(检测广告中的车辆类型,弹出链接)
4)遥感监测
- 大地遥感,如土地使用、公路、水渠、河流监控
- 农作物监控
- 军事检测
目标检测原理(重点)
目标检测分为两大系列--RCNN系列和YOLO系列,RCNN系列是基于区域检测的代表性算法,YOLO是基于区域提取的代表性算法,另外还有著名的SSD是基于前两个系列的改进。
1)滑动窗口
通过滑窗法流程图可以很清晰理解其主要思路:首先对输入图像进行不同窗口大小的窗口进行从左往右、从上到下的滑动。每次滑动的时候对当前窗口执行分类器(分类器是事先训练好的)。如果当前窗口得到较高的分类概率,则认为检测到了物体。对每个不同窗口大小的滑窗进行检测后,会得到不用窗口检测到的物体标记,这些窗口大小会存在重复较高的部分,最后采用非极大值抑制(Non-Maximum Suppression,NMS)的放大进行筛选。最终,经过NMS筛选后获得检测到的物体。
滑窗法简单易于理解,但是不同窗口大小进行图像全局搜索导致效率低下,而且设计窗口大小时候还需要考虑物体的长宽比。所以,对于实时性要求较高的分类器,不推荐使用滑窗法。虽然不容易产生漏检,但效率极低,基本上不用。
2)选择性搜索
1、什么是选择性搜索。
滑动法类似于穷举法,效率很低。
滑窗法类似穷举进行图像子区域搜索,但是一般情况下图像中大部分子区域是没有物体的。学者们自然而然想到只对图像中最有可能包含物体的区域进行搜索以此来提高计算效率。选择搜索(selective search,简称SS)方法是当下最为熟知的图像bouding boxes提取算法,由Koen E.A于2011年提出。
选择搜索算法的主要思想:图像中物体可能存在的区域应该是有某些相似性或者连续性区域的。因此,选择搜索基于上面这一想法采用子区域合并的方法提取bouding boxes。首先,对输入图像进行分割算法产生许多小的子区域。其次,根据这些子区域之间相似性(相似性标准主要有颜色、纹理、大小等等)进行区域合并,不断的进行区域迭代合并。每次迭代过程汇总对这些合并的子区域做bounding boxes(外切举行),这些子区域外切举行就是通常所说的候选区。
2、选择搜索流程
step0:生成区域集R
step1:计算区域集R里每个相邻区域的相似度S={s1,s2,...}
step2:找出相似度最高的两个预期,将其合并为心集,添加R
step3:从S中移除所有与step2中有关的子集
step4:计算新集与所有子集的相似度
step5:跳至step2,直至S为空。
3、选择性搜索的优点
- 计算效率优于滑窗法
- 由于采用子区域合并策略,所以可以包含各种大小的疑似物体框
- 合并区域相似的指标多样性,提高检测物体的概率
附:阅读论文:
1)模型解决什么问题
2)使用了什么方法、思路
3)取得了什么效果
4)该模型有什么特点、优缺点