HOG+SVM是经典的行人检测方法,论文作者同时搞了一个INRIA数据集。
INRIA数据集官方页面:http://pascal.inrialpes.fr/data/human/,不过说真的,数据集搞的挺乱的。
首先,INRIA数据集的原始图片,来自GRAZ 01数据集和网络上的一些图片。这些图片相比于MIT行人数据集,人的姿态和光照条件啥的都更加全面,适合做行人检测。每张图片中都进行了行人区域的标定,也就是画了一个矩形框,把矩形框的左上定点坐标和矩形长度、宽度记录下来。
但是,第一次使用INRIA数据集的人,是要重现论文中的效果的!而论文中使用的图片,是归一化后的图片。怎么归一化的咱不细究,反正效果就是,相当于原有的标定矩形框放大了一圈,然后裁剪出行人区域,然后区域缩放(通常是缩小,缩放后到一个固定尺寸)。那,就用这个归一化后的图片做重现实验吧!
但是,问题又来了。这些归一化的图像在哪里?INRIA数据集里面放了原始数据和标定信息,以及归一化后的图像,按官网上的说法先找到train_64x128_H96
目录,说里面有pos
和neg
两个子目录,以及找到test_64x128_H96
目录,里面也有pos
和neg
两个子目录。然后说,在train/pos
下的是96x160的图片,test/pos
下的是70x134的图片。我倒要问,train
目录是哪个?不是train_64x128_H96
吗?INRIA数据集根目录下本身有一个Train
目录好么,你这么讲我很容易搞混的!而实际上,应当是train_64x128_H96
而不是train
,test
目录也是一样的情况。
还有几个混乱的地方。
我在windows下解压了INRIA数据集,在train_64x128_H96
目录下没找到neg
目录。这是因为用了软链接,是在linux下做的数据集。我想说,没有必要装这个逼的。把数据集放到Linux下解压,我用的是fedora23系统,进入到train_64x128_H96/neg
目录,把里面图片都拷到windows上,拷贝到train_64x128_H96/neg
目录下。
另外就是test_64x128_H96
目录下的neg
目录的问题。这个目录下的图片有用么?反正,看官网的说明,鸟用没有。So,忽略这个目录吧。
然后在Linux下查看整个数据集目录,发现最外层96X160H96和70x134H96两个目录。实际上归一化的图像都存在这两个目录下。那你搞train_64x128_H96
和test_64x128_H96
两个目录做什么?软链接装逼?
同时有个问题,为什么会有归一化的测试图像呢?test_64x128_H96/pos
目录下的图像都是70x134大小,实际中的图像都是尺寸不一的,还要考虑多尺度的问题呢。这个目录下的图片并没有用。直接用原始的测试图片就可以了。
还有,原始图像的命名。为什么以crop_
作为前缀?有用么?以及,目录命名怎么一会儿大写开头,一会儿小写开头,train
和Train
都有?另外对于原始数据的标定我也很无语,为什么有标错的地方?坐标怎么出现负数的,嗯?
算了,原始图像我就用
OK,讲了这么多,目的是整理出一个合理的数据集来,以后自己用也好用。经过整理后的INRIA数据集,目录结构和说明:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
训练和测试的时候有几种选择方式:
用normalized_images
目录下的图片做训练,或者用original_images
目录下的图片+annotations获取行人区域做训练;测试则都在original_images/test/pos
上测试。
整理后的数据集有点大,上传百度网盘了:http://pan.baidu.com/s/1eSdlw7g