计算机视觉的三大主要任务是分类、检测和分割。
图像分类(Image Classification)将图像结构化为某一类别的信息,用事先确立好的类别和实例来描述图像,是最基础的图像理解手段。
目标检测(Object Detection)包括定位和识别两部分,定位需找到物体的位置并给出识别标签。
分割是对图像的像素级描述,赋予每个像素一个类别意义,适用于理解要求较高的场景,如无人驾驶中对道路和非道路的分割。分割包括语义分割(Semantic Segmentation)和实例分割(Instance Segmentation),语义分割是对背景分离的拓展,要求分离具有不同语义的图像部分;实例分割是检测任务的拓展,要求描述目标的轮廓,针对个体而非类别
对单物体而言,分类就是通过算法对整幅图像给出一个最大置信度的类别标签;定位即加上具体的红框,标示位置并且给出标签;如果前期能够准确检测,则分割会变容易,因此,目标检测是计算机视觉领域首要解决的问题。
目标检测的方法
传统计算机视觉中,首先对图像进行预处理,然后人工提取特征,研究重点集中在更加精准的特征人工提取上(例如梯度直方图算法、支持向量机算法)。不过人工提取的方式泛化能力较弱——泛化能力指的是已经训练好的模型在其他数据集或其他任务重使用的能力。有可能花了很大功夫训练出来的模型,在面对新数据时表现平平,这就是泛化能力不咋地。
目前流行的是深度学习的方法。深度学习中的目标检测,常见方法包括两阶段目标检测、一阶段目标检测。
两阶段目标检测:首先由算法生成一系列作为样本的候选框,再通过卷积神经网络进行样本分类。常见的算法有Region-CNN(R-CNN)、Fast R-CNN和Faster R-CNN等。
一阶段目标检测:不需要产生候选框,而是直接将目标框定位问题转化为回归问题进行处理,速度非常快。常见的有YOLO系列算法(如YOLO、YOLOv2、YOLOv3、YOLOv4)和Single Shot MultiBox Detector(SSD)等。