学了好久的深度学习,主要是在做人脸识别、生成这一方面,但是一直感觉徘徊在深度学习的大门之外。深度学习成长之路第一篇就是为了搞清楚计算机视觉到底在做什么,让自己对计算机识别方向有一个整体的框架。有些地方写的不对的,还请大家多多指教,共同学习。
正文开始:
计算机视觉的任务具体有几大类,说法很多。我更倾向于是三大类,图像分类(classfication),图像识别/目标检测(object detection)、图像分割(segmentation,semantic/instance segmentation)。
图像分类(classification)
输入一张图片,判断属于哪一类。属于计算机视觉中最基本的任务,个人觉得其他的任务都需要在完成分类的基础上在进行操作。
(1)数据集
数据集的介绍,网上有很多而且十分具体,可以去搜一下。常用的有MNIST(手写数字)、CIFAR-10(10类32×*32的图片)、FASHION-MINIST(企图替代MNIST的数据集,大小跟MNIST一样)。
(2)网络模型
首先,与深度学习的卷积网络不同的网络模型有KNN(K-Nearest Neighbor 最近邻分类器),大体思路为,选取一个样本在特征空间中的K个最邻近的样本,其中这K个样本中大多数所属的类别,就是测试样本的类别。KNN算法中所选取的邻居都是已经正确分类的对象(也就是需要全部记录训练数据和对应的类别)。分类结果很大程度取决于K的选择。
KNN综述的论文地址:https://arxiv.org/pdf/1601.01549v2.pdf
SVM(Support Vector Machine 支持向量机),一种线性分类器,有许多SVM模型。常见的有多分类svm,使用Hinge loss(合页损失,因为函数图像像合页),例子如下:(选自斯坦福的cs231n,强烈推荐去看)
但是存在一个问题,当loss为0时,对w缩放,结果仍是0,无法进行训练。因此完整的多类别SVM还需要加上正则化loss。
正则项可以选择多种距离。
Softmax分类器,属于逻辑回归,与SVM都是常见的分类器。与SVM的区别在于,SVM是对样本在各类上进行打分,而Softmax分类器输出的是样本在各类的概率,使用的是交叉熵损失。个人觉得Softmax是在SVM的基础上做了改进,将得分归一化得出概率。