简单的图像分类练习
来源:互联网 发布:推荐软件推荐 知乎 编辑:程序博客网 时间:2024/06/05 16:03
本文来自牛津大学一个团队的练习,自己做过之后写的一些笔记。原文:Oxford Visual Geometry Group 计算机视觉练习。
通过图像的内容将其进行分类,比如,判断图片中是否有飞机。这可以应用在检索中,或者给数据库中的图片加标签。
内容如下:
- 根据五类物体(飞机、摩托车、人、马、其他背景),训练一个分类器;
- 用P-R曲线评估训练好的分类器;
1、数据的预处理
作者提供了图片数据集,并提前为每幅图计算好了描述子。
一幅图片可以用一个单精度的向量表示,一般把得到描述子向量的过程称为编码,得到的向量称为一段码字。这样做的好处是不同的图像可以组成一个向量矩阵(向量长度相同),通过欧氏距离来比较,再用这些矩阵来训练一个分类器。
文章采用了卷积神经网络(CNN)来提取图像的描述向量,构建CNN描述子的过程如下:
这个网络已经在ImageNet数据集上训练好了,可以直接使用(所以我们可以暂时不用管如何构建CNN)。对于一幅新的图片,将其作为网络的输入,可以在中间的几个卷积层得到512维的向量和最后的全连接层得到128维的向量。
2、用包含摩托车的图片集训练分类器
将包含摩托车的图片作为正例,标记为1;其他背景图片作为反例,标记为-1;使用支持向量机作为分类器。
先对数据进行归一化,再用函数trainLinearSVM(histograms, labels, C)训练,得到线性的支持向量机模型。其中histograms是包含120张摩托车图片和1019张其他背景的图片的向量矩阵,labels是标记值,相当于监督信号,说明每张图是摩托车或者其他背景。最后将模型结果计算一个分数并显示。
3、评估分类器
使用P-R曲线(Precision-Recall curve)评估分类器的好坏。
P-R曲线是从高到低变化分类器的阈值,这里正例是1,反例是-1,阈值则从1到-1变化,每取一个值就画出相应的查全率和查准率。一般我们希望查全率和查准率都很高,所以曲线越接近(1,1)越好。
训练集做完之后,接着再用测试机进行测试。
- 简单的图像分类练习
- 图像分类练习
- tensorflow练习9:图像分类器
- 图像的分类
- 机器学习练习(一)——简单的Iris分类练习
- 图像的检索与分类
- 基于Libsvm的图像分类
- 基于Libsvm的图像分类
- 基于SVM的图像分类
- 基于Libsvm的图像分类
- lec2 图像分类的方法
- 基于Libsvm的图像分类
- 基于DL的计算机视觉(2)--实现图像分类最简单的方法:KNN
- 生成灰度图像的练习
- 简单的分类模型
- 简单的文件分类
- NoSQL的简单分类
- 图像分类
- cell的展开和收起
- UIImage的2种加载方式
- Java SE学习笔记:Java Bean编写规范,System类,Math类
- hadoop标准序列化过程
- ftp和sftp两个命令
- 简单的图像分类练习
- 在ASP.NET Core Identity外面使用Cookie中间件
- 专为挑剔者:电子商务网站用户界面设计模板
- Meta标签中的format-detection属性及含义
- div等元素height:100%高度为什么不生效
- HTTP访问控制
- C# Socket TCP通信,连接服务器
- Android实用工具类——ListView动态显示条目数目
- .net core日志 NLog.Extensions.Logging