CMOT代码

接着~《CMOT中对跟踪结果results.mat的理解》~

在CMOT中,只用了一个数据集ETH-Bahnhof(标准),注意,无论是Results的生成,还是Sequence中,都写的ETH_Bahnhof(here),就是个名称的问题,可以改的。

刚开始我把param中的参数改为

img_path = './Sequences/ETH-Bahnhof/';

img_List = dir(strcat(img_path,'*.png'));

相对应的,把Results和Sequence的序列也改成标准的样子,结果报错了。就是这里的问题,不是Det的问题。step  by  step => ok

果然是基本流程啊,要认真!!!

有关键的3个问题,


1、400 PK 1000

跟踪结果有400个,检测Det有400个,但是图片共有1000张。??

只是设定的问题,本来这个数据集图片有1000张,只是detections没有检测全,只有400个,要是detections检测全的话,就是1000个。因为检测是400,所以frame_end也是400,虽然导入了1000张图片,但有效的就只有400张,跟踪图像上也只出现了400张。这里用到的思想就是tracking-by-detections。


2、all_mot [ ]中的参数在代码中的由来。

现在有一个问题,即cmot_KCF_tracking_results.mat究竟从哪里保存的呢?

在主函数中,关于all_mot的描述是

[all_mot] = MOT_Draw_Tracking_HCF(Trk_sets, out_path, img_path, img_List, DrawOption,method);

其中,参数介绍~

% Tracking Results

[Trk_sets] = MOT_Tracking_Results(Trk,Trk_sets,fr);

在MOT_Draw_Tracking_HCF.m中,我们来看看all_mot究竟是如何组成的。

本函数的作用是画出跟踪的结果(bbox)并写入。

函数介绍如下:在参数设定函数中有 param.new_thr = param.show_scan + 1;    % Temporal window size for tracklet initialization,这个和id有关~。

就是将center position,left-top position,size,labels先算好,然后直接将结果组成矩阵放入字典中。在这里q=1:length(Trk_sets),有400个索引,说明跟踪的结果是400个。那么如何获得跟踪的结果呢?



3、detections的导入load

请问在MDP中detections是什么格式?他是自己创建的吧。。。

CMOT中得到的detections在跟踪的过程中如何比对,怎么用?作用是什么?

CMOT中,如果想要用其他数据集中的Det,生成结果并做测试,如何将标准的det.txt中的数据生成.mat文件的只有x,y,w,h?

答案是Yes。不过CMOT中的x,y 是中心position的,所以后来会有center to left的操作。这点要格外注意。否则,在使用标准数据做评估时会drift。


4、图片的load方法


param.show_scan的作用是可以从指定帧查看跟踪效果,不用只从第一帧查看,当然了,还需要做些预关联的操作。当然啦,为了防止Index exceeds matrix dimensions.在estimation_size.m中nof_s和show_scan 要对应起来。


5、detections中的参数问题

x,y,w,h。为了增加测试数据时的通用性,x,y最好是left-top。


6、detections在不同数据集的.mat,此.mat和标准的Det中的det.txt文件的对应转换问题。

关于将.mat=>.txt,本宝宝之前写过,http://www.jianshu.com/p/ba8530013f12


7、数据关联

主要是用到了本地关联和全局关联。各有各的作用,其中,with the global association, longer trajectories are built by linking fragmented trajectories.

本地关联+全局关联+ILDA=极大程度的提升算法性能,很好的增强了发生遮挡时候的鲁棒性。

~~~

因为Online MOT 无非就是确定如何将检测结果形成轨迹的过程。

轨迹初始化-->轨迹和检测结果进行数据关联(data association)-->判断何时停止跟踪。

tracklet initial-->data association between tracklets and detections-->stop tracking.

其中,前两个阶段,即轨迹初始化和数据关联,都要用到一定的外观模型和动作模型(位置模型)。

顺着这个思路,来看一段代码:

%% Initiailization Tracklet

for i=1:init_frame

Obs_grap(i).iso_idx = ones(size(detections(i).x));

Obs_grap(i).child = [ ];

Obs_grap(i).iso_child =[ ];

end

[Obs_grap] = mot_pre_association(detections,Obs_grap,frame_start,init_frame);

可见,在轨迹初始化(Initiailization Tracklet)的时候,需要先设定一个用于轨迹初始化的初始帧init_frame = frame_start + param.show_scan;之后在for循环中,利用这一初始帧的信息形成Obs_grap。再后来,就可以用形成的Obs_grap和检测detections,以及帧的初始和结束范围进行数据预关联,关联的结果信息仍存在Obs_grap中。可见,这个Obs_grap是专门用来存放数据关联的信息的。但是需要注意的是,目前还没有进行轨迹初始化哦,只是先确定了逻辑上的初始关联消息,因为没有载入图片。随后把第一帧和初始帧之间的图片load进来,利用这些图片构成的init_img_set进行Initialization_Tracklets。

好,之后可以进入Tracking的过程中了。

首先,把初始帧之后的全部图片load进来,还是形成init_img_set。这样我们就知道,init_img_set中包含的是全部的图片。

然后,进行data association。包括两部分,Local Association和Global Association。

为理解Obs_grap的关联过程。必须debug,这样方便理解哈~

再然后,Update。包括两部分,Tracklet Confidence Update和Tracklet State Update & Tracklet Model Update。

再再然后,处理New Tracklet Generation的情况。至此,MOT的基本过程就说完了,可以将Tracking Results保存下来,即Trk_sets,这是极其重要的结果啊!不过呢,没有可视的框框。

再再再然后,Draw Tracking Results,High (Red)-> Low (Blue)。有可视的框了。

最后,Save tracking results。当然了,之后还可以做些评估啥的!

啊,Obs_grap在哪里用到的?需要存储关联信息的地方就会用到。

可以说,数据关联是MOT的核心,用到这个的地方有:

~在1-init_frame中,用于逻辑的预关联和拥有实物图片的轨迹初始化会用到。

~两大数据关联过程,即本地关联和全局关联,会用到。

~当新轨迹需要产生的时候,需要用到。

To the end,涉及轨迹tracklets的产生过程中和需要关联的时候,会用到Obs_grap。具体怎么连啊。。。debug看吧。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容