重要性。
数据量大
标注
推荐
¥
支付方式
请使用微信扫一扫 扫描二维码支付
请使用支付宝扫一扫 扫描二维码支付
重要性。
数据量大
标注
推荐
原始草图
边缘,曲线
组合
有简单的形状,由通用形状组合到一起
线与边缘
图像进行分割,把有人的像素点提取出来
过拟合是瓶颈,维度太多,太复杂。
卷积神经网络 CNN model
机器视觉算法的来源:
图像在计算机上的存储是一个矩阵,你并不知道什么样的矩阵对应着什么样的图像。
1.相同的图像在不同的角度上矩阵完全不同,不同的视角
2. 不同的关照
3.图像的变形,背景
4.物体本身的动作
思想的转变:
旧:输入一张图片,返回具体的信息。旧有的传统的算法,建立在你可以枚举所有可能性的前提下。
旧方法:物体的特性,比如猫有眼睛,鼻子。然后计算图像的边缘,统计边,角,通过这些规则来识别到猫的存在
旧算法缺点:1,实际效果不是很好,2.更改识别内容,等于重新来一遍
新:使用数据驱动的算法,我们写的算法并不是去识别这个物体而是去通过大量的数据去生成识别到此物体的模型 或者说函数
numpy
向量化操作
线性分类器
k-means
svm
图像分类:
把图片与标注统一起来
思想的转变:
以前的思想:输入一个图片,识别他是以是什么,输出
现在的思想:输入一堆图片,得到一个模型 training函数
然后是一个预测函数,接受一个模型和一个图像,输出预测。
CIFAR10数据集
1.作业:k-最近邻分类器,实现几种不同的线性分类器,包括SVM和softmax,同时还有一个简单的两层神经网络
2.numpy:用于数值计算和机器学习各个方面,都能高效的实现这些向量化操作
3.图像分类的任务是计算机视觉真正核心的任务
4.每个像素由3个数字表示,给出像素红,绿,蓝三个值
5.数据驱动的方法,我们不写具体的分类规则来识别一只猫或者鱼,取而代之的是,我们从网上抓取数据大量猫的图片数据集,一旦有了数据集,我们训练机器来分类这些图片,机器会收集所有数据,用某种方式总结,然后生成一个模型,总结出识别出这些不同类的对象的核心知识要素,然后我们用这些模型来识别新的图片,来看能不能识别猫狗等
6.我们的接口会成这样:我们会有两个函数,一个是训练函数,这函数接收图片和标签,然后输出模型,另一种是预测函数,接收一个模型,对图片种类进行预测
7.比较图片:假设我们的图片只是4*4的小图片,我们只取测试图像左上角的像素,用它减去训练图像对应的像素值,然后取绝对值,得到两个图像这个像素的差别,将图像中所有像素的这个差值相加,就能得出共有多少像素点不同
8.使用最近邻算法是,你总会给K赋一个比较大的值,这样会使决策边界更加平滑,从而得到更好的结果
分类任务:
1.训练函数:输入数据 标签,输出模型
2.预测函数:输入模型,输出结果
【distance】
L1(Manhattan) distance
L2(Euclidean) distance
改变坐标对L1会产生影响,如果一些向量有重要意义,适用L1
【超参数】
K-NN:
不同的k和distance,这些是超参数Hyperparameters:提前为算法设定,没办法在学习中获取,是依赖具体问题的
【问题】
L1在什么时候比L2表现好:
L1依赖于数据的坐标系统,如果每一列都有实际意义,可以用L1,比如员工分类,薪资和年龄;图像分类,每一列都是相似的。
【超参数的设置】
K=1,always works perfectly on training data
K>1, 在未出现过的数据上表现更好
【1、数据】
train, validation, test
用validation去选择最好的超参数
【2、交叉验证】
训练数据分成k份,轮流将每一份数据当做validation。
【knn的问题】
1、测试时间长
2、L1和L2不适合用在图像识别上。L2不能很好的衡量图片之间的相似性。例如,图像明显变化,但是与原图的L2距离仍然是一样的。
3、curse of dimensionality 维度灾难
在一维需要4个样本,二维需要16个样本,三维需要64个样本,才能布满空间。
knn K nearest Neighbors k个最最临近的值
两种位置的计算方法:
曼哈顿距离与欧顿距离
超参数
选择超参数的方法:
给出训练集
验证集与测试集
在最后去使用测试集去验证
验证集与训练集可以轮流交叉选取。
KNN训练简单,只需要记录信息即可。
但测试时时间太长
不太好:
1.计算距离的方式,不太适合图像的表达
2.维度越高,需要的训练数据越多,但我们并没有这么多训练数据
Linear claafication
f(x, W) = W * x + b