一文了解计算机视觉的八大应用方向
机器学习常见的应用方向,包括以下几个:
计算机视觉(CV)
自然语言处理(NLP)
语音识别
推荐系统
广告
等等
更详细的可以参考之前下面这个网站:
https://paperswithcode.com/sota
这个网站非常详细划分了16个大方向,包括总共1081个子方向。如果想进入机器学习领域,首先还是选择一个方向领域,然后了解和熟悉该方向领域内所需要的算法,特定的解决技巧等。
当然,这篇文章主要介绍的是计算机视觉的应用,计算机视觉也算是这16个方向里面最热门也是发展最成熟的其中一个方向了。
计算机视觉可以分为以下几大方向:
图像分类
目标检测
图像分割
风格迁移
图像重构
超分辨率
图像生成
人脸
其他
虽然这里说的都是图像,但其实视频也属于计算机视觉的研究对象,所以还有视频分类、检测、生成,以及追踪,但篇幅的关系,以及目前研究工作方向也集中于图像,暂时就不介绍视频方面应用的内容。
每个方向会简单介绍该方向需要解决的问题,以及推荐一些Github项目、论文或者是综述文章。
1.图像分类(ImageClassification)图像分类,也可以称为图像识别,顾名思义,就是辨别图像是什么,或者说图像中的物体属于什么类别。
图像分类根据不同分类标准可以划分为很多种子方向。
比如根据类别标签,可以划分为:
二分类问题,比如判断图片中是否包含人脸;
多分类问题,比如鸟类识别;
多标签分类,每个类别都包含多种属性的标签,比如对于服饰分类,可以加上衣服颜色、纹理、袖长等标签,输出的不只是单一的类别,还可以包括多个属性。
根据分类对象,可以划分为:
通用分类,比如简单划分为鸟类、车、猫、狗等类别;
细粒度分类,目前图像分类比较热门的领域,比如鸟类、花卉、猫狗等类别,它们的一些更精细的类别之间非常相似,而同个类别则可能由于遮挡、角度、光照等原因就不易分辨。
根据类别数量,还可以分为:
Few-shotlearning:即小样本学习,训练集中每个类别数量很少,包括one-shot和zero-shot;
large-scalelearning:大规模样本学习,也是现在主流的分类方法,这也是由于深度学习对数据集的要求。
推荐的Github项目如下:
AwesomeImageClassification
awesome-few-shot-learning
awesome-zero-shot-learning
论文:
ImageNetClassificationWithDeepConvolutionalNeuralNetworks,2012
VeryDeepConvolutionalNetworksforLarge-ScaleImageRecognition,2014.
GoingDeeperwithConvolutions,2015.
DeepResidualLearningforImageRecognition,2015.
Inceptionv4&&Inception-ResNetv2,2016
RexNext,2016
NasNet,2017
ShuffleNetV2,2018
SKNet,2019
文章:
入门|从VGG到NASNet,一文概览图像分类网络
CNN网络架构演进:从LeNet到DenseNet
旷视南京研究院魏秀参:细粒度图像分析综述
小样本学习年度进展|VALSE2018
常用的图像分类数据集:
Mnist:手写数字数据集,包含60000张训练集和10000张测试集。
Cifar:分为Cifar10和Cifar100。前者包含60000张图片,总共10个类别,每类6000张图片。后者是100个类别,每个类别600张图片。类别包括猫狗鸟等动物、飞机汽车船等交通工具。
Imagenet:应该是目前最大的开源图像数据集,包含1500万张图片,2.2万个类别。
2.目标检测(ObjectDetection)目标检测通常包含两方面的工作,首先是找到目标,然后就是识别目标。
目标检测可以分为单物体检测和多物体检测,即图像中目标的数量,例子如下所示:
以上两个例子是来自VOC2012数据集的图片,实际上还有更多更复杂的场景,如MSCOCO数据集的图片例子:
目标检测领域,其实有很多方法,其发展史如下所示:
从上图可以知道有几个方法系列:
R-CNN系列,从R-CNN到FastR-CNN、FasterR-CNN,MaskR-CNN;
YOLO系列,从v1到2018年的v3版本
Github项目:
awesome-object-detection
https://github.com/facebookresearch/Detectron
https://github.com/jwyang/faster-rcnn.pytorch
论文:
R-CNN,2013
FastR-CNN,2015
FasterR-CNN,2015
MaskR-CNN,2017
YOLO,2015
YOLOv2,2016
YOLOv3,2018
SSD,2015
FPN,2016
文章:
一文读懂目标检测:R-CNN、FastR-CNN、FasterR-CNN、YOLO、SSD
教程|单级式目标检测方法概述:YOLO与SSD
从RCNN到SSD,这应该是最全的一份目标检测算法盘点
从R-CNN到RFBNet,目标检测架构5年演进全盘点
常用的数据集:
VOC2012
MSCOCO
3.图像分割(ObjectSegmentation)图像分割是基于图像检测的,它需要检测到目标物体,然后把物体分割出来。
图像分割可以分为三种:
普通分割:将不同分属于不同物体的像素区域分开,比如前景区域和后景区域的分割;
语义分割:普通分割的基础上,在像素级别上的分类,属于同一类的像素都要被归为一类,比如分割出不同类别的物体;
实例分割:语义分割的基础上,分割出每个实例物体,比如对图片中的多只狗都分割出来,识别出来它们是不同的个体,不仅仅是属于哪个类别。
一个图形分割的例子如下所示,下图就是一个实例分割的例子,用不同的颜色表示不同的实例。
Github:
awesome-semantic-segmentation
论文:
U-Net,2015
Deeplab,2016
FCN,2016
文章:
深度|用于图像分割的卷积神经网络:从R-CNN到MarkR-CNN
综述----图像分割综述
图像语义分割综述
4.风格迁移(StyleTransfer)风格迁移是指将一个领域或者几张图片的风格应用到其他领域或者图片上。比如将抽象派的风格应用到写实派的图片上。
一个风格迁移的例子如下,图A是原图,后面的B-F五幅图都是根据不同风格得到的结果。
一般数据集采用常用的数据集加一些著名的艺术画作品,比如梵高、毕加索等。
Github:
Asimple,concisetensorflowimplementationofstyletransfer(neuralstyle)
TensorFlow(PythonAPI)implementationofNeuralStyle
TensorFlowCNNforfaststyletransfer
论文:
ANeuralAlgorithmofArtisticStyle,2015
ImageStyleTransferUsingConvolutionalNeuralNetworks,2016
DeepPhotoStyleTransfer,2017
文章:
图像风格迁移(NeuralStyle)简史
StyleTransfer|风格迁移综述
感知损失(PerceptualLosses)
图像风格转换(Imagestyletransfer)
风格迁移(StyleTransfer)论文阅读整理(一)
5.图像重构(ImageReconstruction)图像重构,也称为图像修复(ImageInpainting),其目的就是修复图像中缺失的地方,比如可以用于修复一些老的有损坏的黑白照片和影片。通常会采用常用的数据集,然后人为制造图片中需要修复的地方。
一个修复的例子如下所示,总共是四张需要修复的图片,例子来自论文"ImageInpaintingforIrregularHolesUsingPartialConvolutions"。
论文:
PixelRecurrentNeuralNetworks,2016.
ImageInpaintingforIrregularHolesUsingPartialConvolutions,2018.
HighlyScalableImageReconstructionusingDeepNeuralNetworkswithBandpassFiltering,2018.
GenerativeImageInpaintingwithContextualAttention,2018
Free-FormImageInpaintingwithGatedConvolution,2018
EdgeConnect:GenerativeImageInpaintingwithAdversarialEdgeLearning,2019
Github:
Awesome-Image-Inpainting
generative_inpainting
edge-connect
文章:
女神被打码了?一笔一划脑补回来,效果超越Adobe|已开源
2018CVPRimageinpainting
6.超分辨率(Super-Resolution)超分辨率是指生成一个比原图分辨率更高、细节更清晰的任务。一个例子如下图所示,图例来自论文"Photo-RealisticSingleImageSuper-ResolutionUsingaGenerativeAdversarialNetwork"。
通常超分辨率的模型也可以用于解决图像恢复(imagerestoration)和修复(inpainting),因为它们都是解决比较关联的问题。
常用的数据集主要是采用现有的数据集,并生成分辨率较低的图片用于模型的训练。
Github:
ImageSuper-ResolutionforAnime-StyleArt--用于动漫图片的超分辨率应用,14k的stars
neural-enhance
Imagesuper-resolutionthroughdeeplearning
论文:
Photo-RealisticSingleImageSuper-ResolutionUsingaGenerativeAdversarialNetwork,2017.
DeepLaplacianPyramidNetworksforFastandAccurateSuper-Resolution,2017.
DeepImagePrior,2017.
ESRGAN:EnhancedSuper-ResolutionGenerativeAdversarialNetworks,2018
文章:
图像超分辨率重建
超分辨率技术如何发展?这6篇ECCV18论文带你一次尽览
深度学习图像超分辨率最新综述:从模型到应用
ESRGAN:基于GAN的增强超分辨率方法(附代码解析)
7.图像生成(ImageSynthesis)图像生成是根据一张图片生成修改部分区域的图片或者是全新的图片的任务。这个应用最近几年快速发展,主要原因也是由于GANs是最近几年非常热门的研究方向,而图像生成就是GANs的一大应用。
一个图像生成例子如下:
Githubs:
tensorflow-generative-model-collections--集成了多种GANs的代码
The-gan-zoo--收集了当前的所有GANs相关的论文
AdversarialNetsPapers
论文:
UnsupervisedRepresentationLearningwithDeepConvolutionalGenerativeAdversarialNetworks,2015.
ConditionalImageGenerationwithPixelCNNDecoders,2016.
Pix2Pix--Image-to-imagetranslationwithconditionaladversarialnetworks,2016
UnpairedImage-to-ImageTranslationusingCycle-ConsistentAdversarialNetworks,2017.
bigGAN--LARGESCALEGANTRAININGFORHIGHFIDELITYNATURALIMAGESYNTHESIS,2018
文章:
干货|深入浅出GAN·原理篇文字版(完整)
深度|生成对抗网络初学入门:一文读懂GAN的基本原理(附资源)
独家|GAN之父NIPS2016演讲现场直击:全方位解读生成对抗网络的原理及未来(附PPT)
英伟达再出GAN神作!多层次特征的风格迁移人脸生成器
8.人脸人脸方面的应用,包括人脸识别、人脸检测、人脸匹配、人脸对齐等等,这应该是计算机视觉方面最热门也是发展最成熟的应用,而且已经比较广泛的应用在各种安全、身份认证等,比如人脸支付、人脸解锁。
这里就直接推荐几个Github项目、论文、文章和数据集
Github:
awesome-Face_Recognition:近十年的人脸相关的所有论文合集
face_recognition:人脸识别库,可以实现识别、检测、匹配等等功能。
facenet
论文:
FaceNet:AUnifiedEmbeddingforFaceRecognitionandClustering,2015
FaceRecognition:FromTraditionaltoDeepLearningMethods,2018
MSFD:Multi-ScaleReceptiveFieldFaceDetector,2018
DSFD:DualShotFaceDetector,2018
NeuralArchitectureSearchforDeepFaceRecognition,2019
文章:
人脸识别技术全面总结:从传统方法到深度学习
资源|从人脸检测到语义分割,OpenCV预训练模型库
数据集:
LFW
CelebA
MS-Celeb-1M
CASIA-WebFace
FaceScrub
MegaFace
10.其他实际上还有其他很多方向,包括:
图文生成(ImageCaptioning):给图片生成一段描述。
ShowandTell:ANeuralImageCaptionGenerator,2014.
文本生成图片(TexttoImage):基于文本来生成图片。
AttnGAN:Fine-GrainedTexttoImageGenerationwithAttentionalGenerativeAdversarialNetworks,2017.
图片上色(ImageColorization):将图片从黑白变为彩色图。
ColorfulImageColorization,2016.
人体姿态估计(humanposeestimation):识别人的行为动作
CascadedPyramidNetworkforMulti-PersonPoseEstimation,2017
还有包括3D、视频、医学图像、问答、自动驾驶、追踪等等方向,具体可以查看下面这个网站:
https://paperswithcode.com/area/computer-vision
而如果认定一个方向,想开始学习这方面的内容,首先推荐可以先查找中文方面的综述文章或者论文,当然如果英语阅读能力比较好的,也可以查看英文的综述文章,通过看综述来查看下自己需要阅读的论文,论文推荐先看最近3-5年内的论文,太过久远的论文,除非需要更加深入了解某个算法,否则都不太需要阅读。
此外,就是需要结合实际项目来加深对算法的了解,通过跑下代码,也可以更好了解某个算法具体是如何实现的。
参考
9ApplicationsofDeepLearningforComputerVision
Browsestate-of-the-art
小结本文简单介绍了几个计算机视觉方面的应用,包括应用解决的问题以及推荐了几个Github项目和论文、文章,和常用数据集。
我的知乎专栏:https://zhuanlan.zhihu.com/c_1060581544644718592