深度学习之特征提取算法

article/2025/9/28 16:43:23

目录

前言

二、LBP(Local Binary Patterns,局部二值模式)

三、HOG算法(Histogram of Oriented Gradient, 方向梯度直方图)

四、SIFT算子(Scale-invariant feature transform ,尺度不变特征变换)

五、Haar算法

 六、TF-IDF算法


前言

在多模态融合过程中,有特征提取(表征)+映射(转换)+融合+多任务学习


一、特征提取

在深度领域特征提取主要有LBP,HOG,SIFT,Haar,TF-IDF(文本)

二、LBP(Local Binary Patterns,局部二值模式)

LBP算子是一种用来描述图像局部纹理特征的算子,具有灰度不变形。

        主要思想:在目标像素周围定义3*3的窗口,以目标像素为阈值,将相邻的8个像素的灰度值与目标像素进行对比,如果大于目标像素,则标记为1,如果小于或等于则标记为0。这样,对每个窗口都可以产生一个8位的二进制数。这样就得到了目标像素的LBP值。

步骤:

(1)将目标检测图像划分为16*16的小区域(cell)

(2)对于每个cell的一个像素,将相邻的8个像素灰度值与其进行比较,弱周围像素值>中心像素值,则该像素点的位置被标记为1,否则为0.

(3)然后计算每个cell的统计直方图进行连接成为一个特征向量,也就是整篇幅的LBP纹理特征向量。然后利用SVM或者其他机器学习算法进行分类。

三、HOG算法(Histogram of Oriented Gradient, 方向梯度直方图)

在一幅图像中,图像的表象和形状能够被边缘或梯度的方向密度分布很好的表示,HOG具有几何和光学不变性。

其步骤为:

(1)将图像灰度化(将图像看做一个x,y,z(灰度)的三维图像);

(2)采用Gamma校正法对输入图像进行颜色空间的标准化(归一化)。目的是调节图像的对比度,降低图像局部的阴影和光照变化造成的影响,同时可以抑制噪音的干扰;

(3)计算图像每个像素的梯度(包括大小和方向);

(4)将图像划分成小cell(例如6*6像素)

(5)统计每个cell的梯度直方图(不同梯度的个数),即可形成每个cell的descriptor;

(6)将每几个cell组成一个block(3*3个cell/block),一个block内所有cell的特征descriptor串联起来便得到该block的HOG特征descriptor;

(7)将图像image内的所有block的HOG特征descriptor串联起来就可以得到该图像(要检测的目标)的HOG特征descriptor。这个就是最终的可供分类使用的特征向量。

四、SIFT算子(Scale-invariant feature transform ,尺度不变特征变换)

SIFT算子通过求一幅图中的特征及其有关尺寸和方向的描述得到特征并进行图像特征点匹配。具有尺度不变性和旋转不变性。

其主要步骤如下:

(1) 尺度空间的生成。将图像卷积上一个高斯核,得到不同平滑程度和尺寸的图像,模拟图像数据的多尺度特征

(2)检测尺度空间极值点。为了寻找尺度空间的极值点,每一个采样点要和他所有的相邻点比较,看其是否比它的图像域和尺度域的相邻大还是小。如图,中间的检测点需和其相邻的8个相邻点和上下相点对应的9*2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点

(3)去除不好的特征点。通过拟合 三维二次函数以精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘相应点,以增强匹配稳定性,提高抗噪声能力。

(4)为每个关键点指定方向参数。为每个特征点计算一个方向,依照这个方向做进一步的计算,利用关键点领域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。

(5)关键点描述子的生成。以关键点为中心取8*8的窗口。在每个4*4的小块上计算8个方向的梯度方向直方图,绘制每个梯度方向的累加值,即可形成一个种子点,如图所示。此图中一个关键点有2*2共4个种子点组成,每个种子点有8个方向向量信息。这种领域方向性信息联合的思想增强了算法抗噪声的能力,同时对于含有定位误差的特征匹配也提供了较好的容错性。

 6)根据SIFT进行图像的匹配。生成A、B两幅图的描述子,(分别是k1*128维和k2*128维),就将两图中各个scale(所有scale)的描述子进行匹配,匹配上128维即可表示两个特征点匹配上了。

五、Haar算法

 Haar-like特征是计算机视觉领域一种常用的特征描述算子(也称为Haar特征,这是因为Haar-like是受到一维haar小波的启示而发明的,所以称为类Haar特征),后来又将Haar-like扩展到三维空间(称为3DHaar-Like)用来描述视频中的动态特征。关于Haar的发展历程如图1所示。

Haar-like特征的特点
       目前最常用的还是Haar-like特征,描述图像的特征,多用于人脸检测、行人检测,等目标检测;Haar-like特征可以理解为卷积模板(如同prewitt、sobel算子,当然不完全一样),Haar-like特征模板内只有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素和减去黑色矩形像素和。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征能由矩形特征简单的描述,如:眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。但矩形特征只对一些简单的图形结构,如边缘、线段较敏感,所以只能描述特定走向(水平、垂直、对角)的结构。
Haar-like特征的计算
       通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。图1(D)中的的特征模板称为“特征原型”;特征原型在图像子窗口中扩展(平移伸缩)得到的特征称为“矩形特征”;矩形特征的值称为“特征值”。矩形特征可位于图像任意位置,大小也可以任意改变,所以矩形特征值是矩形模版类别、矩形位置和矩形大小这三个因素的函数。故类别、大小和位置的变化,使得很小的检测窗口含有非常多的矩形特征,如:在24*24像素大小的检测窗口内矩形特征数量可以达到16万个。


 六、TF-IDF算法

  TF-IDF(term frequency–inverse document frequency,词频-逆向文件频率)是一种用于信息检索(information retrieval)与文本挖掘(text mining)的常用加权技术

       TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降

       TF-IDF的主要思想是:如果某个单词在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。

假如说我们在百度上搜索“水果”这个词,百度爬虫抓取的网站内容有下面5个,你觉得哪个内容排名第一?

内容1: 水果有水果,水果,水果,水果,水果
内容2: 水果有苹果,桃子,西瓜,菠萝,梨子
内容3: 蔬菜都很好吃,我最爱吃茄子了
内容4: 苹果,梨子都是很好吃的水果
内容5:好吃的水果有西瓜,苹果,葡萄,其他水果还有菠萝,猕猴桃
相信很多人心里面有了答案,大家凭直觉,内容2 跟内容5 应该排名靠前,内容5很可能是第1,内容2是排名第2。

最终的排名顺序为52413,至于为什么呢?核心词为“水果”,5和2里都有“水果”和“苹果”两个关键词且5里有出现两次“水果”,4比2少了一个苹果关键词,1里面包括有“水果”这个关键词但有堆砌行为,3和核心词没有相关性。


http://chatgpt.dhexx.cn/article/2xT5wLNA.shtml

相关文章

idea如何使用git关联远程仓库

1.git的配置 一般本地安装了git,idea会自动检索, 2.创建git本地仓库 一般以你要上传的项目为根目录 3.将文件提交至本地仓库 4.提交至远程仓库 点击VCS选择git点击push提交,第一次连接会让你输入远程仓库的地址。 我们先将github上的地…

git 将本地项目关联到远程仓库

原文链接:https://www.jianshu.com/p/2a8b4e627991 参考链接: https://blog.csdn.net/baidu_35085676/article/details/53456884 1.首先在项目目录下初始化本地仓库 git init 2.添加所有文件( . 表示所有) git add . 3.提交所有文件到本地仓库 git comm…

git创建本地仓库远程仓库,并关联。全过程

1.在网页中自己的github账号下,创建仓库project 2.在本机创建文件夹project。 进入文件夹project. (1) git init (2) git add README.md (3) git commit -m "first commit" (4) git branch -M master (5) git remote add origin https://github.co…

Git本地仓库与远程仓库关联

一、前提条件 1、本地一个仓库:本地仓库已经经过git init 初始化 2、远程一个仓库:已经存在了一个远程的仓库 3、GitHub已经添加了SSH Keys 二、建立远程与本地仓库的关联 本地仓库与远程仓库关联有两种方法,一种是通过IDE(比…

使用git命令,本地仓库关联到远程仓库

本地仓库关联到远程: 创建成功会得到一个url地址和git全局设置的两行命令,下面从本地链接远程时会用到。 git config --global user.name "你的用户名" git config --global user.email "你的邮箱" 2、选择本地文件夹,在…

git关联两个远程仓库,一个仓库(github)拉取代码,另一个仓库(gitlab)推送代码

有这种情况,小伙伴们在github上下载的开源项目(该开源项目还在继续开发维护),然后自己下载下来进行二次开发,然后又要把项目推送自己的gitlab私服上,这个时候不得不本地代码关联两个远程仓库。接下来我将一…

IDEA本地项目关联远程Git远程仓库

IDEA本地项目关联远程Git远程仓库 下面介绍几种方法: 一、代码 clone 到本地 这种方法是直接 clone 代码,这样不需要在手动关联仓库。 1、本地创建空白文件夹 2、右键 Git Bash Here 打开控制台 3、直接 clone 远程仓库的代码 git clone 远程地址&…

如何简单的在IDEA中关联git远程仓库

在IDEA中关联远程仓库有许多的方法,那么在这呢我教大家一种简单的方法。 那么在开始之前呢,需要大家在你自己的电脑上安装git,并且在Gitee上创建自己的仓库。 同时IDEA中需要下载Gitee的插件 那么我在这也创建好了一个测试仓库 点击黄色的…

关于GIT怎么将本地仓库和远程仓库进行关联

1 首先在本地创建一个和远程仓库一样的文件夹(直接在git的命令界面中就能创建,git命令界面貌似大部分的linux的命令都能用) 2 由于是一个空文件要让git认识需要初始化,初始化命令:git init ,会在在nihao中会出现一个.git的文件 3 初始化完成后…

本地项目关联远程 git 仓库

用了几年 git 来管理代码,除了常用的提交代码的一些指令,其他的每次用到都需要查一次资料,这样很麻烦。最近有一个新项目需要关联远程仓库,我自己也整理了一下。 安装 Git:官网 下面介绍几种方法: 一、代…

Git关联远程仓库和分支

背景 在我们开发过程中经常会将本地代码放到代码仓中。 解决方法有两种,这两种方法都有一个前提就是需要在gitLab中新建一个代码仓。 第一种方法就是先将这个新的远程代码仓拉取到本地,再将本地的代码移植到本地仓中,最后push到远程仓库中…

使用Git将本地仓库与远程仓库关联的三种方式

前提条件: Git已经配置完,能实现Push,Pull、Clone等操作 GitHub/Gitee已经添加了SSH Keys 没有配置好的参考这篇文章:是的是的 一、通过Clone远程仓库的方式 前提条件:创建好云端仓库即可 通过git clone指令clone到…

利用Git连接远程仓库(详细步骤)

利用Git连接远程仓库步骤及常见问题 1.先创建一个文件夹,名字为远程仓库的名称 2.在该文件目录下打开Git Bash 3.输入git init,进行初始化(初次连接时) 4.连接远程仓库(初次连接是下一次进入该文件夹就不用了) 输入…

Git- 连接远程仓库

如何使用Git 连接远程仓库呢?远程仓库->一般指的是代码托管平台。那就先来瞅瞅三个较熟悉的版本(代码)托管服务平台。 版本(代码)托管服务平台: 码云(gitee.com):是开源中国社区团队推出的基于Git的快速的、免费的、稳定的在线代码托管平…

Git关联远程仓库

前面我们介绍的所有操作都是在本地仓库完成的,本文我们主要来看看如何和远程仓库进行交互,为了方便起见,这里远程仓库我们选择GitHub。 本文是Git系列的第五篇,了解前面的文章有助于更好的理解本文: 1.Git概述 2.Git基…

【git学习】本地关联远程仓库

目录 一、本地仓库关联远程仓库(新建仓库) 二、拉取远程分支到本地(已有远程仓库) 一、本地仓库关联远程仓库(新建仓库) 本地新建工程,然后关联远程git仓库并向远程仓库提交代码。 1、本地新建…

笔录Flutter (六) 布局系列: Stack、Positioned、Align

Flutter练习demo 常用属性 关于alignment的使用 使用这些属性 直接使用Alignment(x, y) x、y两个值的范围在 -1 到 1 之间。如图: 坐标的圆点表示center,如上图所示: 使用 效果图: import package:flutter/material.dart;c…

flutter 布局 Stack Positioned的混合操作 两个组件Container重叠 构建背景圆角操作 类似css的relative

flutter 布局 Stack Positioned的混合操作 两个组件Container重叠 构建背景圆角操作 首先看一下需求 需要在这里加一个背景圆角,涉及到两个组件Container的重叠 我们使用Stack Positioned的混合操作 类似于css汇中的relative属性,而且我接下来使用的操作…

Flutter布局组件之层叠组件Stack和Positioned

层叠布局 Stack、Positioned 层叠布局和Web中的绝对定位、Android中的Frame布局是相似的,子组件可以根据距父容器四个角的位置来确定自身的位置。绝对定位允许子组件堆叠起来(按照代码中声明的顺序)。Flutter中使用Stack和Positioned这两个组…

Flutter开发之——多组件布局容器-Stack和IndexedStack及Positioned

一 概述 Stack组件时Flutter中用来进行绝对布局的一个容器组件(Stack组件可以将子组件叠加显示,根据子组件的顺利依次向上叠加)IndexedStack是Stack的子类,Stack是将所有的子组件叠加显示,而IndexedStack只显示指定的子组件Positioned组件通…