ROLO:Spatially Supervised Recurrent Convolutional Neural Networks for Visual Object Tracking(二)
这篇文章是对ROLO的代码解读。首先是对单目标跟踪的实现,参考博客中的说法,主要阅读的文件有三个,接下来分别进行阅读。
YOLO_network.py
从代码中可以看到最终的输出是 7*7*(5*2+20),中间全连接层的输出是4096个,最终的输出位置信息是[c,x,y,w,h,p],这些都存储在yolo_out中,是以numpy方法中的.NPY文件
- argv_parser函数是对在调用这个py文件时候所传入的命令行指令进行解析,比较容易理解。
- 这部分在构造yolo函数的卷积部分,可以看到一代的卷积中还没有形成DBL层,只有卷积和leaky_relu,还没有引入BN层。fc和pooling层也是按照原来paper写的。
- 最终的输出是featur和loc连接起来,和当初的想法一样。最终拼接成4096+6的向量,然后以yolo_out 的形式存储在本地。
通读下来也没什么好写的,可能是没有具体的运行,等有问题了再补。
ROLO_network_test_single.py
一些小函数的阅读笔记:
tf.split(dimension, num_split, input):dimension的意思就是输入张量的哪一个维度,如果是0就表示对第0维度进行切割。num_split就是切割的数量,如果是2就表示输入张量被切成2份,每一份是一个列表。
ROLO_demo_test.py
ROLO_utols.py
最终有许多小问题而没有跑起来,暂时推到博客做一个记录吧,就代码而言感觉最终的效果应该不会特别好,因为训练样本少而待训练参数多。
如果要说这个算法的格局的话,与卡尔曼滤波的差距是送入滤波器的是一个4096+5的向量,多了很多的冗余信息与帧间的冗余信息。