在计算机视觉方向如何快速提升自己?

点击 我爱计算机视觉 标星,更快获取CVML新技术

导读:本文作者为52CV一位群友, 推荐的不仅有学习路径,还有实战项目和一些经典任务的介绍,值得正在探索的朋友参考。

作者:我好菜啊

链接:https://www.zhihu.com/question/337889115/answer/770797118

来源:知乎,已获作者授权,禁止二次转载

首先基础的机器学习知识必不可少,因为传统的一些方法就是手工特征+机器学习方法等,在2012年以前的ImageNet视觉挑战赛上获胜,这里安利一些资料,不过都是老生常谈了。

如周志华老师的《机器学习》、李航老师的《统计学习方法》、《机器学习实践》、吴恩达老师的cs229、李宏毅老师的机器学习视频(B站就有),除此以外,基础的图像处理知识也是必不可少的,比如冈萨雷斯的《数字图像处理》。

其次的话,就是深度学习了,2012年以后深度学习方法在计算机视觉领域一骑绝尘,经典网络必须要知道,LeNet、AlexNet、VGG、GoogLeNet、ResNet、DenseNet、SENet等,还有一些轻量级的网络,比如ShuffleNet、MobileNet系列,后续我也会在专栏更新相关论文的解读。

在更详细的任务中,有一些经典任务,上述的一些网络主要是分类网络,用于分类的,比如给一张图,输出图片是猫还是狗,但是会有很多更复杂的问题,比如图像既有猫又有狗,这时候网络应该输出什么呢?这样就衍生出了经典任务中的检测任务、分割任务等。

检测任务实际是输出目标的位置和概率,位置就是用bounding box圈出目标物体。目标检测大概的发展是这样(本人水平有限,难免会有错误,欢迎批评指正),在一张图中密集生成候选框,然后提取特征+机器学习分类器,这里就有一个问题如何生成候选框,滑窗法、随机搜索法等,不断发展。

2014年出现了一个很出名的文章——RCNN,将深度学习用到目标检测中,但是仅仅是将CNN作为特征提取器。在此就不再赘述,RCNN系列(RCNN、Fast RCNN、Faster RCNN、Mask RCNN)、YOLO系列(YOLO v1、YOLO v2、YOLO v3)以及SSD,从去年开始涌现了一些anchor-free的工作,在ECCV 2018上出现了一个工作——CornerNet,提出了一个想法——把目标检测问题转换成关键点检测问题,之后涌现了CenterNet、ExtremeNet等一系列基于关键点的目标检测工作。

最近谷歌有一些NAS和目标检测的工作,以及用强化学习的方式选择数据增广策略(近期我会复现该论文的数据增广策略)。

像分割任务,是像素级的分类问题,同样也有传统方法和深度学习方法,深度学习比较经典的方法是FCN,输出大小和输入大小应该是一致的(这里大小是长宽)。

目标追踪任务和检测任务有一些相似,但有一些不同之处,对每一帧进行检测的效果和追踪十分类似,但是目标检测通常检测的是已知类别,追踪可以追踪给定的第一帧里的内容,有一些传统方法、相关滤波方法以及深度学习方法,比如孪生网络系列的文章。再衍生出来的话,还有Re-ID。

除此以外,还有很多很多计算机视觉任务,比如超分辨率、三维重建(还涉及计算机图形学等),由于篇幅有限就不一一介绍这些任务的基本发展了,可以找一些论文自己研读,注意不仅仅是最近的文章,还有上个世纪的文章,最好写个综述,看个几十上百篇文章,读读代码。

有一些计算机视觉、深度学习方向的课和书籍,比如李沐 老师的《动手学深度学习》,有课有jupyter notebook,非常好,相见恨晚,还有花书《深度学习》、《计算机视觉: 算法与应用》、《计算机视觉——一种现代方法》、《计算机视觉: 模型、学习和推理》等。

课的话,可以看cs231n,非常经典的计算机视觉课程,cs224d,虽然这门课是nlp的课,但是RNN这些东西对时间序列建模有非常大的帮助,可以也关注一下。

最近需要的关注的还有GNN paper list ,用图的思想去处理一些计算机视觉问题,以及CV和NLP结合还有一些任务,比如很早之前就有的VQA、caption等,这里有一篇论文可以参考一下, Trends in Integration of Vision and Language Research: A Survey of Tasks, Datasets, and Methods

除此以外,代码能力也非常有必要。

无论是传统的数字图像处理还是图形学,最近我就在看一些图形学的算法并打算逐一实现,还是深度学习方法,都需要有一定的代码能力,平时多看看别人写的代码,学习一下,最近我就复现了一篇ECCV 2018的文章HairNet,相对我之前的代码就非常工程化,也便于在其他设备上进行使用。

传统数字图像处理使用matlab比较多一点,图形学使用C++多一点,深度学习的一些代码主要基于python,还有一些深度学习框架,例如pytorch、mxnet、tensorflow、caffe、darknet等,目前这几种都或多或少地使用多,安利前面两种,pytorch目前也是比较主流的框架了,mxnet可以基于李沐大大那本书就学习,对理解底层的代码比较有帮助,我就是通过那个代码理解dataloader具体是怎么实现的。

“快速”二字,我不知道该如何体现,这个因人而异吧,笨鸟先飞,勤能补拙,好好学习是会有收获的,提升是不知不觉之中的,就像我不知不觉之中就从NLP、KG圈就跑去搞CV、CG了(滑稽脸.jpg)。

最近一些经历给我一些感触,传统的一些数字图像处理方法还是必不可少的,数学上很fancy,实际上可能也比较work,同时兼具解释性等特点。入门计算机视觉,或者其他任何一个学科/领域,脚踏实地比较好,切不可建空中楼阁。

CV细分方向交流群

52CV已经建立多个CV专业交流群,包括:目标跟踪、 目标检测、语义分割、姿态估计、人脸识别检测、医学影像处理、超分辨率、神经架构搜索、GAN、强化学习等,扫码添加CV君拉你入群,

请务必注明相关方向,比如: 目标检测

喜欢在QQ交流的童鞋,可以加52CV官方 QQ群805388940

(不会时时在线,如果没能及时通过验证还请见谅

长按关注 我爱计算机视觉

我来评几句
登录后评论

已发表评论数()

相关站点

热门文章