精华内容
下载资源
问答
  • 2021-07-22 05:05:14

    Shift键的作用

    Alt键、Ctrl键,Shift键,这些键都是组合键,那么Shift是什么意思呢,Shift键的作用又有哪些呢。下面是小编为大家整理的Shift键的作用,欢迎参考~

    e4e706f9589c570f2d637f1503d34c2f.png

    Shift是什么意思

    shift它是有两种意思,有书面的意思和键盘上面的上档意思,书面意思有很多解释,指的是移动,搬移、替换,更换;变动,改变等意思,当然有的时候又指变速、换挡、消除的意思。而我们主要是来说说键盘上的shift上档的具体含义及用途。

    Shift键的作用

    shift,键盘意思上档转换键,电脑键盘上的键,左右两个 ,常用于中英文转换。它作为辅助控制键,一般在一些应用程序上面shift键是和其他的按键组合一起使用。

    Shift的基本用途:

    1、切换中文和英文:在输入法上直接按shift键即可切换

    2、快速删除文件:shift+Delete

    3、更改打开方式:按住shift键,然后在点击选择文件夹,即可新增加一个“打开方式”的选项。

    4、启用粘、筛键:连按5次,即“粘贴键”的`快捷方式;

    5、筛选键:按右shift键8秒以上为“筛选键”的快捷方式。

    6、重启电脑:先按shift键,然后按确定按钮即可重启。

    Shift跟应用程序上使用shift的用途:

    1、按shift键,再双击我的电脑就会以资源管理器方式打开。

    2、 Shift+Ctrl:切换输入法。

    3、Ctrl+Shift+ESC:就可以调出Windows 任务管理器。

    4、 在拖拽一个文件时按住Ctrl+Shift键,就可以创建快捷键。

    5、 放光碟时,连按数下shift 键,可以跳过自动播放。

    6、shift键+F10:代替鼠标右键。

    7、打开新窗口网页:按住shift键,然后点击网页链接即可打开新网页。

    (二)Shift键与鼠标配合使用时的功能

    1彻底删除文件或文件夹用鼠标右键单击要删除的文件或文件夹,在按住 shift键的同时选择“删除”,然后单击“是”确认删除。这样,将彻底删除所选文件或文件夹,而不是放回收站中。

    2关闭“我的电脑”连续窗口当“我的电脑”进行多窗U浏览时要关闭所有文件夹窗口,只要在最后的文件夹窗口中,按住Shift矬,单击关闭按钮,就能关闭所有窗口。

    3修改文件的打开方式对于扩展名相同的文件,如果想用不同的程序打开的文件,可以先按住Shift键,再用鼠标右键单击文件,然后单击“打开方式”即可。需要说明的是:对 Win2000及以后的版本,文件图标的快捷菜单中已增加了类似“打开方式”项,,

    4跳过“启动”文件启动Windows系统时,在出现 Windows的启动画面时即按住Shift键直到系统开机过程结束,则“启动”组中的程序将不被执行。如果在启动画面出现之前就按住了shift键,则系统将自动进入安全模式。

    5快速选定文件或文件夹在“我的电脑”或“资源管理器”窗口中,先选中一个文件,再按住Shin,选中另—个文件,则这两个文件之间的所有文件部将被选中。

    6选定某一范围的文长在许多软件环境下要选定一段连续文本,可以按以下方法操作:把光标移到要选定的文本的首字符前,再把鼠标指针移到要选定文本的末字符后,按住Shift键的同时单击左键,则选定光标至鼠标指针之问的所有文本。在Excel软件环境下选定单元格也有类似的功能。

    7另类创建“快捷方式”图标在“我的电脑”或“Windows资源管理器”窗口中,在按下Ctfl+Shift的同时拖放文件图标全桌面或某一文件夹中,将在桌面或目标文件夹中创建该文件的快捷方式。

    8快速重新启动Win9X系统当Win9X系统运行过程中需要重新启动系统时,可先选择“关闭系统”中的“重新启动计算机”,然后在按住shifc键的同时用鼠标单击“是”按钮,即可快速重新启动Win9X系统,因为此时Win9X只是重新启动 GuI界面,而不再重新从BIOS启动,从而可以节省不少时间。此法只适用于’Win9X系统,而且对当前状态为安全模式时不起作用,系统刚安装了新硬件时也可能不起作用。

    9跳过光盘的自动播放如果已经把光盘设置为“自动播放”,在光驱中放入光盘的同时按住Shift直到光驱的灯灭掉,则可以暂时取消 “自动播放”功能。但是如果“自动播放”功能被关闭了,当插入光盘时按住Shift则将导致自动播放。

    10在IE窗口中新建一浏览窗口在IE窗口中,先按住shift键再单击任一链接,就会弹出—个新的浏览窗口以显示该链接所指定的Web页面,其作用和鼠标右键单击某一文本链接并选择“在新窗u中打开” 相同。

    11快速关闭与快速保存多个omce文档在Word环境中按住Shin键再单击“文件”菜单,其中的“关闭”和“保存”命令将被改为“全部关闭 ”和“全部保存”。此时,单击“全部关闭”可关闭所有打开的文档窗口,若某文档在修改后未作保存,则系统会提示用户保存该文档。单击“全部保存”可对所有打开的文档作一次保存操作。在Excel软件环境下也有类似的功能。

    12打开OFFice文档时,按住左侧shift可以阻止播放自动运行的宏。

    13在“画图”软件中画“标准”图形在“画图”软件中作图时,选择“椭圆”,按住 Shift键,画出来的将是“圆”;选择“矩形”,按住Shifl键,画出来的将是“正方形;同样选择“圆角矩形”,按住Shift键,画出来的将是“圆角正方形。

    14快速发送QQ信息用QQ与别人聊天,在发信息时若按住shift,则该信息就会很快发送出去

    15移动文件或文件夹在“资源管理器”窗口中,按住shift,把一组选定的文件或文件夹拖至另一个文件夹,将移动选定的对象至目标文件夹。

    16以“资源管理器”窗口方式打开文件夹按住 Shift并双击选中的文件夹,则以“资源管理器”窗口打开该文件夹,即以双窗格方式打开该文件夹。

    17在office各组件中获得帮助在 Office各组件的环境下按下Shift+Fl,可使鼠标指针变成“帮助”形状。此后用鼠标指针单击要获得帮助的对象,即可得到该对象的帮助信息。要取消“帮助”状态,可按一次Esc键或再按一次Shffr.+F1。

    【Shift键的作用】相关文章:

    更多相关内容
  • Shift JIS编码表

    2015-06-04 11:50:56
    Shift JIS编码表,很容易找到,方便懒人
  • Shift键的作用大全 Shift是什么意思

    万次阅读 2021-07-23 01:14:42
    我们在使用键盘时一定见过Alt键、Ctrl键,Shift键,很多人也用过,但是可能还有不少的朋友并不是能很好的理解这些键的意思和作用。其实这些键都是组合键,接下来小编就以shift键为例,为大家介绍Shift键的作用大全。...

    我们在使用键盘时一定见过Alt键、Ctrl键,Shift键,很多人也用过,但是可能还有不少的朋友并不是能很好的理解这些键的意思和作用。其实这些键都是组合键,接下来小编就以shift键为例,为大家介绍Shift键的作用大全。

    ffc12c917933dc96f0c783bc56d0cee0.jpg

    Shift是什么意思

    Shift有两种意思,分书面的意思和键盘上面的上档意思,书面意思有很多解释,指的是移动,搬移、替换、更换、变动、改变、变速、换挡、消除的意思。而我们主要给大家介绍键盘上的shift上档的具体含义及用途。

    Shift键的作用

    Shift,键盘意思是上档转换键,在键盘上分左右两个,常用于中英文转换。它作为辅助控制键,一般在一些应用程序上面shift键是和其他的按键组合一起使用。

    Shift的基本用途

    1、切换中文和英文:在输入法上直接按shift键即可切换。

    2、快速删除文件:Shift+Delete。

    3、更改打开方式:按住Shift键,然后在点击选择文件夹,即可新增加一个“打开方式”的选项。

    4、启用粘、筛键:连按5次,即“粘贴键”的快捷方式;

    5、筛选键:按右Shift键8秒以上为“筛选键”的快捷方式。

    6、重启电脑:先按Shift键,然后按确定按钮即可重启。

    Shift跟应用程序上使用Shift的用途:

    1、按shift键,再双击我的电脑就会以资源管理器方式打开。

    2、 Shift+Ctrl:切换输入法。

    3、Ctrl+Shift+ESC:就可以调出Windows 任务管理器。

    4、 在拖拽一个文件时按住Ctrl+Shift键,就可以创建快捷键。

    5、 放光碟时,连按数下shift 键,可以跳过自动播放。

    6、shift键+F10:代替鼠标右键。

    7、打开新窗口网页:按住shift键,然后点击网页链接即可打开新网页。

    1cf3681cc69806de3acfc261e377790d.jpg

    (二)Shift键与鼠标配合使用时的功能

    2.1彻底删除文件或文件夹。用鼠标右键单击要删除的文件或文件夹,在按住 shift键的同时选择“删除”,然后单击“是”确认删除。这样,将彻底删除所选文件或文件夹,而不是进入回收站中。

    2.2关闭“我的电脑”连续窗口。当“我的电脑”进行多窗口浏览时要关闭所有文件夹窗口,只要在最后的文件夹窗口中,按住Shift矬,单击关闭按钮,就能关闭所有窗口。

    2.3修改文件的打开方式。对于扩展名相同的文件,如果想用不同的程序打开文件,可以先按住Shift键,再用鼠标右键单击文件,然后单击“打开方式”即可。需要说明的是:对 Win2000及以后的版本,文件图标的快捷菜单中已增加了类似“打开方式”项,,

    2.4跳过“启动”文件。启动Windows系统时,在出现 Windows的启动画面时即按住Shift键直到系统开机过程结束,则“启动”组中的程序将不被执行。如果在启动画面出现之前就按住了shift键,则系统将自动进入安全模式。

    2.5快速选定文件或文件夹。在“我的电脑”或“资源管理器”窗口中,先选中一个文件,再按住Shift,选中另—个文件,则这两个文件之间的所有文件部将被选中。

    2.6选定某一范围的文长。在许多软件环境下要选定一段连续文本,可以按以下方法操作:把光标移到要选定的文本的首字符前,再把鼠标指针移到要选定文本的末字符后,按住Shift键的同时单击左键,则选定光标至鼠标指针之问的所有文本。在Excel软件环境下选定单元格也有类似的功能。

    2.7另类创建“快捷方式”图标。在“我的电脑”或“Windows资源管理器”窗口中,在按下Ctfl+Shift的同时拖放文件图标全桌面或某一文件夹中,将在桌面或目标文件夹中创建该文件的快捷方式。

    2.8快速重新启动Win9X系统。当Win9X系统运行过程中需要重新启动系统时,可先选择“关闭系统”中的“重新启动计算机”,然后在按住shift键的同时用鼠标单击“是”按钮,即可快速重新启动Win9X系统,因为此时Win9X只是重新启动GUI界面,而不再重新从BIOS启动,从而可以节省不少时间。此法只适用于Win9X系统,而且对当前状态为安全模式时不起作用,系统刚安装了新硬件时也可能不起作用。

    2.9跳过光盘的自动播放。如果已经把光盘设置为“自动播放”,在光驱中放入光盘的同时按住Shift直到光驱的灯灭掉,则可以暂时取消 “自动播放”功能。但是如果“自动播放”功能被关闭了,当插入光盘时按住Shift则将导致自动播放。

    2.10在IE窗口中新建一浏览窗口。在IE窗口中,先按住shift键再单击任一链接,就会弹出—个新的浏览窗口以显示该链接所指定的Web页面,其作用和鼠标右键单击某一文本链接并选择“在新窗口中打开” 相同。

    2.11快速关闭与快速保存多个office文档。在Word环境中按住Shift键再单击“文件”菜单,其中的“关闭”和“保存”命令将被改为“全部关闭 ”和“全部保存”。此时,单击“全部关闭”可关闭所有打开的文档窗口,若某文档在修改后未作保存,则系统会提示用户保存该文档。单击“全部保存”可对所有打开的文档作一次保存操作。在Excel软件环境下也有类似的功能。

    2.12打开office文档时,按住左侧shift可以阻止播放自动运行的宏。

    2.13在“画图”软件中画“标准”图形。在“画图”软件中作图时,选择“椭圆”,按住 Shift键,画出来的将是“圆”;选择“矩形”,按住Shifl键,画出来的将是“正方形;同样选择“圆角矩形”,按住Shift键,画出来的将是“圆角正方形”。

    2.14快速发送QQ信息。用QQ与别人聊天,在发信息时按住Shift,则该信息就会很快发送出去

    2.15移动文件或文件夹。在“资源管理器”窗口中,按住Shift,把一组选定的文件或文件夹拖至另一个文件夹,将移动选定的对象至目标文件夹。

    2.16以“资源管理器”窗口方式打开文件夹。按住 Shift并双击选中的文件夹,则以“资源管理器”窗口打开该文件夹,即以双窗格方式打开该文件夹。

    以上就是对Shift键作用大全的介绍,希望能大家带来帮助。

    展开全文
  • 基于kalman滤波的meanshift算法 代码可供参考 效果一般
  • 使用一个类似三明治的体系结构,2个1×1卷积核一个Shift操作,来近似一个K×K卷积 Shift操作进一步扩展到不同的变体:active Shift、sparse Shift、partial Shift Shift-ViT 总体结构 作者遵循Swim Transformer的...

    一、论文简介

    论文题目:When Shift Operation Meets Vision Transformer: An Extremely Simple Alternative to Attention Mechanism

    https://doi.org/10.48550/arXiv.2201.10801

    AlexNet的革命性进步,CNNs主导计算机视觉领域近10年

    ViT的Backbone明显优于CNN的Backbone,迅速应用于目标检测、语义分割、动作识别等计算机视觉任务中。

    ViT相比CNN,具有显著的优点:

    1、提供了同时捕获短期和长期依赖的可能性,摆脱了卷积的局限限制

    2、两个空间位置之间的相互作用动态地依赖于各自的特征,而不是一个固定的卷积核

    但是,这两点是否是成功的关键:

    对于第一点:Swin-Transformer和Local ViT引入局部注意力机制,将其注意力范围限制在一个小的局部区域内,结果表明系统性能没有由于局部限制而下降

    对于第二点:MLP-Mixer提出用线性投影层代替注意力层,其中线性权值不是动态生成的,仍然在ImageNet数据集上达到领先的性能

    既然全局特性和动态特性可能对ViT框架都不重要,那ViT成功的根本原因是什么

    没有全局范围、没有动态、没有参数、没有算数计算

    二、网络结构

    标准的ViT构建块包括:注意力层前馈网络(FFN)

    作者用Shift操作取代前一个注意力层,保持后一个FFN部分不变。给定一个输入特征,构建块将首先沿着4个空间方向(左、右、上、下)移动一小部分通道,随后的FFN进行通道混合,以进一步融合来自相邻通道的信息。

    基于shift building block构建了一个类似ViT的Backbone,即ShiftViT。这个Backbone很好地用于主流视觉识别任务,性能与Swin Transformer相当甚至更好。

    在与Swin-T模型相同的计算预算内,ShiftViT在ImageNet数据集达到81.7%(相对于Swin-T的81.3%)。对于密集预测任务,在COCO检测数据集上平均精度(mAP)为45.7%(Swin-T的43.7%),在ADE20k分割数据集上平均精度(mloU)为46.3%(Swin-T的44.5%)。

    因此,作者认为应该更多关注组成部分,而不是仅仅关注注意力机制。

    现如今引发一波不断上升的关于视觉Transformer的研究浪潮,主要研究重点是改进注意力机制,使其能够满足视觉信号的内在特性。例如:MSViT构建层次注意力层以获得多尺度特征。Swin-Transformer在其注意力机制中引入了一种局部性约束。还有pyramid attention、local-global attention、cross attention等。

    本文目的:注意力机制可能不是ViTs工作的关键部分,甚至可以被一个非常简单的Shift操作所取代,作者希望这些结果能够激励研究者重新思考注意力机制的作用。

    MLP Variants

    MLP-Mixer引入一个Token的混合MLP,以直接连接所有空间位置。消除了ViT的动态特性,但不是去准确性,后续工作研究了MLP更多设计,如空间门控单元或循环连接。

     红色框部分是token-mixing MLP,绿色框部分是channel-mixing MLP。

    ShiftViT可归类为MLP架构,Shift操作可视为一个特殊的Token混合层,Shift操作简单(不包含参数、没有FLOP),由于具有固定的线性权值,普通的MLP变体不能处理可变的输入大小。Shift操作克服了这一障碍,使Backbone用于更多的视觉任务,如目标检测和语义分割。

    Shift Operation

    Shift操作在2017年被认为是空间卷积操作的一种有效的替代方案

    论文题目:CVPR2018  Shift: A Zero FLOP, Zero Parameter Alternative to Spatial Convolutions

    常规卷积

     Depthwise Separable Convolution

     pointwise Convolution

     Shift操作可看做是Depthwise Convolution的一种特殊情况

     通道域是空间域信息的层次化扩散

    因此通过设置不同方向的shift卷积核,可以将输入张量不同通道进行平移,随后配合1x1卷积实现跨通道的信息融合,即可实现空间域和通道域的信息提取。

    使用一个类似三明治的体系结构,2个1×1卷积核一个Shift操作,来近似一个K×K卷积

    Shift操作进一步扩展到不同的变体:active Shift、sparse Shift、partial Shift

    Shift-ViT

     总体结构

    作者遵循Swim Transformer的体系结构,给定一个形状H×W×3的输入图像,首先将图像分割成不重叠的patches。patch-size为4×4像素,因此patch partition的输出值为H/4×W/4 token,其中每个token的通道大小为48。

    之后模块分为四个stage,每个stage包括2个部分:嵌入生成堆叠shift块。 

    对于第一阶段的嵌入生成,使用一个线性投影层将每个token映射成一个通道大小为c的嵌入。

    对于其余阶段,通过kernel_size为2×2的卷积来合并相邻的patch。patch合并后,输出的空间大小是下采样的一半,而通道大小是输入的2倍,即从C到2C。

    每个stage,shift块的数量可以是不同的,分别记为N1、N2、N3、N4。在out实现中,仔细选择了Ni的值,从而使整个模型与Baseline Swin Transformer模型共享相似数量的参数。

    Shift Block

    由三个顺序堆叠的组件组成:Shift操作、层归一化和MLP网络。

    Shift操作在CNN中已经得到了很好的研究,可以由许多设计选择,如active Shift、sparse Shift。在本工作中遵循TSM中的partial Shift操作。

    shift building block 

    给定一个输入张量,一小部分的通道会沿着空间的四个方向移动,即左、右、上、下,而其余的通道保持不变。在Shift之后,超出范围的像素被简单地删除,空白像素被填充为0。本论文中,Shift步长设置为1。

    形式上,假设输入特征z的形状为H×W×C,其中C为通道数,H和W分别为空间高度和宽度。输出特性z与输入特性具有相同的形状,可以写成:

    其中γ是一个比率因子来控制通道的百分比。大多数实验中,γ的值设置为1/12。

    Pytorch实现 

    Shift操作不包含任务参数或算术计算,仅需内存复制。因此,Shift操作效率高,易于实现。与自注意力机制相比,Shift操作对TensorRT等深度学习推理库更干净、整洁、更友好。

    Shift块的其余部分与ViT的标准构建块相同。MLP网络有2个线性层,第一个方法将输入将输入特征的通道增加到一个更高的维度,例如从C到τC。之后,第2个线性层将高维特征投影到c的原始通道大小中。在这两层之间,采用GELU作为非线性激活函数。

    架构变体

    为了与Baseline Swin Transformer进行比较,作者还构建了多个具有不同数量参数和计算复杂度的模型。

    引入了Shift-T(iny)、Shift-S(mall)、Shift-B(ase)变种,分别对应swin-t、swin-s、swin-b。

    Shift-T是最小的,与Swin-T和ResNet-50的大小相似,Shift-S和Shift-B大约比shifvit复杂2倍和4倍。

    基本嵌入通道C的详细配置和块数{Ni}如下:

     除了模型尺寸之外,作者还仔细观察了模型的深度,在提出的模型中,几乎所有的参数都集中在MLP部分,因此可以控制MLP  τ的扩展比来获得更深的网络深度。如果未指定,则将展开比率τ设置为2。消融分析表明,更深层次的模型获得了更好的性能。

    三、实验

    消融实验

    之前的实验证明了本文的设计原则,即大的模型深度可以弥补每个构件的不足。通常,在模型深度和构建块的复杂性之间存在一种权衡,有了固定的计算预算,轻量级的构建块可以享受更深层次的网络工作架构。

    为了进一步研究这种权衡,作者提供了一些具有不同深度的Shift-ViT模型。对于ShiftViT,大多数参数存在于MLP部分。作者可以通过改变MLP τ的扩展比来控制模型深度。如表中选择Shift-T的扩展比来控制模型深度。选择Shift-T作为基线模型。研究了在1到4范围内的扩张比τ。指的注意的是不同条目的参数和FLOPs几乎是相同的。

    从表中,可观察到一个趋势,即模型越深入,性能越好。当ShiftViT的深度增加到225时,在分类、检测、分割上分别比57层的分类、检测、分割的绝对增益提高了0.5%、1.2%、2.9%。在这种趋势支持了猜想,即强大而沉重的模块,如attention,可能不是Backbone的最佳选择。

    1、Percentage of shifted channels

    Shift操作只有一个超参数,即位移信道的百分比。缺省情况下,设置为33%。将移动通道的比例分别设置为20%、25%、33%和50%。

    表明最终性能对这个超参数不是很敏感。与最佳设置相比,移动25%的通道指挥导致0.3%的绝对损失。在合理的范围内(25%~50%),所有的设置都达到了比Swin-T Baseline更好的精度。

    2、Shifted pixels

    在Shift操作中,一小部分通道沿4个方向移动一个像素。为了进行全面的探索,还尝试了不同的移动像素。当偏移的像素为0,即没有发生偏移时,ImageNet数据集的Top-1精度仅为72.9%,明显低于本文的Baseline(81.7%)。

    没有移动意味着不同的空间位置之间没有相互作用,此外,如果在shift操作中移动两个像素,模型在ImageNet上达到80.2%的top-1精度,这也比默认设置略差。

    3、ViT-style training scheme

    Shift操作在cnn中得到很好的研究,但没有令人印象深刻。Shift-Res-Net-50在ImageNet上的准确率仅为75.6%,远低于81.7%,因此是什么对ViT有利?

    作者怀疑原因可能在于虚拟现实式的训练计划。具体来说,大多数现有的ViT变体遵循DeiT中的设置,这与训练cnn的标准管道有很大不同。

    例如:ViT-style方案采用AdamW优化器,在ImageNet上训练时长为300epoch.相比之下,cnn风格的方案更倾向于SGD优化器,训练计划通常只有90epoch。由于本文的模型继承了ViT-style训练方案,观察这些差异如何影响性能是很有趣的。

    由于资源有限,不能完全对齐所有设置之间的ViT-style和CNN-style。因此选择4个任务可以来启示的重要因素:优化器、激活函数、规范化层、训练计划。表中可看到这些因素显著影响准确性,尤其是训练进度。这些结果表明,ShiftViT良好的性能部分是由ViT-style训练方案带来的。

    同样,ViT的成功也可能与其特殊的训练计划有关。在今后的ViT研究中应该认真对待这一问题。

    ImageNet and COCO

    总的来说,本文的方法可以实现与最先进技术相媲美的性能。对于基于ViT和基于MLP的方法,其最佳性能约为83.5%,而本文模型达到了83.3%的精度。对于基于CNN的方法,本文模型略差,但是因为EfficientNet采用更大的输入大小,所以比较不完全公平。

    与2个工作S^2-MLP和AS-MLP,这两部分的工作在移Shift操作上由相似的想法,但是在构建块中引入了一些辅助模块,例如投影前层和投影后层。本文的表现略好于这两项工作,证明了设计选择仅仅用一个简单的Shift操作就可以很好的搭建Backbone。

    除了分类任务外,目标检测任务和语义分割任务也可以观察到相似的性能轨迹。值得注意的是,一些基于ViT和基于MLP的方法不容易扩展到如此密集的预测任务,因为高分辨率的输入产生了难以负担的计算负担。由于Shift操作的高效率,本文的方法不存在这种障碍。

    展开全文
  • 基于Meanshift的单目标跟踪算法【matlab+c两个版本】

    千次下载 热门讨论 2014-06-12 16:49:26
    基于meanshift的单目标跟踪算法实现 说明: 1. RGB颜色空间刨分,采用16*16*16的直方图 2. 目标模型和候选模型的概率密度计算公式参照上文 3. opencv版本运行:按P停止,截取目标,再按P,进行单目标跟踪 4. Matlab...
  • Python实现Mean Shift算法

    千次阅读 热门讨论 2019-07-13 15:06:59
    一、Mean Shift向量与核函数 1、Mean Shift向量 对于给定的n维空间中的m个样本点,对于其中的一个样本X,其Mean Shift的向量为: 其中,指的是一个半径为h的高维球区域,定义为: 2、核函数 通过上述方式求出的Mean...

           声明:代码的运行环境为Python3。Python3与Python2在一些细节上会有所不同,希望广大读者注意。本博客以代码为主,代码中会有详细的注释。相关文章将会发布在我的个人博客专栏《Python从入门到深度学习》,欢迎大家关注~


           在K-Means算法中,聚类的类别个数需要提前指定,对于类别个数未知的数据集,K-Means算法和K-Means++算法将很难对其进行求解,所以需要一些能够处理未知类别个数的算法来处理此类问题。Mean Shift算法,又称作均值漂移算法,它跟K-Means算法一样,都是基于聚类中心的聚类算法,不同的是,它不需要提前指定聚类中心的个数,聚类中心是通过在给定区域中样本的均值来确定的,通过不断更新聚类中心,直至聚类中心不再改变为止。

    一、Mean Shift向量与核函数

    1、Mean Shift向量

           对于给定的n维空间中的m个样本点,对于其中的一个样本X,其Mean Shift的向量为:

           其中,指的是一个半径为h的高维球区域,定义为:

    2、核函数

           通过上述方式求出的Mean Shift向量时存在问题的,即在区域内每一个对样本X的贡献是一样的,然而实际上,每一个样本对样本X的贡献是不一样的,我们可以通过核函数对每一个样本的贡献进行度量。

           核函数的定义如下:

           设Z是输入空间,H是特征空间,如果存在一个Z到H的映射:使得所有,函数满足条件:,则称为核函数,为映射函数。

           我们在Mean Shift算法中使用的是高斯核函数,这也是最常用的核函数之一,高斯核函数的表达式为:

           其中,h为带宽,当带宽一定时,样本点之间的距离越近,核函数的值越大;当样本点距离一定时,带宽越大,核函数的值越小。

           下面我们使用Python代码实现高斯核函数:

    import numpy as np
    import math
    
    def gs_kernel(dist, h):
        '''
        高斯核函数
        :param dist: 欧氏距离
        :param h: 带宽
        :return: 返回高斯核函数的值
        '''
        m = np.shape(dist)[0]  # 样本个数
        one = 1 / (h * math.sqrt(2 * math.pi))
        two = np.mat(np.zeros((m, 1)))
        for i in range(m):
            two[i, 0] = (-0.5 * dist[i] * dist[i].T) / (h * h)
            two[i, 0] = np.exp(two[i, 0])
        
        gs_val = one * two
        return gs_val

    二、Mean Shift原理

           在Mean Shift中通过迭代的方式找到最终的聚类中心,即对每一个样本点计算其漂移均值,以计算出来的漂移均值点作为新的起始点重复上述步骤,直到满足终止条件,得到的最终的漂移均值点即为最终的聚类中心。

           Mean Shift算法实现过程如下:

    def mean_shift(points, h=2, MIN_DISTANCE=0.000001):
        '''
        训练Mean Shift模型
        :param points: 特征点
        :param h: 带宽
        :param MIN_DISTANCE: 最小误差
        :return: 返回特征点、均值漂移点、类别
        '''
        mean_shift_points = np.mat(points)
        max_min_dist = 1
        iteration = 0  # 迭代的次数
        m = np.shape(mean_shift_points)[0]  # 样本的个数
        need_shift = [True] * m  # 标记是否需要漂移
    
        # 计算均值漂移向量
        while max_min_dist > MIN_DISTANCE:
            max_min_dist = 0
            iteration += 1
            print("iteration : " + str(iteration))
            for i in range(0, m):
                if not need_shift[i]:  # 判断每一个样本点是否需要计算偏移均值
                    continue
                point_new = mean_shift_points[i]
                point_new_start = point_new
                point_new  = shift_point(point_new, points, h)  # 对样本点进行漂移计算
                dist = distince(point_new, point_new_start)  # 计算该点与漂移后的点之间的距离
                
                if dist > max_min_dist:
                    max_min_dist = dist
                if dist < MIN_DISTANCE:
                    need_shift[i] = False
                
                mean_shift_points[i] = point_new
        # 计算最终的类别
        lb = lb_points(mean_shift_points)  # 计算所属的类别
        return np.mat(points), mean_shift_points, lb

           其中,shift_point()方法目的在于计算漂移量,lb_points()方法的目的在于计算最终所属分类,distance()方法用于计算欧氏距离,三个方法的实现过程分别如下:

    (1)shift_point()方法

    def shift_point(point, points, h):
        '''
        计算漂移向量
        :param point: 需要计算的点
        :param points: 所有的样本点
        :param h: 带宽
        :return: 返回漂移后的点
        '''
        points = np.mat(points)
        m = np.shape(points)[0]  # 样本的个数
        # 计算距离
        point_dist = np.mat(np.zeros((m, 1)))
        for i in range(m):
            point_dist[i, 0] = distince(point, points[i])
    
        # 计算高斯核函数
        point_weights = gs_kernel(point_dist, h)
    
        # 计算分母
        all_sum = 0.0
        for i in range(m):
            all_sum += point_weights[i, 0]
    
        # 计算均值偏移
        point_shifted = point_weights.T * points / all_sum
        return point_shifted

    (2)lb_points()

    def lb_points(mean_shift_points):
        '''
        计算所属类别
        :param mean_shift_points: 漂移向量
        :return: 返回所属的类别
        '''
        lb_list = []
        m, n = np.shape(mean_shift_points)
        index = 0
        index_dict = {}
        for i in range(m):
            item = []
            for j in range(n):
                item.append(str(("%5.2f" % mean_shift_points[i, j])))
    
            item_1 = "_".join(item)
            if item_1 not in index_dict:
                index_dict[item_1] = index
                index += 1
    
        for i in range(m):
            item = []
            for j in range(n):
                item.append(str(("%5.2f" % mean_shift_points[i, j])))
    
            item_1 = "_".join(item)
            lb_list.append(index_dict[item_1])
        return lb_list

    (3)distince()方法

    def distince(pointA, pointB):
        '''
        计算欧氏距离
        :param pointA: A点坐标
        :param pointB: B点坐标
        :return: 返回得到的欧氏距离
        '''
        return math.sqrt((pointA - pointB) * (pointA - pointB).T)

    三、Mean Shift算法举例

    1、数据集:数据集含有两个特征,如下图所示:

    2、加载数据集

           我们此处使用如下方法加载数据集,也可使用其他的方式进行加载,此处可以参考我的另外一篇文章《Python两种方式加载文件内容》。加载文件内容代码如下:

    def load_data(path, feature_num=2):
        '''
        导入数据
        :param path: 路径
        :param feature_num: 特行总数
        :return: 返回数据特征
        '''
        f = open(path)
        data = []
        for line in f.readlines():
            lines = line.strip().split("\t")
            data_tmp = []
            if len(lines) != feature_num:  # 判断特征的个数是否正确,把不符合特征数的数据去除
                continue
            for i in range(feature_num):
                data_tmp.append(float(lines[i]))
            data.append(data_tmp)
        f.close()
        return data

    3、保存聚类结果

           通过Mean Shift聚类后,我们使用一下方法进行聚类结果的保存

    def save_result(file_name, data):
        '''
        保存聚类结果
        :param file_name: 保存的文件名
        :param data: 需要保存的文件
        :return:
        '''
        f = open(file_name, "w")
        m, n = np.shape(data)
        for i in range(m):
            tmp = []
            for j in range(n):
                tmp.append(str(data[i, j]))
            f.write("\t".join(tmp) + "\n")
        f.close()

    4、调用Mean Shift算法

    if __name__ == "__main__":
        data = load_data("F://data", 2)
        points, shift_points, cluster = mean_shift(data, 2)
        save_result("sub", np.mat(cluster))
        save_result("center", shift_points)

    5、结果展示

           得到的聚类结果如下所示:

            你们在此过程中遇到了什么问题,欢迎留言,让我看看你们都遇到了哪些问题。

    展开全文
  • shift是一条非常有用的命令。对于位置变量或命令行参数,其个数是确定的,可以把所有参数一起赋值给变量$*。位置参数用shift命令左移,将参数变量列表 list 左移指定次数,缺省为左移一次。参量列表 list 一旦被移动...
  • OpenCV 学习笔记(mean shift 算法)

    千次阅读 2021-08-29 11:04:14
    OpenCV 学习笔记(mean shift 算法) Mean shift 是一种机器学习算法,并不仅仅局限于图像上的应用。关于 Mean shift 算法介绍的书和文章很多,这里就不多介绍了。简单的说,Meanshift 算法是一种迭代算法,需要给一...
  • MeanShift算法详解以及matlab源码

    热门讨论 2012-06-25 11:20:28
    这个文件包里面有matlab源码以及对meanshift算法详细介绍的文章,ppt,word文档。欢迎下载。
  • 在我们的电脑键盘上有一个shift上档键,shift是什么意思?shift键有什么用?经常使用电脑的人都会用到这个shift键,这个键跟ctrl和atl键都是很常用的按键。学无忧就来针对shfit来具体讲解。shift是什么意思?shift它...
  • idea禁用双击shift、double shift 快捷键

    千次阅读 2020-11-26 12:56:41
    double shift快捷键调出搜索框虽然很方便,但作为一名用了10年搜狗输入法的程序员,需要 频繁用 shift 切换中英文状态。经常在写代码时,切换中英文误将搜索框调出。把代码写里头了。非常糟心。 由于这个快捷键是...
  • 电脑Shift键作用大全

    千次阅读 2021-07-22 05:06:25
    您可能感兴趣的话题:快捷键核心提示:shift它是有两种意思,有书面的意思和键盘上面的上档意思,书面意思有很多解释,指的是移动,搬移、替换,更换;变动,改变等意思,当然有的时候又指变速、换挡、消除的意思。而...
  • IDEA 2021.2 取消 双击shift 全局搜索

    千次阅读 多人点赞 2021-08-11 10:42:54
    由于 双击输入法中,习惯了使用 shift 做中英文切换,有时候手速快,就会出现 双击 shift 弹出 IDEA 的全局搜索。非常不爽。 在网上找到的各种方案,都是去勾选ide.suppress.double.click.handler,但是 IDEA 2021....
  • 苹果电脑的Shift键在fn键的上方,caps lock键的下方,位于键盘最左侧,由右下往上数第2个键。shift键作用如下:Ctrl+Shift键可以用来切换输入法;用Shift+Space空格键可以在中文输入状态的半角与全角之间快速切换。...
  • Python实现Mean Shift聚类算法

    千次阅读 热门讨论 2018-12-30 22:53:29
    Mean Shift算法,又称均值聚类算法,聚类中心是通过在给定区域中的样本均值确定的,通过不断更新聚类中心,直到聚类中心不再改变为止,在聚类、图像平滑、分割和视频跟踪等方面有广泛的运用。 Mean Shift向量 对于...
  • mean shift目标跟踪matlab程序

    热门讨论 2012-04-24 10:46:44
    基于matlab的图像跟踪程序 算法是mean shift 用鼠标选取一个要跟踪的目标 程序会自动跟踪
  • shell脚本中shift的用法

    千次阅读 2021-05-30 14:32:10
    shift命令用于对参数的移动(左移),通常用于在不知道传入参数个数的情况下依次遍历每个参数然后进行相应处理(常见于Linux中各种程序的启动脚本)。 示例1:依次读取输入的参数并打印参数个数: 从上可知 shift...
  • 视频追踪(meanshift和camshift算法)

    千次阅读 2022-03-21 10:18:07
    视频追踪(meanshift和camshift算法)
  • MeanShift 目标跟踪

    万次阅读 多人点赞 2018-11-15 18:44:51
    MeanShift算法,又称为均值漂移算法,采用基于颜色特征的核密度估计,寻找局部最优,使得跟踪过程中对目标旋转,小范围遮挡不敏感。 文章目录MeanShift 原理MeanShift 跟踪meanShift 函数原型反向投影MeanShift 跟踪...
  • 电脑shift键常用快捷键使用攻略

    千次阅读 2021-07-25 08:27:44
    对于Shift键相信大家一定不陌生吧?在电脑键盘上我们经常可以看到它。shift键经常和其他键组合成快捷键,使我们的电脑操作事半功倍。那么常用的shift快捷键怎么用呢?下面小编给大家分享下常用shift快捷键使用攻略。...
  • shift键的作用是什么

    千次阅读 2021-07-22 05:05:19
    shift键的作用是什么导语:shift是什么意思?它有什么用呢?以下是小编为大家精心整理的电脑知识,欢迎大家参考!shift它是有两种意思,有书面的意思和键盘上面的上档意思,书面意思有很多解释,指的是移动,搬移、...
  • 点赞再看,养成习惯;学而不厌,诲人不倦。 微信搜索【亦心Excel】关注这个不一样的自媒体人。...当然这次分享的是以Shift键为主的组合键,还不包括Ctrl+Shift,Alt+Shift等相关的组合键。下面先给出汇总图。 ...
  • 日文常用的字库代码,查询非常方便。对于日文游戏汉化也很有帮助。 使用此字库的游戏可以进行修改游戏里的类似“主角名字”的代码。
  • Pandas dataframe.shift()函数根据需要的周期数移动索引,并带有可选的时间频率。该函数采用称为周期的标量参数,该参数表示要在所需轴上进行的平移次数。处理时间序列数据时,此功能非常有用。用法:DataFrame....
  • 1.Ctrl+Shift+A打开Actions搜索页面,并输入registry 2.回车,打开registry页面,找到ide.suppress.double.click.click并勾选,点击close关闭 3.打开File-setting-Keymap,搜索search Everywhere 4.选择...
  • MeanShift算法原理及其python自定义实现 MeanShift算法原理 MeanShift python实现 实现思路: 代码: 运行结果: MeanShift算法原理 Meanshift是聚类中的一种经典方法,思想简单,用途广泛 Meanshift基于这样...
  • PC计算机键盘上的Shift键称为什么键

    千次阅读 2021-07-05 05:24:04
    当然Shift键并不仅仅只是这些作用,下面介绍下Shift键的其他十大功能,以供参考,欢迎补充:第一招:取消"启动"的功能在开机进入Windows时,一直按住Shift键直到开机结束,那么启动项中的功能将失效。例如,...
  • IDEA shift shift快捷键修改

    万次阅读 2018-06-19 09:28:08
    使用IDEA发现连续按两次shift shift会出现全局搜索功能,功能是蛮好,但是经常切换输入法的时候弹出,非常不方便,这里分享一个取消这个快捷功能的方法。 首先关闭IDEA,打开IDEA安装路径。进入lib文件夹选中任意一...
  • Scale- and shift-invariant losses

    千次阅读 2022-03-23 14:15:21
    Scale- and shift-invariant losses 尺度和位移不变的密集损失

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 711,133
精华内容 284,453
关键字:

shift

友情链接: titong.zip