前言:
本教程的主要内容:
1,将Caltech行人数据集转换成Caffe-SSD,Faster RCNN系列能够训练的格式(VOC数据集格式);
2,同理,可以将INRIA,ETH,TUD等数据集转换成VOC格式。
3,Caltech数据集转换后适用的算法:RCNN系列(Faster RCNN,RFCN),SSD系列
Caltech数据集介绍:
Caltech数据集地址: http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/
该数据库是目前规模较大的行人数据库,采用车载摄像头拍摄,约10个小时左右,视频的分辨率为640x480,30帧/秒。标注了约250,000帧(约137分钟),350000个矩形框,2300个行人,另外还对矩形框之间的时间对应关系及其遮挡的情况进行标注。
数据集分为set00~set10,其中set00~set05为训练集,set06~set10为测试集(标注信息尚未公开)。
性能评估方法有以下三种:(1)用外部数据进行训练,在set06~set10进行测试;(2)6-fold交叉验证,选择其中的5个做训练,另外一个做测试,调整参数,最后给出训练集上的性能;(3)用set00~set05训练,set06~set10做测试。
由于测试集的标注信息没有公开,需要提交给 Pitor Dollar
。结果提交方法为每30帧做一个测试,将结果保存在txt文档中(文件的命名方式为I00029.txt I00059.txt ……),每个txt文件中的每行表示检测到一个行人,格式为“[left, top,width, height, score]”。如果没有检测到任何行人,则txt文档为空。该数据库还提供了相应的Matlab工具包,包括视频标注信息的读取、画ROC(Receiver Operatingcharacteristic Curve)曲线图和非极大值抑制等工具。
目的:
由于基于caffe的SSD和Faster RCNN系列都是使用Pascal VOC数据集来进行的训练,所以使用SSD和Faster RCNN系列训练Caltech行人数据集时,
必须要
将Caltech 行人数据集转化成VOC格式
工具:
Caltech2VOC:https://github.com/WeiFeifan/Caltech2VOC
环境:caffe,caffe-SSD,matlab,windows7(linux适用),python(安装了opencv),
第一步:下载工具集Caltech2VOC: https://github.com/WeiFeifan/Caltech2VOC
第二步:在%caffe-root%/data文件夹中新建caltech文件夹,将Caltech2VOC中的所有内容复制到%caffe-root%/data/caltech;
这里%caffe-root%是指本机上的caffe根目录。
第三步:
下载Caltech数据集,下载到%caffe-root%/data/caltech中。如果已经下载好的话,可以将Caltech数据集解压到%caffe-root%/data/caltech/caltech_code/data-USA;这里放在data/caltech只是为了方便说明,放在其他路径时,自己修改相应路径
第四步:
运行%caffe-root%/data/caltech/caltech_code/extractDatasets.m 这时会在%caffe-root%/data/caltech文件夹下
生成trainval和test文件夹。
这里trainval设置的是每5帧提取出1帧图片,如果你想提取更多的训练数据的话,可以适当修改dbInfo.m。
如下图:
dbInfo.m中的第47行代码,红色框中的skip就是每隔5帧提取出1帧图片。可以自行设置。
test数据是每30帧提取一张图片,设置内容与官网上提交测试结果统一。
第五步:生成的trainval和test文件夹中会有images和labels文件夹,分别存放了图片和标注信息。其中bounding box是txt格式的,我们需要转化成VOC的xml格式。
运行第二步复制到
%caffe-root%/data/caltech中的createXml.py,其中:
以上对应了你自己的路径信息。第一次运行生成trainval中的annotations,第二次运行修改foldername=‘test’后,生成test中的annotations。
第六步:在没有行人的图片中并不生成annotation文件,可以将没有行人的图片移除。这里将原来的原来的images文件夹改名为OImages,新建一个空文件夹images。
运行第二步复制来的move_jpgto.py。即可生成我们想要的VOC格式的caltech行人数据集。
补充一些:
这里的caltech数据集分成了trainval和test两部分,有别于VOC格式将trainval和test放在一起。如果明白caffe制作数据的原理就明白了,这里其实是一样的。
后面的步骤是将VOC格式的数据集转换成caffe使用的lmdb格式。这里基本没什么难点了。
将VOC转换成lmdb格式可参考: http://blog.csdn.net/u010725283/article/details/79122513
补充一句:Caltech2VOC是对P神的matlab工具集进行的修改,如果对你有帮助,记着star一下,谢谢啦。
另附一句:如果什么疑问可以加QQ:2427020508