Video Object Segmentation(VOS)任务中benchmark主要有DAVIS2016,DAVIS2017,Youtube2018,Youtube2019等,但是在跑网络后得出的结果是每一帧的分割图,实际网络效果高低无法看出来。所以这里以Davis2016数据集为例:
官方网站:https://davischallenge.org/davis2016/code.html
paper:A Benchmark Dataset and Evaluation Methodology for Video Object Segmentation
一、数据集准备
你可能已经在跑网络之前已经下载过DAVIS2016数据集了,如果没有,可以点击上方官方网站传送门,点击下载并解压:
解压完该目录下有Annotations,ImageSets,JPEGImages
,分别对应mask标签,train/val序列列表以及RGB视频帧。下级又有480p和1080p两个子文件夹,不过之后都用到的是480p
二、评估工具(指标代码)和预计算结果下载
运行指标代码的目的就是让得到的分割结果转换为评价指标,这里用Matlab以及Python两种指标代码,但是python需要配合C++编译,环境比较难搭,所以这里采用的是Matlab Version
其他网络的预测结果(用于比较啥的),也可以在DAVIS2016的官网中下载到,可以点击here下载多个网络的预测结果,如果想要单独下载也乐意,点击对应网络的Precomputed results
为了配合matlab代码读取结果,需要把刚刚下载的DAVIS-results.zip解压到数据集目录DAVIS2016下,比如路径:DAVIS2016/Results/Segmentations/480p/,若需要转换自己网络运行完得到的分割图,也同样放在该目录下。
三、matlab评估工具使用
在解压后得到的文件应该包含以下内容
①.首先,打开db_root_dir.m,
修改root_dir路径,这个就是刚刚数据集目录/DAVIS2016,根据自己在电脑上存放路径修改即可。
②.运行startup.m
以把评估所要的代码的路径添加进来并执行一些检查。如果有问题的话可以运行一下build.m
,然后再运行startup.m
检查一下。
③.打开measures/eval_result.m,这是一个function
,需要自己写个demo(main.m)
调用它
function [eval, raw_eval] = eval_result(result_id, measures, gt_set)
④.编写main.m
% main.m
addpath(fullfile(db_matlab_root_dir,'db_util'));
addpath(fullfile(db_matlab_root_dir,'measures'));
[eval, raw_eval] = eval_result('tsp', {'J','F','T'},'val');
%function [eval, raw_eval] = eval_result(result_id, measures, gt_set)
其中result_id中填入需要评估的网络名称(我这里填的网络是tsp),也是你的Reslut结果文件夹的名称,即分割的结果,measure填入评价指标{‘J’,’F’,’T’}),而gt_set用哪个集合作为gt集合,有三种:'all'、'train'、'val'
5.在命令行窗口输入>>eval_result('stcn',{'J','F','T'},'val'),回车返回生成三个评价指标的mat
6.画出表格
首先使用打开experiments/experiments_params.m,修改techniques和techniques_paper,如果只想画出自己网络的表格,补充上去,删除其他的,如果想跟其他的对比,则补充自己的网络名称,然后在命令行窗口输入global_table,回车即可
结束!希望有所帮助!