ppt如下:web.eecs.umich.edu/~justincj/slides/eecs498/FA2020/598_FA2020_lecture02.pdf
图像分类:
输入为一张图片经过算法输出该输入图像的类别标签
算法需提前得知固定的标签类型及具体内容
最大困难:
1.semantic gap(对于计算机来说,picture is just a big grid of numbers between[0,255])
算法需要满足对于不同角度拍摄的图片均有鲁棒性,能有很好地识别结果
2.intraclass variation
3.fine-grained categories(eg:识别不同种类的猫咪(更细致的类别划分))
4.background clutter 背景干扰
5.Illumination Changes 光照变化
6.Deformation 扭曲变化
7.occlusion 遮挡
物体检测(building block for other tasks 不仅要进行图像分类,还要确定图像的位置):对图像进行分割,对每一个部分进行图像分类
def classify_image(image):
return target【用函数表示】
运用机器学习来训练分类器
(这样在更换判断的类别时就不需要再对算法进行改进,只需要寻找对应类别的数据集进行替换即可)流程:
1.collect a dataset of images and labels
2.Use Machine Learning to train a classifier
3.Evaluate the classifier on new images
主要需要两个函数:
def train(images, labels):
return model
def predict(model,test_images):
return test_labels
常见数据集:
1.mnist
(数据集较小,但是可能无法适用于较大的数据集)
2.CIFAR10
3.Imagenet
尺寸为256*256
4.MIT places
5.Omniglot
算法:
1.nearest neighbor(原理就是寻找与目标图像最相似的训练图像)
训练:记住所有的数据和对应的标签
预测:输出和测试图片最相似的训练图片的标签
Distance Metric to compare images:
计算图像像素间的曼哈顿距离(对应相减,结果相加)
训练的时间复杂度:O(1)
预测的时间复杂度(训练数据集为N):O(N)
机器学习中不在意我们花费了多长时间进行数据收集与模型训练,但我们要保证模型部署运行时要有较快的结果
虽然图片很相似,但并不一定是一个种类(决策边界导致)
如何消除决策边界:
1.多加几个邻居(结果由多个邻居决定,而不是由单一邻居)
2.改变测量的方式
边界更加平滑,少了很多noisy
problems:
curse of dimensionality(随着维度的增多,训练点的个数会以指数增长)
距离度量对于像素并不是很敏感,但用图像的特征向量效果显著
超参数
算法中需要更改k值和距离度量,k值和距离度量被称为超参数(hyperparameters)【无法从训练数据中得到的参数,需要在训练前进行设置的参数】:we set them at the start of the learning process。
Setting Hyperparameters
(拆分数据集为train&test&val)尝试不同的超参数值,在train上训练,选择在val上表现最好的超参数值并在test上进行评估【test 仅用一次进行评估】
交叉验证(训练集和val集互相交叉,最合适的设置超参数的方法)
成本很高,耗费性能