原文:https://towardsdatascience.com/guide-to-learn-computer-vision-in-2020-36f19d92c934
作者:Insaf Ashrapov
译者:kbsc13(公众号:算法猿的成长)
前言
本文推荐的教程资源都是基于我个人的经验,它们对增加你的计算机视觉理论知识非常有帮助。另外,在学习计算机视觉的理论前,先了解和学习机器学习和 python 方面的知识是更好的做法。
框架
不需要在开始学习计算机视觉的时候,就选择使用框架,但应用新获得的知识是必要的。
对于框架的推荐,没有其他的推荐:
- pytorch:https://pytorch.org/tutorials/
- keras(TensorFlow):https://www.tensorflow.org/guide/keras
Pytorch 可能需要写更多的代码,但是它更加灵活,所以最好选择使用它,并且越来越多的深度学习研究者都开始采用这个框架。
Albumentation(图像增强)和 catalyst(一个封装 pytorch 的高级 API 的框架)也同样是非常有帮助的,所以也可以使用它们,特别是第一个图像增强的框架--Albumentation。
硬件
- Nvidia GPU 10XX+ 型号已经足够使用了(大约 300$)
- Kaggle 的 kernels:https://www.kaggle.com/kernels,每周免费使用 30 个小时;
- 谷歌的 Colab:https://colab.research.google.com/,每个会话有 12 个小时的限制,每周免费时长限制未知。
理论&实践
网上课程
- CS231n:http://cs231n.stanford.edu/,是首选的网上课程,它介绍了计算机视觉的所有必须掌握的基础知识。在 Youtube 上有课程视频,它们还有课后练习,但不建议去完成它们(尽管是免费的);
- Fast.ai:https://course.fast.ai/,第二门应该看的课程。fast.ai 也是一个封装了 pytorch 的高级框架,但它们很频繁更改它们的 API 接口,并且缺乏文档,这都是它不被推荐采用的原因。但观看它们的课程视频是可以了解到理论和有趣的技巧,这是值得花费时间的。
当学习这些课程的时候,推荐将这些理论通过推荐的框架来进行实现。
论文和代码
- https://arxiv.org/:免费获取最新论文的网站
- https://paperswithcode.com/sota:展示了深度学习最新的性能最佳的论文,不仅仅是计算机视觉方面的;
- https://github.com/topics/computer-vision?l=python:可以在这找到代码实现的算法
书籍
并没有太多书需要阅读的,除了下面两本我觉得是非常有用的书,可以任选 pytorch 或者 keras 来实现代码
- Deep Learning with Python:https://www.amazon.com/Deep-Learning-Python-Francois-Chollet/dp/1617294438,作者是 Keras 的开发者、谷歌 AI 研究者--François Chollet。这不是一本免费的书,但这本书易于理解,并且可以学到很多之前不知道的知识点;
- Deep learning with Pytorch:https://pytorch.org/deep-learning-with-pytorch-thank-you,免费的书籍,来自 pytorch 团队的 Eli Stevens & Luca Antiga
Kaggle
网址:https://www.kaggle.com/competitions
Kaggle 是一个著名的机器学习比赛在线平台,它包含了各种类型的比赛,其中很多都是计算机视觉方面的比赛。在没有学完课程的时候,就可以开始参加比赛了,因为从比赛开始,可以免费运行很多公开的 kernels(公开的端到端的代码)。
比较困难的学习路线
另外一条学习路径可能是非常困难,但是你不仅可以学到只是做训练模型并预测结果的知识,还可以实现自己的研究,参考自Sergei Belousov aka bes。
需要做的就是阅读并实现下面的所有论文,当然仅仅读完也是非常棒的。
网络结构
- AlexNet: https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks
- ZFNet: https://arxiv.org/abs/1311.2901
- VGG16: https://arxiv.org/abs/1505.06798
- ResNet: https://arxiv.org/abs/1704.06904
- GoogLeNet: https://arxiv.org/abs/1409.4842
- Inception: https://arxiv.org/abs/1512.00567
- Xception: https://arxiv.org/abs/1610.02357
- MobileNet: https://arxiv.org/abs/1704.04861
语义分割
- FCN: https://arxiv.org/abs/1411.4038
- SegNet: https://arxiv.org/abs/1511.00561
- UNet: https://arxiv.org/abs/1505.04597
- PSPNet: https://arxiv.org/abs/1612.01105
- DeepLab: https://arxiv.org/abs/1606.00915
- ICNet: https://arxiv.org/abs/1704.08545
- ENet: https://arxiv.org/abs/1606.02147
生成对抗网络(GAN)
- GAN: https://arxiv.org/abs/1406.2661
- DCGAN: https://arxiv.org/abs/1511.06434
- WGAN: https://arxiv.org/abs/1701.07875
- Pix2Pix: https://arxiv.org/abs/1611.07004
- CycleGAN: https://arxiv.org/abs/1703.10593
目标检测
- RCNN: https://arxiv.org/abs/1311.2524
- Fast-RCNN: https://arxiv.org/abs/1504.08083
- Faster-RCNN: https://arxiv.org/abs/1506.01497
- SSD: https://arxiv.org/abs/1512.02325
- YOLO: https://arxiv.org/abs/1506.02640
- YOLO9000: https://arxiv.org/abs/1612.08242
实例分割
- Mask-RCNN: https://arxiv.org/abs/1703.06870
- YOLACT: https://arxiv.org/abs/1904.02689
姿势预估
- PoseNet: https://arxiv.org/abs/1505.07427
- DensePose: https://arxiv.org/abs/1802.00434
小结
这篇文章是原文作者推荐的入门计算机视觉的一些资源,包括推荐采用的深度学习框架、课程、电子书、查阅论文和代码的网站,以及一个比赛网站,kaggle;
另外还有一条会更加困难的学习路线,也就是阅读经典的论文,从网络结构到常见的计算机视觉方向,检测、分割、GAN以及姿势预估,但完成后收获就会更多,不仅仅是只会运用框架来训练模型,解决问题,还有机会往研究方向发展。