庖丁解牛TLD(三)——算法初始化

上一讲我提到对于算法的初始化工作主要是在tldInit这个函数里实现的。主要分为如下几大步骤,1)初始化Detector。2)初始化Trajectory。3)训练Detector

1)初始化Detector

其中bb_scan为扫描grid区域,该函数输入为boundingBox,输出为一系列的RectBox,是根据boundingBox的大小参数对待搜素区域选择一系列的box作为备选的跟踪区域,box的位置和尺度都有变化,和RectBox相应的尺度。但RectBox有6个参数,前4个分别为Rect的左上角坐标(x1,y1)和右下角坐标(x2,y2)。后两个参数求大神解释(PS:后来在fern函数里找到了解释,分别为指向对应尺度特征的指针位置、每一行box的数量——用在搜索邻近box)!对于这个函数内部我还有一个疑惑,就是对ntuples函数功能的使用,哎,怎奈Matlab语法都不熟悉,只能慢慢啃了,感觉作者这里就是把RectBox的左上角的所有可能的坐标值传入该函数,得到左上角坐标位置的全部组合(不知道理解对了没)。

接下来的工作时特征的初始化,是在tldGenerateFeature函数里实现的。这个函数相对独立,作者这里为了产生效果较好的随机特征真是煞费苦心,输入的参数有两个,一个是nTREE = 10,一个是nFEATURE = 13。输出为nTREE组特征,每组特征为nFEATURE个点对,每一个点对有4个参数,分别两点坐标(x1,y1),(x2,y2),取值范围为(0~1)其中第一个点的分辨率为0.1,还不太明白这样设计的原因,待进一步分析代码,有高人指点一下更好。值得注意的是产生的点对不是横坐标相同x1 = x2,就是纵坐标相同y1 = y2。这里用图片显示一组特征,线段的两个端点


下一步工作为初始化detector。这个功能是用强大的fern函数写的,该函数有多个功能,根据传入参数的标志分别可以实现clear操作、init操作、update操作、evaluate操作、detect操作、get pattern操作。fern函数是用c写的,混合编程没有弄的太明白,还没能调试一下看看,只能看代码猜。在初始化detector的工作里,用到的是init操作。

2)初始化Trajectory

这部分没有什么要说明的,都是些零碎的初始化工作,matlab里面对一些必要的变量开辟一些空间和定义一些变量的值。具体分析Trajectory的工作的时候可以具体再分析

3)训练Detector

首先得到Target,作者注释说该Target只是用来显示,有待我后续验证。得到Target要调用函数img_patch,img_patch函数是获得一幅图像中目标区域box的像素信息patch。

接下来产生正样本数据集,调用tldGeneratePositiveData。其中第二个参数为RectBox和box的重复区域比例信息,保存在overlap参数中,由函数bb_overlap得到。tldGeneratePositiveData函数首先根据overlap的比例信息选出重复区域比例大于60%并且前num_closet  = 10个的最接近box的RectBox,相当于对RectBox进行筛选。并通过bb_hull函数得到这些RectBox的最大边界。接下来的工作比较重要,要得到Pattern,调用的函数为tldGetPattern。初始化的工作就是对最接近box的RectBox区域得到其patch,然后调用tldPatch2Pattern将像素信息转换为Pattern,具体的说就是归一化RectBox对应的patch的size(放缩至patch_size = 15*15),将2维的矩阵变成一维的向量信息,然后将向量信息均值设为0,调整为zero mean and unit variance(ZMUV),这个过程调用函数tldPatch2Pattern实现。接下来处理RectBox最大边界的模糊信息,再次用到img_patch函数,但这次调用的函数有很大的不同,还没太理解作者要做什么啊,怎么感觉还有平移旋转矩阵都出来了,晕啦(求高人指点)。该函数最后返回3个参数,pX为处理后的RectBox最大边界处理后的像素信息,pEx最近邻的RectBox的Pattern,bbP0为最近邻的RectBox。

然后再产生负样本数据tldGenerateNegativeData。得到远离box(重复区域比例小于20%)的num_patches = 100个Pattern保存到nX中,随机选中num_patches = 100个RectBox得到对应的patch保存到nEx中。这里调用了fern(5),即该函数的get pattern操作。

接下来对负样本进行分类,分类到训练集Training Set和验证集Validation Set中去。

接下来使用Training Set进行训练,先调用fern(2),更新,然后调用tldTrainNN最近邻训练数据。

接下来评估验证集Validation Set的阈值。调用tldNN验证。

至此,初始化的工作基本完成,限于本人水平有限,只能先对函数有个大概的认识,深深觉得先要静下心来把训练的算法搞清楚,再回过头来再看一编代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在未启动程序情况 点击视图设计器 弹出未将对象引用窗体的解决方案

请问下 在未运行程序情况 点击视图设计器 弹出未将对象引用窗体 解决方案:1.看后台进程是不是相关的进程在启动,如果有关闭进程;重启vs,即可2.重启电脑转载于:https://www.cnblogs.com/yang12311/p/5593838.html

ASP站点无法访问怎么办

确保启用了目录浏览功能 转载于:https://www.cnblogs.com/acetaohai123/p/6571257.html

五、案例-指令参考-freemarker指令、表达式

案例-指令参考描述&#xff1a;本人自己测试写了一遍&#xff0c;如有错的地方&#xff0c;懂freemarker的朋友望指点指点&#xff01; 案例-指令参考 表达式 一、 Assign 1、<#assign name1"北京" name2"上海" name3"广东"> 调用&#xf…

PartitionMotionSearch()函数

encode_one_macroblock()函数中的运动估计分为两大块&#xff0c;对于宏块级的三种模式&#xff0c;分块后直接对patition依次调用PartitionMotionSearch()函数&#xff1b;而对于亚宏块级的&#xff08;含8x8, 8x4,4x8,4x4&#xff09;模式&#xff0c;首先将宏块拆分为4个88子…

201521123017 《Java程序设计》第4周学习总结

1. 本周学习总结 2. 书面作业 Q1.注释的应用 使用类的注释与方法的注释为前面编写的类与方法进行注释&#xff0c;并在Eclipse中查看。(截图) Q2.面向对象设计(大作业1&#xff0c;非常重要) 2.1 将在网上商城购物或者在班级博客进行学习这一过程&#xff0c;描述成一个故事。…

本文以H264视频流为例,讲解解码流数据的步骤。

本文以H264视频流为例&#xff0c;讲解解码流数据的步骤。 为突出重点&#xff0c;本文只专注于讨论解码视频流数据&#xff0c;不涉及其它&#xff08;如开发环境的配置等&#xff09;。如果您需要这方面的信息&#xff0c;请和我联系。 准备变量 定义AVCodecContext。如…

2008-2021年商业银行数据(农商行、城商行、国有行、股份制银行)

2008-2021年商业银行数据&#xff08;农商行、城商行、国有行、股份制银行&#xff09; 1、时间&#xff1a;2008-2021年 2、范围&#xff1a;1700银行 3 、指标&#xff1a;证券简称、year、证券代码、资产总计、负债合计、所有者权益合计、利润总额、净利润、贷款总额、存…

异常--自定义异常类

为什么要调用父类构造器? http://blog.csdn.net/rockpk008/article/details/52951856 转载于:https://www.cnblogs.com/dwj-ngu/p/6576382.html

EtherCAT 网站链接

http://www.ethercat.org.cn/cn.htm EtherCAT技术介绍 EtherCAT系统组成和工作原理 EtherCAT采用主从式结构&#xff0c;主站PC机采用标准的100Base-TX以太网卡&#xff0c;从站采用专用芯片。系统控制周期由主站发起&#xff0c;主站发出下行电报&#xff0c;电报的最大有效数…

IEC 6-1131/3的5种标准编程语言

用于开发控制系统和商业管理系统的TRACE MODE6编程工具面向不同领域的软件工程师. TRACE MODE6包含的五种编程语言为&#xff1a;Techno SFC、Techno LD、Techno FBD、Techno ST和Techno IL. 这些语言是下列IEC 6-1131/3标准语言的扩展&#xff1a; SFC&#xff08;顺序功能图…

NoPause/NoEmgAbort的任务 与后台任务的区别

NoPause/NoEmgAbort的任务示例 下面的例子显示了一个程序&#xff0c;可以监视控制器的错误并根据错误编号在发生错误时切换I/O On/Off。 Function main Xqt ErrorMonitor, NoEmgAbort : FendFunction ErrorMonitor Wait ErrorOnIf 4000 < SysErr And Syserr < 5999 T…

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)(转)

出处&#xff1a;http://www.cnblogs.com/best/p/6582294.html 目录 一、界面预览二、PSD源文件预览三、工具分享四、资源说明五、素材下载网站六、下载去年八月时要做一个OA系统为了后台界面而烦恼&#xff0c;后来写了一篇博客&#xff08;《后台管理UI的选择》&#xff09;介…

FFMpeg中apiexample.c例子分析——解码分析

FFMpeg中apiexample.c例子分析——解码分析 收藏 我们直接从 video_decode_example() 函数开始讲&#xff0c;该函数实现了如何去解码一个视频文件&#xff0c;以 .mpeg 文 件为例。 &#xff08; 1 &#xff09;将缓存的末尾清 0 &#xff0c;从而确保读操作不会越界导致破…

FFMpeg中apiexample.c例子分析——编码分析

FFMpeg中apiexample.c例子分析——编码分析apiexample.c例子教我们如何去利用ffmpeg库中的api函数来自己编写编解码程序。 &#xff08;1&#xff09;首先&#xff0c;main函数中一开始会去调用avcodec_init()函数&#xff0c;该函数的作用是初始化libavcodec&#xff0c;而我们…

Access2010打开系统表MSysObjects的控制权限

一、显示系统表 第一步&#xff1a;单击左上角【文件】页签&#xff0c;点击【选项】打开选项对话框&#xff0c;如图所示 第二步&#xff1a;在【Access选项】对话框中&#xff0c;选择【当前数据库】&#xff0c;在【导航】栏下&#xff0c;点击【导航选项】打开【导航选项】…

与 OpenCV 1 同时使用

与 OpenCV 1 同时使用 目的 对于OpenCV的开发团队来说&#xff0c;持续稳定地提高代码库非常重要。我们一直在思考如何在使其易用的同时保持灵活性。新的C接口即为此而来。尽管如此&#xff0c;向下兼容仍然十分重要。我们并不想打断你基于早期OpenCV库的开发。因此&am…

机器学习(machine learning)之AdaBoost算法

转自&#xff1a;http://blog.csdn.net/haidao2009/article/details/7514787 浅谈 Adaboost 算法 机器学习是利用一些方法来使机器实现人的学习行为&#xff0c;以便获取新的知识或技能&#xff0c;重新组织已有的知识结构使之不断改善自身的性能。 AdaBoost全名“adaptive B…

使用CodeFirst创建并更新数据库

本文主要介绍如何使用CodeFirst模式来新建并更新数据库 在使用Entity Framwork的三种方式&#xff08;ModelFist、DBFirst、CodeFirst&#xff09;中&#xff0c;CodeFirst方式书写的代码最为干净。 至于CodeFist方式的详细优缺点请各位读者自行搜索&#xff0c;这里不多赘述。…

浅析人脸检测之Haar分类器方法

由于工作需要&#xff0c;我开始研究人脸检测部分的算法&#xff0c;这期间断断续续地学习Haar分类器的训练以及检测过程&#xff0c;在这里根据各种论文、网络资源的查阅和对代码的理解做一个简单的总结。我试图概括性的给出算法的起源、全貌以及细节的来龙去脉&#xff0c;但…

利用微软平台生成报表,线性图,柱形图

说来惭愧,以前的工作中一直借助第三方dll进行报表制作,比如线性图,柱形图. 因为现在工作的这家公司不允许随便引入第三方dll,听同事说起可以建rdl类型文件进行引入到winform窗体中,窗体上使用reportViewer控件进行关联展示.下面是我今天摸索3个小时的结果分享. 第一步. 首先找到…