DAVIS 2016是VOS任务中的一个经典的benchmark,但是一些VOT的算法有时候也可以预测mask,所以也会在上面测一测性能,本次就随手记录一下自己评测的过程,有需要的小伙伴可以往下看。
DAVIS 2016数据集官方项目网站:https://davischallenge.org/davis2016/code.html
DAVIS2016论文是:A Benchmark Dataset and Evaluation Methodology for Video Object Segmentation
一、下载数据集
下载,设想下载的数据集目录是DAVIS2016,解压完该目录下有Annotations,ImageSets,JPEGImages
,分别是mask标签,train val序列列表,RGB视频帧。下面又有480p和1080p的子文件夹,之后都用到的是480p的。
二、下载评估工具箱和预计算结果
注意这是关键的一步,千万不要下载python版本的工具箱,因为python版本的工具箱使用的是python2.x,并且要c++的编译,环境很难配,且不知道会不会影响原有的环境,所以选择matlab版本的,会跳转到对应github页面,只要download zip或者git clone下来就好了。
这时候也可以顺带去下载一下官方给的一些算法的结果https://graphics.ethz.ch/Downloads/Data/Davis/DAVIS-results.zip,直接可以用于评估,当然也可以去项目页上一个个下载
这里要注意的是为了配合后面matlab代码读取结果,要把刚刚下载的DAVIS-results.zip解压到数据集目录DAVIS2016下,设想路径是DAVIS2016/Results/Segmentations/480p/
,下面就是各个算法的结果了,对于DAVIS-results.zip里面没有的,也要下载下来放到这个路径底下。
三、matlab评估工具箱的使用
matlab评估工具箱下载解压完是这样的,我使用的平台是ubuntu18.04, matlab2017
- 去
db_root_dir.m
里面修改root_dir路径,这个就是刚刚数据集目录DAVIS2016,根据自己电脑上存放路径修改即可。 - 运行脚本
startup.m
以把评估所要的代码的路径添加进来并执行一些检查,这一步不知道windows下会不会遇到问题,我这步直接通过。如果有问题的话可以运行一下build.m
,然后再运行startup.m
检查一下。 measures/eval_result.m
的函数签名是这样的,
function [eval, raw_eval] = eval_result(result_id, measures, gt_set)
- result_id:就是评估的算法的名字,可以是
DAVIS2016/Results/Segmentations/480p/
下的任何一个名字,类型是字符串,比如填一个'siammask'
(siammask结果可以单个下载) - measures:就是论文里面的几种不同评价指标,可以单个字符,也可以是多个字符的cell,如
'J'
或者{'J','F','T'}
,其中T的评估时间会久一点 - gt_set:就是在数据集的哪个split上评估,一般都是
'val'
,当然还可以填'train'
和'all'
注意这里不是把这个script直接改掉,是在命令窗口输入>> eval_result('siammask',{'J','F','T'},'val');
4. 这步就可以去生成最终结果了,先要去experiments/experiments_params.m
改一下techniques的名字,需要和result_id一样,然后直接命令窗口调用global_table
,使用的是experiments/global_table.m
函数,就会出来结果,是和官网一致的
四、评估自己算法的结果
从上面的步骤看来,唯一需要我们提供的就是DAVIS2016/Results/Segmentations/480p/
下的分割结果了,可以拿一个算法的实例结果看一下(这里拿的是siammask的):
可以看到,我们需要对davis2016 val的每个序列都去根据自己的算法生成二值掩膜的输出,并且这里是从00000.png开始的,就是包括整个val序列的全部帧,然后就可以重复第三步去测自己算法的性能了