PASCAL VOC工具包解读

遇到不熟悉的问题时,还是直接看官方文档直接。

我想用Vocdevkit里对检测见过进行评估的程序,所以把从devkit_doc.pdf里看到的内容记录下:

4. Detection Task

4.1 Task

  对于20个类中的每一个,预测测试图像中该类的每个对象的边界框(如果有的话)。 每个边界框应该输出一个相关的检测实值置信度,以便绘制一条精度/回调曲线。 参与者可以选择处理全部或任何对象类别的子集,例如“仅限汽车”或“摩托车和汽车”。

4.2 Competitions

  根据训练数据的来源来定义两项比赛:(i)从VOC提供的数据中提取数据,或者(ii)不包括所提供的VOC测试数据的任何来源:

No. Task Training data Test data
3 Detection trainval test
4 Detection any but VOC test test

   在比赛3中,在VOC训练和训练集中提供的任何注释可以用于训练,例如边界框或特定视图,例如, '正面'或'左'。 参与者不得对培训或测试数据进行额外的手动注释。

4.3 Submission of Results

   应为每个比赛(3或4)和每个比赛类别产生单独的结果,比方 '汽车'。 每行应该是检测器的检测输出,格式如下:

<image identifier> <confidence> <left> <top> <right> <bottom>

  其中(左,上) - (右,下)定义检测对象的边界框。 图像中左上角的像素具有坐标(1,1)。 更高的置信度值意味着检测结果的正确性。 下面显示了一个示例文件摘录。 请注意,对于图像000006,检测到多个对象:

//comp3_det_test_car.txt:
000004 0.702732 89 112 516 466
000006 0.870849 373 168 488 229
000006 0.852346 407 157 500 213
000006 0.914587 2 161 55 221
000008 0.532489 175 184 232 201

  例程中检测器实现(第7.2.2节)包括用于以所需格式生成结果文件的代码。

4.4 Evaluation

  检测任务将通过精度/召回曲线来判断。 使用的主要定量测量将是平均精度(AP)。 用于计算精度/召回率和AP度量的示例代码在开发工具包中提供。

  通过和GT边界框重叠的区域,判断检测结果是TP或FP。 为了被认为是正确的检测,预测边界框B p和GT边界框B gt之间的重叠区域a o必须超过50%.在开发工具包中提供了用于计算此重叠度量的示例代码。 图像中同一对象的多次检测被视为错误检测,例如 单个对象的5次检测被计为1次正确检测和4次错误检测 - 参与者系统有责任从其输出中过滤多次检测。

7 Development KIt

  开发工具包打包在一个包含MATLAB代码和(本)文档的gzip压缩文件中。 比赛的图像,注释和训练/验证集的列表在单独的档案中提供,可以通过VOC网页获得[1]。

7.1 Installation and Configuration

  最简单的安装是通过将开发工具和挑战数据库放在一个位置来实现的。 在解开开发工具包之后,下载挑战镜像数据库并解压到相同的目录中,产生以下目录结构:

VOCdevkit/                                      % development kit
VOCdevkit/VOCcode/                     % VOC utility code
VOCdevkit/results/VOC2007/               % your results on VOC2007
VOCdevkit/results/VOC2006/               % your results on VOC2006
VOCdevkit/local/                     % example code temp dirs
VOCdevkit/VOC2007/ImageSets              % image sets
VOCdevkit/VOC2007/Annotations              % annotation files
VOCdevkit/VOC2007/JPEGImages             % images
VOCdevkit/VOC2007/SegmentationObject         % segmentations by object
VOCdevkit/VOC2007/SegmentationClass          % segmentations by class

7.2 Example Code

  为所有任务均提供了示例实现。 这些(最小)实现的目的仅仅是为了演示开发工具包中代码的使用。

7.2.2 Example Detector Implementation

  文件example_detector.m包含检测任务的完整实现。 对于每个VOC对象类,一个简单的(并且不是很成功的)探测器在训练集上训练; 然后将检测器应用于验证集,并将输出保存到比赛所需格式的结果文件中; 绘制精度/回想曲线并显示“平均精度”(AP)度量

8 Using the Development Kit

  开发工具包提供加载注释数据的功能。 还提供了用于计算精度/召回曲线和分段准确度以及用于查看注释的示例代码。

8.1 Image Sets

8.1.1 Classification/Detection Task Image Sets

  VOC2007 / ImageSets / Main /目录包含指定 主要分类/检测任务 的图像列表的文件。

  文件train.txt,val.txt,trainval.txt和test.txt列出了相应图像集(训练,验证,训练+验证和测试)的图像标识符。 文件的每一行都包含一个图像标识符。 以下MATLAB代码将图像列表读入字符串的单元数组:

imgset=’train’;
ids=textread(sprintf(VOCopts.imgsetpath,imgset),’%s’);

  对于给定的图像标识符ids {i},可以生成相应的图像和标签文件路径:

imgpath=sprintf(VOCopts.imgpath,ids{i});
annopath=sprintf(VOCopts.annopath,ids{i});

  请注意,所使用的图像集对于所有类都是相同的。 对于每场比赛,参赛者需要为测试集中的所有图像提供输出。

8.2 Development Kit Functions

8.2.1 VOCinit

  VOCinit脚本初始化包含PASCAL功能选项的单个结构VOCopts,包括包含VOC数据和评估功能选项(不会被修改)的目录。

关键词 classes 中列出了这个比赛所用到的类别:

VOCopts.classes={’aeroplane’,’bicycle’,’bird’,’boat’,...
          ’bottle’,’bus’,’car’,’cat’,...
          ’chair’,’cow’,’diningtable’,’dog’,...
          ’horse’,’motorbike’,’person’,’pottedplant’,...
          ’sheep’,’sofa’,’train’,’tvmonitor’};

关键词 testset 指明了用于测试的图片集:

VOCopts.testset=’val’; % use validation data for development

为方便起见,其他关键词提供图像和注释数据以及结果文件的路径。 示例实现中说明了这些路径的使用。

8.2.2 PASreadrecord( filename )

  PASreadrecord函数从文件名指定的注释文件中读取特定图像的注释数据,例如:

>> rec=PASreadrecord(sprintf(VOCopts.annopath,’000058’))
rec = folder: ’VOC2007’ filename: ’000058.jpg’ source:[1x1 struct] size:[1x1 struct] segmented:0 imgname:’VOC2007/JPEGImages/000058.jpg’ imgsize:[500 375 3] database:’The VOC2007 Database’ objects:[1x4 struct]

 

8.2.3 viewanno( imgset )

viewanno函数显示由imgset指定的图像集中图像的注释。 一些例子:

>> viewanno(’Main/train’);
>> viewanno(’Main/car_val’);
>> viewanno(’Layout/train’);
>> viewanno(’Segmentation/val’);

 

8.4 Detection Functions

8.4.1 VOCevaldet( VOCopts, id, cls. draw ) 

VOCevaldet函数执行检测任务的评估,计算精度/召回曲线和平均精度(AP)度量。 参数id和cls指定要加载的结果文件,例如:

>> [rec,prec,ap]=VOCevaldet(VOCopts,’comp3’,’car’,true);

进一步的例子见示例检测器。 如果参数绘制为true,则精确度/回忆曲线绘制在数字窗口中。 该函数返回rec和prec中的召回和精度比率的矢量,以及ap中的平均精度度量。

8.4.2 viewdet( id, cls, onlytp )

viewdet函数显示存储在检测任务的结果文件中的检测结果。 参数id和cls指定要加载的结果文件,例如:

>> viewdet(’comp3’,’car’,true)

如果onlytp 参数是true,则只显示通过VOC评估测量被认为是真正的检测。

 

posted on 2018-04-13 15:21  caffeauto  阅读(4049)  评论(0编辑  收藏  举报

导航