机器学习常见的应用方向,包括以下几个:
- 计算机视觉(CV)
- 自然语言处理(NLP)
- 语音识别
- 推荐系统
- 广告
等等
更详细的可以参考之前推荐过的一个网站:
https://paperswithcode.com/sota
这个网站非常详细划分了 16 个大方向,包括总共 1081 个子方向。如果想进入机器学习领域,首先还是选择一个方向领域,然后了解和熟悉该方向领域内所需要的算法,特定的解决技巧等。
当然,这篇文章主要介绍的是计算机视觉的应用,计算机视觉也算是这 16 个方向里面最热门也是发展最成熟的其中一个方向了。
计算机视觉可以分为以下几大方向:
- 图像分类
- 目标检测
- 图像分割
- 风格迁移
- 图像重构
- 超分辨率
- 图像生成
- 人脸
- 其他
虽然这里说的都是图像,但其实视频也属于计算机视觉的研究对象,所以还有视频分类、检测、生成,以及追踪,但篇幅的关系,以及目前研究工作方向也集中于图像,暂时就不介绍视频方面应用的内容。
每个方向会简单介绍该方向需要解决的问题,以及推荐一些 Github 项目、论文或者是综述文章。
1. 图像分类(Image Classification)
图像分类,也可以称为图像识别,顾名思义,就是辨别图像是什么,或者说图像中的物体属于什么类别。
图像分类根据不同分类标准可以划分为很多种子方向。
比如根据类别标签,可以划分为:
- 二分类问题,比如判断图片中是否包含人脸;
- 多分类问题,比如鸟类识别;
- 多标签分类,每个类别都包含多种属性的标签,比如对于服饰分类,可以加上衣服颜色、纹理、袖长等标签,输出的不只是单一的类别,还可以包括多个属性。
根据分类对象,可以划分为:
- 通用分类,比如简单划分为鸟类、车、猫、狗等类别;
- 细粒度分类,目前图像分类比较热门的领域,比如鸟类、花卉、猫狗等类别,它们的一些更精细的类别之间非常相似,而同个类别则可能由于遮挡、角度、光照等原因就不易分辨。
根据类别数量,还可以分为:
- Few-shot learning:即小样本学习,训练集中每个类别数量很少,包括 one-shot 和 zero-shot ;
- large-scale learning:大规模样本学习,也是现在主流的分类方法,这也是由于深度学习对数据集的要求。
推荐的 Github 项目如下:
- https://github.com/weiaicunzai/awesome-image-classification
- https://github.com/e-271/awesome-few-shot-learning
- https://github.com/chichilicious/awesome-zero-shot-learning
论文:
- ImageNet Classification With Deep Convolutional Neural Networks, 2012
- Very Deep Convolutional Networks for Large-Scale Image Recognition, 2014.
- Going Deeper with Convolutions, 2015.
- Deep Residual Learning for Image Recognition, 2015.
- Inceptionv4 && Inception-ResNetv2,2016
- RexNext,2016
- NasNet,2017
- ShuffleNetV2,2018
- SKNet,2019
文章:
- 入门 | 从VGG到NASNet,一文概览图像分类网络:https://mp.weixin.qq.com/s/gwH9s1ggMTj2dJkad9wUuw
- CNN网络架构演进:从LeNet到DenseNet:https://www.cnblogs.com/skyfsm/p/8451834.html)
- 旷视南京研究院魏秀参:细粒度图像分析综述:https://mp.weixin.qq.com/s/Q5n5YNHb8MM0KJG6UdjI2A
- -小样本学习年度进展|VALSE2018:https://www.jiqizhixin.com/articles/2018-06-20-13
常用的图像分类数据集:
- Mnist:手写数字数据集,包含 60000 张训练集和 10000 张测试集。
- Cifar:分为 Cifar10 和 Cifar100。前者包含 60000 张图片,总共10个类别,每类 6000 张图片。后者是 100 个类别,每个类别 600 张图片。类别包括猫狗鸟等动物、飞机汽车船等交通工具。
- Imagenet:应该是目前最大的开源图像数据集,包含 1500 万张图片,2.2 万个类别。
2. 目标检测(Object Detection)
目标检测通常包含两方面的工作,首先是找到目标