Deep Learning and SVM Classification for Plant Recognition in Content-Based Large Scale Image Retrie

本文主要是介绍Deep Learning and SVM Classification for Plant Recognition in Content-Based Large Scale Image Retrie,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Deep Learning and SVM Classification for Plant Recognition in Content-Based Large Scale Image Retrieval 论⽂周报

Bálint Pál Tóth, Márton Osváth, Dávid Papp, Gábor Szűcs
CLEF 2016
(⼀种将CNN与SVM组合起来对植物识别的⽅法)


0. 基本思想概述

提出了什么以及为什么提出

植物识别是在农业还是⽣态领域都有很重要的地位,然⽽有些植物之间有很⼤的相似性,所以识别植物有时候是⼀个复杂⽽专业的⼯作。在这种情况下,⽂章提出了⼀种基于图⽚内容的识别⽅式,从7个viewpoint(茎、叶等)来分别对图⽚进⾏分类。另外为了让模型有更好的鲁棒性,⽂章针对未知类别的植物提出了⼀种⽅法来识别未知类别的植物。

怎么做

论⽂使⽤了三种⽅法来进⾏植物识别:
1 .  使⽤Fisher Vector与SVM进⾏分类
2 .  使⽤深度学习进⾏分类
3 .  集成1、2两种⽅法,并加上使⽤元数据构造的第三个分类器,集成起来进⾏分类


1. Fisher V ector & SVM

这是使⽤了传统的机器学习的⽅法来进⾏分类的,分成两个主要的步骤:

基于内容表达图⽚

这部分把RoW模型应⽤在图像上,使⽤了dense SIFT的⽅法来提取特征;模型分成3步:特征检测、特征描述以及图像表达。

对于前两个步骤,主要是使⽤了传统的dense SIFT来提取特征,再对特征使⽤PCA进⾏降维; 对于图像表达,作者对图⽚⽐较低级的特征使⽤GMM模型进⾏编码,得到Fisher-vector来描述图像。

分类

把SVM扩展成多类分类器,然后对7个viewpoint分别训练7个SVM和基于RBF的C-SVC进⾏分类。


2. Classification by Deep Learning

⽂章主要是使⽤了AlexNet来进⾏分类,主要思路是卷积层负责特征学习,带1000-way的softmax以及全连接层负责分类。

在训练之前,作者对数据进⾏了数据增强与标准化,AlexNet做了⼩⼩的改动,如下图,把ReLU改成PReLUs,并在每次max-pooling之前加上了BN。

优化算法使⽤了AdaDelta。

 


⽂章使⽤了三个模型集成:除了上⾯两个模型,还构造了第三个模型,即使⽤元数据构造的随机森林;根据模型最终的效果对最终的集成模型进⾏加权,

  • SVM:0.3
  • CNN:0.6
  • metadata:0.1

另外对于未知类别的植物,作者构造了⼀个模型来识别这些图⽚并过滤掉,⽅法如下:
1 .  计算测试图⽚的FV与训练数据的最⼤距离,如果距离较远,则作为异常数据过滤掉。
2 .  如果测试图⽚的分类决策值⼩于0.3,也作为异常值过滤掉。

作者基于7个viewpoint训练了7个SVM,进⾏分类的时候,根据图⽚的viewpoint使⽤对应的SVM进⾏分类。

然⽽由于不⼀定所有图⽚都有viewpoint,所以对于图⽚中没有viewpoint的数据,作者对这7个SVM的决策值进⾏加权平均,每个viewpoint对应的SVM赋予不同的权重,得出的结果作为该样本的标签。


4. 个⼈理解

对RoW应⽤在图像上的理解

2006年,Li Feifei将RoW应⽤在object recognition上,我去查了相关资料,然后谈⼀下我的理解。

把RoW应⽤在图像上的⽅法主要分三个步骤:

⽅法主要分三个步骤:
1 .  特征提取
在本⽂中,作者是⽤dense SIFT来提取特征的,那我以SIFT特征为例,每张图像可以提取出多个关键点,⼀个关键点标记为⼀个patch。由于是SIFT提取,所以每⼀个patch应该由⼀个128维的特征向量表⽰。

对应原来的RoW模型(Row模型原本是应⽤于⽂本的),其实每⼀个patch就是⼀个单词。

2 .  字典构建
对上⼀步得到的特征向量,即所有的patch进⾏聚类, 能得到K个聚类中⼼,每个聚类中⼼就对应于词典中的单词,每个单词⼜由128维的特征向量表⽰,所以假设字典⼤⼩为m,我认为在图像上的“字典”可以理解为⼀个m x 128的矩阵。

3 .  对每张图⽚进⾏字典表⽰
对于每张图⽚,

  • 先初始化⼀个全0的m维的向量v;
  • 再计算测试图像每个patch与字典中单词的距离,距离patch最近的单词的在向量v上对应的分量计数加1;
  • 将所有patch计算完毕后的向量即为图像的字典表⽰,即表⽰为⼀个m维的向量。

这篇关于Deep Learning and SVM Classification for Plant Recognition in Content-Based Large Scale Image Retrie的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/247408

相关文章

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

[论文笔记]LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale

引言 今天带来第一篇量化论文LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale笔记。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 大语言模型已被广泛采用,但推理时需要大量的GPU内存。我们开发了一种Int8矩阵乘法的过程,用于Transformer中的前馈和注意力投影层,这可以将推理所需

简单的Q-learning|小明的一维世界(3)

简单的Q-learning|小明的一维世界(1) 简单的Q-learning|小明的一维世界(2) 一维的加速度世界 这个世界,小明只能控制自己的加速度,并且只能对加速度进行如下三种操作:增加1、减少1、或者不变。所以行动空间为: { u 1 = − 1 , u 2 = 0 , u 3 = 1 } \{u_1=-1, u_2=0, u_3=1\} {u1​=−1,u2​=0,u3​=1}

简单的Q-learning|小明的一维世界(2)

上篇介绍了小明的一维世界模型 、Q-learning的状态空间、行动空间、奖励函数、Q-table、Q table更新公式、以及从Q值导出策略的公式等。最后给出最简单的一维位置世界的Q-learning例子,从给出其状态空间、行动空间、以及稠密与稀疏两种奖励函数的设置方式。下面将继续深入,GO! 一维的速度世界 这个世界,小明只能控制自己的速度,并且只能对速度进行如下三种操作:增加1、减

SVM编程实现python

深入解析python版SVM源码系列--简化版SMO算法 SVM使用SMO算法来解决其中涉及到的二次规划问题。一个简单版本的SMO算法的实现如下: ''' 随机选择随机数,不等于J '''def selectJrand(i,m):j=i #we want to select any J not equal to iwhile (j==i):j = int(random

高精度打表-Factoring Large Numbers

求斐波那契数,不打表的话会超时,打表的话普通的高精度开不出来那么大的数组,不如一个int存8位,特殊处理一下,具体看代码 #include<stdio.h>#include<string.h>#define MAX_SIZE 5005#define LEN 150#define to 100000000/*一个int存8位*/int num[MAX_SIZE][LEN];void