目录
(5)细粒度图像分类(fine-grained image classification)
(4) 零样本目标检测(Zero Shot Detection,ZSD),通用目标检测器
(2) 实例分割(instance segmentation)
(2) 视频目标检测 Video Object Detection
(3) 视频分类(Video Classification)编辑
6、网络可视化(visualizing)和网络理解(understanding)/视觉注意力和显著性
7.2 人脸验证/识别(face verification/recognition)
8.1 纹理生成(texture synthesis)和风格迁移(style transform)
8.3 图像描述(image captioning)(视频描述)
8.4 视觉问答(visual question answering)
9、OCR,Optical Character Recognition,中文是:光学字符识别。
本文是本人花费大量时间和精力的总结。
主要介绍一些任务概念的区分和大致的发展历程、常见任务、应用场景。
计算机视觉(Computer Vision,CV)是一门研究如何使机器“看”的学科,换句话说,就是用计算机实现人的视觉功能——对客观世界的三维场景的感知、识别和理解!!!
机器视觉通常涉及对图像或视频的评估,英国机器视觉协会(BMVA)将机器视觉定义为“对单张图像或一系列图像的有用信息进行自动提取、分析和理解”。计算机视觉任务用一句话概括就是:Visual problem solving:“What is where?“.是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等。
计算机视觉涵盖的内容丰富,需要完成的任务也非常多,但其中最基本的任务包含四项:分类、定位、检测和分割;可以说其他关键任务都是在四项基本任务的基础上延伸开来的。
四大基本任务
图来源:计算机视觉中的object detection 与object recognition有什么区别吗? - 知乎 (zhihu.com)
1、分类(解决"what")
分类(Classification):解决“是什么?”的问题,即给定一张图或一段视频,判断里面包含什么类别的目标。
在图像分类任务中,最流行的网络架构是卷积神经网络(CNN),但Transformer很可能会作为一个例外,本来在NLP领域的常用网络结构,却在近几年被广泛应用到CV领域,并且表现SOTA,大杀四方,颇有取代CNN之势。在这里先不过多介绍,在之后文章中会详细介绍Transformer的精彩战绩!
CNN网络结构基本是由卷积层、池化层以及全连接层组成。通过卷积层进行特征提取,之后通过池化层过滤细节(一般采用最大池化、平均池化),最后在全连接层进行特征展开,再送入到相应的分类器得到最终的分类结果。
2012年,Hinton课题组为了证明深度学习的潜力,首次参加ImageNet图像识别比赛,其通过CNN构建的深度学习网络AlexNet一举夺得冠军,且碾压第二名(SVM方法)的分类性能。也正是由于该比赛,CNN吸引了众多研究者的注意。在其之后,有很多基于CNN的算法也在ImageNet上取得了特别好的成绩。同时,也是在2012这一年,以AlexNet为分界线,在之前为传统算法,之后则为深度学习算法。
给定一张输入图像,图像分类任务旨在判断该图像所属类别。一张图像中是否包含某种物体,对图像进行特征描述是物体分类的主要研究内容
(1) 图像分类常用数据集
以下是几种常用分类数据集,难度依次递增。rodrigob.github.io/are_列举了各算法在各数据集上的性能排名。
MNIST 60k
50k训练图像、10k测试图像、10个类别、图像大小1×28×28、内容是0-9手写数字。
CIFAR-10
50k训练图像、10k测试图像、10个类别、图像大小3×32×32。
CIFAR-100
50k训练图像、10k测试图像、100个类别、图像大小3×32×32。
ImageNet
李飞飞,1.2M训练图像、50k验证图像、1k个类别。2017年及之前,每年会举行基于ImageNet数据集的ILSVRC竞赛,这相当于计算机视觉界奥林匹克。
(2) 图像分类经典网络结构(分类模型的解读)
总结图像分类任务经典的网络结构如下:
· LeNet-5:60k参数。一般作为广大计算机视觉从业者的Hello world入门级网络结构。当时,被成功用于ATM以对支票中的手写数字进行识别。
· AlexNet:60M参数,ILSVRC2012年的ox冠军网络。
· VGG-16/VGG-19:138M参数,ILSVRC2014的亚军网络。由于VGG-16网络结构十分简单,并且很适合迁移学习,因此VGG-16至今仍在各大关键任务中被广泛使用。
· GoogLeNet:5M参数,ILSVRC2014的冠军网络。
· Inception-v3/v4:在GoogLeNet的基础上进一步降低参数。
· ResNet:ILSVRC2015年的冠军网络。ResNet旨在解决网络加深后训练难度增大的现象。
· preResNet:基于ResNet的改进。
· ResNeXt:基于ResNet的另一种改进。
· DenseNet:其目的也是避免梯度消失。与残差(residual)模块不同,dense模块中任意两层之间均有短路连接。
· SENet:ILSVRC2017的冠军网络。
......
(3) 模型设计领域热点回顾
(旷视科技-张祥雨)
o层数更深、性能更强的架构
o轻量级架构、高推理效率
o自动化模型设计、神经网络架构搜索(NAS)
o动态模型
oVision Transformers (ViTs)
o大模型、多模态模型
(4) 模型上下游任务
简单来说,上游任务是训练一个用于特征提取的预训练模型,比如这几年很火的CLIP[1],GPT[2],下游任务是具体部署。
下游上游的取名就在于下游任务往往是先用上游任务得到的模型(一般会称为backbone,主干网络)提取图像特征,然后再从这些特征中得到我们想要的结果。
上游任务:
预训练模型。一般就是利用上游数据进行预训练,以生成一个包含视觉表征能力的模型。
比如,我们想要的是一个能够提取图片特征能力的卷积神经网络或者Transformer,我们会用大量图片用图片分类这个下游任务或者其他比如自监督的方法(可以参考CLIP)去进行训练,得到一个权重合适的模型(能够很好地提取出图像的特征),那么最后我们把得到的这个模型最后一层的FC层(原本用于图片分类输出类别)去掉,这个模型就成为了一个很好的预训练模型,输入一张图,就能够提取出图像的特征,就可以用于我们的下游任务(在这个模型后面加一些诸如检测头之类的模块,处理我们想要的下游任务,或者修改下FC层,用于另外一堆类别的图像分类)。
下游任务:
下游任务是计算机视觉应用程序,用于评估通过自监督学习学习到的特征的质量。当训练数据稀缺时,这些应用程序可以极大地受益于预训练模型。
下游任务更多的是评估任务,相当于项目落地,需要去做具体任务来评价模型好坏。
如图像分类,目标检测、语义分割等具体任务。
(5)细粒度图像分类(fine-grained image classification)
相比(通用)图像分类,细粒度图像分类需要判断的图像类别更加精细。比如,我们需要判断该目标具体是哪一种鸟、哪一款的车、或哪一个型号的飞机。通常,这些子类之间的差异十分微小。比如,波音737-300和波音737-400的外观可见的区别只是窗户的个数不同。因此,细粒度图像分类是比(通用)图像分类更具有挑战性的任务。
细粒度图像分类的经典做法是先定位出目标的不同部位,例如鸟的头、脚、翅膀等,之后分别对这些部位提取特征,最后融合这些特征进行分类。这类方法的准确率较高,但这需要对数据集人工标注部位信息。目前细粒度分类的一大研究趋势是不借助额外监督信息,只利用图像标记进行学习,其以基于双线性CNN的方法为代表。
2、定位(解决"where")
在图像分类的基础上,我们还想知道图像中的目标具体在图像的什么位置,通常是以包围盒的(bounding box)形式。
基本思路 多任务学习,网络带有两个输出分支。一个分支用于做图像分类,即全连接+softmax判断目标类别&