如何从图像中解析出可供计算机理解的信息,是机器视觉的中心问题。深度学习模型由于其强大的表示能力,加之数据量的积累和计算力的进步,成为机器视觉的热点研究方向。
那么,如何理解一张图片?根据后续任务的需要,有三个主要的层次:
分类(Classification)
分类即是将图像结构化为某一类别的信息,用事先确定好的类别或实例ID来描述图片。这一任务是最简单、最基础的图像理解任务,也是深度学习模型最先取得突破和实现大规模应用的任务。其中,ImageNet是最权威的评测集,每年的ILSVRC催生了大量的优秀深度网络结构,为其他任务提供了基础。在应用领域,人脸、场景的识别等都可以归为分类任务。
检测(Detection)
分类任务关心整体,给出的是整张图片的内容描述,而检测则关注特定的物体目标,要求同时获得这一目标的类别信息和位置信息。相比分类,检测给出的是对图片前景和背景的理解,我们需要从背景中分离出感兴趣的目标,并确定这一目标的描述(类别和位置),因而,检测模型的输出是一个列表,列表的每一项使用一个数据组给出检出目标的类别和位置(常用矩形检测框的坐标表示)。
分割(Segmentation)
分割包括语义分割(semantic segmentation)和实例分割(instance segmentation),前者是对前背景分离的拓展,要求分离开具有不同语义的图像部分,而后者是检测任务的拓展,要求描述出目标的轮廓(相比检测框更为精细)。分割是对图像的像素级描述,它赋予每个像素类别(实例)意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割。
基于深度学习的目标检测算法
在深度学习兴起并逐渐成为计算机视觉的核心方法之后,基于深度学习算法的一系列目标检测算法大致可以分为两大流派:
两阶段(two-stage)算法:先产生候选区域然后再进行CNN分类(RCNN系列)
单阶段(one-stage)算法:直接对输入图像应用算法并输出类别和相应的定位(yolo系列)
无论是两阶段还是单阶段算法,它们都是在识别的快和准两点上寻找一个平衡点和或者极端点。要么准要么快,但随着深度学习和计算机视觉的向前发展,既快有准的算法也在逐渐的实现当中。
参考:
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:目标检测算法概述 - Python技术站